Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am deciding between Qt (in C++) and JavaFX for GUI development for an application with a complex back-end (the back-end will be written in C++). If I use JavaFX for the GUI, I will be using JNI to exchange data between the GUI and the C++ back-end.

Except for one major issue, I would prefer to use Qt (C++) for the GUI, rather than JavaFX. The issue is that it is possible that JavaFX has a much larger developer community. On a related note, it will presumably be easier to transfer development of the application to other developers in the future if the GUI is built in JavaFX.

(The quality of both of these GUI frameworks seems, on the whole, comparable; see, for example, JavaFX 2.0 and Qt for cross-platform application, Cross-platform desktop development, and Is using Java the proper language/platform for developing a GUI based accounting app?. If I'm mistaken, and in fact if the quality of one of these frameworks is clearly significantly higher than the other, that would become a major factor.)

My impression from "the blogosphere", as well as from the fact that Qt is being actively maintained, is that Qt has a large following - though presumably the Java Swing community is larger (which will probably also be the case for the JavaFX community after some time has passed, since JavaFX is superseding Swing).

My question is: How large of a user base (developer community) does Qt have, in comparison to JavaFX?

share|improve this question
    
I don't think it makes difference beyond "big enough to be maintained and tested". You should mainly consider which approach will get the job done with less effort. And for that it's more important how well you know the libraries, the languages and how much overhead will be writing the JNI glue which is tedious to write and pain in the arse to debug. –  Jan Hudec Jan 4 '13 at 8:26
add comment

3 Answers 3

Just based on StackOverflow itself, here are the results:

870 questions for JavaFX

17,426 for Qt

Based on my experience Qt has a significantly larger community right now.

JavaFX

I prefer JavaFX myself as it is a declarative syntax like WPF. However, there has not been a lot of traction for it as a UI platform. It wasn't until recently that you could run it on Linux or Mac so it locked people into the Windows platform with a special JavaFX add-on to the JVM. It is my personal hope that JavaFX becomes successful. Java badly needs a UI that can be built separate from any code.

Qt

Qt appears to be a more traditional approach to UI development. This means it can be understand by a wider audience. It has been around much longer than JavaFX and supports all of the major platforms.

Since your team is already experienced in C++, I would suggest you use Qt.

share|improve this answer
1  
Note - JavaFX is new, and it is superseding Swing (or at least - Oracle has only fairly recently announced that Swing will no longer be developed, with all of its future core Java SE UI toolkit development being JavaFX, not Swing). I noted in my question that I was interested in including the Swing community in the JavaFX community, since this bears on the presumed size of the JavaFX community in the future. Note that SO has about 21,000 questions tagged "Swing". –  Dan Nissenbaum Jan 3 '13 at 13:39
    
Also note that Qt 5 also has a declarative syntax - QML - that is heavily advertised as a new feature. –  Dan Nissenbaum Jan 3 '13 at 13:40
    
@DanNissenbaum: so you answered the question by yourself - both frameworks have a userbase of comparable size. You could even ask Google by comparing number of results for "java swing" and "Qt C++" and get a similar result. –  Doc Brown Jan 3 '13 at 13:45
    
@DocBrown I do not sufficiently trust metrics consisting of the number of SO questions, or Google results, though this is important evidence. This is an important enough decision that I would like some harder metrics (though I am not sure if this is possible), or an assessment from someone experienced with both frameworks. –  Dan Nissenbaum Jan 3 '13 at 13:52
add comment

It's hard to get metric on the size of the developer community, in part because of the question of who and how do you count. (If I did Qt 5 years ago, but do .NET now, am I part of the Qt developer community still?)

That said, I'll offer a different consideration: Qt has been around since the early '90s. (Work began on it in 1991.) Qt has and has had active developers for 20+ years now. There is an experienced developer community out there for it.

JavaFX is fairly new (2008?). You are going to have a hard time finding people with 5 years real experience with it (at least now, in early 2013).

I'll also echo Andrew's comment: "Since your team is already experienced in C++, I would suggest you use Qt."

share|improve this answer
    
I think a comparison with the Swing community is in order, since JavaFX is officially replacing Swing as the UI toolkit included by Oracle in JavaSE. Another note: I have the informal sense that I have encountered many passing references to Swing over the years, whereas I only heard of Qt for the first time recently when investigating cross-platform UI toolkits. Somehow, that experience leads me to believe that the Google and SO statistics, as well as the fact that Qt has been around for 20+ years, might be misleading in some way. –  Dan Nissenbaum Jan 3 '13 at 14:33
1  
For most of it's early life, Qt was pretty much a *nix thing. Its only in the past 7-8 years that it has seen more growth on other platforms. The SO statistics on Qt are going to be misleading, but probably on the low side to the number of developers. Having been around longer than SO, there are several other places that many people reference for Qt answers: Qt Forum, Qt Centre, mailing list, etc. –  jwernerny Jan 3 '13 at 14:48
    
Also, my sense is that there are significantly more commercial applications written in Java Swing than Qt, but I cannot find an even somewhat comprehensive assessment of this. –  Dan Nissenbaum Jan 3 '13 at 14:53
    
@DanNissenbaum (Rant On) Swing is horrendous. I would not wish having to use Swing to develop desktop applications on my worst enemy. It is incredibly easy to create poor applications, it is missing many controls and the third-party commercial control set for Swing is very limited. Very simple things like Drag and Drop do not work consistently cross-platform. It is a memory hog. I cringe to think that more commercial products are written using Swing than Qt. The Java community knows this and knows they had to do something about the whole mess, hence JavaFX. –  Andrew Finnell Jan 3 '13 at 17:39
add comment

The answer is that both communities are "plenty big enough" to get help online or find maintainers or whatever you'll need. Past a certain point, whether one is somewhat bigger than the other has very little relevance. However, you have a back end in C++ to consider. Assuming you want to hire developers that can work on both the front end and back end, I think you'll find developers who know both C++ and Qt to be much more common than those who know C++ and JavaFX.

You're defending JavaFX more vigorously than your stated reasons suggest. Are you sure the community is the real reason you're interested?

share|improve this answer
    
I have a strong intuition that prefers Qt, so I am being perhaps excessively careful to "play the devil's advocate" in my thinking. I am the one (and only) developer on this project, by the way. –  Dan Nissenbaum Jan 3 '13 at 19:43
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.