Changeset 68

Show
Ignore:
Timestamp:
02/16/08 10:18:53 (5 years ago)
Author:
d0nut
Message:

smaller optimizations

Location:
documentation/trunk
Files:
1 added
1 modified

Legend:

Unmodified
Added
Removed
  • documentation/trunk/doc.tex

    r67 r68  
    5555 
    5656        Besonders im professionellen Umfeld wird wegen der einfachen clientseitigen Einrichtung und der strikten Server/Client Trennung verstÀrkt auf Web-Anwendungen gebaut. 
    57         Moderne Web-Anwendungen lassen sich kombinieren, sie greifen ineinander ÃŒber und sie reagieren sofort auf das, was der Benutzer macht. 
     57        Moderne Web-Anwendungen lassen sich komponentenweise kombinieren, sie greifen ineinander ÃŒber und sie reagieren sofort auf das, was der Benutzer macht. 
    5858         
    5959        Die BrÃŒcke zwischen Web- und Desktop-Welt wird durch gleiche Bedienkonzepte wie z.B. Drag-Drop, AutovervollstÀndigen oder die sofortige Formularvalidierung geschlagen. 
     
    7676        HTTP zum Nachladen von Daten. 
    7777 
    78         Das Zusammenspiel dieser Technologien erlaubt dynamische Websites,  
     78        Das Zusammenspiel dieser drei Technologien erlaubt dynamische Websites,  
    7979        die durch asynchrone Verbindungen in einer interaktiven Umgebung beliebige Datenmengen bewÀltigen können. 
    8080         
    81         Der Client schickt HTTP-Requests an den Server, ohne dass die eigentliche Seite neu geladen wird oder der Benutzer wÀhrenddessen warten muss. 
     81        Der Client schickt HTTP-Requests an den Server, ohne dass die eigentliche Seite neu geladen wird, oder der Benutzer wÀhrenddessen warten muss. 
    8282         
    8383        \subsection{Document Object Model} \label{sec_ajax_dom} 
    84         Das Document Object Model (kurz DOM) ist eine vom W3-Konsortium verabschiedete Norm fÃŒr die Definition einer Baumstruktur und ihrer Traversierungsfunktionen. 
    85         Mit DOM lÀsst sich das gesamte HTML Dokument in ein dynamisches Objekt binden. 
     84        Das Document Object Model (kurz DOM) ist eine vom W3-Konsortium verabschiedete Norm fÃŒr die Definition einer Baumstruktur und ihrer Traversierungsfunktionen in XML. 
     85        Mit DOM lÀsst sich damit auch ein komplettes HTML Dokument in ein dynamisches Objekt binden. 
    8686 
    8787        Das Beispiel zeigt den DOM-Baum einer Standard-Web-Seite, mit Head- und Body-Bereich und mehreren Unterknoten. 
     
    173173        WÀhrend des Ladevorgangs kann der Benutzer weiter mit der Seite interagieren, 
    174174        da der Browser dafÃŒr sorgt, dass der asynchrone Request in einem eigenen Thread ablÀuft. 
    175         Dazu ist keine Socketverbindung ÃŒber TCP oder UDP notwendig. 
    176          
     175 
     176        Zudem ist keine Socketverbindung auf Ebene von TCP oder UDP notwendig.   
    177177        Verwendet man AJAX, genÃŒgt es in der Regel einzig Daten per HTTP zu ÃŒbertragen. 
    178         Das EinfÃŒgen in den DOM Baum macht dann JavaScript. 
    179         So funktioniert das Zusammenspiel der drei Technologien. 
     178 
     179        Das EinfÃŒgen in den DOM Baum erledigt dann JavaScript. 
     180        So funktioniert das Zusammenspiel der drei Technologien: 
     181         
     182        Die Ajax-Engine reagiert auf einen Klick in der BenutzeroberflÀche, 
     183        schickt daraufhin eine HTTP-Request an den Server und sobald dieser antwortet, 
     184        wertet sie die Antwort aus und fÃŒgt die Informationen mit DOM-Manipulationen in das eigentlich Dokument wieder ein. 
    180185 
    181186        \begin{figure}[htp] 
     
    185190        \label{fig:http-ajax} 
    186191        \end{figure} 
    187          
    188         Die Ajax-Engine reagiert auf einen Klick in der BenutzeroberflÀche, 
    189         schickt daraufhin eine HTTP-Request an den Server und sobald dieser antwortet, 
    190         wertet sie die Antwort aus und fÃŒgt die Informationen mit DOM-Manipulationen in das eigentlich Dokument wieder ein. 
    191192 
    192193 
     
    268269        Es werden Testszenarien gebraucht die eine ServerÃŒberlastung emulieren. 
    269270         
    270         Selbst fÃŒr den Benutzer ergeben sich Nachteile, denn das Navigieren ÃŒber die Browserfunktionen oder das Neuladen der Seite können ohne ein ausgeklÃŒgeltes Konzept zu Fehlverhalten fÃŒhren. 
     271        Selbst fÃŒr den Benutzer ergeben sich Nachteile.  
     272        Denn das Navigieren ÃŒber die Browserfunktionen oder das Neuladen der Seite können ohne ein ausgeklÃŒgeltes Konzept zu Fehlverhalten fÃŒhren. 
    271273 
    272274        Wie der Titel dieser Ausarbeitung nahe legt, heißt die Lösung fÃŒr all diese Probleme 'Google Web Toolkit' (oder kurz GWT). 
     
    286288 
    287289        Entwickler können ihre fÃŒr Java bevorzugte Entwicklungsumgebung benutzen. 
    288         Dabei brauchen sie sich nicht mit HTML, JavaScript und vor allem den ganzen Browser-Workarounds auseinander zusetzen. 
     290        Dabei brauchen sie sich nicht mit HTML, JavaScript und vor allem den ganzen Browser-Workarounds auseinander zu setzen. 
    289291        Sie können GUIs programmieren, wie sie es bereits von SWING und AWT gewohnt sind,  
    290292        ohne dabei auf vorhandene Build- und Testing-Tools verzichten zu mÃŒssen. 
     
    293295        \subsection{Entwicklungszyklus} \label{sec_devcycle} 
    294296        Das GWT arbeitet mit einer Standard-Verzeichnisstruktur, die entweder manuell oder unterstÃŒtzt durch die mitgelieferten Skripte erstellt werden kann. 
     297        FÃŒr Eclipse wird erst ein Projektverzeichnis zum Import in den Workspace erstellt und dann in Schritt zwei die Anwendung angelegt. 
     298        % auch wenn es wieder ein foren-tipp ist, der tipp muss einfach rein 
     299        Die Schritte sollten in einem eigenen Verzeichnis durchgefÃŒhrt werden, da die Verzeichnisstruktur direkt im ausfÃŒhrenden Verzeichnis abgelegt wird. 
     300\begin{lstlisting}[\label{lst:devcycle_projectCreator},language=bash]  
     301./../gwtpfad/projectCreator -eclipse MeineErstesProjekt 
     302./../gwtpfad/applicationCreator -eclipse MeineErstesProjekt com.gwt.client.MeineErsteAnwendung 
     303\end{lstlisting} 
    295304 
    296305        Geeignete Entwicklungsumgebungen können das Projektverzeichnis dann als normales Java-Projekt importieren und die eigentiche Programmierung kann beginnen. 
    297         Eine gute IDE unterstÃŒtzt dabei mit Debugging-Möglichkeit, Refactoring-Tools und einer Unit-Testing-Integration. 
     306        Die IDE kann dabei mit Debugging-Möglichkeit, Refactoring-Tools und einer Unit-Testing-Integration unterstÃŒtzen. 
     307        Die Standard-Verzeichnisstruktur enthÀlt bereits ein einfaches 'Hello World' das in den nÀchsten Schritten zu einer Anwendung wachsen soll.    
    298308         
    299309        WÀhrend des Testens wird öfter in den Hosted-Mode gewechselt, der einen Browser innerhalb einer Java VirtualMachine emuliert. 
    300         Entsprechende Break-Points vorausgesetzt, kann die Anwendung hier live getestet werden. 
     310        Die Anwendung kann hier live getestet und - entsprechende Break-Points vorausgesetzt - auch debuggt werden. 
    301311         
    302312        Skriptsprachen-Programmierer mÃŒssen ihr 'Try and Run' Konzept nicht verwerfen,  
    303         da der Hosted-Mode-Browser sie weder durch umstÀndliche IDE-Prozesse, noch durch lange Kompilierzeiten ausbremst. 
     313        da der Hosted-Mode-Browser sie weder durch umstÀndliche IDE-Prozesse,  
     314        noch durch lange Kompilierzeiten ausbremst. 
    304315        Änderungen im Java Quelltext Code werden 'Just in time' ÃŒbernommen. 
    305316         
     
    317328        \subsection{Compiler} \label{sec_tec_compiler} 
    318329        Der Compiler ist das HerzstÃŒck des GWT. Er verarbeitet den programmierten Java-Code und erstellt daraus einen neuen Code aus HTML und JavaScript -  
    319         so wie ein klassischer Java Compiler aus Java-Code Bytecode erstellt. 
     330        so wie ein klassischer Java Compiler aus Java-Code einen Bytecode erstellt. 
    320331        Der Unterschied ist, dass der erstellte Code ohne Java Runtime Umgebung und mit jedem aktuellen Browser ausgefÃŒhrt werden kann. 
    321332 
     
    363374        \subsection{Remote Procedure Call} \label{sec_tec_gwt_rpc} 
    364375        Bisher wurden die optimierten Frontend-Prozesse von GWT vorgestellt. 
    365         Damit das Gesamtsystem aber ÃŒberhaupt funktionieren kann, benötigt jede Anwendung auch ein Backend. 
    366         FÃŒr die Anbindung an das Backend nutzt das GWT 'Remote Procedure Calls' (kurz RPC),  
     376        FÃŒr die Anbindung an ein Backend nutzt das GWT 'Remote Procedure Calls' (kurz RPC),  
    367377        ÃŒber die eine Model-View-Controller Architektur umgesetzt werden kann. 
    368378 
     379        Das Toolkit fasst also alles benötige in einem Paket zusammen. 
    369380        FÃŒr die Prototyp-Entwicklung des Backends bringt das Google Web Toolkit einen Tomcat Server mit. 
    370         Das Toolkit fasst also alles benötige in einem Paket zusammen. 
    371381        Falls kein Applikation-Server zur VerfÃŒgung steht, 
    372382        stellt dies durch die Standardisierung von Remote Procedure Calls auch kein Problem dar und  
    373         es können andere Programmiersprachen wie zum Beispiel PHP, Python oder C\# im Backend genutzt werden. 
     383        es können andere Programmiersprachen wie PHP, Python oder C\# im Backend genutzt werden. 
    374384 
    375385        Eine Besonderheit der RPC Implementierung des GWT,  
     
    377387        sind die polymorphen Klassenhierarchien und das Durchreichen von Exceptions. 
    378388         
    379         Die Implementierung von RemoteProcedure Calls erstreckt sich ÃŒber mehrere Dateien. 
    380         Es wird die Beispielanwendung der AJAX-Programmierung implementiert. 
     389        Die Implementierung von RemoteProcedure Calls erstreckt sich ÃŒber mehrere Klassen und Interfaces. 
     390        Aufbauen auf dem 'Hello World' wird nun die Beispielanwendung der AJAX-Programmierung implementiert. 
     391         
     392        Nach Konvention sollten dazu neben dem existierenden Client-Paket noch ein "rpc" und ein "server" Paket angelegt werden. 
     393        Das rpc-Paket wird die folgende Klassenstruktur abbilden. 
    381394         
    382395        \begin{figure}[htp] 
     
    386399        \label{fig:rpc} 
    387400        \end{figure} 
     401         
     402        \newpage 
    388403         
    389404        MailService ist ein Interface das RemoteService erweitert und die tatsÀchliche Implementierung beschreibt. 
     
    408423         
    409424        Der emailService Proxy ist eine MailServiceAsync Instanz, wird aber vom GWT initialisiert. 
     425        Hier wird er mit der URL des RPC Moduls des GWT initialisiert. 
     426        Alternativ kann man hier einen Pfad zur eigenen RPC Implementierung eintragen. 
    410427\begin{lstlisting}[caption={emailServiceAsync}\label{lst:gwtsample_emailserviceasync},captionpos=b,language=java]  
    411428MailServiceAsync emailService =