2015-01-15 6 views
2

GWT는 코드 생성기를 GWT.create() 명령과 함께 사용하여 구현을 생성합니다. 이것은 GWT에서 일을하는 선언적 방법을 제공하지만, 왜 대부분의 자바와 같은 주석 처리기로 끝내지 않는지 이해할 수 없습니다. this article은 내가 원래 생각한 것입니다. 그것은 빌드를 단순화하고 컴파일 시간 오류를보고 일반 Java와 훨씬 더 호환되도록하는 것처럼 보입니다. 이것은 부차적 인 질문이지만 GWT가 리플렉션을 지원해야한다고 생각하는 유일한 사람입니다. 나는 이것이 코드를 느리게 만들지 만 여전히 들린다 고 들었다. 어떤 경우에는 그만한 가치가 있지 않습니까?왜 GWT는 주석 처리기가 아닌 코드 생성기를 사용합니까?

답변

3

GWT는 주석이 Java 언어/플랫폼 (Java 1.4)에도 존재하기 전에 작성되었습니다. 이것이 이유입니다.

새로운 개발은 주석 처리쪽으로 기울어 져 경향이 있으며 결국에는 SuperDevMode 재 컴파일의 일부로 지원됩니다 (현재 주석 프로세서를 실행하고 SDM에서 수정 된 소스를 선택해야 함). 한 예가 Dagger 2입니다.
그러나이 방법은 현재 GWT에서 발전기가 사용되는 모든 경우에 적용 가능하지 않다고 생각합니다. 연기 바인딩가지 경우 교체를 위해

GWT.create()에 관해서는, 여전히 유용/필요할 수 있습니다. 반사에 관해서는


는, 그것이 런타임 반사를 지원하기 위해 생성 된 JS 코드에 포함 할 필요가 메타 데이터에 관하여, "느림"에 대해 아니에요. 모든 것이 컴파일 타임에 알려졌다는 것을 감안할 때 런타임에 반영 할 필요는 거의 없습니다. 일반적으로 컴파일시 생성 된 코드를 런타임 리플렉션의 대체품으로 사용할 수 있습니다. 아니, 그럴 가치가 없어.

+0

2004 년 Java 1.5부터 주석이 지원되었으며, 2006 년 첫 번째 GWT RC가 출시되었습니다. 프로젝트가 실제로 시작될 때 정보를 찾을 수 없습니다. 그러나 그 당시 주석이 존재하더라도 어쨌든 주석이 사용되었을 것입니다. 툴링 지원이 부족하고 새로운 기술이 성공적으로 채택되고 널리 사용되지 않을 위험이있었습니다. – Kapep

+0

예, GWT는 1.5 버전까지 Java 5 소스를 지원하지 않았지만 2008 년에 릴리스되었습니다. –