Google Webtool Kit

      Übersicht
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.
Warum AJAX?
Warum AJAX?
Finde den Fehler
Fehler gefunden
JavaScript = Schmerz

...cross-browser

...memory leak

...loading latency

...bugs (dynamic language)

...security
Von Java zu JavaScript
Von Java zu JavaScript

Java Code:


GWT compiler (-style PRETTY)


GWT compiler (-style OBFUSCATED)
Features

User Interfaces

History Management

Lokalisierung

Client/Server-Kommunikation

JavaScript Native Interface

Unit Testing

Optimization
User Interfaces

                    GWT
                GWT Incubator
      _________________________________

                  SmartGWT
                   GWT-Ext
                   Ext-GWT

               und viele mehr...
Aufbau UI mit Code
Aufbau UI mit UIBinder
Styling mit CSS
Styling mit CSS
History Management




AJAX-Anwendungen verwenden meistens keine
Browser History (==> Frust).

Demo
Lokalisierung

Constants
    helloWorld = Hallo, Welt

Messages
    goodBye = Adios, {0}

Plural
    @DefaultText(...)
    @PluralText(...)

UIBinder Support
  <ui:msg description="helloWorld">Hello, world.</ui:msg></div>

Demo
Client/Server Kommunikation
HTTP-Requests




z.B.: PHP als Backend und XML, JSON
oder ein eigenes Format.
GWT-RPC
Warum nicht eine Sprache sprechen?
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
Unit Testing

GWTTestCase für die Views

JUnit für Presenter und Model

Selenium
Optimierung

Delayed Logic


Code Splitting


ClientBundle
Tools

Eclipse Plugin

GWT Designer

Speed Tracer
GWT Designer
Warum mit Java entwickeln?
Vorteile

Client und Server können eine Sprache verwenden
(GWTRPC).

Java Entwickler Tools (Eclipse, PMD, JUnit etc).

Debugging Umgebung

Cross-Browser-Support
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.
Größe der Komponenten
Fragen ?
Google App Engine
Web Application Hosting Service
Google Infrastruktur
automatische und beliebige
 Skalierung von WebApps
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
Google Datastore
• Bigtable (Object Database)
• Google Earth, Google Finance, Google Search
Keine relationale Datenbank




                              Umdenken notwendig
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
Bulk-Loader
• Python-Script
• Upload / Downloading Data
• Backups
Einschränkungen
• Indexerzeugung beim deployen kostet Zeit
• Kein bulk-delete oder Massen-lesen / -schreiben
Standards: JDO / JPA / Annotations
Standards: JDO / JPA / Annotations
Kosten
•   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
•   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
Fragen ?
Deferred Binding

GWT

Hinweis der Redaktion

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