Davis Peixoto
Davis Peixoto

Reputation: 5743

Deciding among with Java technologies should use - beginner

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.

Upvotes: 1

Views: 210

Answers (3)

zcourts
zcourts

Reputation: 5043

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

Upvotes: 1

Stephen C
Stephen C

Reputation: 718718

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

Upvotes: 2

duffymo
duffymo

Reputation: 308743

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.

Upvotes: 3

Related Questions