Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is using Java the proper language/platform for developing a GUI based accounting app?

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.

  1. 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.
  2. 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)
  3. 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?
  4. 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?
like image 948
Awaken Avatar asked Feb 05 '10 18:02

Awaken


2 Answers

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).

like image 77
Jonathan B Avatar answered Nov 11 '22 16:11

Jonathan B


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.

like image 35
extraneon Avatar answered Nov 11 '22 17:11

extraneon