Changeset 71
- Timestamp:
- 02/17/08 11:50:06 (5 years ago)
- Location:
- documentation/trunk
- Files:
-
- 2 added
- 1 modified
-
doc.tex (modified) (11 diffs)
-
img/uml.eps (added)
-
img/uml.svg (added)
Legend:
- Unmodified
- Added
- Removed
-
documentation/trunk/doc.tex
r69 r71 18 18 19 19 % syntax colors 20 %\color{<colour>} 20 21 \definecolor{middlegray}{rgb}{0.5,0.5,0.5} 21 22 \definecolor{lightgray}{rgb}{0.8,0.8,0.8} … … 40 41 \begin{abstract} 41 42 Die Facharbeit handelt von der AJAX-Technologie - Grundlage moderner Web-Anwendungen. 42 Sie beginnt bei der ErklÀrung der drei Basistechnologien, gibt ein einfachesProgrammierbeispiel und geht auf typische Probleme ein.43 Dann wird das Google Web Toolkit erklÀrt und eine BrÃŒcke zu Java ge zogen.43 Sie beginnt bei der ErklÀrung der drei Basistechnologien, gibt ein Programmierbeispiel und geht auf typische Probleme ein. 44 Dann wird das Google Web Toolkit erklÀrt und eine BrÃŒcke zu Java geschlagen. 44 45 Das Google Web Toolkit versucht den Desktop-Entwicklungs-Zyklus auf Web-Anwendungen zu ÃŒbertragen. 45 46 \end{abstract} … … 123 124 \centering 124 125 \includegraphics{img/alert.eps} 125 \caption{Ein einfacher alert.}126 \label{fig:alert}127 126 \end{figure} 128 127 … … 145 144 146 145 Der Server beantwortet die Anfrage mit einem Status-Code und den angeforderten Daten: 147 \begin{lstlisting} 146 \begin{lstlisting}[language=html] 148 147 HTTP/1.1 200 OK 149 148 Content-Type: text/html … … 297 296 \subsection{Entwicklungszyklus} \label{sec_devcycle} 298 297 Das GWT arbeitet mit einer Standard-Verzeichnisstruktur, die entweder manuell oder unterstÃŒtzt durch die mitgelieferten Skripte erstellt werden kann. 299 FÃŒr Eclipse wird erst ein Projektverzeichnis zum Import in den Workspace erstellt und dann i n Schritt Zweidie Anwendung angelegt.298 FÃŒr Eclipse wird erst ein Projektverzeichnis zum Import in den Workspace erstellt und dann im zweiten Schritt die Anwendung angelegt. 300 299 301 300 Die Schritte sollten in einem leeren eigenen Verzeichnis durchgefÃŒhrt werden, da die Verzeichnisstruktur direkt im ausfÃŒhrenden Verzeichnis abgelegt wird. 302 \begin{lstlisting}[ caption={}\label{lst:devcycle},language=bash]301 \begin{lstlisting}[language=bash] 303 302 projectCreator -eclipse MeineErstesProjekt 304 303 applicationCreator -eclipse MeineErstesProjekt \ … … 401 400 \begin{figure}[htp] 402 401 \centering 403 \includegraphics{img/ rpc.eps}404 \caption{ Modell der Beispielanwendung Mail}402 \includegraphics{img/uml.eps} 403 \caption{UML Modell der Beispielanwendung 'Status'} 405 404 \label{fig:rpc} 406 405 \end{figure} 407 406 408 Status Serviceist ein Interface das RemoteService erweitert und die tatsÀchliche Implementierung beschreibt.407 Status ist ein Interface das RemoteService erweitert und die tatsÀchliche Implementierung beschreibt. 409 408 Es enthÀlt die Java-Signaturen und wird spÀter vom Backend implementiert. 410 \begin{lstlisting}[caption={Status Service}\label{lst:gwtsample_StatusService},captionpos=b,language=java]409 \begin{lstlisting}[caption={Status}\label{lst:gwtsample_Status},captionpos=b,language=java] 411 410 import com.google.gwt.user.client.rpc.*; 412 411 413 public interface Status Serviceextends RemoteService {412 public interface Status extends RemoteService { 414 413 Person[] getActive(); 415 414 void setStatus(Person name, boolean status); … … 417 416 \end{lstlisting} 418 417 419 HelloServiceAsync ist ein Interface das spÀter im GWT-Frontend-Code instanziiert wird.418 StatusAsync ist ein Interface das spÀter im GWT-Frontend-Code instanziiert wird. 420 419 Die Methoden haben keinen RÃŒckgabetyp, erhalten jedoch das parametrisierte AsyncCallback Objekt, das auf die readyState Ãnderungen reagiert. 421 \begin{lstlisting}[caption={Status ServiceAsync}\label{lst:gwtsample_StatusServiceAsync},captionpos=b,language=java]420 \begin{lstlisting}[caption={StatusAsync}\label{lst:gwtsample_StatusAsync},captionpos=b,language=java] 422 421 import com.google.gwt.user.client.rpc.*; 423 422 424 public interface Status ServiceAsync {423 public interface StatusAsync { 425 424 void getActive(AsyncCallback callback); 426 425 void setStatus(Person name, boolean status, AsyncCallback callback); … … 428 427 \end{lstlisting} 429 428 430 Der Status ServiceProxy beschreibt die Implementierung im Frontend.431 Er ist eine Status ServiceAsync Instanz, wird aber vom GWT initialisiert.429 Der Status-Proxy beschreibt die Implementierung im Frontend. 430 Er ist eine StatusAsync Instanz, wird aber vom GWT initialisiert. 432 431 Hier wird er mit der URL des RPC Moduls des GWT initialisiert. 433 432 Alternativ kann man aber auch einen Pfad zur eigenen RPC Implementierung eintragen. 434 \begin{lstlisting}[caption={Status ServiceAsync}\label{lst:gwtsample_eStatusServiceasync},captionpos=b,language=java]435 Status ServiceAsync eStatusService=436 (Status ServiceAsync) GWT.create(StatusService.class);437 ServiceDefTarget endpoint = (ServiceDefTarget) eStatusService;433 \begin{lstlisting}[caption={StatusProxy}\label{lst:gwtsample_StatusProxy},captionpos=b,language=java] 434 StatusAsync status = 435 (StatusAsync) GWT.create(Status.class); 436 ServiceDefTarget endpoint = (ServiceDefTarget) status; 438 437 String moduleRelativeURL = GWT.getModuleBaseURL() + "rpc"; 439 438 endpoint.setServiceEntryPoint(moduleRelativeURL); … … 454 453 455 454 Wird die Anwendung mit dem mitgelieferten Tomcat-Server getestet, 456 muss das Backend das Status Service-Interface implementieren und der Pfad zum Servlet in der gwt-Modulkonfiguration eingefÃŒgt werden.455 muss das Backend das Status-Interface implementieren und der Pfad zum Servlet in der gwt-Modulkonfiguration eingefÃŒgt werden. 457 456 In der public/MeineErsteAnwendung.gwt.xml wird dazu ein neuer XML-Knoten unter '<module>' eingefÃŒgt. 458 \begin{lstlisting}[ caption={}\label{lst:gwtsample_gwtxml},language=xml]457 \begin{lstlisting}[language=xml] 459 458 <servlet path="/rpc" class="com.gwt.server.StatusImpl"/> 460 459 \end{lstlisting} … … 525 524 526 525 Bei der statischen Variante wird ein Interface mit je einer Methode pro Eigenschaft erstellt. 527 \begin{lstlisting}[ caption={Java Internationalisierung}\label{lst:java_internationalization},captionpos=b,language=java]526 \begin{lstlisting}[language=java] 528 527 public interface MyLang extends Constants { 529 528 String helloWorld(); … … 552 551 Der Zugriff auf window und document ist gekapselt und nur ÃŒber die Variablen \$wnd und \$doc möglich. 553 552 554 \begin{lstlisting}[ caption={JSNI Beispiel}\label{lst:jsni_example},captionpos=b,language=java]553 \begin{lstlisting}[language=java] 555 554 public class JSNIExample { 556 555 void foo(String s) {
