GWT2. Was ist GWT?
GWT ist ein Framework für AJAX-Anwendungen, welches den
Entwickler in die Lage versetzt, Rich Internet Applications in
Java zu entwickeln.
Der GWT-Compiler generiert aus dem Java Code
den spezifischen HTML- und JavaScript Code für die
jeweiligen Browser.
9. Von Java zu JavaScript
Java Code:
GWT compiler (-style PRETTY)
GWT compiler (-style OBFUSCATED)
11. User Interfaces
GWT
GWT Incubator
_________________________________
SmartGWT
GWT-Ext
Ext-GWT
und viele mehr...
21. JavaScript Native Interface
Java Methode direkt in JavaScript implementieren.
Auf Java Members/Methoden zugreifen.
Parameter zwischen Java und JavaScript übergeben.
--> Einbindung von (bestehenden) JavaScript Libs
30. Vorteile
Client und Server können eine Sprache verwenden
(GWTRPC).
Java Entwickler Tools (Eclipse, PMD, JUnit etc).
Debugging Umgebung
Cross-Browser-Support
31. Nachteile
Google 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 API
emuliert.
38. 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
43. 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
49. • 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
50. • 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
Hinweis der Redaktion <mockup version=&quot;1.0&quot; skin=&quot;sketch&quot; measuredW=&quot;971&quot; measuredH=&quot;278&quot; mockupW=&quot;927&quot; mockupH=&quot;236&quot;> <controls> <control controlID=&quot;24&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;34&quot; y=&quot;32&quot; w=&quot;927&quot; h=&quot;71&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;0&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Client</text> </controlProperties> </control> <control controlID=&quot;25&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;34&quot; y=&quot;188&quot; w=&quot;927&quot; h=&quot;80&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;1&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Server</text> </controlProperties> </control> <control controlID=&quot;26&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;44&quot; y=&quot;137&quot; w=&quot;913&quot; h=&quot;11&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;2&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text>Zeit</text> </controlProperties> </control> <control controlID=&quot;27&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;90&quot; y=&quot;55&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;92&quot; measuredH=&quot;28&quot; zOrder=&quot;3&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Interaktion</text> </controlProperties> </control> <control controlID=&quot;28&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;147&quot; y=&quot;93&quot; w=&quot;137&quot; h=&quot;110&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;4&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text>Anfrage</text> </controlProperties> </control> <control controlID=&quot;29&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;326&quot; y=&quot;93&quot; w=&quot;139&quot; h=&quot;110&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;5&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <direction>bottom</direction> <leftArrow>false</leftArrow> <text>%3Chtml%3E...%3C/html%3E</text> </controlProperties> </control> <control controlID=&quot;30&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;254&quot; y=&quot;219&quot; w=&quot;102&quot; h=&quot;28&quot; measuredW=&quot;102&quot; measuredH=&quot;28&quot; zOrder=&quot;6&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Verarbeitung</text> </controlProperties> </control> <control controlID=&quot;31&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;455&quot; y=&quot;55&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;92&quot; measuredH=&quot;28&quot; zOrder=&quot;7&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Interaktion</text> </controlProperties> </control> <control controlID=&quot;34&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;505&quot; y=&quot;93&quot; w=&quot;137&quot; h=&quot;110&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;8&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text>Anfrage</text> </controlProperties> </control> <control controlID=&quot;35&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;684&quot; y=&quot;93&quot; w=&quot;139&quot; h=&quot;110&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;9&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <direction>bottom</direction> <leftArrow>false</leftArrow> <text>%3Chtml%3E...%3C/html%3E</text> </controlProperties> </control> <control controlID=&quot;36&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;612&quot; y=&quot;219&quot; w=&quot;102&quot; h=&quot;28&quot; measuredW=&quot;102&quot; measuredH=&quot;28&quot; zOrder=&quot;10&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Verarbeitung</text> </controlProperties> </control> <control controlID=&quot;37&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;813&quot; y=&quot;55&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;92&quot; measuredH=&quot;28&quot; zOrder=&quot;11&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Interaktion</text> </controlProperties> </control> </controls> </mockup> <mockup version=&quot;1.0&quot; skin=&quot;sketch&quot; measuredW=&quot;1819&quot; measuredH=&quot;766&quot; mockupW=&quot;929&quot; mockupH=&quot;342&quot;> <controls> <control controlID=&quot;38&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;880&quot; y=&quot;414&quot; w=&quot;929&quot; h=&quot;212&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;0&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Client</text> </controlProperties> </control> <control controlID=&quot;39&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;880&quot; y=&quot;676&quot; w=&quot;929&quot; h=&quot;80&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;1&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Server</text> </controlProperties> </control> <control controlID=&quot;40&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;880&quot; y=&quot;647&quot; w=&quot;914&quot; h=&quot;10&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;2&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text>Zeit</text> </controlProperties> </control> <control controlID=&quot;41&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;898&quot; y=&quot;433&quot; w=&quot;896&quot; h=&quot;63&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;3&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>User%20Interface</text> </controlProperties> </control> <control controlID=&quot;42&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;898&quot; y=&quot;542&quot; w=&quot;896&quot; h=&quot;71&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;4&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>AJAX%20Engine</text> </controlProperties> </control> <control controlID=&quot;43&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;913&quot; y=&quot;453&quot; w=&quot;866&quot; h=&quot;28&quot; measuredW=&quot;106&quot; measuredH=&quot;28&quot; zOrder=&quot;5&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Interaktionen</text> </controlProperties> </control> <control controlID=&quot;44&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;913&quot; y=&quot;569&quot; w=&quot;866&quot; h=&quot;28&quot; measuredW=&quot;116&quot; measuredH=&quot;28&quot; zOrder=&quot;6&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Verarbeitungen</text> </controlProperties> </control> <control controlID=&quot;47&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;1051&quot; y=&quot;710&quot; w=&quot;102&quot; h=&quot;28&quot; measuredW=&quot;102&quot; measuredH=&quot;28&quot; zOrder=&quot;7&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Verarbeitung</text> </controlProperties> </control> <control controlID=&quot;48&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;1001&quot; y=&quot;483&quot; w=&quot;37&quot; h=&quot;78&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;8&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;49&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;996&quot; y=&quot;601&quot; w=&quot;77&quot; h=&quot;95&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;9&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;50&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;1113&quot; y=&quot;607&quot; w=&quot;92&quot; h=&quot;94&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;10&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <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=&quot;53&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;1059&quot; y=&quot;490&quot; w=&quot;72&quot; h=&quot;75&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;11&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <direction>bottom</direction> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;56&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;1198&quot; y=&quot;486&quot; w=&quot;37&quot; h=&quot;78&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;12&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;57&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;1256&quot; y=&quot;493&quot; w=&quot;72&quot; h=&quot;75&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;13&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <direction>bottom</direction> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;58&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;1395&quot; y=&quot;486&quot; w=&quot;37&quot; h=&quot;78&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;14&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;59&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;1453&quot; y=&quot;493&quot; w=&quot;72&quot; h=&quot;75&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;15&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <direction>bottom</direction> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;60&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;1577&quot; y=&quot;486&quot; w=&quot;37&quot; h=&quot;78&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;16&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;61&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;1635&quot; y=&quot;493&quot; w=&quot;72&quot; h=&quot;75&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;17&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <direction>bottom</direction> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;62&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;1311&quot; y=&quot;710&quot; w=&quot;102&quot; h=&quot;28&quot; measuredW=&quot;102&quot; measuredH=&quot;28&quot; zOrder=&quot;18&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Verarbeitung</text> </controlProperties> </control> <control controlID=&quot;63&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;1256&quot; y=&quot;601&quot; w=&quot;77&quot; h=&quot;95&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;19&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;64&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;1373&quot; y=&quot;607&quot; w=&quot;92&quot; h=&quot;94&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;20&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <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=&quot;65&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;1571&quot; y=&quot;710&quot; w=&quot;102&quot; h=&quot;28&quot; measuredW=&quot;102&quot; measuredH=&quot;28&quot; zOrder=&quot;21&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Verarbeitung</text> </controlProperties> </control> <control controlID=&quot;66&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;1516&quot; y=&quot;601&quot; w=&quot;77&quot; h=&quot;95&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;22&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;67&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;1633&quot; y=&quot;607&quot; w=&quot;92&quot; h=&quot;94&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;23&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <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=&quot;1.0&quot; skin=&quot;sketch&quot; measuredW=&quot;953&quot; measuredH=&quot;390&quot; mockupW=&quot;911&quot; mockupH=&quot;345&quot;> <controls> <control controlID=&quot;13&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;32&quot; y=&quot;35&quot; w=&quot;200&quot; h=&quot;129&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;0&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Java%20Runtime%20Library</text> </controlProperties> </control> <control controlID=&quot;14&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;662&quot; y=&quot;35&quot; w=&quot;281&quot; h=&quot;154&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;1&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>GWT%20Library</text> </controlProperties> </control> <control controlID=&quot;17&quot; controlTypeID=&quot;com.balsamiq.mockups::Canvas&quot; x=&quot;343&quot; y=&quot;39&quot; w=&quot;200&quot; h=&quot;135&quot; measuredW=&quot;100&quot; measuredH=&quot;70&quot; zOrder=&quot;2&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;/> <control controlID=&quot;18&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;246&quot; y=&quot;103&quot; w=&quot;82&quot; h=&quot;10&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;3&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <direction>top</direction> <leftArrow>true</leftArrow> <rightArrow>false</rightArrow> <text/> </controlProperties> </control> <control controlID=&quot;19&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;557&quot; y=&quot;107&quot; w=&quot;88&quot; h=&quot;10&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;4&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;20&quot; controlTypeID=&quot;com.balsamiq.mockups::Canvas&quot; x=&quot;343&quot; y=&quot;307&quot; w=&quot;199&quot; h=&quot;73&quot; measuredW=&quot;100&quot; measuredH=&quot;70&quot; zOrder=&quot;5&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;/> <control controlID=&quot;21&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;425&quot; y=&quot;186&quot; w=&quot;35&quot; h=&quot;100&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;6&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <backgroundAlpha>1</backgroundAlpha> <direction>top</direction> <leftArrow>false</leftArrow> <rightArrow>true</rightArrow> <text>GWT%20Compiler</text> </controlProperties> </control> <control controlID=&quot;22&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;47&quot; y=&quot;53&quot; w=&quot;170&quot; h=&quot;28&quot; measuredW=&quot;78&quot; measuredH=&quot;28&quot; zOrder=&quot;7&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>java.lang</text> </controlProperties> </control> <control controlID=&quot;23&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;47&quot; y=&quot;87&quot; w=&quot;170&quot; h=&quot;28&quot; measuredW=&quot;73&quot; measuredH=&quot;28&quot; zOrder=&quot;8&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>java.util</text> </controlProperties> </control> <control controlID=&quot;24&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;47&quot; y=&quot;121&quot; w=&quot;170&quot; h=&quot;28&quot; measuredW=&quot;62&quot; measuredH=&quot;28&quot; zOrder=&quot;9&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>java.io</text> </controlProperties> </control> <control controlID=&quot;25&quot; controlTypeID=&quot;com.balsamiq.mockups::Label&quot; x=&quot;343&quot; y=&quot;103&quot; w=&quot;200&quot; h=&quot;26&quot; measuredW=&quot;155&quot; measuredH=&quot;32&quot; zOrder=&quot;10&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <align>center</align> <size>20</size> <text>Application%20code</text> </controlProperties> </control> <control controlID=&quot;26&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;676&quot; y=&quot;68&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;63&quot; measuredH=&quot;28&quot; zOrder=&quot;11&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Panels</text> </controlProperties> </control> <control controlID=&quot;27&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;677&quot; y=&quot;106&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;73&quot; measuredH=&quot;28&quot; zOrder=&quot;12&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Widgets</text> </controlProperties> </control> <control controlID=&quot;28&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;750&quot; y=&quot;68&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;83&quot; measuredH=&quot;28&quot; zOrder=&quot;13&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>GWT-RPC</text> </controlProperties> </control> <control controlID=&quot;29&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;754&quot; y=&quot;106&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;107&quot; measuredH=&quot;28&quot; zOrder=&quot;14&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>HTTP%20Request</text> </controlProperties> </control> <control controlID=&quot;30&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;799&quot; y=&quot;146&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;57&quot; measuredH=&quot;28&quot; zOrder=&quot;15&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>JSON</text> </controlProperties> </control> <control controlID=&quot;31&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;840&quot; y=&quot;68&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;51&quot; measuredH=&quot;28&quot; zOrder=&quot;16&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>XML</text> </controlProperties> </control> <control controlID=&quot;32&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;862&quot; y=&quot;146&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;66&quot; measuredH=&quot;28&quot; zOrder=&quot;17&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>History</text> </controlProperties> </control> <control controlID=&quot;33&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;868&quot; y=&quot;106&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;50&quot; measuredH=&quot;28&quot; zOrder=&quot;18&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>L18n</text> </controlProperties> </control> <control controlID=&quot;34&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;676&quot; y=&quot;146&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;117&quot; measuredH=&quot;28&quot; zOrder=&quot;19&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>RequestFactory</text> </controlProperties> </control> <control controlID=&quot;35&quot; controlTypeID=&quot;com.balsamiq.mockups::Label&quot; x=&quot;343&quot; y=&quot;310&quot; w=&quot;200&quot; h=&quot;32&quot; measuredW=&quot;103&quot; measuredH=&quot;32&quot; zOrder=&quot;20&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <align>center</align> <size>20</size> <text>JavaScript</text> </controlProperties> </control> <control controlID=&quot;36&quot; controlTypeID=&quot;com.balsamiq.mockups::Label&quot; x=&quot;343&quot; y=&quot;77&quot; w=&quot;200&quot; h=&quot;26&quot; measuredW=&quot;47&quot; measuredH=&quot;32&quot; zOrder=&quot;21&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <align>center</align> <size>20</size> <text>Java</text> </controlProperties> </control> <control controlID=&quot;37&quot; controlTypeID=&quot;com.balsamiq.mockups::Label&quot; x=&quot;343&quot; y=&quot;342&quot; w=&quot;200&quot; h=&quot;31&quot; measuredW=&quot;106&quot; measuredH=&quot;32&quot; zOrder=&quot;22&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <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=&quot;1.0&quot; skin=&quot;sketch&quot; measuredW=&quot;878&quot; measuredH=&quot;428&quot; mockupW=&quot;813&quot; mockupH=&quot;390&quot;> <controls> <control controlID=&quot;38&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;55&quot; y=&quot;28&quot; w=&quot;562&quot; h=&quot;53&quot; measuredW=&quot;216&quot; measuredH=&quot;28&quot; zOrder=&quot;0&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Java%20Language%2C%20Tools%20%26%20Runtime</text> </controlProperties> </control> <control controlID=&quot;39&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;67&quot; y=&quot;154&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;129&quot; measuredH=&quot;28&quot; zOrder=&quot;1&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Viele%20Tools%20%26%20Libs</text> </controlProperties> </control> <control controlID=&quot;40&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;277&quot; y=&quot;154&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;122&quot; measuredH=&quot;28&quot; zOrder=&quot;2&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Gro%DFartige%20IDEs</text> </controlProperties> </control> <control controlID=&quot;41&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;457&quot; y=&quot;154&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;164&quot; measuredH=&quot;28&quot; zOrder=&quot;3&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Statische%20Code%20Analyse</text> </controlProperties> </control> <control controlID=&quot;42&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;55&quot; y=&quot;258&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;162&quot; measuredH=&quot;28&quot; zOrder=&quot;4&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Leverage%20Existing%20work</text> </controlProperties> </control> <control controlID=&quot;43&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;63&quot; y=&quot;368&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;149&quot; measuredH=&quot;28&quot; zOrder=&quot;5&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Schnellere%20Lieferung</text> </controlProperties> </control> <control controlID=&quot;44&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;259&quot; y=&quot;258&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;169&quot; measuredH=&quot;28&quot; zOrder=&quot;6&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Entwickler%20Produktivit%E4t</text> </controlProperties> </control> <control controlID=&quot;45&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;267&quot; y=&quot;368&quot; w=&quot;154&quot; h=&quot;28&quot; measuredW=&quot;146&quot; measuredH=&quot;28&quot; zOrder=&quot;7&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Schnellere%20Iteration</text> </controlProperties> </control> <control controlID=&quot;46&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;453&quot; y=&quot;243&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;164&quot; measuredH=&quot;28&quot; zOrder=&quot;8&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Compile%20Time%20Validation</text> </controlProperties> </control> <control controlID=&quot;48&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;463&quot; y=&quot;278&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;147&quot; measuredH=&quot;28&quot; zOrder=&quot;9&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Bessere%20Optimierung</text> </controlProperties> </control> <control controlID=&quot;49&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;491&quot; y=&quot;353&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;106&quot; measuredH=&quot;28&quot; zOrder=&quot;10&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Weniger%20Bugs</text> </controlProperties> </control> <control controlID=&quot;50&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;483&quot; y=&quot;390&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;126&quot; measuredH=&quot;28&quot; zOrder=&quot;11&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Schnellerer%20Code</text> </controlProperties> </control> <control controlID=&quot;51&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;126&quot; y=&quot;188&quot; w=&quot;10&quot; h=&quot;61&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;12&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;52&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;333&quot; y=&quot;188&quot; w=&quot;10&quot; h=&quot;61&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;13&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;53&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;530&quot; y=&quot;188&quot; w=&quot;10&quot; h=&quot;46&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;14&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;54&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;333&quot; y=&quot;295&quot; w=&quot;10&quot; h=&quot;54&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;15&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;55&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;530&quot; y=&quot;311&quot; w=&quot;10&quot; h=&quot;34&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;16&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;56&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;126&quot; y=&quot;295&quot; w=&quot;10&quot; h=&quot;54&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;17&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;57&quot; controlTypeID=&quot;com.balsamiq.mockups::Label&quot; x=&quot;228&quot; y=&quot;366&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;16&quot; measuredH=&quot;32&quot; zOrder=&quot;18&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <size>20</size> <text>+</text> </controlProperties> </control> <control controlID=&quot;58&quot; controlTypeID=&quot;com.balsamiq.mockups::Label&quot; x=&quot;437&quot; y=&quot;366&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;16&quot; measuredH=&quot;32&quot; zOrder=&quot;19&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <size>20</size> <text>+</text> </controlProperties> </control> <control controlID=&quot;59&quot; controlTypeID=&quot;com.balsamiq.mockups::Label&quot; x=&quot;632&quot; y=&quot;366&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;15&quot; measuredH=&quot;32&quot; zOrder=&quot;20&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <size>20</size> <text>%3D</text> </controlProperties> </control> <control controlID=&quot;61&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;693&quot; y=&quot;353&quot; w=&quot;175&quot; h=&quot;65&quot; measuredW=&quot;176&quot; measuredH=&quot;28&quot; zOrder=&quot;21&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Benutzer.zufriedenheit++</text> </controlProperties> </control> <control controlID=&quot;62&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;126&quot; y=&quot;88&quot; w=&quot;10&quot; h=&quot;51&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;22&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;63&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;333&quot; y=&quot;88&quot; w=&quot;10&quot; h=&quot;51&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;23&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;64&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;530&quot; y=&quot;88&quot; w=&quot;10&quot; h=&quot;51&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;24&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> </controls> </mockup> Permutationen Lokalisierung Browserspezifischer Code <mockup version=&quot;1.0&quot; skin=&quot;sketch&quot; measuredW=&quot;890&quot; measuredH=&quot;652&quot; mockupW=&quot;763&quot; mockupH=&quot;555&quot;> <controls> <control controlID=&quot;13&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;413&quot; y=&quot;348&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;110&quot; measuredH=&quot;28&quot; zOrder=&quot;0&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>GWT-Compiler</text> </controlProperties> </control> <control controlID=&quot;18&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;483&quot; y=&quot;396&quot; w=&quot;98&quot; h=&quot;138&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;1&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <rightArrow>true</rightArrow> <text/> </controlProperties> </control> <control controlID=&quot;19&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;541&quot; y=&quot;371&quot; w=&quot;245&quot; h=&quot;163&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;2&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <rightArrow>true</rightArrow> <text/> </controlProperties> </control> <control controlID=&quot;20&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;390&quot; y=&quot;396&quot; w=&quot;60&quot; h=&quot;138&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;3&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <direction>bottom</direction> <leftArrow>true</leftArrow> <rightArrow>false</rightArrow> <text/> </controlProperties> </control> <control controlID=&quot;21&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;195&quot; y=&quot;371&quot; w=&quot;195&quot; h=&quot;163&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;4&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <direction>bottom</direction> <leftArrow>true</leftArrow> <rightArrow>false</rightArrow> <text/> </controlProperties> </control> <control controlID=&quot;22&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;342&quot; y=&quot;114&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;75&quot; measuredH=&quot;28&quot; zOrder=&quot;19&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Klasse%20A</text> </controlProperties> </control> <control controlID=&quot;23&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;342&quot; y=&quot;142&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;74&quot; measuredH=&quot;28&quot; zOrder=&quot;20&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Klasse%20B</text> </controlProperties> </control> <control controlID=&quot;24&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;342&quot; y=&quot;170&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;75&quot; measuredH=&quot;28&quot; zOrder=&quot;21&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Klasse%20C</text> </controlProperties> </control> <control controlID=&quot;25&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;117&quot; y=&quot;548&quot; w=&quot;173&quot; h=&quot;94&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;5&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Internet%20Explorer</text> </controlProperties> </control> <control controlID=&quot;26&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;129&quot; y=&quot;571&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;146&quot; measuredH=&quot;28&quot; zOrder=&quot;6&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>16..1879B.cache.html</text> </controlProperties> </control> <control controlID=&quot;27&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;129&quot; y=&quot;599&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;146&quot; measuredH=&quot;28&quot; zOrder=&quot;7&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>08..6D53F.cache.png</text> </controlProperties> </control> <control controlID=&quot;28&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;320&quot; y=&quot;548&quot; w=&quot;173&quot; h=&quot;94&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;8&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Mozilla%20Firefox</text> </controlProperties> </control> <control controlID=&quot;29&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;328&quot; y=&quot;571&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;157&quot; measuredH=&quot;28&quot; zOrder=&quot;9&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>E6..F144D3.cache.html</text> </controlProperties> </control> <control controlID=&quot;30&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;328&quot; y=&quot;599&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;155&quot; measuredH=&quot;28&quot; zOrder=&quot;10&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>56..4224D3.cache.png</text> </controlProperties> </control> <control controlID=&quot;31&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;513&quot; y=&quot;548&quot; w=&quot;173&quot; h=&quot;94&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;11&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Safari%20/%20Chrome</text> </controlProperties> </control> <control controlID=&quot;32&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;523&quot; y=&quot;571&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;153&quot; measuredH=&quot;28&quot; zOrder=&quot;12&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>B1..B1E06B.cache.html</text> </controlProperties> </control> <control controlID=&quot;33&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;523&quot; y=&quot;599&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;156&quot; measuredH=&quot;28&quot; zOrder=&quot;13&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>0D..6DF3C0.cache.png</text> </controlProperties> </control> <control controlID=&quot;34&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;707&quot; y=&quot;548&quot; w=&quot;173&quot; h=&quot;94&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;14&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Opera</text> </controlProperties> </control> <control controlID=&quot;35&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;715&quot; y=&quot;571&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;157&quot; measuredH=&quot;28&quot; zOrder=&quot;15&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>E3..A353B4.cache.html</text> </controlProperties> </control> <control controlID=&quot;36&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;715&quot; y=&quot;599&quot; w=&quot;-1&quot; h=&quot;-1&quot; measuredW=&quot;152&quot; measuredH=&quot;28&quot; zOrder=&quot;16&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>00..D7FB7F.cache.png</text> </controlProperties> </control> <control controlID=&quot;37&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;502&quot; y=&quot;108&quot; w=&quot;95&quot; h=&quot;28&quot; measuredW=&quot;95&quot; measuredH=&quot;28&quot; zOrder=&quot;22&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>image01.png</text> </controlProperties> </control> <control controlID=&quot;38&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;502&quot; y=&quot;136&quot; w=&quot;93&quot; h=&quot;28&quot; measuredW=&quot;93&quot; measuredH=&quot;28&quot; zOrder=&quot;23&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>image02.gif</text> </controlProperties> </control> <control controlID=&quot;39&quot; controlTypeID=&quot;com.balsamiq.mockups::Button&quot; x=&quot;502&quot; y=&quot;164&quot; w=&quot;95&quot; h=&quot;28&quot; measuredW=&quot;95&quot; measuredH=&quot;28&quot; zOrder=&quot;24&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>image03.jpg</text> </controlProperties> </control> <control controlID=&quot;40&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;328&quot; y=&quot;87&quot; w=&quot;107&quot; h=&quot;126&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;17&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Source%20Code</text> </controlProperties> </control> <control controlID=&quot;41&quot; controlTypeID=&quot;com.balsamiq.mockups::FieldSet&quot; x=&quot;481&quot; y=&quot;89&quot; w=&quot;131&quot; h=&quot;118&quot; measuredW=&quot;200&quot; measuredH=&quot;170&quot; zOrder=&quot;18&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <text>Resources</text> </controlProperties> </control> <control controlID=&quot;42&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;383&quot; y=&quot;222&quot; w=&quot;61&quot; h=&quot;109&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;25&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <leftArrow>false</leftArrow> <text/> </controlProperties> </control> <control controlID=&quot;44&quot; controlTypeID=&quot;com.balsamiq.mockups::Arrow&quot; x=&quot;493&quot; y=&quot;221&quot; w=&quot;35&quot; h=&quot;109&quot; measuredW=&quot;150&quot; measuredH=&quot;100&quot; zOrder=&quot;26&quot; locked=&quot;false&quot; isInGroup=&quot;-1&quot;> <controlProperties> <direction>bottom</direction> <leftArrow>true</leftArrow> <rightArrow>false</rightArrow> <text/> </controlProperties> </control> </controls> </mockup>