JVM과 HotSpot의 차이점은 무엇입니까?


147

HotSpot은 정확히 무엇이며 JVM 및 OpenJDK와 어떤 관련이 있습니까? 도서관입니까? 정확히 무엇을합니까?

또한 OpenJDK와 HotSpot의 차이점은 무엇입니까?

답변:


148

Java Virtual Machine의 정의는 Java Virtual Machine Specification에 명시되어 있습니다.

JVM은 정의상 가상 머신 , 즉 실제 머신의 기능을 시뮬레이트하는 소프트웨어 머신입니다. 실제 머신과 마찬가지로 명령 세트 , 가상 컴퓨터 아키텍처 및 실행 모델이 있습니다. 이 가상 명령어 세트로 작성된 코드를 실행할 수 있습니다. 실제 머신이 머신 코드를 실행할 수있는 것과 거의 같습니다.

HotSpot 은 JVM 개념의 구현입니다. 원래 Sun에서 개발했으며 현재 Oracle이 소유하고 있습니다. JRockit , IBM J9 와 같은 JVM 스펙의 다른 구현이 있습니다.

Java Virtual Machine 구현 목록을 참조하십시오.

오픈 JDK는 핫스팟 (과 JDK 예를 들어, 컴파일러, API를, 도구 등의 다른 많은 조각)의 오픈 소스 구현이 개발되고있는 프로젝트입니다.


25

OpenJDK (Open Java Development Kit)는 Java SE (Java Platform, Standard Edition)의 무료 오픈 소스 구현입니다. openjdk는 현재 Sun Microsystems에서 시작한 프로젝트로, 현재 많은 회사와 커뮤니티에서 Java Development Kit를 빌드하기 위해 관리하고 있습니다. 절대적으로 오픈 소스입니다. 당으로 공식 문서 .

OpenJDK는 Java SE (Java Platform, Standard Edition) 스펙의 오픈 소스 구현입니다. 2007 년 5 월 Sun은 GNU General Public License 버전 2 (GPLv2)에 따라 무료 소프트웨어로 Java SE 용의 완전한 빌드 가능한 JDK (Java Development Kit) 버전을 OpenJDK Community에 릴리스했습니다. 썬은 OpenJDK 커뮤니티를위한 임시 집행위원회를 발표했습니다. 또한 Sun은 OpenJDK 기반 구현에서 Java SE 6 기술 호환성 키트 (JCK)를 사용하여 Java SE 6 사양과의 호환성을 설정할 수 있다고 발표했습니다.

오픈 JDK 프로젝트는 다수의 구성 요소로 구성 - 핫스팟 (가상 머신) , 자바 클래스 라이브러리와 javac의 자바 compiler.For을 더 그것으로, 그 방문 사이트 .

Sun / Oracle에서 제공하는 현재 JVM 은 "Just-In-Time"최적화를 위해 코드에서 핫 스팟을 사용하기 때문에 핫스팟 이라고합니다 (코드가 더 많이 사용되는 장소). 로부터 위키 피 디아 , 은 "자바 핫스팟 성능 엔진"로 출시 핫스팟, 데스크탑 및 서버 유지 및 오라클 배포를위한 자바 가상 머신이다.


OpenJDK가 HotSpot을 사용하여 코드를 실행한다고 들었습니다. 그게 사실입니까?
Justin

@TheNewIdiot, HotSpot이 OpenJDK의 일부라고 말하는 것입니까? 아니면 위의 답변에서 알 수 있듯이 독점적 인 핫스팟이 있습니까?
Pacerier

@NINC, 핫스팟은 OracleJDK와 OpenJDK의 일부입니까? 핫스팟 = JRockit = OracleJDK = OpenJDK?
Pacerier

12

참고 : AdoptOpenJDK2020-06 년 말 Eclipse Foundation으로 이동 한 후 이름을 Adoptium으로 변경했습니다 .


JVM과 HotSpot의 차이점은 무엇입니까?

자바 가상 머신 (JVM)은 물리적 하드웨어로 내장 된 적이없는 가상의 컴퓨터입니다. JVM은 스토리지에 쓰여진 가상 명령어 세트 로 컴파일 된 프로그램 을 바이트 코드 라고 하는 중간 표현 으로 실행합니다 .

런타임시 바이트 코드는 가상 명령어 세트에서 호스트 머신 CPU의 실제 명령어 세트로 변환되어야합니다. 이것은 통역사가 즉석에서 수행 할 수 있습니다. 또는 바이트 코드는 JIT (Just-In-Time) 컴파일 프로세스에서 인터프리터보다 빠르게 실행되도록 완전히 컴파일 및 캐시 될 수 있습니다 .

수십 년 동안 많은 JVM 구현 이있었습니다 . 대부분은 떨어져 나갔다.

HotSpot 은 JIT 기술의 한 가지 구현으로, 해석을 실행하여 시작하고 앱의 실제 성능을 감시합니다. 그런 다음 앱의 일부가 훨씬 빠른 실행을 위해 원시 코드로 완전히 컴파일되고 캐시되도록 선택됩니다. HotSpot은 Sun 에서 상용 제품으로 개발되었습니다. Sun을 인수 한 후 Oracle 은 경쟁 제품인 JRockit 의 중요한 부분을 결합하여 HotSpot을 더욱 발전 시켰습니다. HotSpot은 이제 OpenJDK 프로젝트를통해무료로 제공됩니다.

