I am starting to explore Java technologies and before jumping into my choices (Hibernate & Struts), thought I will put a question as to what my fellow developers recommend. What would be your preferred Java (ideally) technologies to write a fairly extensive website such as 43things or craigslist? I did do a search and found the following is the closest and only thread I found Topic: What technologies should I use for new web app?
If this is the wrong forum, I do not mind it being moved to another more appropriate one.
Well, that other thread is a start. JSF is debatable for the web framework, and Struts is slowly starting to be on its way out. If you can use Java 5, have a look at something like Stripes.
Whether ot not an Apache web server in front of Tomcat is actually necessary depends on your circumstances. Tomcat has made big performance strides in static file serving (which is what Apache httpd was used for in such a setup).
Ping & DNS - updated with new look and Ping home screen widget
1. Hibernate is great (the only exception being applications that rely on *insanely* complex stored prcedures).
2. Business logic layer: i'd consider Spring. It intorduces great design ideas, simple declarative security, and more. Even when I don't use it, I find myself following its cool design principals. (For complex, replicated applications you might consider EJB, which can also replace Hibernaete. Unfortunately EJB is on a cross roads right now: the old EJB 2 is strongly criticized for bad cumbersome design. The new EJB 3 is cleaner and more modern, but it has much less literature and less production experience).
3. Controller - one of the 3: JSF , or Struts, or the newer 'Struts Action 2'. The choice is a matter of personal taste... I'd consider 3 factors:
a) Design & complexity: JSF is 'Component Based' - enhances component reusability, at the cost of being more complex to learn & trace (I've also heard some complaints about JSF performance, but I havent' checked them closely). Struts (and Struts Action 2) is 'Action Based'. Meaning a simpler flow, more straight-forward to lean and trace. You can still have good design and reusability, but not a fancy as those of JSF.
b) IDE support & Wizards: All 3 frameworks require you to implement some interfaces, *and* create some XML files. Now, JSF and the *old* Struts both have a fair share of IDE support, especially wizards to generate code skeletons, XML files, and graphical viewers to show application flow. The new Struts Action 2 doesn't have that much IDE support, you'd probably need to manually type the code + xml files ( It's quite simple, personally I don't mind it, but if you like wizards and graphical views, it's a problem).
c) Job interviews: I've seem demand for both JSF and *old* struts. You might try to follow the addes in your country, see which is more in demand, or is one quickly gaining on the other (even if you're not looking for a job, it's good to know your market value). The new Struts Action 2 is less likely to come up in interviews, interviewer isn't always guaranteed to have heard of it...
Good luck [ March 13, 2007: Message edited by: Sol Mam-Orn ]
Joined: Mar 12, 2007
Ulf, Sol, Thanks for the reply.
Sol, Special thanks for breaking up the different aspects.