I know this is partially subjective, but hopefully with enough specifics I can get a good answer.
I am looking to develop an accounting app targeted at a specific market segment (think Quickbooks, but tweaked). Most of the app will be editable tables that are linked with DB data and some basic reporting and graphic functionality.
It must be cross-platform (OS X and Windows).
It will interface with a local DB. (SQLite or Derby or whatever)
Speed is not a "huge" issue. It needs to be reasonably responsive (I'm not familiar with Java speed in comparison to C/C++).
I narrowed it down really to between C++ with QT and Java. I only know a very little amount of Java, but work with C++ regularly. However, Java so far appears to the best overall solution and the amount of books/documentation is enormous which is a plus.
First thing I should say is "there is no right answer here".
Java can do exactly what you want. The GUI toolkit, after years of reworking, is very advanced. There are also lots of tools, frameworks, and extensions you can use to make the GUI look very advanced.
Java also has a great DB connection framework. With Object Relational Mapping (ORM) tools (Hibernate and others) it is pretty easy to get data out of a DB, put it in Objects, manipulate it, and put it back in the database. The ORM tools also make it easy to connect data objects directly to the GUI, and use the rules in those objects to protect the data from corruption.
The cross-platform support will help you a lot. The only big sticking point is having a Java runtime on the machine for the files. There are ways around that (the best being have an installer put it there).
There obviously is not one solution, but there are pro's and cons to both solutions, and there even is a third solution: Java with Qt.
First off, my experience with C++ and Qt is already some years old, so might not be that accurate, and my interest in java GUI development ended one or two years ago when I saw the tools for development. I usually work in Java, but not with Swing.
That said, the main difference between Java and C++ seems to be deployment. Java is always dependent on the java environment installed, and C++ is a bit more self-contained. I would give a slight preference to C++ in that respect if you can manage the deployment on two platforms.
As for GUI development, Qt tools were very good and have only gotten better. The framework also matches the GUI process very closely, and is a natural fit for that kind of work. Swing seems to be a bit more low level, and required a fair amount of boilerplate code. And I know of no really good development tools myself though I heard good things of mantisse.
If you think Java is the way to go for deployment or back-end logic, but the GUI tools for Qt are just too good to ignore, check the stackoverflow question about Java Swing or Java Qt. It's worth a read.
In your particular case I'd go with C++/Qt as you have experience with C++, and it's not all that trivial to correctly build a Java Swing application.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With