핫스팟 (가상 머신)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
핫스팟은 1999년 4월 27일에 처음 출시된 자바 가상 머신(JVM)의 성능 엔진으로, 롱뷰 테크놀로지스(Longview Technologies)가 개발한 스몰토크 구현 기술을 기반으로 한다. 핫스팟은 자바 바이트코드를 실행하면서 자주 실행되는 코드 영역, 즉 "핫 스폿"을 지속적으로 분석하고 최적화하여 성능을 향상시킨다. 썬 마이크로시스템즈는 1997년에 Animorphic을 인수하고, 핫스팟을 Java 1.3부터 표준 JVM으로 채택했다. 핫스팟은 클라이언트 및 서버 버전으로 제공되며, 계층적 컴파일 방식을 통해 시작 시간을 단축하고 성능을 향상시킨다. 2006년 11월 13일부터는 GNU GPL v2 라이선스로 오픈 소스화되었다. 핫스팟은 윈도우, 리눅스, macOS 등 다양한 플랫폼을 지원하며, 타사에서 여러 유닉스 운영 체제로 포팅되기도 한다.
더 읽어볼만한 페이지
- 자바 가상 머신 - 안드로이드 런타임
안드로이드 런타임(ART)은 안드로이드 운영 체제에서 애플리케이션 실행을 위한 런타임 환경이며, AOT 컴파일을 통해 실행 효율성을 높이고 전력 소비를 줄이는 장점을 가진다. - 자바 가상 머신 - OpenJDK
OpenJDK는 2006년 썬 마이크로시스템즈가 발표하고 2007년에 릴리스한 오픈 소스 자바 플랫폼 구현체이며, 핫스팟 가상 머신, 자바 클래스 라이브러리 등을 포함하고 다양한 운영 체제와 아키텍처를 지원한다. - 썬 마이크로시스템즈 소프트웨어 - 자바 데스크톱 시스템
- 썬 마이크로시스템즈 소프트웨어 - 핫자바
핫자바는 자바 프로그래밍 언어 기반으로 개발된 웹 브라우저이며, 1995년 TED 컨퍼런스에서 처음 시연되고 SunWorld 컨퍼런스에서 공식 발표되었다. - 오라클 소프트웨어 - 자바 데스크톱 시스템
- 오라클 소프트웨어 - 스타오피스
스타오피스는 1985년 스타라이터에서 시작하여 다양한 플랫폼으로 확장되고 썬 마이크로시스템즈에 인수되어 OpenOffice.org의 기반이 되었던 오피스 스위트였으나, 오라클에 인수 후 오라클 오픈 오피스로 변경되었다가 판매가 중단되었으며, 워드 프로세서, 스프레드시트, 프레젠테이션 프로그램 등을 포함하고 있었다.
핫스팟 (가상 머신) - [IT 관련 정보]에 관한 문서 | |
---|---|
일반 정보 | |
종류 | 자바 가상 머신 |
개발자 | 오라클 |
최초 출시일 | 1999년 4월 27일 |
최신 버전 | 23.25-b01 |
최신 출시일 | 2016년 1월 1일 |
운영 체제 | 크로스 플랫폼 |
프로그래밍 언어 | C++ 어셈블리 |
라이선스 | GNU GPL (현재), 사유 (초기 버전) |
웹사이트 | 공식 웹사이트 |
리포지토리 | GitHub 리포지토리 |
2. 역사
1999년 4월 27일 핫스팟이 처음 출시되었다.[32] 핫스팟은 원래 롱뷰 테크놀로지스(Longview Technologies)가 "Animorphic"이라는 이름으로 개발한 스트롱토크(Strongtalk) 스몰토크 프로그래밍 언어 구현체 기술을 기반으로 한다. 1997년 썬 마이크로시스템즈는 Animorphic을 인수했다.[33]
썬은 Animorphic 인수 직후 자바 가상 머신을 위한 새로운 JIT 컴파일러를 개발하기로 결정하고, 소프트웨어 동작 방식에서 착안하여 핫스팟(HotSpot)이라는 이름을 붙였다.[34] 핫스팟은 자바 바이트코드를 실행하면서 자주 또는 반복적으로 실행되는 코드 영역(핫스팟)을 분석하여 최적화한다. 이를 통해 성능에 덜 민감한 코드에 대한 부하를 최소화하여 고성능을 이끌어낸다. 일부 벤치마크에서는 핫스팟 JVM이 C++나 C 코드의 성능에 필적한다는 보고도 있다.[35]
핫스팟은 처음에는 Java 1.2의 애드온으로 제공되었으나,[7] Java 1.3부터 썬의 기본 JVM이 되었다.[8] 2006년 11월 13일에는 GNU GPL에 따라 오픈 소스화되었다.[18]
2. 1. 개발 배경
1999년 4월 27일 처음 출시된[32] 자바 핫스팟 퍼포먼스 엔진은 본래 롱뷰 테크놀로지스(Longview Technologies)가 "Animorphic"로 개발한 스트롱토크(Strongtalk)라는 스몰토크 프로그래밍 언어 구현체 기술을 기반으로 한다. 썬 연구 프로젝트 중 하나인 셀프 언어는 Animorphic의 가상 머신 기술을 성공적으로 사용했다. 1997년, 썬 마이크로시스템즈는 Animorphic을 인수했다.[33]Animorphic 인수 직후 썬은 자바 가상 머신을 위한 새로운 JIT 컴파일러를 작성하기로 결정한다.[34] 이 컴파일러는 소프트웨어 동작 방식에서 착안하여 핫스팟(HotSpot)이라는 이름을 사용하기로 했다. 핫스팟은 자바 바이트코드를 실행할 때, 자주 또는 반복적으로 실행되는 코드 영역("핫스팟")을 지속적으로 분석하여 최적화한다. 이를 통해 성능에 덜 민감한 코드에 대한 부하를 최소화하여 고성능 실행을 이룩한다. 한 보고서에 따르면 JVM은 일부 벤치마크에서 C++, C 코드의 성능에 필적한다.[35]
2. 2. 초기 자바 플랫폼 통합
1999년 4월 27일 처음 출시된[32] 자바 핫스팟 퍼포먼스 엔진은 본래 롱뷰 테크놀로지스(Longview Technologies)가 "Animorphic"로 개발한 스트롱토크라는 이름의 스몰토크 프로그래밍 언어 구현체의 기술을 기반으로 한다. 1997년, 썬 마이크로시스템즈는 Animorphic을 구매하였다.[33]썬은 Animorphic을 인수한 직후 자바 가상 머신을 위한 새로운 JIT 컴파일러를 작성하기로 결정한다.[34] 이 새로운 컴파일러는 소프트웨어의 동작에서 착안하여 핫스팟(HotSpot)이라는 이름을 사용하기로 하였다. 핫스팟은 자바 바이트코드를 실행할 때, 자주 또는 반복적으로 실행되는 코드 영역(핫스팟)을 분석하여 최적화한다.
핫스팟은 처음에는 Java 1.2의 애드온으로 제공되었으나,[7] Java 1.3부터 썬의 기본 JVM이 되었다.[8]
2. 3. 오픈 소스화
2006년 11월 13일, 핫스팟 JVM 및 자바 개발 키트(JDK)는 GNU GPL 버전 2에 따라 라이선스가 부여되어 오픈 소스화되었다.[18] 이 코드는 자바 7의 일부가 되었다.[19]3. 특징
JRE(썬 마이크로시스템즈에서 개발, 현재는 오라클에서 관리)은 "클라이언트"와 "서버" 두 가지 가상 머신을 제공한다. 클라이언트 버전은 빠른 로딩을 위해 튜닝되어 있으며, 인터프리터 방식을 사용한다. 서버 버전은 로딩 속도는 느리지만, 고성능을 위해 고도로 최적화된 JIT 컴파일을 생성하는 데 집중한다.[36] 핫스팟은 C++로 작성되었으며, 소스 코드는 대략 250,000줄에 달한다.[36]
3. 1. 계층적 컴파일
JRE 서버 버전은 빠른 로딩에 최적화된 클라이언트 버전과 달리, 더 높은 성능을 위해 매우 최적화된 JIT 컴파일을 생성하는 데 더 많은 노력을 기울인다.[9] 두 VM 모두 자주 실행되는 메서드만 컴파일하며, 어떤 메서드를 컴파일할지 결정하기 위해 구성 가능한 호출 횟수 임계값을 사용한다.자바 7부터 도입된 계층적 컴파일 옵션은 클라이언트와 서버 컴파일러를 함께 사용하여 서버 컴파일러보다 빠른 시작 시간을 제공하면서도 유사하거나 더 나은 최고 성능을 달성한다.[9] 자바 8부터 계층적 컴파일은 서버 VM의 기본값이 되었다.[10]
3. 2. 구성 요소
핫스팟은 C++(C++)와 어셈블리어로 작성되었다. 2007년 썬은 약 25만 줄의 소스 코드로 구성되어 있다고 추정했다.[11] 핫스팟은 다음을 제공한다.- 자바 클래스 로더
- 템플릿 자바 바이트코드 인터프리터
- 각각의 용도에 최적화된 "클라이언트"(C1) 및 "서버"(C2) JIT 컴파일러
- 여러 가비지 컬렉터 (매우 짧은 일시 중지 시간을 가진 ZGC 및 일시 중지 없는 Shenandoah 포함)[12][13]
- 일련의 지원 런타임 라이브러리
3. 3. JVM 플래그
핫스팟은 가상 머신 실행 옵션에 대한 많은 명령줄 인수를 지원한다. 일부는 표준이며 모든 규격 자바 가상 머신에서 찾아야 한다. 다른 것들은 핫스팟에 특유하며 다른 JVM에서는 찾을 수 없을 수 있다(`-X` 또는 `-XX`로 시작하는 옵션은 비표준이다).[36]4. 지원 플랫폼
핫스팟은 자바 개발 키트(JDK)의 일부로서, 오라클에서 공식적으로 윈도우, 리눅스, macOS를 지원한다. 지원되는 명령어 집합 아키텍처(ISA)는 x86-64 및 AArch64이다. 솔라리스와 SPARC는 JDK 15부터 더 이상 지원되지 않는다.
다른 여러 유닉스 운영 체제에서는 타사에서 포팅을 제공하며, x86, PowerPC, SPARC(솔라리스 전용) 등 다양한 하드웨어 아키텍처를 지원한다.
핫스팟은 대부분 어셈블리 언어로 작성되어 포팅이 어렵지만,[22] 일부는 표준 ISO C++로 작성되었다. IcedTea 프로젝트는 "제로 어셈블러 핫스팟"이라는 핫스팟 인터프리터의 일반적인 포트를 개발하여, 핫스팟 인터프리터를 여러 리눅스 프로세서 아키텍처에 쉽게 적용할 수 있도록 했다. ''제로 어셈블러 핫스팟'' 코드는 버전 1.6부터 핫스팟의 비-x86 아키텍처 포트(PowerPC, 아이테니엄(IA-64), S390, ARM)에 사용된다.[23][24][25]
4. 1. 오라클 공식 지원
자바 개발 키트 (JDK) 전체와 마찬가지로 핫스팟은 윈도우, 리눅스, macOS에서 오라클(Oracle Corporation)이 지원한다. 지원되는 명령어 집합 아키텍처(ISA)는 x86-64 및 AArch64이다. JDK 15부터 솔라리스와 SPARC는 더 이상 지원되지 않는다.4. 2. 타사 포팅
다른 여러 유닉스 운영 체제에서도 타사에서 포트를 제공하고 있다. x86, PowerPC, SPARC(솔라리스 전용)를 포함한 여러 하드웨어 아키텍처가 지원된다.핫스팟은 거의 대부분 어셈블리 언어로 작성되어 있어 포팅하기가 어렵다.[22] 하지만 여러 부분은 순수한 표준을 준수하는 ISO C++로 작성되었다. 이를 해결하기 위해, IcedTea 프로젝트는 어셈블리 코드가 거의 없는 "제로 어셈블러 핫스팟"(또는 "제로")이라고 불리는 핫스팟 인터프리터의 일반적인 포트를 개발했다. 이 포트는 핫스팟의 인터프리터 구성 요소를 모든 리눅스 프로세서 아키텍처에 쉽게 적용할 수 있도록 설계되었다. ''제로 어셈블러 핫스팟''의 코드는 버전 1.6부터 핫스팟의 모든 비-x86 아키텍처 포트(PowerPC, 아이테니엄 (IA-64), S390 및 ARM)에 사용된다.[23][24][25]
참조
[1]
웹사이트
Sun Announces Availability of the Java HotSpot Performance Engine
http://www.thefreeli[...]
Sun Microsystems
2013-03-26
[2]
웹사이트
SUN MICRO BUYS LONGVIEW
https://www.sfgate.c[...]
2020-11-05
[3]
웹사이트
Cliff Click on Azul's Pauseless GC, Zing, JVM Languages
http://www.infoq.com[...]
InfoQ
2016-05-10
[4]
간행물
The java hotspotTM server compiler
https://dl.acm.org/d[...]
2001-04
[5]
웹사이트
Cliff Click — The Sea of Nodes and the HotSpot JIT
https://www.youtube.[...]
2020-02-14
[6]
웹사이트
Performance of Java versus C++
http://scribblethink[...]
2007-10-03
[7]
뉴스
HotSpot finally makes its mark
http://news.cnet.com[...]
1999-02-18
[8]
웹사이트
Sun Microsystems releases fastest client-side Java platform to date
http://www.sun.com/s[...]
Sun Microsystems
2007-10-03
[9]
웹사이트
Java ™ HotSpot Virtual Machine Performance Enhancements
http://docs.oracle.c[...]
[10]
웹사이트
Java ™ HotSpot Virtual Machine Performance Enhancements
https://docs.oracle.[...]
[11]
웹사이트
The HotSpot Group
http://openjdk.java.[...]
Sun Microsystems
2007-10-03
[12]
웹사이트
Main - ZGC
https://wiki.openjdk[...]
[13]
웹사이트
HotSpot Virtual Machine Garbage Collection Tuning Guide (Java 14)
https://docs.oracle.[...]
[14]
웹사이트
Java HotSpot VM Options
http://java.sun.com/[...]
Sun Microsystems
2009-02-08
[15]
웹사이트
A Collection of JVM Options
http://blogs.sun.com[...]
2009-02-08
[16]
웹사이트
The most complete list of -XX options for Java 6 JVM
http://www.md.pp.ru/[...]
2009-02-08
[17]
웹사이트
My Favorite Hotspot JVM Flags
http://blog.headius.[...]
2009-02-08
[18]
웹사이트
Sun Open Sources Java Technology and Releases Source Code Under GPL Version Two License Via NetBeans and Java.net Communities
http://www.sun.com/a[...]
Sun Microsystems
2017-05-06
[19]
Webarchive
JDK7
http://jdk7.java.net[...]
2016-12-15
[20]
웹사이트
Oracle JDK 17 Certified System Configurations
https://www.oracle.c[...]
Oracle Corporation
2021-02-01
[21]
웹사이트
JEP 381: Remove the Solaris and SPARC Ports
https://openjdk.java[...]
[22]
웹사이트
Gary's guide to porting IcedTea
http://gbenson.livej[...]
2008-01-26
[23]
웹사이트
1st February 2008
http://gbenson.livej[...]
2008-02-03
[24]
웹사이트
Making zero-assembler the default on ppc
https://mail.openjdk[...]
2022-02-01
[25]
웹사이트
IcedTea 1.6 Released with Zero-assembler and JNLP support!
http://mail.openjdk.[...]
Red Hat
2008-02-13
[26]
웹사이트
C++ Applications
http://www.stroustru[...]
2019-06-14
[27]
문서
Java ME テクノロジー - CDC
https://www.oracle.c[...]
[28]
웹사이트
SUN MICROSYSTEMS RELEASES FASTEST CLIENT-SIDE JAVA PLATFORM TO DATE
http://www.sun.com/s[...]
Sun Microsystems
2006-03-07
[29]
문서
Java HotSpot(TM) Client Virtual Machine および Java HotSpot(TM) Server Virtual Machine
https://docs.oracle.[...]
[30]
문서
hot spot
[31]
웹사이트
Performance of Java versus C++
http://scribblethink[...]
2019-06-14
[32]
웹인용
Sun Announces Availability of the Java HotSpot Performance Engine
http://www.thefreeli[...]
Sun Microsystems
2013-03-26
[33]
웹인용
Sun's Gosling Previews Hotspot Java Virtual Machine
http://findarticles.[...]
ComputerGram
2008-04-20
[34]
웹인용
Cliff Click on Azul's Pauseless GC, Zing, JVM Languages
http://www.infoq.com[...]
InfoQ
2016-05-10
[35]
웹인용
Performance of Java versus C++
http://scribblethink[...]
2007-10-03
[36]
웹인용
The HotSpot Group
http://openjdk.java.[...]
Sun Microsystems
2007-10-03
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com