소개 현재는 호스트 모드를 시작하는데 많은 시간이 걸립니다. 이 시작 시간의 상당부분은 컴파일 시간이 차지합니다. Instant Hosted Mode 는 기존의 클래스 파일을 어디에서든지 사용하는 것이 가능하도록 하는 것을 제안합니다.
고려할 사항
- JSNI 는 클래스파일에 보존할 필요가 없습니다. 그래서 여전히 소스에서 읽어와야만 합니다. 그러나 우리는 JSNI 를 파일에 저장하고, 소스파일이 변경되지 않았다면 재사용할 수 있습니다.
- super-source(?) 에 맞추는 방법은 확실하지 않습니다. (????)
- Emma 와 같은 외부 바이트코드 재작성 도구가 필요하다는 것을 고려해야 합니다.
- ...
역시 짧아도 번역의 압박이~ ㅋㅋㅋ
중요한 내용은 JSNI 를 바이트 코드에 심어서 재사용할 수 있도록 하는 것입니다.
그렇다면... 나중에는 class 파일로도 GWT 를 컴파일 할 수 있도록 변경도 가능할 것 같습니다.
아니면 새로운 타입의 바이트코드를 생성하여 재사용할 수 있도록 만든다는 것이겠죠...
진행할 과정들을 나눈 후에 ProgressTimer 를 구현하여 progressRun 메소드에서 실행하도록 한후 ProgressManager 에 추가하는 방식으로 추가된 순서대로 실행을 하도록 하는 방식입니다. 약간의 딜레이가 있을 경우에는 프로세스가 화면 렌더링을 하기전에 즉, 화면이 멈춰보이는 상태 전에 MessageBox 의 progress 를 업데이트합니다.
추가적으로 생성할 때 내부에서 사용할 객체를 넘겨주기 때문에 필요한 객체를 효과적으로 사용할 수 있습니다.
GWTEventService 는 이벤트 기반의 클라이언트-서버 통신 프레임워크입니다. GWT-RPC 와 Comet 을 이용합니다.
자세한 내용은 아래쪽에...
GWTEventService is an event-based client-server communication framework. It uses GWT-RPC and the Comet / server-push technique. The client side offers a high-level API with opportunities to register listeners to the server like to a GUI component. Events can be added to a context/domain on the server side and the listeners on the client side get informed about the incoming events. The server side is completely independent of the client implementation and is highly configurable. Domains can be defined to decide which events are important for the different contexts.
Advantages
Encapsulation of the client-server communication
High-level API with listeners and events
Only one open connection for event listening
Reduction of server calls
Reduction of connection peaks
Events are returned directly when the event has occurred (instead of polling)
Events are bundled to reduce server calls
Based on the GWT-RPC mechanism
Automatic timeout recognition and handling
Extensible architecture
원래 Comet 과 GWT 를 이용해서 메신저 비슷한 것을 만들어 보려고 했는데 이런 프레임워크가 나오면 개발이 좀 더
쉬워질 것 같습니다~
무엇이 추가되었는지 보이시나요?? 나름 디자인패턴 책을 보고 io 쪽에서는 상위에서 close 하면 하위를
찾아가면서 close 된다는 것을 봤던 것을 잘못이해해서 어차피 response.getOutputStream() 을 통해서
만든 PrintWriter 를 close 안해도 되겠지라는 생각으로 close 를 안해줬더니 안되는 것이었습니다.
여튼 붙이는 것은 성공했습니다. 어줍잖게 알다가 삽질마일리지만 차곡차곡 쌓았네요~ ㅋㅋ
삽질마일리지 적립해서 아이팟 사야지!!
Easily compile into a war file structure, making it easy to deploy your compiled GWT application into standard servlet containers
Migration from Tomcat to Jetty hosted mode server
A more pluggable architecture for the hosted mode server will enable developers to use servlet containers other than Tomcat with the Hosted Mode browser
Uniform event handlers
Event handlers will be implemented in a uniform fashion across all widgets, with listeners deprecated
DatePicker, LazyPanel migrated in from incubator
New widgets from the incubator
String performance improvements
StringBuilder uses deferred binding to optimize string appends per-browser
Compiler performance improvements
1.6 will introduce parallel permutation compilations and other performance tweaks for faster compiles
Post 1.6
The following are features that are on our roadmap for releases post 1.6, but are in various states of development. As we reach the end of the 1.6 cycle, we'll update the roadmap with which features we are targeting for the next release.
Developer Guided Code splitting
Developer guided code splitting is a mechanism that allows developers to specify asynchronous split points in their code where the code base can be split and downloaded in different chunks. This is currently an R&D project but looks promising.
Analysis of compiled code, aka Story of your compile (SOYC)
Aims to give developers concrete information about their compiled JavaScript, such as which Java classes are generating the most JavaScript code.
In-browser hosted mode will allow GWT developers to debug their apps within a browser rather than GWT's hosted mode browser
UI Binder
The UI Binder will allow the creation of UI elements in a declarative fashion. Watch for UI Binder to land in the GWT incubator soon.
Client Bundle
Client Bundle implements the power of deferred binding used in Image Bundle in a generic fashion so that it can be used on many resources. These include TextResource, ImageResource, and CSSResource
RPC performance improvements
Ongoing work to improve the performance of RPC
릴리즈 1.6 은 2009년 1분기를 목표로 하고 있는 것 같습니다.
ㅁ 컴파일된 파일들의 배포 구조를 새롭게 가져간다는 이야기가 하나 있네요. 저번에 포스팅 했었던 그 내용 같습니다.
ㅁ 호스트 모드 서버를 톰캣에서 Jetty 로 마이그레이션 계획이 있나 봅니다. 호스트 모드의 서버는 톰캣이였죠~
ㅁ 위짓들의 이벤트 핸들러를 하나로 통합한다는 이야기로 보이네요. 다른 것들은 deprecated 시킨다는 이야기??
ㅁ DatePicker 와 LazyPanel widget 의 추가
ㅁ String 성능 향상
ㅁ Compiler 성능 향상
1.6 이후에는 여러가지 기능들이 추가할 예정으로 보이네요.
ㅁ 개발자 가이드 코드의 분할
ㅁ 컴파일된 코드의 분석 (Story of your compile, SOYC)
ㅁ 브라우저를 통한 호스트 모드 (Out-of-process Hosted Mode, OOPHM)
ㅁ UI Builder 의 제공
ㅁ 클라이언트 번들. TextResource, ImageResource, CSSResource 를 제공해줄 듯 보이네요.
ㅁ RPC 성능 향상
We will rectify the deployment issue in 1.6 by standardizing GWT around the "expanded WAR format". The two key principles are:
The result of running the GWT compiler (and possibly some associated tools/build rules) will be an expanded WAR directory structure that can be immediately deployed to a Java Servlet Container compatible web server.
Hosted mode will operate using essentially the same format, in the same directory, to ensure that hosted and compiled web applications behave the same.
In 1.6, we always dump all resources directly into the WAR directory, which the server serves directly out of. We automate in hosted mode what a build process would do. This is triggered by the Hosted Browser actually executing a selection script; the selection script (when running hosted mode) forces a hosted mode link. Subsequent GWT.create() calls may cause incremental links.
GWT 1.6 이 보이길래 GWT 1.6 버전 개발 계획인지 알고 냉큼 떡밥을 물었더니 deploy 와 관련된 내용이네요.