Oracle의 Java on Mac에 대해
저는 OS X에서 Java를 몇 년 동안 사용해 왔습니다.최근 애플이 Java를 디폴트로 사용하지 않게 되었을 때 OS를 놔두고 설치했습니다(물론 Apple의 종류).
OS X 10.8을 사용하고 있기 때문에 Java 7을 설치해야 하기 때문에 Oracle의 업데이트 15를 DMG 형식으로 입수하여 설치 프로그램을 실행했습니다./usr/bin/java(및 관련 파일)가 다음을 가리키도록 업데이트되었습니다.
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
이를 '/System/Library/Frameworks/JavaVM.framework/Versions'로 추적하면 모든 항목이 'Current' 또는 'Current'를 가리킵니다.JDK'는 'A'에 대한 링크(Oracle의 Java 7이며, 왜 'A'인지 확실하지 않음)이며, 후자는 '/System/Library/Java/Java Virtual Machines/1.6.0jdk'에 있는 Apple의 Java 6에 대한 링크입니다.
지금 이 모든 것이 정말 혼란스럽지만 이건 아직 내 질문도 아니다.여기에는 Java 7이 설치되어 있는 것 같습니다.
/System/Library/Frameworks/JavaVM.framework/Versions/A
그러나 여기에는 Java 7도 설치되어 있습니다.
/Library/Java/JavaVirtualMachines/jdk1.7.0_15.jdk
양쪽에서 'java'를 찾고 버전을 인쇄하면 동일한 버전과 빌드(java 버전 "1.7.0_15")가 생성되지만 파일을 해시할 때는 다릅니다.
그렇다면 Oracle은 Java 7을 2개의 다른 장소에 설치한다는 의미일까요?그렇다면 왜?어떤 걸 써야 하죠?그리고 왜 아직도 Java 6(Current JDK)을 가리키고 있는 걸까요?
오라클 웹사이트를 찾아봤지만 아무것도 확실히 해 줄 수 없어요.
Oracle의 JVM은 한 곳에만 설치됩니다.넌 현혹되었어!
이미 설명한 바와 같이 자바 명령어는/usr/bin
에 있는 바이너리에 대한 심볼 링크입니다./System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
디렉토리내의 바이너리는, 사용하는 Java VM*을 결정하고 나서, 그 VM버전내에서 대응하는 실제의 바이너리를 실행하는 스탭 애플리케이션입니다.이 때문에 모든 바이너리가/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
구현되는 기능이 상당히 다르지만 크기는 거의 동일합니다.
이 동작은 다음을 사용하여 확인할 수 있습니다.dtrace
:
mrowe@angara:~$ sudo dtrace -n 'syscall::posix_spawn:entry { trace(copyinstr(arg1)); }' -c "/usr/bin/java -version"
dtrace: description 'syscall::posix_spawn:entry ' matched 1 probe
dtrace: pid 44727 has exited
CPU ID FUNCTION:NAME
8 619 posix_spawn:entry /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java
기정사실dtrace
호출은 경로 인수를 출력합니다.posix_spawn
가 부르면java -version
나의 경우 stub 어플리케이션은 애플의 Java 1.6 런타임을 발견했다./System/Library/Java/JavaVirtualMachines/1.6.0.jdk
그 버전의 를 기동하고 있습니다.java
명령어를 입력합니다.
스터브 바이너리에는, Java VM 가 인스톨 되어 있지 않은 것을 검출하면, 유저에게 인스톨 하도록 요구된다는 이점도 있습니다.
CurrentJDK
이 OS Xsymlink에서 JVM의 한 한 symlink를 합니다.
* 사용할 Java VM을 결정할 때는 여러 요소의 조합을 고려합니다. JAVA_HOME
있는 합니다(try istry 、 try 、 try ) 。JAVA_HOME=/tmp java
의 경우JAVA_HOME
설정되지 않은 경우 시스템의 모든 가상 시스템 목록이 검색됩니다.JAVA_VERSION
★★★★★★★★★★★★★★★★★」JAVA_ARCH
환경 변수가 설정된 경우 가상 시스템 목록을 특정 버전 및 지원되는 아키텍처로 필터링하는 데 사용됩니다.다음으로 아키텍처(32비트보다 64비트를 우선)와 버전(신규가 더 우수)별로 정렬되어 최적의 일치가 반환됩니다.
Oracle Java 7 JRE(애플릿과 Java Web Start를 실행하기 위해 웹 브라우저 플러그인으로 사용되는 것)는 다음 위치에 설치됩니다./Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
자동 갱신이 영향을 주는 것은 이것입니다.JDK(http://www.oracle.com/technetwork/java/javase/downloads/index.html)에서 다운로드 받은 JDK)는 아래에 디렉토리를 생성하여 설치합니다./Library/Java/JavaVirtualMachines
업데이트는 고객님이 직접 하셔야 합니다.할 수 , 「JDK」아래에 「1개 입니다.JavaAppletPlugin.plugin
(이후 자동 갱신된 경우 최신 설치된 JDK 이후 버전에 대응합니다).
와 같이 bdash 아래의 /usr/bin
는, JDK/JRE 가 의 JDK 에 입니다.JAVA_HOME
환경변수 또는 환경변수가 설정되지 않은 경우 실행하기에 가장 적합한 Java를 선택합니다.하시면 됩니다./usr/libexec/java_home
어떤 걸 골랐는지 보려고요Java 가 인스톨 되어 있지 않은 경우, stub 는 최신의 Apple Java 6 의 인스톨을 제안합니다(Java 7 의 인스톨은 제안하지 않는 것으로 알고 있습니다).
다음 게시물을 찾습니다.https://developer.apple.com/library/mac/qa/qa1170/_index.html /usr/libexec/http_home 툴은 현재 사용자의 Java Preferences에서 지정된 상위 Java 버전을 동적으로 검색합니다.
언급URL : https://stackoverflow.com/questions/15120745/understanding-oracles-java-on-mac
'programing' 카테고리의 다른 글
Spring Boot 어플리케이션의 XML 빈은 어디에 배치해야 합니까? (0) | 2023.03.29 |
---|---|
JQuery를 사용하여 CKEditor의 콘텐츠를 입수하려면 어떻게 해야 하나요? (0) | 2023.03.29 |
Cent에 대한 WordPress 파일 권한sudo가 필요한 OS7 (0) | 2023.03.29 |
respect.js의 상태 변화를 듣는 방법 (0) | 2023.03.29 |
Angular UI, Bootstrap Navbar Collapse 및 Javascript (0) | 2023.03.29 |