IBM이 개발 한 OpenJ9의 또 다른 구현은 이제 Eclipse Foundation을 통해 오픈 소스로 제공 되며 무료로 제공됩니다. OpenJDK에 구축 된 일부 JVM 배포는 Java SE 클래스 라이브러리 와 같은 나머지 OpenJDK를 계속 사용하면서 HotSpot을 OpenJ9로 대체 합니다. 예를 들어 AdoptOpenJDK에서 제공 되는 사전 구축 된 배포판 은 일부 하드웨어에서 HotSpot 또는 OpenJ9 를 선택할 수 있습니다 .

AdoptOpenJDK에서 사용 가능한 HotSpot 및 JRockit 병합 및 OpenJ9의 히스토리를 보여주는 다이어그램.

AdoptOpenJDK에서 사용 가능한 HotSpot 및 JRockit 병합 및 OpenJ9의 히스토리를 보여주는 다이어그램

HotSpot은 정확히 무엇이며 JVM 및 OpenJDK와 어떤 관련이 있습니까? 도서관입니까? 정확히 무엇을합니까?

  • HotSpot 은 호스트 CPU에서 실행될 Java 바이트 코드를 해석 및 / 또는 컴파일하는 JVM 부분의 구현입니다.
  • OpenJ9 가 대안입니다.

OpenJ9 는 일반적으로 초기에 훨씬 빠른 시작과 훨씬 적은 메모리 사용으로 알려져 있으며 HotSpot 은 장기 실행 앱의 경우 전반적으로 더 효율적으로 실행될 수 있습니다. 둘 다 OpenJDK 배포판에서 잘 알려져 있고 낡았으며 이용 가능합니다.

OpenJDK Java 플랫폼 을 정의 하는 Java Specification , JSR JEP 를 완전히 구현하는 오픈 소스 프로젝트입니다. 현재 알고있는 모든 JVM 구현은 전적으로 또는 대부분 OpenJDK 코드베이스를 기반으로하며 HotSpot 또는 OpenJ9 기술을 사용합니다.

JVM 외에도 OpenJDK는 java.lang , java.util , java.time 및 기타 패키지와 같은 Java SE 스펙에 필요한 모든 클래스에 대한 소스 코드 구현을 제공 합니다.

또한 OpenJDK와 HotSpot의 차이점은 무엇입니까?

HotSpot 의 소스 코드 는 OpenJDK 프로젝트의 일부로 보관, 유지 보수 및 추가 개발됩니다 . 대안 인 OpenJ9Eclipse Foundation에 수용, 유지 보수 및 추가 개발되며 일부 OpenJDK 배포판에서 HotSpot을 대체합니다.

Java 기술의 일부 배포판은 HotSpot과 함께 제공됩니다. 일부 배포판 은 HotSpot 인 OpenJDK 코드베이스 의 일부를 대안 인 OpenJ9로 대체하기로 선택 합니다.

다음은 Java 플랫폼 배포를위한 공급 업체를 선택하는 데 도움이되는 순서도 그래픽입니다.

Java 11 구현을위한 공급 업체 선택을 안내하는 순서도

Java 공급 업체 선택 동기


8

위에서 언급 한 것처럼 HotSpot은 JVM (Java Virtual Machine) 개념의 크로스 플랫폼 구현이며 GNU General Public License에 따라 OpenJDK (Java Developer Kit)와 함께 배포됩니다. HotSpot은 주로 C ++로 작성되었으며 원래 Sun Microsystems에서 개발되었습니다. 현재 OpenJDK Project (www.java.net)에서 개발되었습니다. HotSpot JVM은 Java 1.2 용 애드온으로 사용 가능했으며 나중에 Java 1.3에서 기본 Sun JVM으로 사용되었습니다. JVM은 현재 버전 7, 빌드 b147에 있으며 그 뒤에 활발한 개발 커뮤니티가 있습니다.

자세한 정보는 https://www.java.net/을 참조하십시오.

행복한 코딩!


7

JVM은 추상 시스템입니다 (사양). HotSpot, OpenJDK 및 JRockit도 JVM 구현입니다.

무료 및 오픈 소스 구현

  • 기본 참조 Java VM 구현 인 HotSpot

  • OpenJDK — Open Java Development Kit는 GNU GPL (General Public License)에 따라 라이센스가 부여 된 무료 오픈 소스 구현이며 연결 예외가 있습니다.

독점적 구현

  • Linux, Windows 및 Solaris를 위해 Oracle이 인수 한 JRockit (원래 Appeal Virtual Machines)

더 많은 구현
링크 는 HotSpot과 JRocket의 차이점을 설명합니다.


-25

HotSpot은 고급 형태의 C ++ 해킹입니다.이를 사용하려면 가장 간단한 것조차 컴파일하기 위해 빌드해야합니다. 컴파일러를 조정하거나 처음부터 작성하지 않는 한. HotSpot은 기본적으로 소스 코드를 C ++ 코드로 변환 한 다음 원시 코드로 컴파일하여 jit이라는 용어를 컴파일하는 방법입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.