2012-10-16 3 views
0

GWT 구현 JRE 라이브러리 에뮬레이션 기술에 흥미가 있습니다.GWT 런타임 Java 에뮬레이션

GWT가 Java 라이브러리를 에뮬레이트하는 방법은 무엇입니까?

JavaScript에서 얼마나 효과적으로 HashMap을 구현 했습니까? 순수한 JavaScript로 구현 되었습니까? 아니면 코드에서 사용되는 경우 Java 소스로 컴파일됩니까?

개발 (호스트) 모드 용 gwt-dev 라이브러리에 일부 구현이 있음을 알고 있습니다. 생산 코드와 동일한 구현입니까?

답변

2

코드를 온라인으로 탐색 할 수 있습니다 (예 : HashMap, 또는 더 흥미롭게도 AbstractHashMap. 보시다시피, 일부 JSNI 메소드가 있습니다 (native 키워드와 /*-{ ... }-*/ 구문을 가진 메소드). 그러나 에뮬레이션 코드의 많은 메소드는 JSNI 메소드 위에 구축됩니다.이 메소드는 "상위 레벨"Java 메소드로 작성됩니다.

이 에뮬레이션 코드는 사용자가 직접 작성하는 GWT 코드입니다 (물론 JSNI 코드의 비율은 통계적으로 높습니다). 그리고 <super-source> 메커니즘을 사용합니다. 이렇게하면 동일한 클래스의 클라이언트 코드가 개발 모드와 비교하여 프로덕션 모드가 다를 수 있습니다.

4

에뮬레이트 된 JRE 라이브러리 here을 확인할 수 있습니다. 대부분의 경우 GWT는 자바 스크립트를 사용하지만, GWT는 자바 스크립트 구현 버전을 사용합니다.

HashMaps의 경우, JavaScript 내장 버전은 String-> value map 만 제공하므로 GWT는 Object-> Object map을 지원하는 자체 구현을 사용합니다. 좀 더 자세한 내용은 here을 참조하십시오.

프로덕션 (컴파일 된) 모드와 개발 모드 (디버그)의 차이점을 이해하려면 Compile & Debug 섹션을 확인할 수 있습니다.