new 대신 GWT.create ()를 사용하는 이유는 무엇입니까?
GWT.create(SomeClass.class)
과 의 차이점은 무엇입니까 new SomeClass()
?
왜 하나를 다른 것보다 사용합니까?
GWT.create
지연된 바인딩을 위해 GWT 컴파일러에서 사용됩니다. 지연된 바인딩은 컴파일 타임에 여러 버전의 코드를 생성하여 작동하는 GWT 컴파일러의 기능으로, 런타임에 부트 스트랩하는 동안 특정 클라이언트에서 하나만로드하면됩니다.
GWT.create
이 특정 사용 사례에 의존하는 경우 에만을 사용해야합니다 . 예를 들어 RPC 클래스를 만들 때 : (MyServiceAsync)GWT.create(MyService.class)
. 다른 모든 경우에는 new
.
자세한 내용은 지연 바인딩에 대한 GWT 페이지를 확인하십시오. http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsDeferred.html
GWT.create 는 리플렉션 지원이 부족하여 지연된 바인딩 작업을 사용합니다.
FAQ 에 따르면 :
Deferred Binding은 Java 리플렉션에 대한 Google Web Toolkit의 답변입니다.
유스 케이스로 시작하여 Deferred Binding을 설명하는 것이 가장 쉽습니다. 모든 웹 브라우저에는 고유 한 특성이 있으며, 일반적으로 많은 경우가 있습니다. (관리 할 수없는 수는 GWT가 처음에 해결하기 위해 생성 된 문제입니다.) 특이성을 처리하는 표준 Java 방식은 지원되는 각 브라우저에 대해 하나의 하위 클래스를 사용하여 사용자 정의 코드를 하위 클래스로 캡슐화하는 것입니다. 런타임시 애플리케이션은 리플렉션 및 동적 클래스 로딩을 사용하여 현재 환경에 적합한 하위 클래스를 선택하고, 클래스를로드하고, 인스턴스를 만든 다음 해당 인스턴스를 프로그램 기간 동안 서비스 공급자로 사용합니다.
이것이 실제로 GWT가하는 일입니다. 그러나 GWT 애플리케이션이 궁극적으로 실행되는 JavaScript 환경은 동적 클래스 로딩 (동적 바인딩이라고도 함)을 지원하지 않습니다. 생성 된 JavaScript 코드에서 각 브라우저를 지원하는 코드를 확실히 포함 할 수 있지만 그렇게하려면 모두에 대한 지원을 포함해야합니다. 브라우저는 단일 애플리케이션 파일에 있습니다. Opera 사용자가 필요로 할 기회가 전혀 없는데 Firefox 전용 코드를 다운로드해야하는 이유는 무엇입니까?
동적 바인딩은 GWT에 대한 기술로 사용할 수 없기 때문에 GWT는 대신 지연된 바인딩을 사용합니다. 이것을 생각하는 한 가지 방법은 "실행 시간 대신 컴파일 시간에 발생하는 동적 클래스 로딩"입니다. GWT 컴파일러는 Java 애플리케이션을 컴파일 할 때 지원해야하는 모든 다른 "idiosyncrasies"를 결정하고 해당 특정 구성에 대해 엄격하게 간소화 된 별도의 애플리케이션 버전을 생성합니다. 예를 들어, Firefox 용 애플리케이션 파일의 버전이 Opera와 다른 버전을 생성합니다.
참조 URL : https://stackoverflow.com/questions/2242399/why-use-gwt-create-instead-of-new
'IT박스' 카테고리의 다른 글
웹 아카이브의 WEB-INF 디렉토리에서 리소스를로드하는 방법 (0) | 2020.12.25 |
---|---|
이전 버전의 Python 용 OrderedDict (0) | 2020.12.25 |
JavaScript의 array.clear ()가 함수가 아닙니까? (0) | 2020.12.25 |
SQL Server: IF EXISTS ; ELSE (0) | 2020.12.25 |
Json.net을 사용하여 JSON을 작성할 때 들여 쓰기를 켜는 방법은 무엇입니까? (0) | 2020.12.25 |