views:

348

answers:

10

Is Java a good choice for a program that:

  • keeps track of checking, savings, money market, credit cards, and does budgeting
  • Has a SQL database back-end
  • After testing by friends and family, feedback, and improvements, may be marketed for sale one day

...?

+8  A: 

This type of software can be done with many many programming languages, if you ask if Java is a good choice the answer might be yes, it only depends in how good are you (or your programming team) in Java

victor hugo
It also depends on other requirements, like "do you need a GUI" or "does it have to be cross-platform" or "what can you expect to be installed on the target machines".
Joey
+2  A: 

Absolutely! One of Java's strengths is the range of what the APIs cover.

Rev316
+2  A: 

As someone else will most definitely point out, the obvious selling point of this program being written in Java is platform independence. That said, writing it in a language you're not comfortable with will lead to a lot of frustration.

Sean O'Hollaren
+1  A: 

This sounds like a hobby project in which case I would say that a good choice is any language you already know or a language you would like to learn.

Java is definitely a capable fit for the type of program you described although so are several other languages.

Andrew Hanson
+2  A: 

I've got a solution for you: Quicken.

Knowing your competition might be more important in this case than language choice if you're serious about "marketing". An important question to ask will be: "What will my program do better than Quicken? How will it separate itself in the marketplace?"

UPDATE: "Is Java a good choice for a program that...has a SQL database back-end". I'm sorry, but anyone who doesn't know Java well enough to answer this question without coming to SO isn't knowledgeable enough to write an app that will upstage the personal finance market. I don't say it to be mean, but it's simply a fact. If you know another language better, I'd recommend that you choose that instead of Java.

duffymo
That did not deserve a downvote. + 1 to compensate.
Yishai
I am aware of Quicken, as I have never lived under a rock. Why must you imply that I don't know the features and abilities of personal finance products already for sale? Why assume that I haven't already asked why I think my idea is different, maybe even better to some people?
ChrisC
Thank you, Yishai. I prefer it when people have the courage to identify themselves when they vote something down and present a counter argument. Sadly, that's a quality that this other person lacks.
duffymo
@ChrisC - I can't tell either way whether you're aware of Quicken, or that you've thought of something that truly is different from all other entries I can only infer based on what I'm reading. Knowing nothing else about you, I'd say that anyone who had to come here and ask such a question about Java (e.g., SQL back end) probably doesn't know enough about the language to attempt anything more than a toy version of a financial manager. Sorry.
duffymo
+2  A: 

I would say Java is a good choice if you plan to be serious about being cross platform. There are other ways to be cross platform, of course, but investors (since this was a commercial product) will respect Java as something that can deliver cross platform.

That being said, odds are you are not going to do cross platform, and will develop exclusively for windows, and spend all of your GUI time fighting to make Java look like the latest and greatest GUI components on Windows and getting complaints when they don't.

At which point just do it in .NET.

(BTW, the only way I see an application like this having commercial viability is if it was actually cross platform, because Intuit sucks up all the oxygen in the Windows space, but treats Mac as second class and doesn't bother with Linux, but the GUI demands would be a huge curve for Java, not to mention the garbage collection pauses that users will complain about. You might want to look into a different cross platform GUI toolkit and program in whatever language it requires).

Yishai
I am fine with not being cross platform, actually. I was thinking Java because I had heard that it has good gui choices and works well with SQL databases. These (http://javabyexample.wisdomplug.com/java-concepts/37-core-java/65-20-free-look-and-feel-libraries-for-java-swings.html) especially Substance looked good. Is Java harder, if I'm not trying to be cross-platform, than necessary. Remeber I really want a great GUI. Thanks.
ChrisC
I would say that "I really want a great GUI" does not make java an obvious choice. You can make decent GUIs in Java, its just hard - a skill on its own really - and something which is kind of second class in the java world. The need for a great GUI shouldn't exclude Java completely, but you need a better reason to choose it, because its cross-platform nature makes it get in the way in many things when you only want a single platform.
Yishai
BTW, java has great SQL interaction, but here again it tries to be vendor independant. In your case, .NET together with SQL express is going to give you something just as strong - it is just Windows only.
Yishai
+1  A: 

If you're writing it for personal (or family) use, Java's probably a fine choice. If you're looking to sell it someday, I would advise staying clear of Java. The advantage of Java is the Java VM, which allows for platform independence, but this is also the major disadvantage of Java. Nothing written in Java is truly native, so it has integration (although progress is being made) and performance issues with any OS. If you're willing to learn it, C[++] would be the ideal choice if paired with a cross-platform GUI library like Wx, GTK+ or Qt because they can be recompiled as native applications for all three major operating systems with only minor code changes. I believe that Qt has some database API, and I would assume that GTK+ (and perhaps even Wx) does as well. Keep in mind licensing for these libraries if you decide to go commercial.

So a summary: Java is good for a non-commercial application, but if you want to sell it you may want to consider something else.

My bias: Open-source fanatic.

Jeff Cooper
I'd agree, and add that using a native language (C++) solves a full range of tech support issues of the category 'I clicked the jar, and now its asking me to select a program to view it'.
CoderTao
@Cooper: What about Yahoo! Games? I thought that it was Java based.
Selinap
@Selinap I'm not sure about Yahoo! games. The fact that they are (at least partially) browser-based presents Java's ability to run from a browser (as an "applet"). This is a major benefit of using Java, but it isn't applicable for this application.
Jeff Cooper
A: 

Java could be useful. Like others have pointed out, many languages can accomplish those requirements.

If your application is destined for the web, JSP (Java Server Pages) could be a good choice (if you want to stick with Java)

A: 

How about doing it in C#/Sliverlight with a C#/Mono/Linux backend coupled to MySQL or Drizzle? Very easy to deploy (the end user just has to go to a URL), multi platform, and scalable.

FlappySocks
A: 

From your questions it seems you are looking for some nice GUI running on Windows, which should be easy to install and run. For that kind of application I would personally go with C#

Gregory Mostizky