2009-04-14 6 views
15

JVM 구현이 다른 점은 무엇입니까 (라이센스 제외)? 모든 JVM은 일반 처리를위한 유형 삭제를 구현합니까? JVM 구현 간의 차이점

사이의 차이점은 다음과 같습니다

  • 하는 JRockit
  • IBM JVM
  • SUN JVM
  • 오픈 JDK
  • Blackdown
  • 의 Kaffe

.... . Tail-Call-Optimization을 사용하여 그 중 하나를 거래합니까?

답변

15

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 버전보다 약간 뒤떨어져있었습니다.

+0

누군가 JRockit을 5 년 넘게 사용하도록 강요 당했기 때문에 전반적으로 핫스팟보다 더 빠르지는 않지만 확실히 강력하지는 않습니다. 그들은 속도에 대한 신뢰도를 희생하며 결국 아무것도하지 못하게됩니다. – erickson

+0

@erickson, 자발적으로 JRockit을 5 년 넘게 사용해온 사람으로서, 나는 당신의 경험이 보편적이지 않다라고 말할 수 있습니다. JRockit은 메모리 누수 탐지 도구로 적어도 한 번은 저장했습니다. :) Sun VM보다 더 이상 충돌이 없었습니다 (1 ~ 2 개가 있었음에도 불구하고). – jsight

1

JIT 컴파일은 일부 JVM에는없는 것 중 하나입니다.

+0

Sun JVM은 무엇입니까? http://java.sun.com/javase/technologies/hotspot/ 핫스팟 JIT 컴파일러는 모든 JVM 릴리스에 포함되어 있습니다. –

+0

당신이 무엇을 말하고 싶은지 잘 모르겠지만 핫스팟은 Sun JVM의 일부입니다. –

+0

왜 대부분의 JVM에 포함될 때 evey JVM에 JIT 컴파일이 없다고 말합니까? 왜 나 한테 투표 해? –

1

이전 버전의 JVM과 역 호환되도록 컴파일러에서 유형 삭제와 같은 작업을 수행합니다. 대부분의 JVM은 필요한 모든 기능을 지원해야하지만 일부는 다른 기능보다 더 최적화 될 수 있습니다. 아마 Sun JVM이 가장 빠를 것이라고 생각합니다.

1

JVM이 Java라고 주장하면 TCK를 통과해야하며 많은 재고가 있어야합니다.

차이

는 가비지 컬렉션, JConsole의/태양 JVM에서 VisualVM과, 미리 컴파일 등과 같은 비 핵심 장소에


설명 : TCK는 가상 머신이 통과하는 테스트 모음입니다 자바를 공식적으로 준수하기 위해서

+0

기술 호환 키트. http://jcp.org/en/resources/tdk –

1

꼬리 호출 최적화는 아직 Java에서 지원되지 않습니다. John Rose는이를 향후 릴리스에 포함시키기위한 노력을 주도하고 있으며 approach, and some of the issues이 관련되어 있다고 설명했습니다.

+0

Java6 (시험용 기능)의 옵션을 기억하고 있습니다. Sun JDK가 실험용으로 지원할 수 있습니까? "Da vinchi VM"은 TCO를 지원해야한다고 들었습니다. –

+0

예, da Vinci 프로젝트는 다른 언어에 대한 지원을 목표로하며, 지원이 프로토 타입 화되는 곳입니다. – erickson

+0

어떤 종류의 최적화 (tail-recursion only)는 IBM JVM에서 지원됩니다 (메소드의 시작으로가는 것 같은 것) –

1

JVM 간의 또 다른 차이점은 문서화되지 않은 API에서의 동작입니다. (예 : com.sun.xxx) 예를 들어 Sun의 JVM과 IBM의 JVM은 모두 신호 처리 방식이 약간 다릅니다. (IBM의 JVM은 응용 프로그램이 특정 경우에 "INT"신호를 트래핑하는 것을 허용하지 않습니다.)

1

JVM은 클래스 및 Bytcode 변 수기를로드하고 코드를 실행하는 가상 시스템과 같습니다. Applocaion Programming Interface는 패키지 모음입니다. 패키지는 클래스의 컬렉션입니다. Java 프로그램은 JVM이 설치되고 작동하는 곳에서 실행됩니다.

관련 문제