Java GUI Toolkits – Swing vs. SWT vs. Jambi Heinrich Wendel, DLR Simulations- und Softwaretechnik 21. April 2009
Java ist langsam!
Java ist langsam? http://kano.net/javabench/data
Geschichte 1996: Java 1.0 – Abstract Window Toolkit (AWT) (Sun) 1996: Qt 1.0 (Trolltech) 1998: Java 1.2 – Swing (Sun) 2000: Java 1.3 (Sun) 2001: Eclipse 1.0 and Standard Widget Toolkit (SWT) 1.0 (IBM) 2004: Java 5.0 (Sun) 2005: Eclipse 3.0 and SWT 3.0 (IBM) 2006: Java 6.0 (Sun) 2007: Qt Jambi 4.3 (Trolltech) 2009: Qt Jambi 4.5, last official release (Nokia) 2010: Java 7.0 (Oracle)?
Funktionen moderner GUI Toolkits Events Drag & Drop Plattform Unabhängigkeit Internationalisierung Layouts Accessibility 2D Drawing API Threading IDE Integration (GUI Builder) Styling with CSS 3D API Databindings Application Framework Widgets, Widgets, Widgets
A hell lot of widgets Browser, Button, Combobox, ToolBar, DateTime, ProgressBar, Slider, Spinner, Table, Tree, TreeTable, Text, Tabs, Menu, Label, PreferencesPage …
Applications SWT/JFace Eclipse and everything around it RSSOwl TuxGuitar … Swing Netbeans IntelliJ JEdit JXMLPad JFreeChart PPP … Qt Jambi? http://dist.trolltech.com/developer/download/webstart/index.html
AWT / Swing AWT Native implementation of few basic widgets Swing Emulation of more widgets Features java.applet java.awt java.awt.dnd java.awt.event java.awt.font java.awt.geom java.awt.image java.awt.print javax.swing javax.swing.border javax.swing.filechooser javax.swing.table javax.swing.text javax.swing.tree javax.swing.undo
SWT – Overview Concept Uses native widgets => platform dependent parts Emulation if native not available Can be used without Eclipse! Features Drag‘n‘Drop Events Layout Graphics Print
JFace Concept Based on SWT MVC everywhere A lot of additional widgets Features Actions Wizards Resources Text Viewers Operation Preferences Window Data bindings
Qt Jambi Ressource Management Signal & Slots Layout Management Style Sheets Qt Designer / Linguist Webkit Multimedia (Phonon) XML JDBC Qt Concurrent AWT/SWT Bridges Qt Jambi Generator http://www.qtsoftware.com/files/pdf/qt-jambi-4.4-whitepaper
Qt Jambi – Events slider.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { spinner.setValue(slider.getValue()); } }); spinner.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { slider.setValue((Integer)spinner.getValue()); } });  slider.valueChanged.connect(spinBox, "setValue(int)"); spinBox.valueChanged.connect(slider, "setValue(int)");
Licenses AWT/Swing <= Java 6.0: Sun Java License AWT/Swing >= Java 6.0: GPL JFace/SWT: Eclipse Public License (EPL) Qt Jambi <= 4.4: GPL Qt Jambi >= 4.4: LGPL
Ausblick JavaFX „ The better applets“ Browser/Mobile/Desktop eSWT / eRCP Embedded SWT Embedded Rich Client Platform RWT / RAP Rich Ajax Platform SWT/Eclipse in a Browser Google Web Toolkit (GWT)
Fazit Swing Integriert in Java, gute Basis für Applikationen „ Fühlt“ sich nicht „echt“ an Viele zusätzliche Bibliotheken und Widgets (swing-lab, JGoodies) SWT/JFace Native widgets und performance Extrem viele standard Widgets, profitiert von Eclipse Qt Cool Stuff
Fragen ?

