Your SlideShare is downloading. ×
GWT
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

GWT

913
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
913
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • <mockup version="1.0" skin="sketch" measuredW="971" measuredH="278" mockupW="927" mockupH="236">    <controls>      <control controlID="24" controlTypeID="com.balsamiq.mockups::FieldSet" x="34" y="32" w="927" h="71" measuredW="200" measuredH="170" zOrder="0" locked="false" isInGroup="-1">        <controlProperties>          <text>Client</text>        </controlProperties>      </control>      <control controlID="25" controlTypeID="com.balsamiq.mockups::FieldSet" x="34" y="188" w="927" h="80" measuredW="200" measuredH="170" zOrder="1" locked="false" isInGroup="-1">        <controlProperties>          <text>Server</text>        </controlProperties>      </control>      <control controlID="26" controlTypeID="com.balsamiq.mockups::Arrow" x="44" y="137" w="913" h="11" measuredW="150" measuredH="100" zOrder="2" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text>Zeit</text>        </controlProperties>      </control>      <control controlID="27" controlTypeID="com.balsamiq.mockups::Button" x="90" y="55" w="-1" h="-1" measuredW="92" measuredH="28" zOrder="3" locked="false" isInGroup="-1">        <controlProperties>          <text>Interaktion</text>        </controlProperties>      </control>      <control controlID="28" controlTypeID="com.balsamiq.mockups::Arrow" x="147" y="93" w="137" h="110" measuredW="150" measuredH="100" zOrder="4" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text>Anfrage</text>        </controlProperties>      </control>      <control controlID="29" controlTypeID="com.balsamiq.mockups::Arrow" x="326" y="93" w="139" h="110" measuredW="150" measuredH="100" zOrder="5" locked="false" isInGroup="-1">        <controlProperties>          <direction>bottom</direction>          <leftArrow>false</leftArrow>          <text>%3Chtml%3E...%3C/html%3E</text>        </controlProperties>      </control>      <control controlID="30" controlTypeID="com.balsamiq.mockups::Button" x="254" y="219" w="102" h="28" measuredW="102" measuredH="28" zOrder="6" locked="false" isInGroup="-1">        <controlProperties>          <text>Verarbeitung</text>        </controlProperties>      </control>      <control controlID="31" controlTypeID="com.balsamiq.mockups::Button" x="455" y="55" w="-1" h="-1" measuredW="92" measuredH="28" zOrder="7" locked="false" isInGroup="-1">        <controlProperties>          <text>Interaktion</text>        </controlProperties>      </control>      <control controlID="34" controlTypeID="com.balsamiq.mockups::Arrow" x="505" y="93" w="137" h="110" measuredW="150" measuredH="100" zOrder="8" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text>Anfrage</text>        </controlProperties>      </control>      <control controlID="35" controlTypeID="com.balsamiq.mockups::Arrow" x="684" y="93" w="139" h="110" measuredW="150" measuredH="100" zOrder="9" locked="false" isInGroup="-1">        <controlProperties>          <direction>bottom</direction>          <leftArrow>false</leftArrow>          <text>%3Chtml%3E...%3C/html%3E</text>        </controlProperties>      </control>      <control controlID="36" controlTypeID="com.balsamiq.mockups::Button" x="612" y="219" w="102" h="28" measuredW="102" measuredH="28" zOrder="10" locked="false" isInGroup="-1">        <controlProperties>          <text>Verarbeitung</text>        </controlProperties>      </control>      <control controlID="37" controlTypeID="com.balsamiq.mockups::Button" x="813" y="55" w="-1" h="-1" measuredW="92" measuredH="28" zOrder="11" locked="false" isInGroup="-1">        <controlProperties>          <text>Interaktion</text>        </controlProperties>      </control>    </controls> </mockup>
  • <mockup version="1.0" skin="sketch" measuredW="1819" measuredH="766" mockupW="929" mockupH="342">    <controls>      <control controlID="38" controlTypeID="com.balsamiq.mockups::FieldSet" x="880" y="414" w="929" h="212" measuredW="200" measuredH="170" zOrder="0" locked="false" isInGroup="-1">        <controlProperties>          <text>Client</text>        </controlProperties>      </control>      <control controlID="39" controlTypeID="com.balsamiq.mockups::FieldSet" x="880" y="676" w="929" h="80" measuredW="200" measuredH="170" zOrder="1" locked="false" isInGroup="-1">        <controlProperties>          <text>Server</text>        </controlProperties>      </control>      <control controlID="40" controlTypeID="com.balsamiq.mockups::Arrow" x="880" y="647" w="914" h="10" measuredW="150" measuredH="100" zOrder="2" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text>Zeit</text>        </controlProperties>      </control>      <control controlID="41" controlTypeID="com.balsamiq.mockups::FieldSet" x="898" y="433" w="896" h="63" measuredW="200" measuredH="170" zOrder="3" locked="false" isInGroup="-1">        <controlProperties>          <text>User%20Interface</text>        </controlProperties>      </control>      <control controlID="42" controlTypeID="com.balsamiq.mockups::FieldSet" x="898" y="542" w="896" h="71" measuredW="200" measuredH="170" zOrder="4" locked="false" isInGroup="-1">        <controlProperties>          <text>AJAX%20Engine</text>        </controlProperties>      </control>      <control controlID="43" controlTypeID="com.balsamiq.mockups::Button" x="913" y="453" w="866" h="28" measuredW="106" measuredH="28" zOrder="5" locked="false" isInGroup="-1">        <controlProperties>          <text>Interaktionen</text>        </controlProperties>      </control>      <control controlID="44" controlTypeID="com.balsamiq.mockups::Button" x="913" y="569" w="866" h="28" measuredW="116" measuredH="28" zOrder="6" locked="false" isInGroup="-1">        <controlProperties>          <text>Verarbeitungen</text>        </controlProperties>      </control>      <control controlID="47" controlTypeID="com.balsamiq.mockups::Button" x="1051" y="710" w="102" h="28" measuredW="102" measuredH="28" zOrder="7" locked="false" isInGroup="-1">        <controlProperties>          <text>Verarbeitung</text>        </controlProperties>      </control>      <control controlID="48" controlTypeID="com.balsamiq.mockups::Arrow" x="1001" y="483" w="37" h="78" measuredW="150" measuredH="100" zOrder="8" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="49" controlTypeID="com.balsamiq.mockups::Arrow" x="996" y="601" w="77" h="95" measuredW="150" measuredH="100" zOrder="9" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="50" controlTypeID="com.balsamiq.mockups::Arrow" x="1113" y="607" w="92" h="94" measuredW="150" measuredH="100" zOrder="10" locked="false" isInGroup="-1">        <controlProperties>          <direction>bottom</direction>          <leftArrow>false</leftArrow>          <text>%7B%20data%3A%20%5B%201%2C%202%20%5D%20%7D</text>        </controlProperties>      </control>      <control controlID="53" controlTypeID="com.balsamiq.mockups::Arrow" x="1059" y="490" w="72" h="75" measuredW="150" measuredH="100" zOrder="11" locked="false" isInGroup="-1">        <controlProperties>          <direction>bottom</direction>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="56" controlTypeID="com.balsamiq.mockups::Arrow" x="1198" y="486" w="37" h="78" measuredW="150" measuredH="100" zOrder="12" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="57" controlTypeID="com.balsamiq.mockups::Arrow" x="1256" y="493" w="72" h="75" measuredW="150" measuredH="100" zOrder="13" locked="false" isInGroup="-1">        <controlProperties>          <direction>bottom</direction>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="58" controlTypeID="com.balsamiq.mockups::Arrow" x="1395" y="486" w="37" h="78" measuredW="150" measuredH="100" zOrder="14" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="59" controlTypeID="com.balsamiq.mockups::Arrow" x="1453" y="493" w="72" h="75" measuredW="150" measuredH="100" zOrder="15" locked="false" isInGroup="-1">        <controlProperties>          <direction>bottom</direction>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="60" controlTypeID="com.balsamiq.mockups::Arrow" x="1577" y="486" w="37" h="78" measuredW="150" measuredH="100" zOrder="16" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="61" controlTypeID="com.balsamiq.mockups::Arrow" x="1635" y="493" w="72" h="75" measuredW="150" measuredH="100" zOrder="17" locked="false" isInGroup="-1">        <controlProperties>          <direction>bottom</direction>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="62" controlTypeID="com.balsamiq.mockups::Button" x="1311" y="710" w="102" h="28" measuredW="102" measuredH="28" zOrder="18" locked="false" isInGroup="-1">        <controlProperties>          <text>Verarbeitung</text>        </controlProperties>      </control>      <control controlID="63" controlTypeID="com.balsamiq.mockups::Arrow" x="1256" y="601" w="77" h="95" measuredW="150" measuredH="100" zOrder="19" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="64" controlTypeID="com.balsamiq.mockups::Arrow" x="1373" y="607" w="92" h="94" measuredW="150" measuredH="100" zOrder="20" locked="false" isInGroup="-1">        <controlProperties>          <direction>bottom</direction>          <leftArrow>false</leftArrow>          <text>%7B%20data%3A%20%5B%201%2C%202%20%5D%20%7D</text>        </controlProperties>      </control>      <control controlID="65" controlTypeID="com.balsamiq.mockups::Button" x="1571" y="710" w="102" h="28" measuredW="102" measuredH="28" zOrder="21" locked="false" isInGroup="-1">        <controlProperties>          <text>Verarbeitung</text>        </controlProperties>      </control>      <control controlID="66" controlTypeID="com.balsamiq.mockups::Arrow" x="1516" y="601" w="77" h="95" measuredW="150" measuredH="100" zOrder="22" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="67" controlTypeID="com.balsamiq.mockups::Arrow" x="1633" y="607" w="92" h="94" measuredW="150" measuredH="100" zOrder="23" locked="false" isInGroup="-1">        <controlProperties>          <direction>bottom</direction>          <leftArrow>false</leftArrow>          <text>%7B%20data%3A%20%5B%201%2C%202%20%5D%20%7D</text>        </controlProperties>      </control>    </controls> </mockup>
  • Tipp: JavaScript ist eine dynamische Sprache
  • Java ist eine statische Sprache. Fehler werden zur compilezeit gefunden
  • GWT beherrscht nur eine Teilmenge der in Java 2 Standart + Enterprise Edition verfügbaren Klassen. JRE Emulated Classes <mockup version="1.0" skin="sketch" measuredW="953" measuredH="390" mockupW="911" mockupH="345">    <controls>      <control controlID="13" controlTypeID="com.balsamiq.mockups::FieldSet" x="32" y="35" w="200" h="129" measuredW="200" measuredH="170" zOrder="0" locked="false" isInGroup="-1">        <controlProperties>          <text>Java%20Runtime%20Library</text>        </controlProperties>      </control>      <control controlID="14" controlTypeID="com.balsamiq.mockups::FieldSet" x="662" y="35" w="281" h="154" measuredW="200" measuredH="170" zOrder="1" locked="false" isInGroup="-1">        <controlProperties>          <text>GWT%20Library</text>        </controlProperties>      </control>      <control controlID="17" controlTypeID="com.balsamiq.mockups::Canvas" x="343" y="39" w="200" h="135" measuredW="100" measuredH="70" zOrder="2" locked="false" isInGroup="-1"/>      <control controlID="18" controlTypeID="com.balsamiq.mockups::Arrow" x="246" y="103" w="82" h="10" measuredW="150" measuredH="100" zOrder="3" locked="false" isInGroup="-1">        <controlProperties>          <direction>top</direction>          <leftArrow>true</leftArrow>          <rightArrow>false</rightArrow>          <text/>        </controlProperties>      </control>      <control controlID="19" controlTypeID="com.balsamiq.mockups::Arrow" x="557" y="107" w="88" h="10" measuredW="150" measuredH="100" zOrder="4" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="20" controlTypeID="com.balsamiq.mockups::Canvas" x="343" y="307" w="199" h="73" measuredW="100" measuredH="70" zOrder="5" locked="false" isInGroup="-1"/>      <control controlID="21" controlTypeID="com.balsamiq.mockups::Arrow" x="425" y="186" w="35" h="100" measuredW="150" measuredH="100" zOrder="6" locked="false" isInGroup="-1">        <controlProperties>          <backgroundAlpha>1</backgroundAlpha>          <direction>top</direction>          <leftArrow>false</leftArrow>          <rightArrow>true</rightArrow>          <text>GWT%20Compiler</text>        </controlProperties>      </control>      <control controlID="22" controlTypeID="com.balsamiq.mockups::Button" x="47" y="53" w="170" h="28" measuredW="78" measuredH="28" zOrder="7" locked="false" isInGroup="-1">        <controlProperties>          <text>java.lang</text>        </controlProperties>      </control>      <control controlID="23" controlTypeID="com.balsamiq.mockups::Button" x="47" y="87" w="170" h="28" measuredW="73" measuredH="28" zOrder="8" locked="false" isInGroup="-1">        <controlProperties>          <text>java.util</text>        </controlProperties>      </control>      <control controlID="24" controlTypeID="com.balsamiq.mockups::Button" x="47" y="121" w="170" h="28" measuredW="62" measuredH="28" zOrder="9" locked="false" isInGroup="-1">        <controlProperties>          <text>java.io</text>        </controlProperties>      </control>      <control controlID="25" controlTypeID="com.balsamiq.mockups::Label" x="343" y="103" w="200" h="26" measuredW="155" measuredH="32" zOrder="10" locked="false" isInGroup="-1">        <controlProperties>          <align>center</align>          <size>20</size>          <text>Application%20code</text>        </controlProperties>      </control>      <control controlID="26" controlTypeID="com.balsamiq.mockups::Button" x="676" y="68" w="-1" h="-1" measuredW="63" measuredH="28" zOrder="11" locked="false" isInGroup="-1">        <controlProperties>          <text>Panels</text>        </controlProperties>      </control>      <control controlID="27" controlTypeID="com.balsamiq.mockups::Button" x="677" y="106" w="-1" h="-1" measuredW="73" measuredH="28" zOrder="12" locked="false" isInGroup="-1">        <controlProperties>          <text>Widgets</text>        </controlProperties>      </control>      <control controlID="28" controlTypeID="com.balsamiq.mockups::Button" x="750" y="68" w="-1" h="-1" measuredW="83" measuredH="28" zOrder="13" locked="false" isInGroup="-1">        <controlProperties>          <text>GWT-RPC</text>        </controlProperties>      </control>      <control controlID="29" controlTypeID="com.balsamiq.mockups::Button" x="754" y="106" w="-1" h="-1" measuredW="107" measuredH="28" zOrder="14" locked="false" isInGroup="-1">        <controlProperties>          <text>HTTP%20Request</text>        </controlProperties>      </control>      <control controlID="30" controlTypeID="com.balsamiq.mockups::Button" x="799" y="146" w="-1" h="-1" measuredW="57" measuredH="28" zOrder="15" locked="false" isInGroup="-1">        <controlProperties>          <text>JSON</text>        </controlProperties>      </control>      <control controlID="31" controlTypeID="com.balsamiq.mockups::Button" x="840" y="68" w="-1" h="-1" measuredW="51" measuredH="28" zOrder="16" locked="false" isInGroup="-1">        <controlProperties>          <text>XML</text>        </controlProperties>      </control>      <control controlID="32" controlTypeID="com.balsamiq.mockups::Button" x="862" y="146" w="-1" h="-1" measuredW="66" measuredH="28" zOrder="17" locked="false" isInGroup="-1">        <controlProperties>          <text>History</text>        </controlProperties>      </control>      <control controlID="33" controlTypeID="com.balsamiq.mockups::Button" x="868" y="106" w="-1" h="-1" measuredW="50" measuredH="28" zOrder="18" locked="false" isInGroup="-1">        <controlProperties>          <text>L18n</text>        </controlProperties>      </control>      <control controlID="34" controlTypeID="com.balsamiq.mockups::Button" x="676" y="146" w="-1" h="-1" measuredW="117" measuredH="28" zOrder="19" locked="false" isInGroup="-1">        <controlProperties>          <text>RequestFactory</text>        </controlProperties>      </control>      <control controlID="35" controlTypeID="com.balsamiq.mockups::Label" x="343" y="310" w="200" h="32" measuredW="103" measuredH="32" zOrder="20" locked="false" isInGroup="-1">        <controlProperties>          <align>center</align>          <size>20</size>          <text>JavaScript</text>        </controlProperties>      </control>      <control controlID="36" controlTypeID="com.balsamiq.mockups::Label" x="343" y="77" w="200" h="26" measuredW="47" measuredH="32" zOrder="21" locked="false" isInGroup="-1">        <controlProperties>          <align>center</align>          <size>20</size>          <text>Java</text>        </controlProperties>      </control>      <control controlID="37" controlTypeID="com.balsamiq.mockups::Label" x="343" y="342" w="200" h="31" measuredW="106" measuredH="32" zOrder="22" locked="false" isInGroup="-1">        <controlProperties>          <align>center</align>          <size>20</size>          <text>Application</text>        </controlProperties>      </control>    </controls> </mockup>
  • PRETTY zum debuggen OBFUSCATED Schutz/Performance
  • Interfaces Property Files
  • Client und Server implementieren Interface Serialisierung (Shared kram)
  • MVP ermöglicht Trennung von Code (siehe Google Tech Talk)
  • Warum GWT-Designer? Was ist GWT-Designer? Wie funktioniert GWT-Designer -> Video Support für GWT, Smart-GWT, Ext-GWT, GWT-Ext
  • Warum GWT-Designer? Was ist GWT-Designer? Wie funktioniert GWT-Designer -> Video Support für GWT, Smart-GWT, Ext-GWT, GWT-Ext
  • <mockup version="1.0" skin="sketch" measuredW="878" measuredH="428" mockupW="813" mockupH="390">    <controls>      <control controlID="38" controlTypeID="com.balsamiq.mockups::Button" x="55" y="28" w="562" h="53" measuredW="216" measuredH="28" zOrder="0" locked="false" isInGroup="-1">        <controlProperties>          <text>Java%20Language%2C%20Tools%20%26%20Runtime</text>        </controlProperties>      </control>      <control controlID="39" controlTypeID="com.balsamiq.mockups::Button" x="67" y="154" w="-1" h="-1" measuredW="129" measuredH="28" zOrder="1" locked="false" isInGroup="-1">        <controlProperties>          <text>Viele%20Tools%20%26%20Libs</text>        </controlProperties>      </control>      <control controlID="40" controlTypeID="com.balsamiq.mockups::Button" x="277" y="154" w="-1" h="-1" measuredW="122" measuredH="28" zOrder="2" locked="false" isInGroup="-1">        <controlProperties>          <text>Gro%DFartige%20IDEs</text>        </controlProperties>      </control>      <control controlID="41" controlTypeID="com.balsamiq.mockups::Button" x="457" y="154" w="-1" h="-1" measuredW="164" measuredH="28" zOrder="3" locked="false" isInGroup="-1">        <controlProperties>          <text>Statische%20Code%20Analyse</text>        </controlProperties>      </control>      <control controlID="42" controlTypeID="com.balsamiq.mockups::Button" x="55" y="258" w="-1" h="-1" measuredW="162" measuredH="28" zOrder="4" locked="false" isInGroup="-1">        <controlProperties>          <text>Leverage%20Existing%20work</text>        </controlProperties>      </control>      <control controlID="43" controlTypeID="com.balsamiq.mockups::Button" x="63" y="368" w="-1" h="-1" measuredW="149" measuredH="28" zOrder="5" locked="false" isInGroup="-1">        <controlProperties>          <text>Schnellere%20Lieferung</text>        </controlProperties>      </control>      <control controlID="44" controlTypeID="com.balsamiq.mockups::Button" x="259" y="258" w="-1" h="-1" measuredW="169" measuredH="28" zOrder="6" locked="false" isInGroup="-1">        <controlProperties>          <text>Entwickler%20Produktivit%E4t</text>        </controlProperties>      </control>      <control controlID="45" controlTypeID="com.balsamiq.mockups::Button" x="267" y="368" w="154" h="28" measuredW="146" measuredH="28" zOrder="7" locked="false" isInGroup="-1">        <controlProperties>          <text>Schnellere%20Iteration</text>        </controlProperties>      </control>      <control controlID="46" controlTypeID="com.balsamiq.mockups::Button" x="453" y="243" w="-1" h="-1" measuredW="164" measuredH="28" zOrder="8" locked="false" isInGroup="-1">        <controlProperties>          <text>Compile%20Time%20Validation</text>        </controlProperties>      </control>      <control controlID="48" controlTypeID="com.balsamiq.mockups::Button" x="463" y="278" w="-1" h="-1" measuredW="147" measuredH="28" zOrder="9" locked="false" isInGroup="-1">        <controlProperties>          <text>Bessere%20Optimierung</text>        </controlProperties>      </control>      <control controlID="49" controlTypeID="com.balsamiq.mockups::Button" x="491" y="353" w="-1" h="-1" measuredW="106" measuredH="28" zOrder="10" locked="false" isInGroup="-1">        <controlProperties>          <text>Weniger%20Bugs</text>        </controlProperties>      </control>      <control controlID="50" controlTypeID="com.balsamiq.mockups::Button" x="483" y="390" w="-1" h="-1" measuredW="126" measuredH="28" zOrder="11" locked="false" isInGroup="-1">        <controlProperties>          <text>Schnellerer%20Code</text>        </controlProperties>      </control>      <control controlID="51" controlTypeID="com.balsamiq.mockups::Arrow" x="126" y="188" w="10" h="61" measuredW="150" measuredH="100" zOrder="12" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="52" controlTypeID="com.balsamiq.mockups::Arrow" x="333" y="188" w="10" h="61" measuredW="150" measuredH="100" zOrder="13" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="53" controlTypeID="com.balsamiq.mockups::Arrow" x="530" y="188" w="10" h="46" measuredW="150" measuredH="100" zOrder="14" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="54" controlTypeID="com.balsamiq.mockups::Arrow" x="333" y="295" w="10" h="54" measuredW="150" measuredH="100" zOrder="15" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="55" controlTypeID="com.balsamiq.mockups::Arrow" x="530" y="311" w="10" h="34" measuredW="150" measuredH="100" zOrder="16" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="56" controlTypeID="com.balsamiq.mockups::Arrow" x="126" y="295" w="10" h="54" measuredW="150" measuredH="100" zOrder="17" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="57" controlTypeID="com.balsamiq.mockups::Label" x="228" y="366" w="-1" h="-1" measuredW="16" measuredH="32" zOrder="18" locked="false" isInGroup="-1">        <controlProperties>          <size>20</size>          <text>+</text>        </controlProperties>      </control>      <control controlID="58" controlTypeID="com.balsamiq.mockups::Label" x="437" y="366" w="-1" h="-1" measuredW="16" measuredH="32" zOrder="19" locked="false" isInGroup="-1">        <controlProperties>          <size>20</size>          <text>+</text>        </controlProperties>      </control>      <control controlID="59" controlTypeID="com.balsamiq.mockups::Label" x="632" y="366" w="-1" h="-1" measuredW="15" measuredH="32" zOrder="20" locked="false" isInGroup="-1">        <controlProperties>          <size>20</size>          <text>%3D</text>        </controlProperties>      </control>      <control controlID="61" controlTypeID="com.balsamiq.mockups::Button" x="693" y="353" w="175" h="65" measuredW="176" measuredH="28" zOrder="21" locked="false" isInGroup="-1">        <controlProperties>          <text>Benutzer.zufriedenheit++</text>        </controlProperties>      </control>      <control controlID="62" controlTypeID="com.balsamiq.mockups::Arrow" x="126" y="88" w="10" h="51" measuredW="150" measuredH="100" zOrder="22" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="63" controlTypeID="com.balsamiq.mockups::Arrow" x="333" y="88" w="10" h="51" measuredW="150" measuredH="100" zOrder="23" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="64" controlTypeID="com.balsamiq.mockups::Arrow" x="530" y="88" w="10" h="51" measuredW="150" measuredH="100" zOrder="24" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>    </controls> </mockup>
  • Permutationen      Lokalisierung      Browserspezifischer Code <mockup version="1.0" skin="sketch" measuredW="890" measuredH="652" mockupW="763" mockupH="555">    <controls>      <control controlID="13" controlTypeID="com.balsamiq.mockups::Button" x="413" y="348" w="-1" h="-1" measuredW="110" measuredH="28" zOrder="0" locked="false" isInGroup="-1">        <controlProperties>          <text>GWT-Compiler</text>        </controlProperties>      </control>      <control controlID="18" controlTypeID="com.balsamiq.mockups::Arrow" x="483" y="396" w="98" h="138" measuredW="150" measuredH="100" zOrder="1" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <rightArrow>true</rightArrow>          <text/>        </controlProperties>      </control>      <control controlID="19" controlTypeID="com.balsamiq.mockups::Arrow" x="541" y="371" w="245" h="163" measuredW="150" measuredH="100" zOrder="2" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <rightArrow>true</rightArrow>          <text/>        </controlProperties>      </control>      <control controlID="20" controlTypeID="com.balsamiq.mockups::Arrow" x="390" y="396" w="60" h="138" measuredW="150" measuredH="100" zOrder="3" locked="false" isInGroup="-1">        <controlProperties>          <direction>bottom</direction>          <leftArrow>true</leftArrow>          <rightArrow>false</rightArrow>          <text/>        </controlProperties>      </control>      <control controlID="21" controlTypeID="com.balsamiq.mockups::Arrow" x="195" y="371" w="195" h="163" measuredW="150" measuredH="100" zOrder="4" locked="false" isInGroup="-1">        <controlProperties>          <direction>bottom</direction>          <leftArrow>true</leftArrow>          <rightArrow>false</rightArrow>          <text/>        </controlProperties>      </control>      <control controlID="22" controlTypeID="com.balsamiq.mockups::Button" x="342" y="114" w="-1" h="-1" measuredW="75" measuredH="28" zOrder="19" locked="false" isInGroup="-1">        <controlProperties>          <text>Klasse%20A</text>        </controlProperties>      </control>      <control controlID="23" controlTypeID="com.balsamiq.mockups::Button" x="342" y="142" w="-1" h="-1" measuredW="74" measuredH="28" zOrder="20" locked="false" isInGroup="-1">        <controlProperties>          <text>Klasse%20B</text>        </controlProperties>      </control>      <control controlID="24" controlTypeID="com.balsamiq.mockups::Button" x="342" y="170" w="-1" h="-1" measuredW="75" measuredH="28" zOrder="21" locked="false" isInGroup="-1">        <controlProperties>          <text>Klasse%20C</text>        </controlProperties>      </control>      <control controlID="25" controlTypeID="com.balsamiq.mockups::FieldSet" x="117" y="548" w="173" h="94" measuredW="200" measuredH="170" zOrder="5" locked="false" isInGroup="-1">        <controlProperties>          <text>Internet%20Explorer</text>        </controlProperties>      </control>      <control controlID="26" controlTypeID="com.balsamiq.mockups::Button" x="129" y="571" w="-1" h="-1" measuredW="146" measuredH="28" zOrder="6" locked="false" isInGroup="-1">        <controlProperties>          <text>16..1879B.cache.html</text>        </controlProperties>      </control>      <control controlID="27" controlTypeID="com.balsamiq.mockups::Button" x="129" y="599" w="-1" h="-1" measuredW="146" measuredH="28" zOrder="7" locked="false" isInGroup="-1">        <controlProperties>          <text>08..6D53F.cache.png</text>        </controlProperties>      </control>      <control controlID="28" controlTypeID="com.balsamiq.mockups::FieldSet" x="320" y="548" w="173" h="94" measuredW="200" measuredH="170" zOrder="8" locked="false" isInGroup="-1">        <controlProperties>          <text>Mozilla%20Firefox</text>        </controlProperties>      </control>      <control controlID="29" controlTypeID="com.balsamiq.mockups::Button" x="328" y="571" w="-1" h="-1" measuredW="157" measuredH="28" zOrder="9" locked="false" isInGroup="-1">        <controlProperties>          <text>E6..F144D3.cache.html</text>        </controlProperties>      </control>      <control controlID="30" controlTypeID="com.balsamiq.mockups::Button" x="328" y="599" w="-1" h="-1" measuredW="155" measuredH="28" zOrder="10" locked="false" isInGroup="-1">        <controlProperties>          <text>56..4224D3.cache.png</text>        </controlProperties>      </control>      <control controlID="31" controlTypeID="com.balsamiq.mockups::FieldSet" x="513" y="548" w="173" h="94" measuredW="200" measuredH="170" zOrder="11" locked="false" isInGroup="-1">        <controlProperties>          <text>Safari%20/%20Chrome</text>        </controlProperties>      </control>      <control controlID="32" controlTypeID="com.balsamiq.mockups::Button" x="523" y="571" w="-1" h="-1" measuredW="153" measuredH="28" zOrder="12" locked="false" isInGroup="-1">        <controlProperties>          <text>B1..B1E06B.cache.html</text>        </controlProperties>      </control>      <control controlID="33" controlTypeID="com.balsamiq.mockups::Button" x="523" y="599" w="-1" h="-1" measuredW="156" measuredH="28" zOrder="13" locked="false" isInGroup="-1">        <controlProperties>          <text>0D..6DF3C0.cache.png</text>        </controlProperties>      </control>      <control controlID="34" controlTypeID="com.balsamiq.mockups::FieldSet" x="707" y="548" w="173" h="94" measuredW="200" measuredH="170" zOrder="14" locked="false" isInGroup="-1">        <controlProperties>          <text>Opera</text>        </controlProperties>      </control>      <control controlID="35" controlTypeID="com.balsamiq.mockups::Button" x="715" y="571" w="-1" h="-1" measuredW="157" measuredH="28" zOrder="15" locked="false" isInGroup="-1">        <controlProperties>          <text>E3..A353B4.cache.html</text>        </controlProperties>      </control>      <control controlID="36" controlTypeID="com.balsamiq.mockups::Button" x="715" y="599" w="-1" h="-1" measuredW="152" measuredH="28" zOrder="16" locked="false" isInGroup="-1">        <controlProperties>          <text>00..D7FB7F.cache.png</text>        </controlProperties>      </control>      <control controlID="37" controlTypeID="com.balsamiq.mockups::Button" x="502" y="108" w="95" h="28" measuredW="95" measuredH="28" zOrder="22" locked="false" isInGroup="-1">        <controlProperties>          <text>image01.png</text>        </controlProperties>      </control>      <control controlID="38" controlTypeID="com.balsamiq.mockups::Button" x="502" y="136" w="93" h="28" measuredW="93" measuredH="28" zOrder="23" locked="false" isInGroup="-1">        <controlProperties>          <text>image02.gif</text>        </controlProperties>      </control>      <control controlID="39" controlTypeID="com.balsamiq.mockups::Button" x="502" y="164" w="95" h="28" measuredW="95" measuredH="28" zOrder="24" locked="false" isInGroup="-1">        <controlProperties>          <text>image03.jpg</text>        </controlProperties>      </control>      <control controlID="40" controlTypeID="com.balsamiq.mockups::FieldSet" x="328" y="87" w="107" h="126" measuredW="200" measuredH="170" zOrder="17" locked="false" isInGroup="-1">        <controlProperties>          <text>Source%20Code</text>        </controlProperties>      </control>      <control controlID="41" controlTypeID="com.balsamiq.mockups::FieldSet" x="481" y="89" w="131" h="118" measuredW="200" measuredH="170" zOrder="18" locked="false" isInGroup="-1">        <controlProperties>          <text>Resources</text>        </controlProperties>      </control>      <control controlID="42" controlTypeID="com.balsamiq.mockups::Arrow" x="383" y="222" w="61" h="109" measuredW="150" measuredH="100" zOrder="25" locked="false" isInGroup="-1">        <controlProperties>          <leftArrow>false</leftArrow>          <text/>        </controlProperties>      </control>      <control controlID="44" controlTypeID="com.balsamiq.mockups::Arrow" x="493" y="221" w="35" h="109" measuredW="150" measuredH="100" zOrder="26" locked="false" isInGroup="-1">        <controlProperties>          <direction>bottom</direction>          <leftArrow>true</leftArrow>          <rightArrow>false</rightArrow>          <text/>        </controlProperties>      </control>    </controls> </mockup>
  • Transcript

    • 1. Google Webtool Kit Übersicht
    • 2. Was ist GWT?GWT ist ein Framework für AJAX-Anwendungen, welches denEntwickler in die Lage versetzt, Rich Internet Applications in Java zu entwickeln.Der GWT-Compiler generiert aus dem Java Codeden spezifischen HTML- und JavaScript Code für diejeweiligen Browser.
    • 3. Warum AJAX?
    • 4. Warum AJAX?
    • 5. Finde den Fehler
    • 6. Fehler gefunden
    • 7. JavaScript = Schmerz...cross-browser...memory leak...loading latency...bugs (dynamic language)...security
    • 8. Von Java zu JavaScript
    • 9. Von Java zu JavaScriptJava Code:GWT compiler (-style PRETTY)GWT compiler (-style OBFUSCATED)
    • 10. FeaturesUser InterfacesHistory ManagementLokalisierungClient/Server-KommunikationJavaScript Native InterfaceUnit TestingOptimization
    • 11. User Interfaces GWT GWT Incubator _________________________________ SmartGWT GWT-Ext Ext-GWT und viele mehr...
    • 12. Aufbau UI mit Code
    • 13. Aufbau UI mit UIBinder
    • 14. Styling mit CSS
    • 15. Styling mit CSS
    • 16. History ManagementAJAX-Anwendungen verwenden meistens keineBrowser History (==> Frust).Demo
    • 17. LokalisierungConstants    helloWorld = Hallo, WeltMessages    goodBye = Adios, {0}Plural    @DefaultText(...)    @PluralText(...)UIBinder Support <ui:msg description="helloWorld">Hello, world.</ui:msg></div>Demo
    • 18. Client/Server Kommunikation
    • 19. HTTP-Requestsz.B.: PHP als Backend und XML, JSONoder ein eigenes Format.
    • 20. GWT-RPCWarum nicht eine Sprache sprechen?
    • 21. JavaScript Native InterfaceJava Methode direkt in JavaScript implementieren.Auf Java Members/Methoden zugreifen.Parameter zwischen Java und JavaScript übergeben.--> Einbindung von (bestehenden) JavaScript Libs
    • 22. Unit TestingGWTTestCase für die ViewsJUnit für Presenter und ModelSelenium
    • 23. OptimierungDelayed LogicCode SplittingClientBundle
    • 24. ToolsEclipse PluginGWT DesignerSpeed Tracer
    • 25. GWT Designer
    • 26. Warum mit Java entwickeln?
    • 27. VorteileClient und Server können eine Sprache verwenden(GWTRPC).Java Entwickler Tools (Eclipse, PMD, JUnit etc).Debugging UmgebungCross-Browser-Support
    • 28. NachteileGoogle behält sich vor die Lizenzbestimmungen des GWT-Compilers zu ändern.Widgets teilweise sehr groß(bis zu 55k pro Widget).Es wird nur ein Teil der Java APIemuliert.
    • 29. Größe der Komponenten
    • 30. Fragen ?
    • 31. Google App EngineWeb Application Hosting Service
    • 32. Google Infrastrukturautomatische und beliebige Skalierung von WebApps
    • 33. Development Tools• Java SDK o Servlet Container• Python SDK o CGI Runtime Environment• Google Eclipse Plugin o One-Click-Deployment o Simulation aller Services in lokaler Sandbox o Leistungsfähiger Debugger
    • 34. Google Datastore• Bigtable (Object Database)• Google Earth, Google Finance, Google Search
    • 35. Keine relationale Datenbank Umdenken notwendig
    • 36. Queries• OOP / Sql-like Syntax• Schnelle Zugriffe bei Selects auf den KEY• Automatische Index-Erzeugung o XML basierte Konfiguration o Google weiß im Voraus welche Queries angefragt werden können o Beim Schreiben werden Indexe automatisch aktualisiert
    • 37. Bulk-Loader• Python-Script• Upload / Downloading Data• Backups
    • 38. Einschränkungen• Indexerzeugung beim deployen kostet Zeit• Kein bulk-delete oder Massen-lesen / -schreiben
    • 39. Standards: JDO / JPA / Annotations
    • 40. Standards: JDO / JPA / Annotations
    • 41. Kosten
    • 42. • automatische Skalierung• Konzentration auf Gamelogik• kürzere Entwicklungszeiten• kein administrativer Overhead• keine Betriebskosten solange App kein Erfolg• IDE (Build, Deploy, Sandbox integriert)• perfektes Zusammenspiel mit GWT
    • 43. • Keine long running background processes• Kein Streaming• Kein FTP, Sockets ...• Datastore: Keine Volltext-Suche• max. 30 sec/req• max 10 MB/req• max. 3.000 Dateien (Workaroudns ZIP, JAR)• hohe Abhänigkeit von Google-Services
    • 44. Fragen ?
    • 45. Deferred Binding

    ×