Changeset 67

Show
Ignore:
Timestamp:
01/26/08 13:56:47 (5 years ago)
Author:
d0nut
Message:

stripped hello world, improved 'man' phrases

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • documentation/trunk/doc.tex

    r66 r67  
    7979        die durch asynchrone Verbindungen in einer interaktiven Umgebung beliebige Datenmengen bewÀltigen können. 
    8080         
    81         HTTP-Requests können an den Server geschickt werden, ohne dass die eigentliche Seite neu geladen werden muss 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} 
     
    104104        JavaScript lÀuft in einer Sandbox und schrÀnkt darÃŒber den Zugriff auf Netzwerkfunktionen oder das Dateisystem ein. 
    105105 
    106         JavaScripts werden in das HTML-Dokument eingebettet, um auf Events zu reagieren oder die DOM ReprÀsentierung der Website dynamisch zu manipulieren. 
     106        Skripte werden in das HTML-Dokument eingebettet, um auf Events zu reagieren oder die DOM ReprÀsentierung der Website dynamisch zu manipulieren. 
    107107 
    108108        Ein simples Beispiel ist der Aufruf der alert-Funktion. 
     
    133133        Der andere Computer antwortet mit einem Inhalt. 
    134134 
    135         Normale Websites werden in einem Rutsch geladen. 
     135        Normale Websites laden in einem Rutsch. 
    136136        Dazu formuliert man einen HTTP-Request mit Hostnamen und Pfad. 
    137137        Wird die URL www.foo.com/ajax.html im Browser aufgerufen, wird der folgende HTTP-Request gesendet: 
     
    192192 
    193193\section{AJAX Programmierung} \label{sec:ajax_programming} 
    194         FÃŒr AJAX Kunstwerke gibt es viele unterschiedliche JavaScript basierte Frameworks, 
    195         fÃŒr das VerstÀndnis genÃŒgt es aber sich den AJAX-Kern anzuschauen. 
     194        FÃŒr fertige AJAX Kunstwerke gibt es viele verschiedene JavaScript basierte Frameworks. 
     195        FÃŒr das VerstÀndnis genÃŒgt es aber sich den AJAX-Kern anzuschauen. 
    196196        Dieser besteht aus dem XMLHttpRequest im Browser und JavaScript, ÃŒber das dieser angesprochen wird. 
    197197         
     
    221221        \subsection{Callback Methoden} \label{sec_ajax_callback} 
    222222        Die Callback Methode wird bei jeder der vier readyState-Änderungen aufgerufen. 
    223         Erst beim Status View steht das gesamte Dokument zur VerfÃŒgung. 
     223        Erst beim Status Vier steht das gesamte Dokument zur VerfÃŒgung. 
    224224 
    225225        Wann und ob die readyStates tatsÀchlich wechseln, kann auf Grund vieler Einflussfaktoren wie Bandbreite und Serverauslastung nie garantieren werden. 
     
    228228         
    229229        \subsection{Beispiel} \label{sec_ajax_example} 
    230         Nun ist alles bekannt, was benötigt wird um die Funktion foo() zu implementieren. 
     230        Nun ist alles bekannt, was benötigt wird, um die Funktion foo() zu implementieren. 
    231231        Sie soll einen AJAX Request ausfÃŒhren, um eine Liste von Namen nachzuladen. 
    232232        Dazu wird die AJAX Klasse initialisiert und ein GET-Request an backend.php geschickt. 
     
    243243\begin{lstlisting}[caption={Beispiel}\label{lst:ajax_example},captionpos=b,language=javascript]  
    244244function foo() { 
    245   var req = new XMLHttpRequest(); 
     245  var req = new XMLHttpRequest(); //mozilla implementierung 
    246246  req.open('get', 'backend.php'); 
    247247  req.onreadystatechange = function() { 
     
    264264        Bei der normalen GUI-Programmierung kann die Anwendung bereits innerhalb der IDE debuggt und getestet werden. 
    265265        Da JavaScript-Anwendungen aber erst beim Endbenutzer interpretiert werden, 
    266         braucht man verschiedene Testsysteme aus Betriebsystem und Browserkombinationen. 
     266        benötigt der Entwickler verschiedene Testsysteme aus Betriebsystem- und Browserkombinationen. 
    267267        Auch der komplette Klick-Lebensyklus wird durch das besondere Verhalten der Callback-Methoden und die strikte Trennung zwischen der JavaScript-Frontend-Implementierung und der Backend-Implementierung unmöglich zu testen. 
    268268        Es werden Testszenarien gebraucht die eine ServerÃŒberlastung emulieren. 
     
    278278\section{Google Web Toolkit} \label{sec:gwt} 
    279279        \subsection{EinfÃŒhrung in das Google Web Toolkit} \label{sec_gwt_intro} 
    280         Das Google Web Toolkit ist ein Java Framework zum Entwickeln von Web-Anwendungen, fÃŒr die man keine Java Umgebung braucht. 
     280        Das Google Web Toolkit ist ein Java Framework zum Entwickeln von Web-Anwendungen, fÃŒr die keine Java Umgebung gebraucht wird. 
    281281        So widersprÃŒchlich das Konzept klingen mag, um so mehr ÃŒberzeugt es durch die vielen Vorteile. 
    282282 
     
    297297        Eine gute IDE unterstÃŒtzt dabei mit Debugging-Möglichkeit, Refactoring-Tools und einer Unit-Testing-Integration. 
    298298         
    299         Öfter wird man wÀhrend des Testens in den Hosted-Mode wechseln, der einen Browser innerhalb einer Java VirtualMachine emuliert. 
    300         Entsprechende Break-Points vorausgesetzt, kann man die Anwendung auch hier Testen. 
     299        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. 
    301301         
    302302        Skriptsprachen-Programmierer mÃŒssen ihr 'Try and Run' Konzept nicht verwerfen,  
     
    305305         
    306306        Wurde entschieden den fertig konfigurierten Tomcat-Server des Toolkits zur Prototype-Backend-Implementierung zu verwenden, 
    307         kann man den kompletten Anwendungszyklus debuggen.  
     307        kann der komplette Anwendungszyklus debuggt werden.  
    308308        Dadurch kann ein GUI Klick von vorne, bis hinten debuggt werden, wie es sonst mit AJAX nicht möglich gewesen wÀre. 
    309309 
     
    318318        Der Compiler ist das HerzstÃŒck des GWT. Er verarbeitet den programmierten Java-Code und erstellt daraus einen neuen Code aus HTML und JavaScript -  
    319319        so wie ein klassischer Java Compiler aus Java-Code Bytecode erstellt. 
    320         Der Unterschied ist, dass man den erstellten Code ohne Java Runtime Umgebung und mit jedem aktuellen Browser ausfÃŒhren kann. 
     320        Der Unterschied ist, dass der erstellte Code ohne Java Runtime Umgebung und mit jedem aktuellen Browser ausgefÃŒhrt werden kann. 
    321321 
    322322        Beim Compilieren wird entschieden welche Funktionen des GWT ÃŒberhaupt genutzt werden. 
     
    331331        die er tatsÀchlich benötigt. 
    332332         
    333         Hatte man fÃŒr einen Framework-Einsatz noch vorher zwischen sauberem Code und Mengen an unbenutztem Framework-Code abwÀgen wollen, 
    334         kann man mit dem GWT fast nur sparen. 
     333        Wurde vor einen Framework-Einsatz vorher noch zwischen sauberem Code und Mengen an unbenutztem Framework-Code abgewogen, 
     334        kann mit dem GWT fast nur gespart werden. 
    335335         
    336336        Die eigentliche HTML Datei sorgt nur fÃŒr die Einbindung des JavaScripts. 
     
    341341        In den meisten Websites sind es Bilder, die die meisten HTTP-Requests verursachen. 
    342342        Daher haben sich die GWT Entwickler das Konzept der ImageBundles ÃŒberlegt. 
    343         Vielleicht sieht man den enormen Vorteil anhand eines Beispiels. 
     343        Vielleicht wird der Vorteil anhand eines Beispiels gebuwsster: 
    344344 
    345345        Typische WYSIWYG-Editoren bringen etwa 50 Buttons mit, die dem Anwender eine Office-Àhnliche OberflÀche vermitteln sollen. 
     
    358358         
    359359        ImageBundles werden als Interface geschrieben. 
    360         Will man Bilder zentral verwalten fasst man sie einfach per Ableiten zusammen und der Compiler erstellt ein einziges Bild. 
     360        Sollen die Bilder zentral verwaltet werden, mÃŒssen sie einfach per Ableiten zusammengefasst werden und der Compiler erstellt ein einziges Bild. 
    361361         
    362362         
     
    365365        Damit das Gesamtsystem aber ÃŒberhaupt funktionieren kann, benötigt jede Anwendung auch ein Backend. 
    366366        FÃŒr die Anbindung an das Backend nutzt das GWT 'Remote Procedure Calls' (kurz RPC),  
    367         ÃŒber die man eine Model-View-Controller Architektur umsetzen kann. 
     367        ÃŒber die eine Model-View-Controller Architektur umgesetzt werden kann. 
    368368 
    369369        FÃŒr die Prototyp-Entwicklung des Backends bringt das Google Web Toolkit einen Tomcat Server mit. 
    370         Damit kann man die Anwendung komplett debuggen. 
    371370        Das Toolkit fasst also alles benötige in einem Paket zusammen. 
    372371        Falls kein Applikation-Server zur VerfÃŒgung steht, 
     
    431430\end{lstlisting} 
    432431         
    433         Will man die Anwendung mit dem mitgelieferten Tomcat-Server testen,  
     432        Wird die Anwendung mit dem mitgelieferten Tomcat-Server getestet,  
    434433        muss das Backend das MailService-Interface implementieren. 
    435434        Komplexe Datentypen sind erlaubt. 
    436435 
    437436 
    438 \section{Basiselemente des GWT} \label{sec:basics} 
     437\section{Elemente des GWT} \label{sec:elements} 
     438        Neben den behandelten Performance-Vorteilen, durch die erst eine Reaktionszeit Àhnlich der von Desktop- möglich wurde, 
     439        bringt das GWT Basiselemente fÃŒr die GUI-Programmierung und Konzepte um die Usability von Web-Anwendungen zu erhöhen mit. 
     440 
    439441        \subsection{Panels} \label{sec:gwt_panels} 
    440442        Wer grafische OberflÀchen bereits mit Java erstellt hat, kennt das Layout-Manager-Konzept von Swing und AWT. 
     
    449451        \centering 
    450452        \includegraphics{img/panel.eps} 
    451         \caption{Das DockPanel gleicht dem TODO von AWT.} 
     453        \caption{Das DockPanel zur Anordnung von Komponenten Àhnelt dem BorderLayout von AWT.} 
    452454        \end{figure} 
    453455 
     
    455457        Hinter Widgets versteckt sich der deutsche Begriff 'grafisches Bedienelement'. 
    456458        Das GWT versteht sich auf Web- und so will es auch die gewohnten Browser-Elemente aus Usability-Aspekten behalten. 
    457         Neben den fÃŒr HTML Entwickler bekannten Elementen wie Eingabefeld, Button und Auswahlbox bringt das GWT aber noch weitere Widgets mit,  
    458         die man von Desktop-Applikationen bereits kennt. Dazu zÀhlen der Tree fÃŒr eine Baumdarstellung eines Verzeichnisbaums,  
     459        Neben den fÃŒr HTML Entwickler bekannten Elementen wie Eingabefeld, Button und Auswahlbox bringt das GWT aber noch weitere, aus Desktop-Applikationen bekannte Widgets mit.  
     460        Dazu zÀhlen der Tree fÃŒr eine Baumdarstellung eines Verzeichnisbaums,  
    459461        die MenuBar fÃŒr eine MenÃŒleiste,  
    460462        die TabBar fÃŒr das Container-Wechsel ÃŒber eine Reiterleiste, 
    461463        das StackPanel oder die RichTextArea fÃŒr WYSIWYG-Editoren. 
    462464 
    463         Außerdem findet man neben Kalender- und Zeichenwidgets auch 'Drag & Drop' Elemente in der aktiven OpenSource Community hinter dem GWT. 
     465        Außerdem gibt es neben Kalender- und Zeichenwidgets auch 'Drag & Drop' Elemente in der aktiven OpenSource Community hinter dem GWT. 
    464466         
    465467        \begin{figure}[htp] 
     
    468470        \caption{Neben altbekannten Formular-Elemente werden auch neue Widgets mitgeliefert.} 
    469471        \end{figure} 
    470  
    471  
    472         \subsubsection{Beispiel 'Hello World!'} \label{sec_gwt_widgets_hello_world} 
    473         Mit dem Wissen ÃŒber Widgets und Panels sollten Sie nun das erste <<Hello Word>> verstehen können. 
    474  
    475 \begin{lstlisting}[caption={Java Hello World}\label{lst:hello_world_java},captionpos=b,language=java]  
    476 import com.google.gwt.core.client.EntryPoint; 
    477 import com.google.gwt.user.client.Window; 
    478 import com.google.gwt.user.client.ui.*; 
    479  
    480 /** 
    481  * HelloWorld application. 
    482  */ 
    483 public class Hello implements EntryPoint { 
    484  
    485   public void onModuleLoad() { 
    486     Button b = new Button("Click me", new ClickListener() { 
    487       public void onClick(Widget sender) { 
    488         Window.alert("Hello, AJAX"); 
    489       } 
    490     }); 
    491  
    492     RootPanel.get().add(b); 
    493   } 
    494 } 
    495 \end{lstlisting} 
    496  
    497         Öffnet man den Quelltext der Datei im Web-Mode, 
    498         sieht man, das selbst diese simple Anwendung wie beschrieben durch das Bootstrap-Skript ausgelagert wird. 
    499  
    500 \begin{lstlisting}[caption={HTML Hello World}\label{lst:hello_world_html},captionpos=b,language=html] 
    501 <html> 
    502   <head> 
    503     <title>Hello</title> 
    504   </head> 
    505   <body bgcolor="white">  
    506     <script language="javascript" src="Hello.nocache.js"></script> 
    507   </body> 
    508 </html> 
    509 \end{lstlisting} 
    510  
    511  
    512 \section{Arbeiten mit dem GWT} \label{sec:working} 
    513         Neben den behandelten Performance-Vorteilen, durch die erst eine Reaktionszeit Àhnlich der von Desktop- möglich wurde, 
    514         bringt das GWT noch weitere Konzepte mit um die Usability von Web-Anwendungen zu erhöhen. 
    515472 
    516473 
     
    657614 
    658615 
     616        \subsubsection{Beispiel 'Hello World!'} \label{sec_gwt_widgets_hello_world} 
     617        Mit dem Wissen ÃŒber Widgets und Panels sollten Sie nun das erste <<Hello Word>> verstehen können. 
     618 
     619\begin{lstlisting}[caption={Java Hello World}\label{lst:hello_world_java},captionpos=b,language=java]  
     620import com.google.gwt.core.client.EntryPoint; 
     621import com.google.gwt.user.client.Window; 
     622import com.google.gwt.user.client.ui.*; 
     623 
     624/** 
     625 * HelloWorld application. 
     626 */ 
     627public class Hello implements EntryPoint { 
     628 
     629  public void onModuleLoad() { 
     630    Button b = new Button("Click me", new ClickListener() { 
     631      public void onClick(Widget sender) { 
     632        Window.alert("Hello, AJAX"); 
     633      } 
     634    }); 
     635 
     636    RootPanel.get().add(b); 
     637  } 
     638} 
     639\end{lstlisting} 
     640 
     641        Wird der Quelltext der Datei im Web-Mode eingesehen, 
     642        sieht man, das selbst diese Anwendung, wie beschrieben durch das Bootstrap-Skript ausgelagert wird. 
     643 
     644\begin{lstlisting}[caption={HTML Hello World}\label{lst:hello_world_html},captionpos=b,language=html] 
     645<html> 
     646  <head> 
     647    <title>Hello</title> 
     648  </head> 
     649  <body bgcolor="white">  
     650    <script language="javascript" src="Hello.nocache.js"></script> 
     651  </body> 
     652</html> 
     653\end{lstlisting} 
     654 
     655 
    659656\newpage 
    660657