Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

I would just want to ask what Java frameworks are worth learning, specially when it comes to web applications, but other frameworks are welcome too.

Could you please state:

  • The learning curve
  • The availability of resources
  • The performance of that framework
  • Would you recommend it or not

I want to study frameworks on my free time. If it's not too much a bother thanks to those that will answer!

If it's too vast:

How about for web applications? Should I learn Spring or Struts 2? iBatis or Hibernate? Stuff like that

Still if it's vast:

What frameworks would you recommend out there? Really. Anything. I want to learn and I'm used as a JEE guy now so if it's related with web app then I would take that as a bonus.

share|improve this question

closed as off topic by haylem, Anna Lear Aug 17 '11 at 3:47

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here. If this question can be reworded to fit the rules in the help center, please edit the question.

Too vast and subjective question I think. –  Chiron Aug 17 '11 at 0:47
Looks like a question for SO. Would answer if it moves there :) –  haylem Aug 17 '11 at 0:47
Sir/Ma'am haylem but I asked it first from SO then they moved it here... –  Kindling For The Master Aug 17 '11 at 0:49
Still, too subjective. –  Chiron Aug 17 '11 at 0:54
I'd say learn Spring + Hibernate then switch to Grails if at all possible. –  Kaleb Brasee Aug 17 '11 at 3:11

3 Answers 3

up vote 3 down vote accepted

I will focus on web frameworks, ok?

I will list here only what I've used.

  1. Pure JEE (I'm using now JSP2 + Servlets3) - [ Head first book ]
  2. Struts2 - [ getting started | struts2 in action ]
  3. Wicket - [ SO question with tutorials ]
  4. Spring MVC - getting started
  5. Spring Roo - [ getting started ]
  6. Play Framework - [ getting started ]

Ok, first of all. I would recommend you learning the number 1, that means, pure JSP + Servlet... Once you get your way with it, let's say, implementing a toy project. Go to number 2 + 3 + 4. Try to build your toy project with them and play with them a little. Choose the one that you feel the most comfortable with, that means that they all play "the same" role here, choose one that makes you "desire" coding with.

After that, and after you struggled a little bit with the one you chose. Take a look at number 5 and 6. Depending on what you want to deliver, they may fit really well your purpose, let's say, deploying a web app that must be developed in a weekend.

Let's answer your questions in a scale of 0 to 10. 0 - like hell, 10 - heaven! Maybe I'm not the most recommended person to grade them, but I will try =)

(The learning curve|The availability of resources|The performance of that framework|Would you recommend it or not)

  1. Pure JEE: (4,9,9,7)
  2. Struts2: (7,6,5,8)
  3. Wicket: (8,5,6,9)
  4. Spring MVC: (6,6,7,9)
  5. Spring Roo: (7,6,7,8)
  6. Play Framework: (8,5,4,9)

So, what should you learn? Learn a little bit of each (that way you will know what is out there) and focus on the one that moves you.

Learn JPA and Hibernate. Hands down.

share|improve this answer
Oh shucks. We we're trained in iBatis but were told Hibernate is used by the majority of users. Wow, great answer! I am very much intrigued with the Play Framework and will try it out now. I will also try Struts 2 again because I enjoyed using it and I used it for my project back then. Thanks for the answer again! :D –  Kindling For The Master Aug 17 '11 at 1:57
Where do you get the Play Framework low performance from? Play is built on Netty - an high performance event-driven server, and deliver very high performance, mostly far better than traditional thread-based servers. –  Jonas Aug 17 '11 at 4:50
It's just how I felt when I used it. If one puts it into perspective, maybe one will feel it to be slower than the other frameworks that I've suggested. As I said, maybe the grades are biased. Could you elaborate it more and provide some sources for us to read? Tks! –  wleao Aug 17 '11 at 12:23

<Opinion personal=True>

I would recommend Spring MVC.

Its widely used so its the framework you are most likely to encounter on a project. It follows most of design the patterns used by most of the other frameworks so that leaning Spring will give you a basis for understanding the other frameworks. Its just plain nicer than the other frameworks, it designed from that start as a "complete" framework by a team that had a deep understanding of J2EE and its shortcomings, and its well implemented as a complete package.

Some of the other frameworks "just grew" from a single purpose tool such as a templating utility. Others are an attempt at a RAD environment and are too far removed from the underlying J2EE to be useful as a learning exercise.

share|improve this answer
With regards to Spring MVC should I learn AOP or should I be fine with just using its MVC implementation plus DI injections? –  Kindling For The Master Aug 17 '11 at 1:56
Purely on the basis that its what you are most likely to encounter in the real world, and, its a generic J2EE framework pattern, I would concentrate on MVC. AOP is great but its very Specific to Spring. –  James Anderson Aug 17 '11 at 2:07

First you have to learn Java and the basic core Java API of course.

From there, I'll cover the most basic: straight up pure JEE web development. eg. Building a simple CRUD app with Servlets, JSP, and JDBC using MySQL.

Learning curve - a few weeks of spare time effort (eg. Evenings after work). Maybe as little as a few days if you're doing it fulltime and intensively. Working through this book is highly recommended - http://www.murach.com/books/jsp2/. After this, you'll know the basics of building simple CRUD apps in JEE, and will know your way around. Note that this is nowhere near being a master, just knowing your way around and building the simplest one trick pony toy shopfront apps.

Resources - The book mentioned above is good. There are also a lot of online resources, but the quality of those varies. The online tutorials from Oracle are fine too. Some people swear by them, but others find them too dry.

Performance and would I recommend it - Somewhat of a moot point these days since "pure" JEE isn't used much anymore. But it still holds its own for a lot of simple CRUD cases.

Don't know how relevant all this is to what you were asking, but this is essentially the first pass of learning you need to make when getting into Java/JEE. Diving straight into more advanced topics would skip over these building blocks too much, in my honest opinion.

Note: I'm somewhat biased as I'm a core Java guy (who did mostly Swing work in the past) who is currently trying to transition into the JEE space. :)

share|improve this answer
Good answer kind sir, yeah as I'm progressing with JEE after I learn a certain topic I try to see if there is an implementation of it in a framework somewhere and convert it there. I'm currently learning security roles, I am familiar with retrieving data from database to servlets and to jsps. I want to augment my learning with frameworks. Will check out that book you cited, (once I have the money) :) One concern though: it is said that simple JEE security won't hold against anything serious from hackers. I would want to avoid that. –  Kindling For The Master Aug 17 '11 at 1:17
I do not like the Murach books. Lots of examples, almost no explanation. You may as well read the online documentation. –  kevin cline Aug 17 '11 at 1:17
"Apress Pro JSP 2, 4th Edition" is a good book. –  Chiron Aug 17 '11 at 1:23
Thanks for the suggestions! Will check them all out. Anything for learning. :) –  Kindling For The Master Aug 17 '11 at 1:55

Not the answer you're looking for? Browse other questions tagged or ask your own question.