Changes Qt Jambi 4.4.0_01
Product:
QtJambi
Version:
4.4.0_01
Qt Jambi 4.4.0_01 is the first release of Qt 4.4 for Java. It
represents a milestone in the feature development and includes bug
fixes compared to previous releases.
For details about changes in Qt itself, see the Qt change logs:
http://trolltech.com/developer/notes/changes
This release of Qt Jambi WILL break compatibility for a very few
classes. This is primarily to enable the possibility of non-GUI-based
Qt Jambi applications and to fix some errors that were introduced in
Qt Jambi 4.3 before the user base is too large.
************************************************************************
Package Structure
************************************************************************
- Binary package no longer contains generator or generator
example. This is because only a package that is built from source
can properly make use of the generator. Providing the generator in
the binary package where it could in fact not be used made this
less clear.
- The binary package or a successfully built source package now
contains several .jar files in the root directory.
* qtjambi-4.4.0_01.jar; The platform independent classes
* qtjambi-$OS-$COMPILER-4.4.0_01.jar; The native libraries
* qtjambi-examples-4.4.0_01.jar; The examples and demos
* qtjambi-designer-4.4.0_01.jar; Classes used by Qt Designer
The classes jar and native library jar files are the only two files
needed to run Qt Jambi applications. The libraries in the bin and
lib subdirectories are there solely for running Qt Designer, Qt
Linguist and the other C++ tools.
************************************************************************
Qt Jambi Library
************************************************************************
- New Modules:
* com.trolltech.qt.webkit; The API for the WebKit browser.
* com.trolltech.qt.phonon; Multimedia API.
* com.trolltech.qt.xmlpatterns; XQuery and XML Patternist API.
* com.trolltech.extensions.signalhandler; A statically typechecked way
of doing signal / slot connections.
* com.trolltech.tools.ant; Some convenience ANT tasks for use with
Qt Jambi build systems.
* com.trolltech.qt.core; now contains Qt Concurrent.
* com.trolltech.qt.sql; now contains QJdbc; A JDBC bridge.
* com.trolltech.qt.internal; This package is internal, we mean
it.
- New deployment system. By default a complete jar file with native
libraries is provided both binary packages and in a built source
package. For more information, see the deployment documentation.
- Qt Jambi now fakes QMetaObjects of C++ QObjects, making it possible
to introspect, get and set the properties of, and call methods in
Java objects from C++ code using the regular QMetaObject system in
Qt.
- Allow recursive signal emissions.
- QPropertyManager has been removed. QObject's property functions
should be used instead.
- Fixed: Java Objects packed into QVariants in C++ would be given an
thread affinity, which led to potential VM crash. This affinity is
now removed.
- Fixed: Many Qt classes are tied to the GUI thread and may only be
deleted from the GUI thread. Many more classes are now specially
handled to avoid destruction outside of the GUI thread.
- Fixed: JVM 1.6 and newer from Sun(tm) have a bug in their JIT
compiling which will eventually cause crashes in Qt Jambi. We are
now generating code to work around this problem.
- Fixed: Potential memory leak in QListWidget::addItem().
- Fixed: Qt libraries could potentially be loaded from the wrong
location when plugins, SVG Icon Engine in particular, were
loaded. By explicitly loading the dependent libraries prior to
loading the plugins, this potential problem is avoided.
- Fixed: Potential memory leak and race condition in Qt Jambi's
internal JNI datastructure cache.
- Fixed: The memory management system has been redone to avoid
potential memory leaks.
- Fixed: A race condition would sometimes cause VM crashes when
deleting objects marked as "delete-in-main-thread" in the
typesystem. This includes QFont, QPixmap etc.
- Fixed: QCoreApplication.invokeAndWait() now invokes the Runnable
before returning, when called from the GUI thread.
- QReadWriteLock has been moved to QtCore, in accordance with its
actual location in the Qt C++ libraries.
- Deprecated: com.trolltech.qt.QtJambiInternal.
************************************************************************
Qt Jambi Generator
************************************************************************
- Improved error messages on wrong use and potential problems.
- Better support for namespaces.
- New Command-line option: --custom-widgets.
- The generator now defaults to current directory as output folder.
************************************************************************
Build System in source package
************************************************************************
- Qt Jambi uses now an ANT-based build system. There are two ant
build.xml files in the root directory, one for Qt Jambi and one
to illustrate the generator and deployment. See installation and
deployment guides for more details.
- All libraries now make use of the JAMBI/qtjambi/qtjambi_base.pri
qmake include file which serves also as a good starting point for
generator based projects.
- OpenGL, Phonon and WebKit are optional in the build process. If Qt
was not configured for any of these, they will be excluded from
Qt Jambi.
- The qmake .pro files now support both JAVADIR and JAVA_HOME as
location for the JDK.
************************************************************************
Examples and Demos
************************************************************************
- New Examples:
* Web Browser
* Media Player
* XML Query example
* Pad Navigator, showing Widgets in QGraphicsView
* Music Player
* Code Editor
* Custom Widget
- Generator Example: Changed to make use of the ANT tasks to create
deployable packages.
- Mac OS X binary package now comes with a Demos.app bundle for the
examples launcher.