Java GUI Toolkits - Swing vs. SWT vs. Jambi

  • 1.
    Java GUI Toolkits– Swing vs. SWT vs. Jambi Heinrich Wendel, DLR Simulations- und Softwaretechnik 21. April 2009
  • 2.
  • 3.
    Java ist langsam?http://kano.net/javabench/data
  • 4.
    Geschichte 1996: Java1.0 – Abstract Window Toolkit (AWT) (Sun) 1996: Qt 1.0 (Trolltech) 1998: Java 1.2 – Swing (Sun) 2000: Java 1.3 (Sun) 2001: Eclipse 1.0 and Standard Widget Toolkit (SWT) 1.0 (IBM) 2004: Java 5.0 (Sun) 2005: Eclipse 3.0 and SWT 3.0 (IBM) 2006: Java 6.0 (Sun) 2007: Qt Jambi 4.3 (Trolltech) 2009: Qt Jambi 4.5, last official release (Nokia) 2010: Java 7.0 (Oracle)?
  • 5.
    Funktionen moderner GUIToolkits Events Drag & Drop Plattform Unabhängigkeit Internationalisierung Layouts Accessibility 2D Drawing API Threading IDE Integration (GUI Builder) Styling with CSS 3D API Databindings Application Framework Widgets, Widgets, Widgets
  • 6.
    A hell lotof widgets Browser, Button, Combobox, ToolBar, DateTime, ProgressBar, Slider, Spinner, Table, Tree, TreeTable, Text, Tabs, Menu, Label, PreferencesPage …
  • 7.
    Applications SWT/JFace Eclipseand everything around it RSSOwl TuxGuitar … Swing Netbeans IntelliJ JEdit JXMLPad JFreeChart PPP … Qt Jambi? http://dist.trolltech.com/developer/download/webstart/index.html
  • 8.
    AWT / SwingAWT Native implementation of few basic widgets Swing Emulation of more widgets Features java.applet java.awt java.awt.dnd java.awt.event java.awt.font java.awt.geom java.awt.image java.awt.print javax.swing javax.swing.border javax.swing.filechooser javax.swing.table javax.swing.text javax.swing.tree javax.swing.undo
  • 9.
    SWT – OverviewConcept Uses native widgets => platform dependent parts Emulation if native not available Can be used without Eclipse! Features Drag‘n‘Drop Events Layout Graphics Print
  • 10.
    JFace Concept Basedon SWT MVC everywhere A lot of additional widgets Features Actions Wizards Resources Text Viewers Operation Preferences Window Data bindings
  • 11.
    Qt Jambi RessourceManagement Signal & Slots Layout Management Style Sheets Qt Designer / Linguist Webkit Multimedia (Phonon) XML JDBC Qt Concurrent AWT/SWT Bridges Qt Jambi Generator http://www.qtsoftware.com/files/pdf/qt-jambi-4.4-whitepaper
  • 12.
    Qt Jambi –Events slider.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { spinner.setValue(slider.getValue()); } }); spinner.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { slider.setValue((Integer)spinner.getValue()); } }); slider.valueChanged.connect(spinBox, &quot;setValue(int)&quot;); spinBox.valueChanged.connect(slider, &quot;setValue(int)&quot;);
  • 13.
    Licenses AWT/Swing <=Java 6.0: Sun Java License AWT/Swing >= Java 6.0: GPL JFace/SWT: Eclipse Public License (EPL) Qt Jambi <= 4.4: GPL Qt Jambi >= 4.4: LGPL
  • 14.
    Ausblick JavaFX „The better applets“ Browser/Mobile/Desktop eSWT / eRCP Embedded SWT Embedded Rich Client Platform RWT / RAP Rich Ajax Platform SWT/Eclipse in a Browser Google Web Toolkit (GWT)
  • 15.
    Fazit Swing Integriertin Java, gute Basis für Applikationen „ Fühlt“ sich nicht „echt“ an Viele zusätzliche Bibliotheken und Widgets (swing-lab, JGoodies) SWT/JFace Native widgets und performance Extrem viele standard Widgets, profitiert von Eclipse Qt Cool Stuff
  • 16.