Java oberflächlich betrachtet


             Welche GUI ist die richtige?

             Treffpunkt Semicolon, GFU, 19.02.2008

             Dirk Weil, GEDOPLAN GmbH
2007-11-20
Architekturen 200x

  Mehrschichtige Architekturen




                                 © Sun Microsystems
                                                      2
Architekturen 200x

  Mehrschichtige Architekturen



"cool"
"Schnee
  von
gestern"




                                                        © Sun Microsystems
           "noch nicht"          "zu schwergewichtig"

                                                                             3
Web App Building Blocks




                                             ---
                                                ---
                                            ----- ---
                                               -----
                                              -- -----
                                                 --
                                             ---- --
                                                ----
                        Servlet              --- ----
                                                ---  JSP
                                                       JSP
                                                   ---
                                                         JSP




                                  Bean
                                   Bean
                                     Bean
               Struts

                                                               4
JavaServer Faces

  In Java EE seit 5/2006
  MVC, Konvertierung, I18n, ...
  Komponenten
  Statushandling
  Data Binding




                                  5
JavaServer Faces




                   6
JavaServer Faces

 <html>
 ...

 <rich:calendar
   value="#{demoBean.selectedDate}"
   popup="false"/>

 <rich:tree
   value="#{demoBean.treeValues}"
   var="treeNode"/>

 ...
 </html>




                                      7
JavaServer Faces

 <html>
 ...

 <rich:gmap
   style="width:400px;height:400px"
   lat="52.002"
   lng="8.589"/>

 ...
 </html>




                                      8
Warum Web App?

  Ressourcenbedarf im Client

      Swing-Anwendungen
      brauchen viel Speicher



                         Stimmt ...
                auf'm PII mit 128 MB RAM




                                           9
Warum nicht Desktop-Anwendung?

  Clientseitige Installation
      Ggf. Admin-Rechte nötig

     Zeitaufwand




                                 10
Automatische Softwareverteilung

  Java Web Start
     Download
     Installation
     Update
     JRE und Applikation




                           JNLP




                                  11
Automatische Softwareverteilung

  Java Web Start Demo




      http://java.sun.com/products/javawebstart/apps/swingset2.jnlp


                                                                      12
Automatische Softwareverteilung

  Eclipse RCP
      Client-Framework
      JFace / SWT
      Produkt = JRE + RCP + App
      Automatische Updates




                                  13
Request Driven vs. Event Driven

  Web Application
    Request/Response
    Grobgranulare UI-Updates

  Desktop Application
     Event-Modell
     Listener, Observer
     Feingranulare Änderungen
     Tastatursteuerung



                                  14
Web vs. Fat/Rich Client

                      Ergonomie
                             technische
                 User-       Randbedingungen
                 Erwartung




                   Web /Fat/Rich Client




                                               15
Web vs. Fat/Rich Client

  Web Clients
    Kunden-Anwendungen
    Einfache Präsentationslogik
    Aufwändige Gestaltung

  Fat/Rich Clients
      Sachbearbeiter-Anwendungen
      Komplexe GUIs
      Aufwändige Präsentationslogik
      Tastatursteuerung


                                      16
Web vs. Fat/Rich Client

  Weitere Entscheidungsfaktoren
    Design oder Programmierung?
    Java + HTML + JavaScript + JSP + JSF oder nur Java?
    Debugging
    Security




                                                          17
Web vs. Fat/Rich Client

  Web App als Desktop Replacement?




                                     18
AJAX

  Asynchronous JavaScript and XML
  XMLHttpRequest
  Update von Teilen der Seite


                         Client                   DOM der HTML-Seite
                        HTML mit                                                               document
                        JavaScript
                                                        anchors           applets          forms      images          layers             links

                                                        button        checkbox             hidden    password         radio              reset
                     XMLHttpRequest
                                             3.                  submit             text                   textarea            select
                                             Update des
                1.                           Seiten-DOM                                                                        options
                Request durch das
                XMLHttpRequest-Objekt

                                        2.
                         Server         Daten als
                     Verarbeiten der    XML, HTML,
                        Anfrage         Plaintext




                                                                                                                                                 19
AJAX




       20
AJAX

  JavaScript kann abgeschaltet sein
  Security
  Asynchrone Verarbeitung kann problematisch sein
  'AJAX-Verdrahtung' erhöht Komplexität




                                                    21
GWT

 Google Web Toolkit
    Java-to-JavaScript Compiler
    AJAX
    Auf Geschwindigkeit optimiert
    Nicht als Desktop-Replacement
    gedacht




                                    22
Fazit

  Usererwartung bestimmt Anwendungstyp

  Katalog, Shop, Information, ...
  Portal                             Web Client
  Leichtgewichtiger Zugriff

  Datenpflege
  Aufwändige Workflows               Fat/Rich Client
  Installation akzeptabel



                                                       23
Fazit

  Falls Web-Anwendung:
      JSF bietet tragfähige, standardisierte Basis
      Ggf. AJAX
         JSF-Komponente
         Saubere Architektur!


  Falls Fat/Rich-Client
      Swing (ggf. ergänzt) + Java Web Start
      Alternativ Eclipse RCP
      Saubere Architektur!


                                                     24
