Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
885
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
7
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