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.
- How easy is the integration with Java GUI’s and a DB? Does NetBeans make this process easy or should I use Eclipse instead? I’m looking for an experience similar to C# with Visual Studio.
- Is the whole “Big Decimal” rounding issue in Java a major issue or is it easy to work around? (sorry if I sound uneducated on the topic, but I really am not familiar with Java)
- Is there any real showstopper with Java that I may not be thinking of here or any real strong reason I should use C++ with QT over it?
- If I eventually wanted to port some or all of it to the web, does Java on the desktop make it easier for porting later?
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).