2009-10-20 2 views
4

.NET 4.0에는 동적 유형 지정 객체에 대한 호출 디스패치가 새롭게 도입되었습니다. 지금까지 내가 밖으로 만들 수있는,이 포함됩니다CLR 및 JVM의 동적 유형 지정에 대한 다른 접근 방식

  • CLR은 변경없이
  • 새로운 유형의 새로운 유형의 용도에 새로운 구문을 변환하려면 BCL
  • 새로운 컴파일러에

자바 공간에서 사람들은 중급 언어의 추상화 뒤에서 JIT가 디스패치를 ​​처리하도록 adding a new dynamicinvoke bytecode to the JVM에 대해 논의하고 있습니다.

Java 접근 방식은 many significant parties에서 지원됩니다.

이들은 두 가지 근본적으로 다른 접근 방법처럼 보입니다. 각각의 장점은 무엇이며, 두 캠프는 왜 다른 경로를 택할 것입니까? 특히 두 솔루션의 유연성과 런타임 성능에 관심이 많습니다. 두 VM 모두 궁극적으로 동일한 목표를 달성하려고합니까?

+0

실제로 CLR에 변경 사항이 있다고 생각하지 않지만 동적 디스패치를 ​​처리하는 동적 언어 런타임 (DLR)이라는 새로운 기능이 추가되었습니다. 대답에 +1 – Joren

답변

2

중간 언어 명령어 세트 저장은 설치된 시스템과 새로운 응용 프로그램을 호환 할 수 없으므로 관리 시스템에 매우 중요합니다.

예. 썬은 제네릭을 도입하면서 변경을 피 했으므로 Java에서 제네릭을 구현하는 것이 절반으로 줄어 들었습니다. 동시에 MS는 제네릭에 대한 새로운 지침을 도입했습니다.

이론적으로 동적 호출에 대한 새로운 지침을 도입하면보다 효율적인 방법 조회 (예 : inline caching)의 가능성이 열립니다.

BTW, .NET 4.0 에는 버전의 CLR이 포함되어 있지만 AFAIK는이 버전이 업데이트 된 시스템 라이브러리로 인해 발생합니다.

+0

+1. 네, 저는 그것이 새로운 CLR이라는 것을 알고 있지만, opcode 세트는 동일합니다. 인라인 캐싱 링크에 감사드립니다. 새로운 CLR이므로 MS가 새로운 일리노이 지침을 도입 할 기회를 갖지 않기로 결정한 이유를 알고 계십니까? –

+0

죄송합니다. 신뢰할 수있는 정보가 없습니다. 하지만 호환성을 유지하는 것만으로도 충분하다고 생각합니다. –

+0

이러한 호환성을 통해 새 CLR 버전 용으로 빌드 된 실행 파일 만 이전 CLR에서 실행될 수 있습니다. 그러나 BCL의 새 버전은 어쨌든 호환성을 손상시키는 새로운 API를 도입합니다. 예를 들어 가장 최신 서비스 팩 3.5SP1조차도 원시 3.5 BCL과의 호환성을 깨 버렸기 때문에 여기서 호환성 인수를 구매하지는 않습니다. 또 다른 설명이 있어야합니다. –

관련 문제