Trolltech has announced the final release of Qt Jambi version 4.3 (corresponding to Qt v4.3.0), the Java binding for Qt. The bindings are available under the same dual licensing deal as Qt. The webstart demonstration gives you a feel of what it can do.
Dot Categories:
Comments
Since I don't see the link to get the GPL'd version on that page anywhere, here is where you can get it:
ftp://ftp.trolltech.com/qtjambi/source
The Eclipse integration is still binary-only. That's pretty disappointing.
Also, I'd recommend against actually trying to build the source code, because there's several errors in it (apparently it was never tested with the actually-released Qt 4.3.0). I wanted to try to see if the Java code builds with the new GCJ in Fedora 7 which supports Java 1.5 features, but I never even got that far! The C++ code choked on:
* one pointer type issue with JNI, which may be due to GCJ's JNI headers, so let's ignore this one (-fpermissive "fixed" it)
* lots of pure virtual methods in the Qt Designer interfaces with no implementation anywhere to be seen in the Qt Jambi code, yet the code tried to instantiate the resulting abstract objects; no Java involved at all as far as I can see, so I think everyone who tries to build it will see this, even with Sun's Java
* an attempt to include a private Qt Designer header which is not installed; again, nothing to do with Java
and that was too much. I don't care much about Java anyway, so I don't really need this. But if Trolltech is trying to outreach to Java programmers, this is not the way, they'll just conclude Qt is crap. :-(
> "one pointer type issue with JNI, which may be due to GCJ's JNI headers, so let's ignore this one (-fpermissive "fixed" it)"
We mention in our FAW which virtual machines we have tested Qt Jambi against. We previously didn't do GCJ because of lacing 1.5 support, but we'll probably get around to that pretty soon. The current release of Jambi is tested against Apachy Harmony and Sun JDK.
> "lots of pure virtual methods in the Qt Designer interfaces with no implementation anywhere to be seen in the Qt Jambi code, yet the code tried to instantiate the resulting abstract objects;"
I compile this everyday without problems so this is a bit surprising to me. Could you be a bit more spesific?
> "an attempt to include a private Qt Designer header which is not installed; again, nothing to do with Java and that was too much. I don't care much about Java anyway, so I don't really need this. But if Trolltech is trying to outreach to Java programmers, this is not the way, they'll just conclude Qt is crap. :-("
The private headerfile is included in the package and should compile just fine. As for Java developers, the idea is that they'll use the prebuilt binaries. The source package is for cross language development, mixing Java and C++ and using the generator.
The missing pure virtuals are in the generated files in cpp/com_trolltech_tools_designer. But I now see the generator uses some JNI calls, so it may be those JNI calls are malfunctioning, which would be Fedora 7's GCJ's fault, not yours. I'm not sure though, so here's the list of stubs (for lack of an idea how those should actually be implemented) I had to add (to get as far as that private header):
In class QtJambiShell_JambiPropertySheet:
virtual int count() const {return 0;}
virtual int indexOf(const QString &name) const {return -1;}
virtual QString propertyName(int index) const {return QString();}
virtual QString propertyGroup(int index) const {return QString();}
virtual void setPropertyGroup(int index, const QString &group) {}
virtual bool hasReset(int index) const {return false;}
virtual bool reset(int index) {return false;}
virtual bool isVisible(int index) const {return false;}
virtual void setVisible(int index, bool b) {}
virtual bool isAttribute(int index) const {return false;}
virtual void setAttribute(int index, bool b) {}
virtual bool isChanged(int index) const {return false;}
virtual void setChanged(int index, bool changed) {}
In class QtJambiShell_JambiResourceBrowser:
virtual void setCurrentPath(const QString &filePath) {m_currentPath=filePath;}
virtual QString currentPath() const {return m_currentPath;}
private:
QString m_currentPath;
In class JambiMemberSheet:
virtual int count() const {return 0;}
virtual int indexOf(const QString &name) const {return -1;}
virtual QString memberName(int index) const {return QString();}
virtual QString memberGroup(int index) const {return QString();}
virtual void setMemberGroup(int index, const QString &group) {}
virtual bool isVisible(int index) const {return false;}
virtual void setVisible(int index, bool b) {}
virtual bool isSignal(int index) const {return false;}
virtual bool isSlot(int index) const {return false;}
virtual bool inheritedFromWidget(int index) const {return false;}
virtual QString declaredInClass(int index) const {return QString();}
virtual QString signature(int index) const {return QString();}
virtual QList parameterTypes(int index) const {return QList();}
virtual QList parameterNames(int index) const {return QList();}
I have no idea of where the real implementations of all these functions went if they were supposed to be there.
For the private header, what it's looking for is this one:
QtDesigner/private/qdesigner_utils_p.h
which is nowhere to be found in qtjambi-gpl-src-4.3.0_01.tar.gz.
The web start demonstration is really impressive!
Good work, Trolltech!
Looks like it does not work on solaris :(
What's impressive with a demo that does not even run on a current SUSE-10.2 with KDE 3.5.7 + 3.90.1 and Qt 4.3.0 + 3.3.8, neither with Firefox 2.0.0.4, nor with Konqueror 3.5.7 + 3.90.0 ??
What's impressive if Firefox qoes in an infinite loop opening up the same web page over and over in different windows?
What's impressive in neither seeing a good error message nor finding an even basic description on the Trolltech website what this web start thingie is supposed to do?
Blame Java ;-) My experience with Java and Webstart is that you can just pray that it works and it doesn't work much of the time. In this case it worked for me ...
Have you tried using a different browser? Sounds like Firefox has a strange bug in it.
Anyway, Java Web Start is not responsible for this. In fact, it has very little to do with what happens in your web browser at all. For more information on it, Wikipedia is your friend:
http://en.wikipedia.org/wiki/Java_Webstart
> Have you tried using a different browser?
> Sounds like Firefox has a strange bug in it.
I didn't have a problem with Firefox in Windows XP. Perhaps it's some Linux binary compatibility problem?
The Java Web Start starts in a separate process, so it should not have any effect on Firefox. However, I would expect either the XP and Linux versions of Firefox to contain some bugs which are not present in the other.
I also didn't understand which exact page on which it was failing. Tell us, and we'll see if we can fix it.
Works fine for me using Konqi 3.5.7/Sun Java 5/Kubuntu...
What are you using???
> "What's impressive in neither seeing a good error message nor finding an even basic description on the Trolltech website what this web start thingie is supposed to do?"
If Java Webstart actually starts, no matter how far it gets you should get the webstart logo plus and some sort of error, regardless of how it goes wrong. So it seems more like java is not properly functioning on your machine.
The webstart is a collection of all our demos and examples and should runs on all linux boxes we have tried it on. The only native dependency currently is Xinerama...
If you get any sensible error messages out of this, I'd be interested to hear about it.
> "Looks like it does not work on solaris :("
We didn't provide binaries for Solaris as it didn't get prioritized high enough. If there is high demand for Solaris binaries we'll add that in the future. The source packages are cross platform and should build on all platforms though...
Dear Sir,
We are trying to use qtjambi through web start with a jnlp file. It works the first time but for the second time you want to launch the application, it says there is an error as the cache key is olready in use.
Would you help us to fix it.
Thanks,
Paulin Bekambo.
Dear Sir,
We are trying to use qtjambi through web start with a jnlp file. It works the first time but for the second time you want to launch the application, it says there is an error as the cache key is olready in use.
Would you help us to fix it.
Thanks,
Paulin Bekambo.
For those who had problems getting it running (I had these with Fedora 7 for example) you can have a look at this howto: http://liquidat.wordpress.com/2007/06/11/howto-sun-java-web-start-on-fed...
It is Fedora related and specific but should give the more experienced users an idea how to handle problems - if there are problems at all.