Java 버전과 혼동하지 않는 방법

Java 버전과 혼동하지 않는 방법

JRE와 JVM이 있다는 것을 알고 있습니다. 나는 또한 Java로 프로그래밍했기 때문에 완전한 초보자는 아닙니다. 그러나 최근 나는 매우 혼란스러워지고 있으며 내 질문에 대한 현재 답변에 감사드립니다.

내가 가지고 있는 JRE 및 JVM 버전은 무엇이며, 최신 버전은 무엇입니까?

이제 "google it"이라고 말하고 싶은 기분이 들기 전에 이미 Google에서 검색해 보았습니다. 그러므로 나의 혼란.

에서자바 홈페이지그것은 말한다:

Java 제어판의 일반 탭 아래에 있는 정보 섹션을 통해 버전을 사용할 수 있습니다. Java 버전을 표시하는 대화 상자가 나타납니다(정보를 클릭하면).

글쎄요, 그렇게 했고 버전 8 Update71이 생겼습니다.

해당 홈페이지에는 다음과 같이 나와 있습니다.

JRE와 JDK는 별개이며 시스템에 공존할 수 있습니다. Mac에는 JRE를 하나만 설치할 수 있습니다. 원하는 만큼 여러 개의 JDK를 시스템에 설치할 수 있습니다.

네, 그건 이미 알고 있어요. 그래서 나는 그들이 말하는 대로 터미널에서 버전을 얻으려고 합니다.

java -version
java version "1.8.0_71"
Java(TM) SE Runtime Environment (build 1.8.0_71-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.71-b15, mixed mode)

그렇군요. 같은 것 같네요. 이제 질문이 나옵니다.

내가 가지고 있는 버전은 무엇인가요? 버전 8이 JRE 버전이라는 뜻인가요? 아니면 JVM 버전인가요? 홈페이지에서는 (인용으로) 구분되어 있지만 버전을 구하는 방법은 다음과 같습니다.똑같다!

문제를 복잡하게 만들기 위해 나는위키피디아현재 지원되는 버전은 Java 8과 Java 11이라고 나와 있습니다. 왜 두 개인가요? 9번과 10번은 어떻게 됐나요? 그리고 다시 말하지만, 이것들은 JRE인가요 아니면 JVM인가요?

누군가 나에게 이것을 설명해 줄 수 있습니까?

답변1

귀하의 질문에 대한 답변은 동일한 Wikipedia 기사에 있는 것 같습니다.

현재 Java 8 및 Java 11이 지원됩니다.장기 지원(LTS) 버전이며 Java 10은 이전에 지원되는 빠른 릴리스 버전입니다. Java 10 지원은 Java 11 지원이 시작된 날짜인 2018년 9월에 종료되었습니다. Java 7은 더 이상 공개적으로 지원되지 않으며 Java 9는 업데이트 수신을 중단했습니다. Java 9는 Java 10으로 대체된 단기 빠른 릴리스 버전이었으며 Java 8의 "공개 업데이트 종료"는 상업적 용도의 경우 2019년 1월, 비상업적 용도의 경우 2020년 12월 이전으로 예정되어 있습니다. Java 11의 경우 Oracle은 장기 지원을 제공하지 않습니다. 대신 AdoptOpenJDK와 같은 더 광범위한 OpenJDK 커뮤니티가 작업을 수행할 것으로 예상됩니다.

따라서 버전 9와 10은 수명이 짧았습니다. 심각한 보안 버그에 대응해 급히 나온 임시방편이 아닌가 싶다.

버전 8은 Oracle이 여전히 지원하는 마지막 버전이며 JDK와 JRE로 구분됩니다. 버전 11에서는 이 구분을 삭제하고 OpenJDK를 기반으로 하는 통합 JDK 버전만 있는 것으로 보입니다. 따라서 Oracle Java의 유료 버전에서 볼 수 있는 성능 향상 기능이 없을 수도 있습니다.

Linux에 어떤 버전이 있는지 찾으려면 설치된 패키지를 쿼리할 수 있다고 가정합니다.

Windows에서는 다음 위치의 32비트 및 64비트 레지스트리에서 해당 정보를 찾을 수 있습니다.

  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft
  • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft

해당 정보는 다음에서도 찾을 수 있습니다.제어판 > Java(32비트)또는 제어판 > Java(64비트):

여기에 이미지 설명을 입력하세요

답변2

귀하는 일부 용어를 혼동하고 있으며 Oracle이 일부 용어를 혼동한 Mac을 사용하고 있습니다.

제 생각엔 4가지가 다른 것 같아요.

  1. JVM(Java Virtual Machine)은 모든 Java 릴리스에 포함되어 있으며 Java 컴파일된 클래스 파일을 실행하는 실행 파일입니다. 직접 다운로드할 수는 없지만 다른 3개 항목의 일부입니다. java -version은 사용 중인 버전을 보여줍니다.

  2. JDK(Java development kit) 프로그램을 작성하는 경우 필요한 설치입니다. 여기에는 컴파일러 및 기타 도구가 포함됩니다. Oracle 릴리스가 포함된 macOS의 경우 이는 /usr/bin/java로 시작 가능한 환경을 제공하는 유일한 다운로드입니다.

  3. JRE(자바 런타임 환경). Windows, Linux 및 Apple Java 릴리스에서는 명령줄에서 Java 프로그램을 실행하는 데 필요한 최소한의 파일 선택을 제공합니다. Oracle macOs 릴리스의 일부로 존재하지 않는 것 같습니다. 그러나 이는 Java 버전에서 표시되는 Java(TM) SE Runtime Environment입니다.

  4. macOS의 JRE(Java Runtime Environment). Oracle에서는 브라우저에서 Java 애플릿을 실행하는 환경입니다. 이것은 Mac에서 하나만 가질 수 있는 JRE입니다. 이는 또한 시스템 환경 설정의 Java 제어판에서 확인하고 업데이트할 수 있는 것입니다.

따라서 macOS에서는 명령줄을 통해 JRE와 JVM을 포함하는 JDK를 설치하고 이러한 버전을 여러 개 가질 수 있습니다. 브라우저에서 애플릿을 실행하고 Java 제어판에 있는 별도의 JRE(명령줄과 동일하지 않음)도 있으며 이 중 하나만 가질 수 있습니다.

버전 번호 등에 관해서는 버전 8 이후에 버전 번호가 변경된 것으로 알고 있습니다. 위키피디아는 말한다

2017년 9월, Java 플랫폼 수석 아키텍트인 Mark Reinhold는 릴리스 트레인을 현재의 2년 일정이 아닌 "6개월마다 하나의 기능 릴리스"로 변경하자고 제안했고, 이후 제안이 발효되었습니다. .

따라서 9,10은 11로 대체되었으며 12는 2019년 3월에 출시될 예정입니다.https://en.wikipedia.org/wiki/Java_version_history시기와 지원에 관해서.

명령줄에서 사용할 수 있는 JVM을 찾으려면 다음을 실행하세요./usr/libexec/java_home -V

나는 얻다

/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
Matching Java Virtual Machines (6):
11.0.1, x86_64: "OpenJDK 11.0.1"    /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
10.0.1, x86_64: "Java SE 10.0.1"    /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
1.8.0_171, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
1.8.0_92, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home
1.8.0_77, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home

JDK를 설치하고 선택하려면https://stackoverflow.com/questions/52524112/how-do-i-install-java-11-on-mac-osx-allowing-version-switching

관련 정보