
GWT를 살펴보면 핵심은 단순합니다. Java코드를 Javascript 코드로 변환하는게 주 목적입니다. 이를 위해서 총 4개의 단위로 구성됩니다.
- Java코드를 Javascript로 컨버젼하기 위한 Java-to-Javascript 컴파일러
- Javascript로 변환하기 전에 테스트, 디버깅 등의 목적을 위해서 Java코드만으로 Web에서 동작하는 것처럼해줍니다. (Hosted mode)
- JRE emulation library는 java.lang 또는 java.util로 작성된 코드들이 Javascript로 컴파일 되었을 때 정상적으로 동작하게 해주기 위해서 JRE를 에뮬레이션해주는 부분입니다.
- GWT Web UI library는 Web 브라우져에서 사용할 수 있는 컴포넌트 단위의 UI 오브젝트들입니다.
- 프로그래머가 projectCreator와 applicationCreator를 사용하여 이클립스 프로젝트를 생성합니다.
- (이 둘을 사용하여 프로젝트를 생성하면 기본적인 프로그램의 구조와 ant파일, javascript 컨버젼 command파일 html파일등을 생성해줍니다.)
- 이 프로젝트를 이클립스로 import합니다. (이 때 생성된 코드를 바로 실행할 수 있도록 com.google.gwt.dev.GWTShell을 Main class로 등록하고 argument도 바로 설정됩니다.)
- 이클립스의 Package Explorer를 살펴보면 프로젝트 생성한 프로젝트에 따라서 Project Structure도 구성되게 됩니다. (클라이언트 파일의 경우 client 폴더아래 쪽에 작성하며 서블릿같은 서버단 코드는 server코드에 리소스의 경우 public폴더 아래에 넣습니다. Project Structure)
※ 이 때 주의할 점은 구조에 맞게 파일을 넣어야 하는 점입니다. 리소스의 경우 public 폴더에 넣어야만 Web 모드로 컴파일 했을 때 적절한 위치로 리소스 파일을 넣어줍니다.- 위치 변경도 가능하기는 합니다.
- applicationCreator에서 인자로 주었던 EntryPoint를 구현한 클래스가 시작점이 됩니다.(자바에서 main()를 가진 클래스가 시작점이 었던 것처럼요)

- Hosted mode에서 테스트하는 경우 브라우저와 다르게 동작하는 부분이 있습니다. CSS가 생각했던 것과 다르게 동작하더군요.
- GWT가 변환해주는 Java 패키지는 java.lang과 java.util 두가지만 지원하는 점입니다. 이외에도 언어상의 제약점이나 Runtime Library Support의 제약점이 있습니다. (따라서, Java 프로그램을 컨버젼하기에는 무리가 있을 것 같네요.)
- Javascript의 eval() 같은 메소드가 지원이 되지 않는 단점이 있습니다. (한두달 만에 자바스크립트에 익숙해져버렸나보네요. ^^;;)
- Widget을 감싸는 Panel을 사용하는 경우 의도했던 것과는 다르게 table태그나 div태그 등으로 한번 더 감싸게 되기 때문에 최후에는 생성된 html과 소스코드를 확인해야하는 부분도 있습니다.
- 라이브러리가 포함되므로 프로그램 사이즈가 항상 100k이상이 되는 것도 문제입니다.
- Safari 지원이 완벽하지 않다는 얘기가 포럼에 올라오고 있기도 합니다.
* GWT가 1.1로 업데이트 되었습니다.
* Pragmatic Bookshelf에서 gwt에 관한 책도 나왔네요.([5]링크 참조)
참고자료
댓글 없음:
댓글 쓰기