Post a Comment
This actually looks pretty sweet. I have always thought the SWT native mapping approach was better then the JFC pure java approach. Sure, you have minor inconsistancies, but there are minor inconsistancies anyways between platforms in both bugs and performance optimization. The other problem is SWT itself, as soon as you start moving out of the scope of widgets for eclipse, you quickly find yourself in rather unsupported areas.
This fixes both the problems. It is a native library, so you will get native performance, but it gives a consistent look across platforms. It is also very complete for whatever you would want to use it for.
well I'm not sure how this is considered news when jambi has been around for over 6 months and was announced even earlier than that. It's nice to get another GUI toolkit for Java but I am not sure how many companies would actually consider paying for it. The truth about java is that both of the major GUI libraries are free while this is not at all the case with c++. Also most of the java developers write server applications that usually do not require a GUI. So paying for a GUI library does not fit very well with the general Java atmosphere. That said i believe Qt to be one of the most mature and feature rich libraries atm ... but I also hate wrapper classes
Anyways kudos to Trolltech for the effort.
Yeah it all depends on whether the classes are worth the money. As a C++ developer, Qt is easily worth the money. It is so far above any other C++ toolkit out there that I believe I get my money back in gained productivity very quickly.
In Java you already have classes for network/sql/xml/file/etc access in the standard class library so a lot of Qt is not strictly necessary.
Trolltech seems to realize this and charges significantly less for Jambi than the C++ version of Qt ($1780-$3560 vs $3300-$6600).
This is often missed by people who refer to Qt as "GUI Toolkit".
Qt is to C++ what the Java Classlibrary is to Java.
So obviously on Java, where it basically is just a "GUI Toolkit", there is a lot less need for it.
Interestingly, dispite only a small portion of Qt being of additional value for a Java developer, it is still considered for just its GUI portion.
http://www.eclipse.org/swt/
That to me is a some excellent work by the SWT Team.
True, I guess. However, it being a runtime means that any number of "small apps" can use the same libs and therefore the argument lessens. What needs to happen is bundling ala DotNet. Love it or hate it, it is a classic example of a large runtime that doesn't seem so large after you begin installing apps to use it.
EDIT:: woohoo!! OSNews doesn't detect MicroB on the N800 is a mobile browser and so we don't get stupid ass mobie pages with crippled login functionality!!! Stoked about that. Viva la revolucion!
Edited 2007-12-07 21:29
After downloading Jambi, having a look at the examples and their accompanying source code, I am unconvinced that it will go far.
1) The code looks similar to Swing. By that, I mean that it is almost as verbose. For example, something that takes 10 lines to accomplish in Swing is going to take you roughly the same to accomplish in Jambi. Perhaps my opinion will change if I coded in Jambi professionally, but the examples I've seen do not convince me of any worthwhile productivity gain over Swing.
2) GUI Fidelity. I know that many Java developers are whining at Apple right now for not releasing Java 6. But ... one thing they have done right with Java as far as I'm concerned is Swing. Swing looks and feels native on OS X. The only giveaway is how components are spaced (i.e. they do not respect the Apple HIG). Jambi and Swing look pretty similar on OS X. They are so similar that they even have the same spacing problem. I don't know the situation on other operating systems like Windows and Linux, but as far as OS X is concerned there is no reason to dump Swing because Jambi looks similar.
3) Custom components. A common criticism of Swing is how it lacks a wide variety of components. The most cited example, is the date picker. Ok, Jambi comes with a date picker (QCalenderWidget) and an analog dial (QDial). It provides some handy input widgets that take care of formatting of dates, but it's not like you can't do that with a few lines of code in a changeListener of a JTextEdit.
A visual guide to Swing Components: http://java.sun.com/docs/books/tutorial/ui/features/components.html
A visual guide to Jambi Widgets: http://doc.trolltech.com/4.3/gallery-macintosh.html
4) Price. Jambi costs a lot of money. From the pricing site:
License Pricing (per developer)
One Platform € 1420
Two Platforms € 2130
Three Platforms € 2840
You're paying close €2840 for some custom components that Swing doesn't have, similar visuals on OS X, perhaps slightly better visuals on Linux, can't comment about the look on Windows. In comparison, Swing is free and if the looks aren't that hot on Linux/Windows, you can always code in SWT which is free too. I need to point out too that the listed price is per developer. So if you have a team of developers the cost of licenses is going to sky rocket. Sorry for the use of hyperbole, maybe it doesn't sky rocket since that implies exponential growth, but the cost is still going to grow linearly unless Trolltech implements some unpublished volume license scheme.
There are other miscellaneous things that I shall briefly mention. Qt-Designer is pretty cool, but the Java alternatives are getting there. Matisse is shaping up to be a very good GUI designer. Jambi could perform better since Qt is renown for its speed. But then this has yet to be demonstrated for Jambi.
In conclusion, the price tag coupled with the lack of any large improvement over the existing free Java GUI toolkits will make Jambi a hard sell to existing Java developers. They can get away with such pricing in the C++ world because C++ lacks a viable cross platform GUI development library. It remains to be seen whether the same holds true in Java land.
Of course, someone could point out some super-major-killer-feature of Jambi that I've left out that makes it all worthwhile in the end ...
Edited 2007-12-07 08:39
Regarding GUI fidelity, Qt looks native both on OSX and windows (linux being of course a different topic since there is no such thing as a default toolkit)
Actually there are plenty of apps that are Qt based (for instance Opera, Skype) that many people don't even know are Qt apps.
Edited 2007-12-07 10:58
Actually there are plenty of apps that are Qt based (for instance Opera, Skype) that many people don't even know are Qt apps.
Actually, Opera looks very obviously un-Mac-like and Skype... Skype on OS X looks and behaves perfectly as if it were a native app, even including Core Image transitions! Of course... that is because for Mac OS X they rewrote the GUI code using Cocoa
edit: spelling
Edited 2007-12-07 13:54
Yes, menus, but more importantly, printing support. Printing support is hard to do, and they didn't want to reinvent the wheel. The rest of the UI is built on their custom in-house cross platform toolkit.
Actually, Qt is cheap and cheaper.
It is cheap because it boosts your development process. You are 3 or 4 times more productive using Qt than not using it.
And it is cheaper because those 1480 EUR/platform/developer are to buy, renewal is about 1/3 of that.
Did I say at my company we develop software using Qt and we do have commercial licenses?
Edited 2007-12-07 11:09
But you are using C++, right? The question is whether the productivity boosts that come with Qt-Jambi transfer to Java which already has GUI toolkits that appear to be similar.
I have no doubt that Qt is better than any C++ GUI toolkit (like wxWidgets, MFC or some other obscure toolkit). As I've said, just looking at the line count from the examples that come with Qt-Jambi, what jumps out at me is how similar the code looks to Swing.
But you are using C++, right? The question is whether the productivity boosts that come with Qt-Jambi transfer to Java which already has GUI toolkits that appear to be similar.
The reason why Trolltech thinks there will be a market for Jambi, particularly from the GUI point of view because Qt is a lot more than GUI libraries, is because Swing and SWT are crap - quite frankly.
Sun still haven't sorted out Swing over the last ten years, and the code and development required for it is like swallowing a large breeze block as well as not fitting into the desktop environment right - even with Gnome!
SWT took the direction of reimplementing itself natively on every platform - Win32, GTK and Mac. The problem with this can be seen very clearly when you view the bugs list in Eclipse and SWT that a handful of IBM developers are going red in the face trying to squash. Bugs that don't appear on Win32 but appear in GTK and Mac, and obscure bugs that mean that cross-platform apps aren't very cross-platform at all. They also don't integrate very well with the desktop either.
Certainly from a GUI point of view, Qt is light-years ahead of just about anything, but particularly in the Java world.
To be fair, any cross-platform toolkit is going to have some of these problems. You can't guarantee 100% that a certain OS at a certain patch level won't cause bugs in something as complex as a cross platform GUI toolkit.
That said, all my Qt apps are built for clients running Windows, and yet I do all my development on Linux. Then, when I'm ready to do a release, I reboot into windows, recompile (qmake, nmake release), and create the Windows version. So far I haven't had any bugs on Windows that weren't already identified on Linux.
> The reason why Trolltech thinks there will be a
> market for Jambi, particularly from the GUI point
> of view because Qt is a lot more than GUI libraries,
> is because Swing and SWT are crap - quite frankly.
Well, Swing is not crap. It does lack some advanced widgets. But, there are third party component libraries (both open source and commercial) that make up for that. And the commercial ones are significantly cheaper than Qt is.
> well as not fitting into the desktop environment
> right - even with Gnome!
You haven't seen a Java 6 app running on GNOME recently have you? I'd be willing to bet you can't tell the difference between a well written Swing app on GNOME and a native GTK app on GNOME. The last two updates to Java 6 have made the GNOME support extremely good in Java.
And as I said, the latest version of Java Swing looks and feels more native on Windows than the latest version of Qt does. It also looks and feels more native on GNOME than the latest version of Qt does, even with GNOME's attempts at skinning a Qt app to look like a GNOME app.
I don't know if you use OS X, but as a full time OS X user, swing applicantion can't lie. They never look nativ and you can always spot a swing application without knowing it is in java. It behave differently, generic windows tools are completly foreign (like the file chooser) and they are slower (when you which between tab to diffent menu.) If you want a swing application to look good on each platform, a lot of work is required.
Anyway, SWT writes on their site that it look native on every plateform. First thing you notice, ugly tabs that make application looks odd.
Productivity:
Gui designer in swing are well done (netbeans), swt are a total disaster. Qt designer is an incredible productity booster and is fun to use.
Their tools are so good, I think trolltech could give Q for free, reach a higher marker share. Then base their business on support and developpement tools. But anyway, they probably already think about it.
"They can get away with such pricing in the C++ world because C++ lacks a viable cross platform GUI development library."
Not true.
wxWidgets
and
Gtkmm
are both free, cross platform C++ GUI toolkits. Also, Gtkmm is essentially C++ wrapper classes on top of regular Gtk, which also can be used by itself in C++ applications.
So your point that Qt has been successful in the C++ world because a lack of cross platform C++ GUI toolkits holds less weight. IMO, Qt has been successful because of it's dual licensing (free for open source projects), the fact that KDE uses it, and it's overall excellence, which makes the propietary price tag easier to swallow (look at Google Earth, Skype, and Adobe Photoshop as great proprietary Qt programs).
Nonetheless, your point is well taken. I kind of doubt that Jambi will gain much traction, simply because Java devs already have Swing (which rapidly improving these days - after years of Sun neglect), and they have SWT (the Eclipse plstform is practically a de-facto standard for tools).
That said, I do think that Qt is a superior library to Swing or SWT. I just don't think that Qt Jambi will gain much of a user base. But it is nice for Java desktop developers to have another viable choice.
wxWidgets and gtkmm (and other obscure stuff like FLTK) are hardly in the same league as Qt. GTK on OS X and Windows has been the butt of many jokes. Having a C++ wrapper around isn't going to make it any better.
That leaves wxWidgets which is the most viable contender. I have tried to love wxWidgets. IMHO, it tries too hard to be MFC. Qt's signal and slots mechanism is better than wxWidgets MFC style message maps. They have introduced signals and slots in recent versions but this feels like the red headed stepchild that nobody likes. Most of the examples and documentation still deal with the message map.
Another thing that is lacking for wxWidgets is a decent GUI designer. Qt-Designer on the other hand is awesome sauce. I used it for Java(thanks to http://uic.sourceforge.net/) and I have mostly praise for it. wxWidgets lacks something like this.
The documentation for Qt, the design and the tools are better than the competition. This is what makes it so successful. The dual licensing scheme just makes things sweeter, allowing you to experiment with it for free while writing open source applications and paying for a license when going commercial. Being free (both libre and gratis) has not helped gtkmm or any of the other obscure C++ libraries. wxWidgets is more popular mainly because it provides a much more viable alternative to Qt than the others.
> Being free (both libre and gratis) has not helped
> gtkmm or any of the other obscure C++
> libraries. wxWidgets is more popular mainly because
> it provides a much more viable alternative to Qt
> than the others.
I wouldn't say that gtkmm is obscure, and it provides a very nice alternative to Qt. In fact, gtkmm does a better job of "feeling" C++ like than any others in my opinion.
Also being free has definitely helped Gtk in general. It's the main reason why all the commercial *nix vendors threw their support behind GNOME instead of KDE. None of them wanted to lock their commercial partners into paying huge licensing fees for Qt.
Yeah, but who cares about "feeling C++ like"? That's not an advantage, that's a detriment. I want productivity and intuitive APIs, not a C++ feel. GTKmm is not exactly a contender on any other platform than Linux anyway.
Absolutely, if it wasn't free, why would you want to use it at all?
A common myth, but there really isn't much evidence for that. SuSe supports both equally, Redhat does Gnome, Xandros does KDE (millions of installs on the EeePC alone), Linspire does KDE, and Ubuntu does Gnome (although they're not really commercial). And running KDE doesn't mean you're locked into Qt at all. You can write apps with any toolkit/language just fine.
So that explains the thriving market for commercial gtk-based applications, I guess.
RH, Novell and Sun each had strategic business reasons behind selecting gtk, it has nothing to do with license pricing. Particularly considering that these are businesses that rely on providing high-value in order to generate support revenue from customers for a product they could otherwise get for gratis, it's a little bit galling to suggest that they believe Qt isn't viable under what is basically the same model.
At the end of the day, businesses have no issue paying for tools if they can be shown to make them more efficient. Price is only a single factor in the value equation, and if the cases of commercial organizations, it is often one of the least important ones.
If Qt with support from Trolltech can make a developer more efficient and cut down code development time, the company will see near immediate ROI. The equation can change dramatically in Qt's favor when considering the cross-platform development capabilities, as well. That's how they'll make their decisions.
I will admit, though, that Gtk has an important role to play as a viable alternative to Qt, if only to offer choice.
I agree with everything you say. Qt is head and shoulders, as an overall GUI (and other) library, and tool set, above wxWidgets, Gtk/Gtkmm, or MFC, or anything else out there.
I think Qt is superior to Swing or SWT, as well. It looks better, it blends with the native environment better, it's faster (much faster in many cases), it's tools are better (although Swing's Matisse is pretty close to Qt Designer, I must say), and it's overall easier to develop with than either Swing or SWT.
Whether that's enough to get existing Java devs to use it in future desktop applications remains to be seen. Certainly, existing Qt/C++ programmers that want to use Java instead of C++ will want to use it.
Qt-Designer on the other hand is awesome sauce. I used it for Java(thanks to http://uic.sourceforge.net/) and I have mostly praise for it. wxWidgets lacks something like this.
Wow, I had no idea that a version of Qt Designer for Swing existed! Amazing!!
Of course, someone could point out some super-major-killer-feature of Jambi that I've left out that makes it all worthwhile in the end ...
Well, Designer is pretty freaking sweet. That one's pretty huge. It's also pretty awesome that you will (in the future) be able to make Java applications that blend in with KDE themes. So that may make it popular in the open-source world, at least.
I'm not proud of this app. I made it when I was learning SWT and have since (for kicks and grins) ported it to Swint, KDEJava (dead) and QtJambi. Following are shots of each in Linux and OSX (no KDEJava in OSX though). Just posted for informational purposes so one can compare. Perhaps Windows shots later.
Linux
Qt: http://img152.imageshack.us/my.php?image=jukeboxlinuxqtux8.png
KDEJava: http://img155.imageshack.us/my.php?image=jukeboxlinuxkdegl4.png
SWT: http://img220.imageshack.us/my.php?image=jukeboxlinuxswtzv3.png
Swing: http://img513.imageshack.us/my.php?image=jukeboxlinuxswingmr1.png
OSX
Qt: http://img443.imageshack.us/my.php?image=jukeboxosxqtpz5.tiff
Swing: http://img139.imageshack.us/my.php?image=jukeboxosxswingmi0.tiff
SWT: http://img413.imageshack.us/my.php?image=jukeboxosxswtuy0.tiff
Just FYI: the Linux SWT shot is not as nice as it could be since I am using the Qt/GTK theme which uses Qt to draw GTK apps (but isn't perfect). For Linux Swing there is the KDELAF I could have used but it seems abandoned and isn't really done.
Here's a slightly more recent project (a mini Konqueror of sorts, since I hate Finder). Unlike the last app, I didn't code the tree and list views myself, but used Qt's ListDirModel. Less work and more functional. These are posted just to show what jambi looks like on Linux and OSX. Again, not something I ever plan on releasing, but here's what the toolkit looks like
OSX: http://img139.imageshack.us/my.php?image=keeperosxbm1.tiff
Linux (Plastique): http://img513.imageshack.us/my.php?image=keeperlinuxcl8.png
Linux (Polyester): http://img443.imageshack.us/my.php?image=keeperlinux2sn8.png
So jambi is nicely cross platform, but one still has to deal with issues. One can use the same action for toolbars and menus, and they each get the same icon. Great on Windows/Linux but not so much on OSX, as OSX menu items don't usually have icons. Qt C++ has a property one can set to disable icons in menus for OSX but I haven't discovered a way to use it for jambi, so I end up with another set of actions created without icons to put in the menus.
Also, for OSX I have to do additional stuff to get a proxy menu (what a user gets from right clicking on the icon in the titlebar) but with jambi I can't get a right click in the titlebar to register so the proxy menu shows up on left click. That's probably my problem, but the point is Windows/Linux don't expect such a proxy menu in the first place
The Window menu is also added especially for OSX, and must be implemented onesself, though a premade version is available (in c++ I believe, but portable, and maybe only for paying customers rather than GPL edition users). Qt does take care of moving "about" from the help menu to the app menu, and "exit" from the file menu to the app menu when on OSX, which is nice.
Basically, a few of the things Qt does to make life on OSX easier don't work (or the info on how to get them to work is very hard to find) with QtJambi. But overall it's been fun to program with and has satisfactory results on the three major platforms. I also like using the signals/slots mechanism. It can be easier than firing and catching exceptions, or implementing observers and observables or whatever. Just another option.
Swing sucks in KDE. I will admit that. Their KDE support is awful unless you use a third party theme.
Load it up in GNOME though, and set the UIManager to use the system look and feel, and you won't be able to tell the difference between a native GNOME app and the Swing app (presuming you are using a relatively recent version of Java 6.)
You are more pathetic for giving a $hit about modding :-)
gotta be the most retarded comment I've ever read in osnews.
Highly unlikely, unless you started reading about five minutes ago.






