Foro sobre Java EE > Empezando con JEE - ¿Me podéis aconsejar?
Qué es lo normal para ajuntar la capa de vista y la de negocio? Usar JAX-WS?
Para JavaEE puedes escribir EJB SessionBeans con interfaz remota. Esto permite que puedas invocar los métodos de negocio remotamente (técnicamente "remoto" implica que estén en diferente máquina virtual opcionalmente comunicados por red). Es relativamente fácil de implementar. Los web services (JAX-WS) también son buena alternativa. Con el estándar JavaEE6 es trivial implementarlos y consumirlos. La potencial desventaja de los web-services (todos los webservices, no solamente los de Java) es el overhead que implica serializar un POJO a XML para enviarlo (como petición o como respuesta). Nosotros hicimos una aplicación cuyo backend era un web service de este tipo corriendo en Glassfish, que intercambiaba objetos muy complejos con otros elementos distribuídos por todas las intalaciones de red (se tomaban lecturas de 80 variables de consumo energético para una planta armadora de vehículos). La verdad el desempeño del webservice siempre fue satisfactorio. Por otro lado la ventaja del webservice es que es tecnológicamente neutral, me refiero a que el cliente que lo consume puede estar escrito en otros lenguajes de programación (en el caso del ejemplo que te menciono, los clientes del servicio eran programas desarrollados en .NET).
Que uso para crear la capa de negocio, JEE6+JPA, o mejor uso Spring?
Si vas a usar Spring podrías prescindir de JavaEE (¿Cual era el slogan de Spring? ¿"J2EE done right"?). A partir de JavaEE5 y ahora en JavaEE6 cuentas con muchos recursos, y ya no necesitas apoyarte en otros frameworks como Spring. JPA 2.0 está bastante mejorado, solamente haciendo de lado el esperpento ese de los Criteria Query's (los de Hibernate me gustan mas). La ventaja del framework JavaEE son las facilidades para manejar ciertos escenarios, y me refiero a las transacciones distribuídas. Algo común en ambientes "administrativos" es tener que tomar datos de un Sistema y una base de datos X (ERP) para tomarlos para tu sistema con base de datos Y. JavaEE te maneja este escenario perfectamente, si algo sale mal en cualquier parte, da el rollback a las transacciones en ambos sistemas de bases de datos y todos tan amigos como siempre.
Para la capa web (será sencillita), servlets o mejor algún otro framework?
Usar puros Servlets para la presentación es posible, pero hay otras herramientas que te harán mas fácil el trabajo. Dentro del mismo framework JavaEE está JavaServer Faces 2.0. Hay varias librerías de componentes para JSF 2.0, como PrimeFaces, ICEFaces y OpenFaces, todas ellas open source. Yo utilizo actualmente PrimeFaces. De cualquier forma de los Servlets no te vas a escapar, y te conviene aprenderlos porque hay casos específicos en donde aún contando con JSF son la mejor herramienta para el problema.
![Registered Commenter Registered Commenter](/universal/images/transparent.png)
Te recomiendo leer algo de "las bases" (acá está el tutorial de Java EE 6): http://www.oracle.com/technetwork/java/javaee/documentation/index.html
Y luego ir a este sitio que te va a ayudar a empezar a desarrollar rápidamente: http://www.jboss.org/jdf/
![Unregistered Commenter Unregistered Commenter](/universal/images/transparent.png)
Hola,
He estado mucho tiempo desconectado de Java, y me interesa volver a aprenderlo (nunca se sabe las vueltas que da la vida).
Por este motivo, he decidido crear un "mega" sistema de gestión para mi tienda. No tengo prisa en empezarlo ni en terminarlo, después de todo lo único que haré es automatizar tareas que ahora hago manualmente (registro de pedidos de clientes, cálculo de impuestos, resumenes de ventas, unificar TPV y facturación, etc).
En mi mente ya tengo el sistema más o menos organizado, se trataría de un sistema en 3 capas:
- Base de datos MySQL
- Reglas de negocio y similar en un GlassFish
- Clientes Swing o web: depende de que parte del sistema en Swing (el TPV, por ejemplo), y otras partes en web (entrada de pedidos para clientes)
Esta parte ya la tengo más o menos clara (a nivel teórico, no a nivel de implementación), pero me falta saber como juntarlo todo. Qué es lo normal para ajuntar la capa de vista y la de negocio? Usar JAX-WS? Que uso para crear la capa de negocio, JEE6+JPA, o mejor uso Spring? Para la capa web (será sencillita), servlets o mejor algún otro framework?
Recordar que si bien todo esto servirá para informatizar más mi pequeño negocio, realmente estoy haciendo todo esto para aprender, como "toy-project"... No me preocupa que sea un clarísimo caso de "over-engineering" (que lo es! seguramente con una base de datos Access pasaría), pero lo que quiero es aprender en un proyecto auténtico...
Muchas gracias por vuestras recomendaciones!