|
Project Information
Links
|
Java on Gems README file 1. INTRODUCTION Java on Gems (hereafter refererred to as Gems) is a framework extension for the Google Widget Toolkit (GWT). Gems is an acronym for (G)WT (E)xtension (M)odule(S). The reason why the name Java has been prepended to Gems, is because unlike other GWT libraries available, this library will be all Java with no more than 20% JSNI! I use GWT to get as far away from Javascript as possible. Hence, the last thing I want in a library is more Javascript dependencies. Most Javascript libraries/widgets depend on Prototype and/or Scriptaculous to function. This means that a GWT widget would need to wrap that library in JSNI and then need to include both Prototype and/or script.aculo.us as part of the distribution. Instead, a Gems approach would be to port the functionality to pure Java and leverage GWT’s JRE and user library for everything else. Indeed, this is a violation of the following principle that I value: “Minimize duplication/reinvention, maximize leverage” Many will argue - why duplicate, when it is possible to leverage the Javascript libraries/widgets in their current form. Based on my experiences, the pain and suffering of porting and maintaining the code is significantly less than attempting to debug and understand the semantics of a Javascript implementation. Furthermore, the GWT Compiler optimizes the Java implementation which may well make it more efficient. 2. CHANGES GemsV2 is a significant overhaul of the original Gems project. Note, The original source is still available in a tag and branch. However, this release of Gems has a heavy client side focus. GemsV1 was based on my first large content management system application that was built on GWT. However, since then, my understanding of GWT and its sweet-spots has evolved. This does not invalidate the need for many of the server side feature in GemsV1. Some of these features may will re-appear, but will likely be heavily refactored to take advantage of new GWT features and greater system knowledge. 3. LESSONS LEARNT FROM GemsV1+ * Dont assume your defect fixes to GWT user library will get picked and incorporated into the GWT distribution * Dont hack around with the module bootstrap process. This process logic has changed between major releases and porting will hurt. It is also likely to change again when dynamic module linking is supported * Learn to live with GWT's widget API. Dont attempt to create a new component model (regardless of how much better it is) unless you have the support of a community. It is likely that you will only end up creating these scaffolds which will ultimately not get leveraged by others. 3. FEATURES * jclient GWT-RPC - use gwt-rpc from native java clients (or from a java container/server) * Google Widget Kit (gwk) - <<controller>> - Abstract Page Controller - Abstract Page Coordinator - <<view>> - Page Panel (from Google groups BETA) (keyboard support) - Card (from GMail & Google groups BETA) (keyboard support) - Card Deck (from GMail & Google groups BETA) - Application Link Bar - Search Bar * Rico - Transition - Opacity Effect - Size And Position Effect * Reverse ZK (rzk) - Splitter (keyboard support) * Standard widget extensions to GWT user (std) - <<controller>> - Abstract View Controller - <<utils>> - History Utils - Str Tokenizer - Endpoint Utils - <<view>> - Div Panel - East West Horiz Panels - Listenable Stack Panel * Winforms - <<view>> - Outlook Bar (no keyboard support) - Outlook Bar Item - Outlook Bar List 4. SAMPLE APPLICATION The GemsV1 project was heavily leveraged in the Juls project. However, the original Juls project has not been refactored to incorporate the GemV2 features. This project may get revitalised at another point in time. Instead, a new project named "gwt-Petstore" has been created which fully leverages the GemsV2 functionality. 5. RESOURCES [[Gems Official website|http://javaongems.org/]] [[Gems User issue registry|http://code.google.com/p/javaongems/issues/list]] [[Gems User svn repository|http://javaongems.googlecode.com/svn/]] [[gwt-Petstore public website|http://code.google.com/p/gwtpetstore/]] [[gwt-Petstore issue registry|http://code.google.com/p/gwtpetstore/issues/list]] [[gwt-Petstore svn repository|http://gwtpetstore.googlecode.com/svn/trunk/]] [[GWT Official website|http://code.google.com/webtoolkit/]] [[GWT Google group|http://groups.google.com/group/Google-Web-Toolkit]] 5. DIRECT CONTACT If you want direct correspondence from gworks then please contact us on support@gworks.com.au rgds ash |