August 23, 2006

The trolls are at it again...

Trolltech, a company based in Oslo Norway with additional locations in the United States, China and Germany, never stops innovating. To some it is known as the backbone of the GUI in Linux. To others, it is just a convenient way to provide a cross-platform solution. A powerful and easy to use Window Manager, often called a Desktop Environment, KDE, which ships with most current Linux distributions, is written using Trolltech’s Qt framework. KDE also has plenty of other Qt based applications that are a part of the package. The GUI elements and windows are friendly to the eye and provide high levels of customization. For those who are not familiar with Qt (or cute as the Trolltech engineers refer to it), it is a rich framework that allows for cross-platform development using an extensive C++ based API. Underneath Qt is written in native, platform specific code to allow for such prosperous functionality. Callbacks are a term of the past with Qt's original signal/slot mechanism. Up until now, Qt was the popular beast in Trolltech’s long line of products, which also includes QTopia. However, last month Trolltech released Qt Jambi Development Preview. Qt Jambi is a Qt based framework, which allows a developer to use Qt’s power in Java applications. Developers will now be able to use the Qt API in their Java applications and will seamlessly integrate C++ and Java languages in other projects. There are of course a number of issues that Trolltech had to deal with when working on this product. How do you handle Qt value types vs object types? How do you handle references, or pointers to references? What about memory management? Since Java doesn’t have multiple inheritance, how does Qt Jambi handle that? And what about protected members of a class? Qt Jambi takes care of all these issues and Trolltech has done a fantastic job in employing proper mappings. All the details are described in the Qt Jambi white paper. This product, as it evolves, should provide a great level of convenience for a developer such as myself. If you’ve never heard of Qt, or never wanted to use C++ with Java via JNI because of its abstract nature, I’d strongly recommend checking out this developer preview.