Second Qt Jambi Technology Preview
After doing some last minutes repairs the night before, we successfully launched the second technology preview of Qt Jambi (Qt for Java) yesterday. We've fixed a few bugs in this one, added some flexibility to the Eclipse plugin and Qt Jambi in general, and tried to iron out some bumps in the API.
One of the big things on our schedule for this release was to simplify the deployment of Qt Jambi applications. We wanted to be able to distribute apps as single .jar files that could be launched directly, and we wanted to support deployment through Java Web Start. The challenge in the first case is loading native library files, obviously, as Java itself does not explicitly support extracting them from within the .jar files. We also needed for the system to be expandable, so that you would be able to use the same techniques for deploying applications that depend on your own native libraries, and we needed it to be cross platform, so none of the Java classes could have hard coded dependencies on system libraries. We've introduced such a system to Qt Jambi for this release, and Qt Jambi will now automagically go behind your back and extract native libraries from your class path.
Java Web Start is nicer for such deployment purposes, as it already provides a simple, cross platform way of bundling native libraries. Since the Web Start application relies on custom class loaders, however, we did have to add some logic to get the class path file engine working. By following the link on the Qt Jambi download page, you'll get to a demonstration of this, where the Qt Jambi Demo Launcher is provided as a web start application. The launcher should work on Linux or Windows, and it relies heavily on the class path file engine for extracting images and other resources, and dynamically detecting which examples and demos are available.
Here's a screenshot, if that makes any sense.
In the last technical preview, pure virtual functions in the C++ API were empty implementations in the Java API. This was something which sorely needed to be fixed, so that's what we did. In TP2, they're abstract functions like their mothers and fathers. There was actually a lot of work involved in getting the Qt Jambi generator to make abstract methods work in a general way. There's seems to be a general rule that mapping any C++ concept to its Java equivalent will introduce you to a webs within webs of exotic snags and obstacles and existential paradoxes. Consider, for instance, cases of abstract and internal return types in mapped functions, possible modifications on the access rights of the pure virtuals, and cross language polymorphism. Those are just some examples of cases that make this job interesting , and I'm actually confident we've found very good and clean solutions for anything we've hit so far.
The Eclipse integration also has a bunch of improvements in the new preview package. There was a bug in the previous one that prevented it from integrating completely with the folder hierarchy in Eclipse, and that has been fixed. Now it should respect your project's structure, optionally generate its files into a separate folder to keep things neat and tidy, and respect the exclusion and inclusion patterns set on the build path as well. We've also added a "New Form" wizard to make it possible for the integration to generate widgets of different types, such as main windows and dialogs. Note that the new Eclipse integration requires Qt Jambi TP2, however, and that you will have to delete the old plugin before installing the new one. See the installation docs for more on this.
That was just a run down of a few new things in TP2. We're still looking for as much feed back as possible on Qt Jambi, so don't hesitate to post any suggestion, question or report to our firstname.lastname@example.org mailing list. To subscribe, just send an e-mail to email@example.com and put the word 'subscribe' in the subject. We've already started work on the third preview, and there's a lot of good stuff ahead.
Subscribe to our newsletter
Try Qt 6.1 Now!
Download the latest release here: www.qt.io/download.
Qt 6 was created to be the productivity platform for the future, with next-gen 2D & 3D UX and limitless scalability.
Explore Qt World
Check our Qt demos and case studies in the virtual Qt World
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.
Näytä tämä julkaisu Instagramissa.
Want to build something for tomorrow, join #QtPeople today! We have loads of cool jobs you don’t want to miss! http://qt.io/careers #builtwithQt #software #developers #coding #framework #tool #tooling #C++ #QML #engineers #sales #tech #technology #UI #UX #CX #Qt #Qtdev #global #openpositions #careers #job
Henkilön Qt (@theqtcompany) jakama julkaisu