JVM 구현이 다른 점은 무엇입니까 (라이센스 제외)? 모든 JVM은 일반 처리를위한 유형 삭제를 구현합니까? JVM 구현 간의 차이점
사이의 차이점은 다음과 같습니다- 하는 JRockit
- IBM JVM
- SUN JVM
- 오픈 JDK
- Blackdown
- 의 Kaffe
.... . Tail-Call-Optimization을 사용하여 그 중 하나를 거래합니까?
JVM 구현이 다른 점은 무엇입니까 (라이센스 제외)? 모든 JVM은 일반 처리를위한 유형 삭제를 구현합니까? JVM 구현 간의 차이점
사이의 차이점은 다음과 같습니다.... . Tail-Call-Optimization을 사용하여 그 중 하나를 거래합니까?
JVM 구현은 JIT 컴파일, 최적화, 가비지 수집, 지원되는 플랫폼, 지원되는 Java 버전 등을 구현하는 방식이 다를 수 있습니다. Java 바이트 코드를 올바르게 실행할 수 있도록 모든 기능 및 동작을 충족해야합니다.
지적했듯이 주요 차이점은 라이센스에있는 경향이 있습니다. 다른 기술적이지 않은 차이점은 무료/유료 지원 옵션, 다른 기술 (일반적으로 J2EE 서버)과의 통합 및 소스 코드에 대한 액세스에 있습니다.
참고 : J2EE 서버가 JVM에서 실행되는 반면 일부 서버에는 JVM 성능을 모니터링, 분석 및 조정할 수있는 통합 도구가 있습니다.
기술적 인 차이에 관한 한, 그 차이는 그다지 중요하지 않습니다. 옛날 옛적에 IBM과 JRockit JVM은 참조 용 Sun 구현보다 훨씬 우수한 성능을 보였습니다. 이것은 런타임 최적화의 유형, 가비지 콜렉션의 차이, 원시 코드 (및 다양한 클래스가 사용하는 원시 코드의 양)의 차이에 의한 것입니다. 이러한 성능 차이는 더 이상 중요하지 않습니다.
일부 JVM에는 진단 및 모니터링 도구가 포함되거나 통합되어 있습니다. JRockit에는 JVM 성능 모니터링을위한 도구 세트가 포함되어 있습니다. Sun은 여러 기능을 제공하는 JMX 기반의 다양한 도구를 제공합니다. IBM Websphere에는 한 번에 전체 J2EE 애플리케이션 서버에 대한 유사한 툴 세트가 포함되어있었습니다 (여전히 그렇다면 확신 할 수 없지만 여전히 그렇다고 가정합니다).
일부 오픈 소스 JVM은 처음부터 다시 개발 되었기 때문에 성능이 약간 떨어지는 경향이 있습니다. 따라서, 그들은 조금 더 따라 잡을 수 있습니다. 마지막으로 약 2 년 전에 확인했는데 Blackdown은 Sun JVM보다 상당히 느립니다 (1.5x-2x?). 또한 지원되는 Java 버전보다 약간 뒤떨어져있었습니다.
지우기 유형은 compiler function이며 JVM과 독립적입니다.
JIT 컴파일은 일부 JVM에는없는 것 중 하나입니다.
Sun JVM은 무엇입니까? http://java.sun.com/javase/technologies/hotspot/ 핫스팟 JIT 컴파일러는 모든 JVM 릴리스에 포함되어 있습니다. –
당신이 무엇을 말하고 싶은지 잘 모르겠지만 핫스팟은 Sun JVM의 일부입니다. –
왜 대부분의 JVM에 포함될 때 evey JVM에 JIT 컴파일이 없다고 말합니까? 왜 나 한테 투표 해? –
이전 버전의 JVM과 역 호환되도록 컴파일러에서 유형 삭제와 같은 작업을 수행합니다. 대부분의 JVM은 필요한 모든 기능을 지원해야하지만 일부는 다른 기능보다 더 최적화 될 수 있습니다. 아마 Sun JVM이 가장 빠를 것이라고 생각합니다.
JVM이 Java라고 주장하면 TCK를 통과해야하며 많은 재고가 있어야합니다.
차이
는 가비지 컬렉션, JConsole의/태양 JVM에서 VisualVM과, 미리 컴파일 등과 같은 비 핵심 장소에설명 : TCK는 가상 머신이 통과하는 테스트 모음입니다 자바를 공식적으로 준수하기 위해서
기술 호환 키트. http://jcp.org/en/resources/tdk –
꼬리 호출 최적화는 아직 Java에서 지원되지 않습니다. John Rose는이를 향후 릴리스에 포함시키기위한 노력을 주도하고 있으며 approach, and some of the issues이 관련되어 있다고 설명했습니다.
Java6 (시험용 기능)의 옵션을 기억하고 있습니다. Sun JDK가 실험용으로 지원할 수 있습니까? "Da vinchi VM"은 TCO를 지원해야한다고 들었습니다. –
예, da Vinci 프로젝트는 다른 언어에 대한 지원을 목표로하며, 지원이 프로토 타입 화되는 곳입니다. – erickson
어떤 종류의 최적화 (tail-recursion only)는 IBM JVM에서 지원됩니다 (메소드의 시작으로가는 것 같은 것) –
JVM 간의 또 다른 차이점은 문서화되지 않은 API에서의 동작입니다. (예 : com.sun.xxx) 예를 들어 Sun의 JVM과 IBM의 JVM은 모두 신호 처리 방식이 약간 다릅니다. (IBM의 JVM은 응용 프로그램이 특정 경우에 "INT"신호를 트래핑하는 것을 허용하지 않습니다.)
JVM은 클래스 및 Bytcode 변 수기를로드하고 코드를 실행하는 가상 시스템과 같습니다. Applocaion Programming Interface는 패키지 모음입니다. 패키지는 클래스의 컬렉션입니다. Java 프로그램은 JVM이 설치되고 작동하는 곳에서 실행됩니다.
누군가 JRockit을 5 년 넘게 사용하도록 강요 당했기 때문에 전반적으로 핫스팟보다 더 빠르지는 않지만 확실히 강력하지는 않습니다. 그들은 속도에 대한 신뢰도를 희생하며 결국 아무것도하지 못하게됩니다. – erickson
@erickson, 자발적으로 JRockit을 5 년 넘게 사용해온 사람으로서, 나는 당신의 경험이 보편적이지 않다라고 말할 수 있습니다. JRockit은 메모리 누수 탐지 도구로 적어도 한 번은 저장했습니다. :) Sun VM보다 더 이상 충돌이 없었습니다 (1 ~ 2 개가 있었음에도 불구하고). – jsight