Take the 2-minute tour ×

I currently know Java SE and I want to learn something more 'enterprise'.

I would like something more distributed (app server, server programming, web, content management system ...) but any suggestion is ok.

There are many frameworks which I've heard: spring, hibernate, persistence, ejb, jsp, servlet, jsf, jboss, glassfish, ant etc etc etc etc. I'm very confused where to start.

So the question is: Can somebody explain to me what actually there frameworks are; and which one should I start with ?

share|improve this question
Have a look at stackoverflow.com/questions/1960280/… –  Pascal Thivent May 9 '10 at 21:48
And here: stackoverflow.com/questions/1958808/… The Coreservlets.com tutorials are excellent. I'd suggest to follow the point in Pascal's answer: go for Java EE 6 and leave for this bit the 3rd party frameworks for what they are. –  BalusC May 9 '10 at 22:07
add comment

closed as not constructive by BalusC, Radu Murzea, Mario, Stephen Connolly, Peter DeWeese Feb 24 '13 at 23:27


6 Answers

up vote 7 down vote accepted

I understand not knowing where to start. The answer is ANYWHERE. Just start. Don't worry about learning the best framework (as there usually isn't for any particular situation), but I would recommend some of the following technologies:

  • Spring (it is a huge framework that covers many things and almost every company I know of doing Java work is using it in some fashion).
  • JDBC (mostly just knowing how to make straight sql calls as there is unfortunately too much legacy code around that doesn't use an ORM tool and it is handy to understand it)
  • Hibernate
  • Unit testing and Mocking
  • Ant/Maven

The list can go on, but the bottom line is don't get too caught up in the framework. Pick something and build a site with it.

share|improve this answer
add comment

I recommend you to create a small enterprise application. CRUD or something. From my experience you should learn:

  1. Maven - great tool to create projects, manage dependencies and compilation lifecycle.
  2. JPA (Hibernate, OpenJPA) - ORM, easy use of databases.
  3. EJB - enterprise java beans (logic)
  4. Managed beans (part of Java EE) - controllers
  5. JSF - views
  6. PrimeFaces - some useful components for JSF.

Knowing those technologies is sufficient at the beginning.

share|improve this answer
add comment

This isn't quite the answer you were asking for, but I would find/create some project, probably a small project, to love, and make it happen. It's how I've learned every bit of coding skill I have already!

share|improve this answer
add comment

You cannot learn everything. Start with something like and struts and go from there.

share|improve this answer
add comment

Have you ever used a database ? If not i would start with that : learning sql using jdbc (with spring jdbc for example).

Then learn what a database transaction is. This is a very important concept (see spring transaction management).

Then i would continue learning by looking at an orm (object relational mapping) framework like hibernate. But at that point, that should be quite easy if you know well sql / jdbc / transaction management.

At the same time you experiment on the back end frameworks, you can learn front end frameworks, like spring mvc for the server side and jquery or prototype for the client side (javascript).

Check something like appFuse, which will give you an application skeleton you can enhance.

share|improve this answer
add comment

I would check out (in order):

  1. servlets. Whichever frameworks I've had to learn or deal with with clients, servlets are always somewhere in their system
  2. JDBC. Conencting to databases is key to most frameworks.
  3. Spring. You can start with the configuration and IoC, and carry on to pick up a huge range of techniques (e.g. the JDBC wrapping, ORMs, AOP etc.). SPring will lead you to a huge number of additional tools and frameworks, and give you a very easy means of implementing them.

I probably wouldn't worry with EJB. I see very little usage amongst clients.

share|improve this answer
add comment
