QtJambi Java bindings for the powerful Qt framework Qt Powerful - - PowerPoint PPT Presentation

qtjambi
SMART_READER_LITE
LIVE PREVIEW

QtJambi Java bindings for the powerful Qt framework Qt Powerful - - PowerPoint PPT Presentation

QtJambi Java bindings for the powerful Qt framework Qt Powerful framework for C++ GUI, XML, Database, IO, Network, Threads... Crossplatfrom including embedded systems Double license - GPL & commertial Bindings for Java, Python,Perl, PHP


slide-1
SLIDE 1

QtJambi

Java bindings for the powerful Qt framework

slide-2
SLIDE 2

Qt

Powerful framework for C++ GUI, XML, Database, IO, Network, Threads... Crossplatfrom including embedded systems Double license - GPL & commertial Bindings for Java, Python,Perl, PHP ... QtScript - build extensible application using EcmaScript and much more... But don't we have all these features in java already?

slide-3
SLIDE 3

GUI - the main reason to use QtJambi

Native look and feel on all platforms Widgets (= GUI components): buttons, select boxes, tables... Subtype QWidget to make your own component easy painting with QPainter (lines, circles, texts) anti-aliasing matrix transformations alpha channel embed other widgets hardware acceleration with OpenGL UI editor (standalone or as Eclipse plugin)

slide-4
SLIDE 4

Signals and slots

public class MyGUI { private QPushButton button; public MyGUI() { button = new QPushButton("Go!"); button.clicked .connect(this,"doSomething()"); } public void doSomething() { System.out.println("hello world"); } }

slide-5
SLIDE 5

Signals and slots

Not the Java-way: the clicked signal is a public field slot doSomething() referenced as a string doSomething() can even be private refactoring problematic But: fewer LOC passing of arguments possible safe alternative possible (much longer though)

slide-6
SLIDE 6

"On a side note... Qt has been using strings for signal / slot connections for over a decade and in practice this has proven to not be a major

  • hurdle. The reason for this is that connections

are typically made during the init phase of

  • bjects and therefore always checked and fixed

at an early stage."

  • -QtJambi FAQ
slide-7
SLIDE 7

Other cool feaures

Easy WebKit integration Native libraries - simple deployment as jar Deployment as Java WebStart app possible Easy internationalization Phonon integration - crossplatform multimedia playback Drag&drop Crossplatform system tray Style sheets

slide-8
SLIDE 8

The downside

Sometimes not "the Java way" Overlapping functionality with standard Java classes QThread QFile ... Difficult debugging because of native libraries Documentation - C++ code snippets in examples Everything starts with Q Stability (in early versions)

slide-9
SLIDE 9

So is it worth it?

slide-10
SLIDE 10

Yes!

(given enough time)