GWT meets HTML5
Compile
Java             JavaScript
ex) ImageResource, Inliner
“Deferred Binding is Google Web Toolkit's answer to
Java reflection.”

         http://code.google.com/webtoolkit/doc/1.6/FAQ_Client.html#What_is_Deferred_Binding?
http://www.youtube.com/watch?v=nvti32k4xyU



    Your Code         Download exactly what you            Your Code
                      need in a single, optimized,
                        can’t-go-wrong chunk
   FireFox                                                    IE6
    en_US                                                  en_UK
                          Single Java
1D04ADDA.cache.html
                          Code Base                     15F361B8.cache.html



    Your Code                                              Your Code
                      Then cache it on the client
     Safari             until the sun explodes            Opera 9
     fr_FR                                                  fr_CA
7EFE4D24.cache.html                                     D415D917.cache.html
private static final PopupImpl impl = GWT.create(PopupImpl.class);

<module>
  <!-- Fall through to this rule is the browser isn't IE or Mozilla -->
  <replace-with class="com.google.gwt.user.client.ui.impl.PopupImpl">
    <when-type-is class="com.google.gwt.user.client.ui.impl.PopupImpl"/>
  </replace-with>

    <!-- Mozilla needs a different implementation due to issue #410 -->
    <replace-with class="com.google.gwt.user.client.ui.impl.PopupImplMozilla">
      <when-type-is class="com.google.gwt.user.client.ui.impl.PopupImpl"/>
      <any>
        <when-property-is name="user.agent" value="gecko"/>
        <when-property-is name="user.agent" value="gecko1_8"/>
      </any>
    </replace-with>

  <!-- IE has a completely different popup implementation -->
  <replace-with class="com.google.gwt.user.client.ui.impl.PopupImplIE6">
    <when-type-is class="com.google.gwt.user.client.ui.impl.PopupImpl"/>
    <when-property-is name="user.agent" value="ie6" />
  </replace-with>
</module>
        Button b = new Button("Click me", new ClickHandler() {
          public void onClick(ClickEvent event) {
            GWT.runAsync(new RunAsyncCallback() {
              public void onFailure(Throwable caught) {
                Window.alert("Code download failed");
              }
              public void onSuccess() {
                Window.alert("Hello, AJAX");
              }
            });
          }
        });
Host Page (Module.html)


                             Selection Script
                          (module.nocache.html)


                             Permutation Script
   Browser              (Strongly-named.cache.html)   Server
              onload
Module starts running
                            runAsync Fragments
public static native void log(String msg) /*-{
  var logger = $wnd.console;
  if(logger && logger.markTimeline) {
    logger.markTimeline(msg);
  }
}-*/;
http://bit.ly/hl1riO
http://gwtcanvasdemo.appspot.com/
SmartGWT
mobile specific
   version




                 http://bit.ly/bzK6xB
http://code.google.com/events/io/2010/sessions/gwt-html5.html
http://code.google.com/events/io/2010/sessions/gwt-html5.html
Kanjava20110302
Kanjava20110302
Kanjava20110302
Kanjava20110302
Kanjava20110302
Kanjava20110302
Kanjava20110302

Kanjava20110302

  • 1.
  • 5.
    Compile Java JavaScript
  • 7.
  • 12.
    “Deferred Binding isGoogle Web Toolkit's answer to Java reflection.” http://code.google.com/webtoolkit/doc/1.6/FAQ_Client.html#What_is_Deferred_Binding?
  • 13.
    http://www.youtube.com/watch?v=nvti32k4xyU Your Code Download exactly what you Your Code need in a single, optimized, can’t-go-wrong chunk FireFox IE6 en_US en_UK Single Java 1D04ADDA.cache.html Code Base 15F361B8.cache.html Your Code Your Code Then cache it on the client Safari until the sun explodes Opera 9 fr_FR fr_CA 7EFE4D24.cache.html D415D917.cache.html
  • 14.
    private static finalPopupImpl impl = GWT.create(PopupImpl.class); <module>   <!-- Fall through to this rule is the browser isn't IE or Mozilla -->   <replace-with class="com.google.gwt.user.client.ui.impl.PopupImpl">     <when-type-is class="com.google.gwt.user.client.ui.impl.PopupImpl"/>   </replace-with>   <!-- Mozilla needs a different implementation due to issue #410 -->   <replace-with class="com.google.gwt.user.client.ui.impl.PopupImplMozilla">     <when-type-is class="com.google.gwt.user.client.ui.impl.PopupImpl"/>     <any>       <when-property-is name="user.agent" value="gecko"/>       <when-property-is name="user.agent" value="gecko1_8"/>     </any>   </replace-with>   <!-- IE has a completely different popup implementation -->   <replace-with class="com.google.gwt.user.client.ui.impl.PopupImplIE6">     <when-type-is class="com.google.gwt.user.client.ui.impl.PopupImpl"/>     <when-property-is name="user.agent" value="ie6" />   </replace-with> </module>
  • 16.
        Button b = new Button("Click me", new ClickHandler() {       public void onClick(ClickEvent event) {         GWT.runAsync(new RunAsyncCallback() {           public void onFailure(Throwable caught) {             Window.alert("Code download failed");           }           public void onSuccess() {             Window.alert("Hello, AJAX");           }         });       }     });
  • 17.
    Host Page (Module.html) Selection Script (module.nocache.html) Permutation Script Browser (Strongly-named.cache.html) Server onload Module starts running runAsync Fragments
  • 25.
    public static nativevoid log(String msg) /*-{ var logger = $wnd.console; if(logger && logger.markTimeline) { logger.markTimeline(msg); } }-*/;
  • 30.
  • 32.
  • 41.
    SmartGWT mobile specific version http://bit.ly/bzK6xB
  • 49.
  • 52.