1

I am not new to software developing, but in the last years I was almost completely involved with web applications development, most likely to PHP with MySQL/PostgreSQL.

Now I am changing focus. I would like to start programming for desktop applications, with Java. The decision about language was motivated by the following reasons: it is a mature language, has space into the market, it is multiplatform, full of resources, and has some very nice IDEs (I am using netbeans 6.9).

I am not new to OOP concepts (or most of them at least), but Java has a huge gamma of solutions (technologies, frameworks and so on), and I am getting lost with that. Can't decide what is the most appropriate solution to adopt and learn from.

That said, let's get to the point. I will describe the software targets, some things I has adopted so far, and expect someone to give me some trail to follow filling the messy points.

My application is a small business application. Usual stuff about products, sales, cash management. It needs to run into a small office, with some computers (not a fully standalone desktop application). Not every user can do everything. Some would have privileges to access financial stuff, others only sell, others only fulfill products, and so on.

Per above highlevel definition, we know that it will operate like a client-server application. One server will be installed into just one machine, all others will just have the client. I am using HSQL as backend for persistence.

Would like to use Swing to build the UI (to keep theming based on the OS). Possibilities for the client include sending email (not directly, but through some already-set email client [Thunderbird, Outlook]) and printing (to any available printer in the network).

For this I am using Desktop API.

Alright, finally we got were I am loosing the grip: which framework / technology do you recommend to make development quick (pre-built forms based on the available tables), and as modular as possible?

As I said, different users would have different privileges, but instead of just checking and disabling, I would like to keep modules separated. In different packs, or something like that.

EJB? BlueJ? JavaBeans? OSGi? Swing Application Framework? I'm kinda lost with those. Any help will be appreciated.

4
  • Keep it simple! Learn the basics first. Commented Aug 14, 2010 at 20:32
  • I don't understand. What are you exactly looking for? Framework for what? From you description it is quite clear to me that you will be doing Swing based desktop application, but questions you mentioned at the bottom are confusing. Commented Aug 14, 2010 at 20:38
  • Thorbjorn, sorry but I consider that I have learn the basics already. I know how to create and use classes, packages, interfaces... use networking APIs, SQL, keep statefullness, threading... The question was about the most appropriate tool to use in the project I mentioned. Commented Aug 15, 2010 at 3:32
  • Xorty, sorry for the confusion. I think the comment above make it more clear. Commented Aug 15, 2010 at 3:33

3 Answers 3

3

If you're lost, keep it simple.

For the kind of desktop apps you describe, you'll need Swing and JDBC. If you switch to web, substitute JSPs written using only JSTL and servlets. You'll have to know HTML and CSS to write JSPs. You can embellish those with JavaScript as needed.

You'll go a long way with just those.

The others you mentioned are just noise until you become more comfortable:

  1. EJBs are for enterprise scale apps. You get to leave a lot of complex stuff like threading, object pooling and lifecycle, etc. to an app server and concentrate on expressing your business logic in distributed, transactional components called Enterprise Java Beans. Not necessary to start.
  2. BlueJ is a beginners IDE designed to shield folks from the complexities of Java. I wouldn't recommend it.
  3. OSGi - modular deployments for web apps. Not necessary to start.
  4. Swing App Framework? I'm not familiar with it - I don't write Swing. If you mean Spring, I think it's an excellent framework, but not necessary to start.
Sign up to request clarification or add additional context in comments.

3 Comments

Swing Application Framework is actually quite nice thing and de facto standart way how to write Swing applications (it is wonderfully integrated in NetBeans IDE so you can just simply use template)
Thank you, Xorty, I'll give it a look.
Thx duffymo, this is very close to the asnwer I was looking for.
2

This is a bit off-topic, but I think it should be said anyway.

My application is a small business application. Usual stuff about products, sales, cash management. It needs to run into a small office, with some computers (not a fully standalone desktop application). Not every user can do everything. Some would have privileges to access financial stuff, others only sell, others only fulfill products, and so on.

You are attempting something very ambitious here. There are countless existing applications for doing this kind of thing for small business, some of them household names. What makes you think that you can can do better? What makes you think you can compete?

The fact that you are new to Java makes this doubly ambitious.

My advice would be:

  • If you have dreams of making lots of money out of this, forget it. You are >10 years too late.

  • If you are doing this for some client, your company or yourself to use, they / you would probably be better off using an off-the-shelf business application.

  • If you are doing this for "the public good", you labors would be more fruitful if you joined some existing open source business application project.

  • If you are just doing this "for fun" ... go for it. (This doesn't strike me as a "fun" project though ...)

7 Comments

+1. our company has an awful time-tracking app in ASP + Microsoft SQL Server that they spent a lot of time writing. better to just use real software instead of writing your own, when you can.
Stephen, my intentions should not make any difference to the answer. I am not any teenager dreaming about dominate the world, I have no interest at this point to join any open source project... well I'll not discuss this any further. My question were merely technical. Keep the answers at the same level.
@Dave - I hope you've got deep pockets then. Good luck ... you'll need it.
Stephen, this is not a matter about wealth or luck. I know you answered with some "good intentions", but made wrong suppositions. As I said, your answer was not bad... if I was a 16 years old boy attempting to rule out the world. It was a matter of point of view after all.
@Dave - even if you had 20+ years IT and business experience, and $1M+ in capital, I >>still<< think you'd need a lot of luck to make a profit on a general small-business application.
|
1

Starting off with java, swing desktop app is normal... I must say though that the components included in the default, i never liked, i thought they were too ugly. https://substance.dev.java.net/ Is a look and feel lib for java. So do your app, think it through though and make sure you have some sort of design in mind. Its easier and often faster if you have an idea of where you're going visually than if you just start coding and hope you reach somewhere you like.

Get paper and pencil out,scribble little notes and drawings of your GUI. You don't necessarily need frameworks and the lot, if your app will need to store data then look at the JDBC driver to connect to mysql, or have a look at embedded databases such as HSQLDB...

3 Comments

Hi robinsonc494. I am not an artist. Just need some functional stuff, and delegate this responsability to keep consistence with OS native look and feel is kinda follow the safe path. Thx for the tips about the change in the creation/design process flow. About JDBC and embedded HSQLDB I already knew, just not decided yet to make it embedded or wrap a server with the pack.
cool, and trust me you don't have to be an artist. Just a rough layout to give u an idea of where you wanna get to... take my word for it, if someone considered me to be an artist, i'd be convinced they're blind...
nice one rob. Will take your words.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.