Mientras mas complejo es el universo de Java, mas se necesita de especialización. El principal problema cuando uno inicia un proyecto Java es el seleccionar frameworks, IDE, build tool y librerías que se van a utilizar.
JSF o Seam?
Spring o EJB3?
JPA o Hibernate?
Eclipse o Netbeans?
Glassfish o Jboss?
Ant o Maven?
Nos encontramos con estas preguntas y necesitamos las respuestas. No creo que exista una respuesta correcta, ya que siempre va a depender de varios factores (requerimientos del software a desarrollar, conocimiento previo del equipo de desarrollo, imposición de cierta plataforma, etc).
De todas maneras, las opciones que uno elija van a tener incidencia en el proceso de desarrollo.
A continuación voy a detallar la pila tecnológica que yo creo es la mas adecuada para un proyecto nuevo en el que se va a desarrollar una aplicación Java web empresarial.
- Capa de presentación: JSF 2.0 + Facelets + CDI 1.0 + PrimeFaces
- Capa de lógica de negocios: EJB 3.1
- Capa de persistencia: JPA 2.0
- Validaciones: Bean Validation 1.0
- Web Services: JAX-WS + JAX-RS
- Reportes: JasperReports
- Servidor de Aplicaciones: Glassfish V3
- IDE: Netbeans 6.8
- Build tool: Ant
La mayoría de estas tecnologías son estándares y forman parte de la plataforma Java EE 6.
Esta decisión es básicamente por dos motivos:
Al utilizar una pila tecnológica de un mismo vendor, uno no pierde el tiempo en integrar varias tecnologías. Es el vendor el que se encarga de que todo se integre de la mejor manera y que la experiencia del desarrollador sea lo mas placentera posible.
El uso de estándares maximiza las probabilidades de que el framework utilizado tenga una comunidad, vaya creciendo, mejorando y no se vuelva obsoleto. Además, nos da cierta garantía para migrar a otro vendor en el caso que necesitemos.
En los próximas entradas, voy a explicar el porque de cada tecnología, por ejemplo CDI Managed Beans y no JSF Managed Beans, etc.