| After using .NET for a while, I felt that the Java platform has made a series of better choices regarding modularization and the support of web programming (API or something else). JavaEE 6 can be whatever you want it to be (flexible): - JSF -> similar to ASP.NET WebForms programming paradigm - Servlet/JSP -> a more simpler/lower-level MVC - Async a'la Node.JS via Servlet 3.0 Async feature - JAX-RS -> RESTful (Atom, XML, JSON, and more) - JAX-WS -> WebService (1.1, 1.2, whichever) - JPA 2.0 -> ORM (regardless whether you want ORM or go back to JDBC) And in case if you need something similar to Rails/ASP.NET MVC, Spring MVC 3.x is just another library on top of Servlet/JSP stack. The best part is that almost all of them (except JPA 2.0 and Servlet 3.0 Async) are just a thin facade to communicate with client-side, whatever that'll be so you can re-use your business logic regardless (except for Servlet 3.0 Async, of course you have to make sure everything else is Async as well). EJB 3.x is less popular these days unless you need a specialized needs such as having to support Stateful or a Transaction that spans to a series of persistent and message queue actions. But the tools are there, separately and contained, if you ever need it. It looks like Microsoft is ramping up a little bit and following the Java EE 6 model. |