UNIX 시스템에서는 알파벳 문자 의 이름 케이스가 일반적으로 중요하지만 Microsoft Windows 시스템에서는 일반적으로 중요하지 않습니다. 예를 들어, 표현식 System.getenv (“FOO”).equals (System.getenv (“foo”)) 마이크로 소프트 윈도우에서 사실 일 가능성이 높습니다. 중요: MS-DOS 명령 프롬프트에서 PATH 환경 변수를 설정하면 java.library.path에는 영향을 주지 않습니다. 예를 들어, 이 작동하지 않습니다: 라이브러리는 일반적으로 시스템 라이브러리 경로에서 로드됩니다. 시스템 라이브러리 경로란 무엇입니까? 예를 들어 라이브러리를 로드하는 코드가 아래에 있습니다. 드물긴 하지만 Java 이외의 언어로 작성된 서브루틴을 호출할 수도 있습니다. 일반적으로 이러한 서브루틴은 작업 중인 CPU 및 환경(즉, 네이티브 코드)에 대한 실행 코드로 존재합니다. 예를 들어 실행 시간을 단축하기 위해 네이티브 코드 서브루틴을 호출할 수 있습니다. 또는 통계 패키지와 같은 특수한 타사 라이브러리를 사용할 수 있습니다. 그러나 Java 프로그램은 바이트 코드로 컴파일되어 Java 런타임 시스템에서 해석(또는 즉시 컴파일)되므로 Java 프로그램 내에서 네이티브 코드 서브루틴을 호출하는 것은 불가능해 보입니다.

다행히도, 이 결론은 거짓. Java는 네이티브 코드 메서드를 선언하는 데 사용되는 네이티브 키워드를 제공합니다. 일단 선언되면, 이러한 메서드는 다른 Java 메서드를 호출하는 것처럼 Java 프로그램 내에서 호출 할 수 있습니다. Java 런타임이 런타임에 동적 라이브러리(DLL)를 찾고 로드할 수 있도록 하는 방법에는 여러 가지가 있습니다. 여기에 간략한 설명과 함께 예제와 추가 설명을 나열합니다. 프로세스를 이해하는 가장 쉬운 방법은 예제를 통해 작업하는 것입니다. 시작하려면 test() 라는 기본 메서드를 사용하는 다음 짧은 프로그램을 입력합니다. 런타임.loadLibrary() 메서드. load() 메서드에는 라이브러리의 전체 경로 이름이 인수로 필요합니다.

예를 들어 Solaris 시스템에서 작성할 수 있습니다: 네이티브 메서드를 선언하려면 네이티브 수정자를 사용하여 메서드 앞에 오지만 메서드에 대한 바디를 정의하지 않습니다. 예를 들어 Windows 제어판에서 PATH 환경 변수를 수정하여 이 작업을 수행합니다. 이 메서드를 호출하면 Java 가상 시스템이 삭제되었지만 종료 메서드가 아직 실행되지 않은 개체의 최종 메서드를 실행하는 데 노력을 기울여야 합니다. 제어가 메서드 호출에서 반환되면 Java 가상 머신은 모든 미해결 종료를 완료하기 위해 최선의 노력을 기울였습니다. 이 메서드는 경과 시간을 측정하는 데만 사용할 수 있으며 시스템 또는 월 클럭 시간의 다른 개념과 관련이 없습니다. 반환된 값은 일부 고정되었지만 임의의 원본 시간(나중에 값이 음수일 수 있음)이므로 나노초를 나타냅니다. Java 가상 시스템의 인스턴스에서 이 메서드의 모든 호출에서 동일한 원본이 사용됩니다. 다른 가상 시스템 인스턴스는 다른 원본을 사용할 수 있습니다.