Und Sie?

  Wie sind Ihre Erfahrungen?

  Setzen Sie andere Frameworks ein?

  Web? Fat/Rich? Gemischt?




                                      25
Danke für's Kommen!




                      26

Java oberflächlich betrachtet - Welche GUI ist die richtige?

  • 1.
    Java oberflächlich betrachtet Welche GUI ist die richtige? Treffpunkt Semicolon, GFU, 19.02.2008 Dirk Weil, GEDOPLAN GmbH 2007-11-20
  • 2.
    Architekturen 200x Mehrschichtige Architekturen © Sun Microsystems 2
  • 3.
    Architekturen 200x Mehrschichtige Architekturen "cool" "Schnee von gestern" © Sun Microsystems "noch nicht" "zu schwergewichtig" 3
  • 4.
    Web App BuildingBlocks --- --- ----- --- ----- -- ----- -- ---- -- ---- Servlet --- ---- --- JSP JSP --- JSP Bean Bean Bean Struts 4
  • 5.
    JavaServer Faces In Java EE seit 5/2006 MVC, Konvertierung, I18n, ... Komponenten Statushandling Data Binding 5
  • 6.
  • 7.
    JavaServer Faces <html> ... <rich:calendar value="#{demoBean.selectedDate}" popup="false"/> <rich:tree value="#{demoBean.treeValues}" var="treeNode"/> ... </html> 7
  • 8.
    JavaServer Faces <html> ... <rich:gmap style="width:400px;height:400px" lat="52.002" lng="8.589"/> ... </html> 8
  • 9.
    Warum Web App? Ressourcenbedarf im Client Swing-Anwendungen brauchen viel Speicher Stimmt ... auf'm PII mit 128 MB RAM 9
  • 10.
    Warum nicht Desktop-Anwendung? Clientseitige Installation Ggf. Admin-Rechte nötig Zeitaufwand 10
  • 11.
    Automatische Softwareverteilung Java Web Start Download Installation Update JRE und Applikation JNLP 11
  • 12.
    Automatische Softwareverteilung Java Web Start Demo http://java.sun.com/products/javawebstart/apps/swingset2.jnlp 12
  • 13.
    Automatische Softwareverteilung Eclipse RCP Client-Framework JFace / SWT Produkt = JRE + RCP + App Automatische Updates 13
  • 14.
    Request Driven vs.Event Driven Web Application Request/Response Grobgranulare UI-Updates Desktop Application Event-Modell Listener, Observer Feingranulare Änderungen Tastatursteuerung 14
  • 15.
    Web vs. Fat/RichClient Ergonomie technische User- Randbedingungen Erwartung Web /Fat/Rich Client 15
  • 16.
    Web vs. Fat/RichClient Web Clients Kunden-Anwendungen Einfache Präsentationslogik Aufwändige Gestaltung Fat/Rich Clients Sachbearbeiter-Anwendungen Komplexe GUIs Aufwändige Präsentationslogik Tastatursteuerung 16
  • 17.
    Web vs. Fat/RichClient Weitere Entscheidungsfaktoren Design oder Programmierung? Java + HTML + JavaScript + JSP + JSF oder nur Java? Debugging Security 17
  • 18.
    Web vs. Fat/RichClient Web App als Desktop Replacement? 18
  • 19.
    AJAX AsynchronousJavaScript and XML XMLHttpRequest Update von Teilen der Seite Client DOM der HTML-Seite HTML mit document JavaScript anchors applets forms images layers links button checkbox hidden password radio reset XMLHttpRequest 3. submit text textarea select Update des 1. Seiten-DOM options Request durch das XMLHttpRequest-Objekt 2. Server Daten als Verarbeiten der XML, HTML, Anfrage Plaintext 19
  • 20.
  • 21.
    AJAX JavaScriptkann abgeschaltet sein Security Asynchrone Verarbeitung kann problematisch sein 'AJAX-Verdrahtung' erhöht Komplexität 21
  • 22.
    GWT Google WebToolkit Java-to-JavaScript Compiler AJAX Auf Geschwindigkeit optimiert Nicht als Desktop-Replacement gedacht 22
  • 23.
    Fazit Usererwartungbestimmt Anwendungstyp Katalog, Shop, Information, ... Portal Web Client Leichtgewichtiger Zugriff Datenpflege Aufwändige Workflows Fat/Rich Client Installation akzeptabel 23
  • 24.
    Fazit FallsWeb-Anwendung: JSF bietet tragfähige, standardisierte Basis Ggf. AJAX JSF-Komponente Saubere Architektur! Falls Fat/Rich-Client Swing (ggf. ergänzt) + Java Web Start Alternativ Eclipse RCP Saubere Architektur! 24
  • 25.
    Und Sie? Wie sind Ihre Erfahrungen? Setzen Sie andere Frameworks ein? Web? Fat/Rich? Gemischt? 25
  • 26.