views:

195

answers:

10

We are starting a new Java Web project and would like some advice on the 'state of the art' on (free) tools/technologies.

Our current shopping list contains:

  • Java 5
  • JBoss
  • Spring
  • Junit
  • Selenium (automated functional test)
  • Ant
  • Cruise Control (CI)

How does it look like?

Also, what is the tool of choice for adding some AJAX bits?

A: 

Hibernate, Struts, Maven?

jQuery or ExtJS (commercial and GPL licenses) for AJAX

Ray
+2  A: 

I would have to say GWT is a must have if you are developing a "web 2.0" interface. I am in the middle of new project taking in the full java ee stack and GWT has been a very welcome addition.

gjrwebber
+1 for GWT(Google Web Toolkit)
Firstthumb
+6  A: 

I'd recommend you swing your search around.

Start by defining the problem, then looking for the solution.

Picking tools first is just defining the solution and then looking for the problem?

Will
Good advice. My partners are a C++ shop while I've been working exclusively with BEA for the last 2 years. As for the App, at least on it's first incarnation, it could be done with barebones Tomcat and handcrafted JS. What I needed was to know what is working for other developers and have a quick look on then so I can at least point out some existing solution when my partners (remember, C++ shop) start to code up some framework from scratch.
Cleber Goncalves
A: 

That depends if you mean start-of-the-art JavaEE (i.e. EJB3, JPA, Servlets, JSF) or state-of-the-art 3rd-party (in which case, take your pick - Spring 3, Tapestry, Struts2, Seam), I'm not getting into that particular flame war).

skaffman
+3  A: 

I would recommend Java 6 (rather than Java 5). For slick web applications you should check out GWT

Adamski
+1 for Java 6, less for GWT
basszero
Tried to get Java 6 (Only) but apparently SUN have embraced Microsoft's philosophy of bundling... Could only find a download including Glassfish.
Cleber Goncalves
+3  A: 

Look at JAX-RS, AKA JSR-311. This is a REST-ful web-services framework. Can also be used as an annotations-based MVC framework. See also Jersey, the reference implementation.

For dependency injection (DI) consider Guice. It has a Java-based strongly-typed DSL for configuring bindings.

Ben Lings
+1 The concept of a REST based backend is attractive - very flexible. SOFEA/SOUI is how I'll be doing my next project.
Damo
+1  A: 

For AJAX work, check out DWR, which allows you to expose POJOs as Javascript objects pretty seamlessly.

If you're doing anything date-related, use Joda.

But initially I think you need to define the problem you're trying to solve, and then choose your toolsets appropriately (possibly from this thread).

Brian Agnew
DWR seems pretty cool, I'll look at it closely, thanks!
Cleber Goncalves
+4  A: 

<polemic>

I call this Buzzword Driven Design (unfortunately BDD was already used).

</polemic>

On the server side take a look a new EJB 3.0 and JSF. Seam is a very nice integration between EJB and JSF. I also like very much JAX-RS, Restful Web Services.

For UI, jQuery is a must for AJAX.

As built tool, apache maven or ant + ivy.

Hudson lately is the continous integration server, it is very easy to setup and use.

Finally Glassfish V3, a OSGI-based application server (like SpringSource dm Server), is a must in this list (in my experience is faster than JBoss).

So if you like Spring toolchain, go for SpringSource dm Server, alternatively go for JBoss + seam.

dfa
But what is going to happen to Glassfish with Oracle now owning it and BEA? Long term maybe risky?
Damo
Hudson is lovely, I'd recommend it over Cruise Control
matt b
+2  A: 

For the CI server, I would recommend Hudson over Cruise Control. It has a much nicer experience overall, from installation to usage through customization.

Louis Jacomet
A: 

GWT is my favorite for Web 2.0 development and you can also use GXT components with GWT. This is the demo site for GXT and it is very successful at this job.

Seam is suitable for enterprise applications but for Web 2.0 development it could be painful to implement.

Firstthumb