Successfully reported this slideshow.
Java GUI Toolkits – Swing vs. SWT vs. Jambi Heinrich Wendel, DLR Simulations- und Softwaretechnik 21. April 2009
<ul><li>Java ist langsam! </li></ul>
Java ist langsam? <ul><li>http://kano.net/javabench/data </li></ul>
Geschichte <ul><li>1996: Java 1.0 – Abstract Window Toolkit (AWT) (Sun) </li></ul><ul><li>1996: Qt 1.0 (Trolltech) </li></...
Funktionen moderner GUI Toolkits <ul><li>Events </li></ul><ul><li>Drag & Drop </li></ul><ul><li>Plattform Unabhängigkeit <...
A hell lot of widgets <ul><li>Browser, Button, Combobox, ToolBar, DateTime, ProgressBar, Slider, Spinner, Table, Tree, Tre...
Applications <ul><li>SWT/JFace </li></ul><ul><ul><li>Eclipse and everything around it </li></ul></ul><ul><ul><li>RSSOwl </...
AWT / Swing <ul><li>AWT </li></ul><ul><ul><li>Native implementation of few basic widgets </li></ul></ul><ul><li>Swing </li...
SWT – Overview <ul><li>Concept </li></ul><ul><ul><li>Uses native widgets => platform dependent parts </li></ul></ul><ul><u...
JFace <ul><li>Concept </li></ul><ul><ul><li>Based on SWT </li></ul></ul><ul><ul><li>MVC everywhere </li></ul></ul><ul><ul>...
Qt Jambi <ul><li>Ressource Management </li></ul><ul><li>Signal & Slots </li></ul><ul><li>Layout Management </li></ul><ul><...
Qt Jambi – Events slider.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { spinner.setVal...
Licenses <ul><li>AWT/Swing <= Java 6.0: Sun Java License </li></ul><ul><li>AWT/Swing >= Java 6.0: GPL </li></ul><ul><li>JF...
Ausblick <ul><li>JavaFX </li></ul><ul><ul><li>„ The better applets“ </li></ul></ul><ul><ul><li>Browser/Mobile/Desktop </li...
Fazit <ul><li>Swing </li></ul><ul><ul><li>Integriert in Java, gute Basis für Applikationen </li></ul></ul><ul><ul><li>„ Fü...
Fragen ?
Upcoming SlideShare
Loading in …5
×

Java GUI Toolkits - Swing vs. SWT vs. Jambi

11,489 views

Published on

TechTalk von Heinrich Wendel (DLR Köln-Porz, 21.04.2009)

Published in: Technology, Art & Photos
  • Be the first to comment

Java GUI Toolkits - Swing vs. SWT vs. Jambi

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

×