with example con java seam crud spring-roo

java - example - spring boot rest api angular



CRUD: ¿A Roo o no a Roo? (3)

Sólo forgelo -> http://forge.jboss.org

Si eres un principiante, tendrás una aplicación web, con persistencia, pruebas y seguridad. Y más.

Si conoce Java, tendrá lo mismo que el anterior más una increíble fuente de conocimiento sobre cómo hacer buenas aplicaciones: el código fuente y los recursos generados por Forge. Puede aprender mucho sobre Java EE (CDI, Validación, JSF), Maven, JPA, tiles, EJB ... Y muchos más.

He estado usando Groovy on Rails para aplicaciones CRUD. Estoy comenzando un nuevo proyecto en el que ya no podemos usar Grails (tenemos una lista de jarras permitidas y Grails no está allí).

Estoy considerando usar Spring ROO o JBoss Seam. ¿Cómo se comparan? ¿Cuáles son sus principales fortalezas y debilidades?


Solo Roo.

Si eres un principiante, tendrás una aplicación web, con persistencia, pruebas y seguridad. Y más.

Si conoce Java, tendrá lo mismo que el anterior más una increíble fuente de conocimiento sobre cómo hacer buenas aplicaciones: el código fuente y los recursos generados por Roo. Puedes aprender mucho sobre Spring (core, security, MVC), maven, JPA, tiles, messagign ... Y muchos más.


Tenga en cuenta que Spring Roo y JBoss Seam no son directamente comparables, ya que JBoss Seam en sí mismo no proporciona la generación de aplicaciones CRUD mencionada en la pregunta. Sin embargo, JBoss Seam viene con la herramienta Seam-Gen, que proporciona esta funcionalidad. Por lo tanto, probablemente sería mejor ver JBoss Seam como comparable al marco Spring y comparar la herramienta Seam-gen con Spring Roo. Sé que esto tampoco es una comparación completa, pero eso está fuera de este topice, supongo. Lo que hay que indicar es que en la respuesta a continuación, cuando me refiero a JBoss Seam, en realidad me estoy refiriendo a JBoss Seam en combinación con la herramienta Seam-Gen.

Tanto Spring Roo como JBoss Seam (con Seam-gen) hacen que la creación de aplicaciones CRUD sea realmente sencilla, como también lo son otras soluciones completas de andamios / pila de Java como Play Framework y RIFE . Si comparas los dos (Spring ROO y JBoss Seam con seam-gen) en qué tan rápido tienes una nueva aplicación CRUD básica en funcionamiento, basada en una base de datos existente o agregando entidades y definiendo los campos y las relaciones, supongo que no existe esa gran diferencia. En mi experiencia, puedes hacerlo en Spring Roo solo un poco (un poco) más rápido, pero con ambos puedes subir la aplicación en menos de una hora (en el caso de una base de datos existente) o en menos de (la mitad) por día (en caso de que manualmente deba agregar todas las entidades y relaciones).

Antes de continuar, el lector debe tener en cuenta que esta comparación se realizó en base a mi humilde experiencia con ambas soluciones, y por lo tanto se basa en Spring Roo versión 1.1.0 y JBoss Seam 1.2 y 2.x. El lector también debe tener en cuenta que actualmente existe una excelente versión de Seam 3 (en realidad CDI (Weld) con complementos de módulo Seam) que está basada en la especificación Java EE 6, pero que esta nueva versión de JBoss Seam ya no tiene la costura la aplicación Gen y, por lo tanto, aún no tiene la funcionalidad para crear una aplicación CRUD completa con tan solo un par de comandos como Spring Roo y JBoss Seam 2.xy versiones inferiores. Actualmente, hay personas de JBoss trabajando en algo similar, llamado JBoss Forge , que parece muy prometedor pero que, hasta el día de hoy, todavía no ha tenido una versión real y, por lo tanto, todavía no es una opción, supongo.

Tanto Spring ROO como JBoss Seam (con seam-gen) crean una buena aplicación CRUD básica, aunque el diseño de UI predeterminado de la aplicación generada por Spring Roo parece un poco mejor en mi humilde opinión, pero como probablemente quieras volver a diseñarlo de todos modos, no es un gran argumento para ninguno de los dos. Las aplicaciones web creadas también difieren ligeramente en la funcionalidad ofrecida, pero por lo que respecta a la funcionalidad CRUD básica y otras funciones básicas como autenticación e internacionalización, están a la par entre sí.

Creo que las principales diferencias y, por lo tanto, las razones para decidir para qué quieres ir, no están en el tiempo necesario para generar una aplicación CRUD básica ni en las aplicaciones básicas CRUD con scaffolded, sino en cosas mucho más importantes como la arquitectura / diseño decisiones, uso, soporte, documentación, flexibilidad, mantenimiento, puntos de extensión, etc. Por lo que a mí respecta, tanto Spring Roo como JBoss Seam son excelentes opciones para basar su aplicación web (de hecho, mi equipo ha creado aplicación de producción con ambos), pero antes de tomar una decisión, debe observar estas diferencias importantes y decidir qué es lo mejor para usted. Por supuesto, la mejor manera de decidir sería hacer una prueba de concepto para usted con ambas opciones, pero si no tiene el tiempo y / o los recursos, esto es lo que puedo hacer (desde arriba de mi cabeza) que son diferencias entre los dos y que pueden ayudarte a decidir de cualquier manera:

  • El sistema de construcción subyacente utilizado en Spring Roo es Maven, donde JBoss Seam usa Ant. Seam puede, por lo que yo sé, también ser usado con maven, pero seam-gen usa Apache Ant por defecto. Tenga en cuenta que JBoss Forge (reemplazo de seam-gen y en realidad más parecido a Spring Roo) está usando Maven.
  • Spring Roo se basa en el marco Spring, mientras que JBoss Seam se basa en toda la pila Java EE 5 (Seam 3 usará la pila Java EE 6). Tenga en cuenta que JBoss Seam y la herramienta seam-gen utilizarán EJB 3.0 de manera predeterminada, pero esto es opcional y también puede optar por una solución que no sea EJB con JBoss Seam y la herramienta seam-gen.
  • JBoss Seam (con seam-gen) usa la herencia OO básica para agregar funcionalidad básica a las clases generadas extendiendo las clases específicas de JBoss Seam. Esto agrega una dependencia de tiempo de ejecución a las clases específicas de JBoss Seam (y seam-gen). Spring Roo elige un enfoque totalmente diferente, al generar tanto archivos fuente Java simples (sin extender las clases relacionadas con Spring) como anotar estas clases. Junto a los archivos fuente Java generados, Spring Roo también genera uno o varios archivos llamados de declaración inter-tipo (ITD), que son archivos específicos de AspectJ que contienen código fuente generado y anotaciones. Estos archivos ITD se entrelazarán de forma completamente transparente en los archivos de clase generados en el momento de la compilación y, por lo tanto, no impondrán una dependencia de tiempo de ejecución.
  • Los archivos generados por Seam pueden (y serán) actualizados por usted, pero si necesita regenerar los archivos con seam-gen, sobrescribirá los cambios manuales, esto porque hará los cambios en los archivos generados por Seam-gen. Debido al enfoque de Spring Roo con ITD, usted realiza cambios en el archivo fuente de Java que anula el código fuente generado en los archivos ITD. Esto hace posible que Spring Roo regenere los ITD a medida que deja los cambios manuales, que están en el archivo fuente de Java, y luego sin cambios.
  • El uso de seam-gen está más inclinado a una generación / uso de una sola vez para configurar inicialmente el proyecto y obtener un inicio en funcionamiento, mientras que Spring Roo se utiliza durante toda la vida del proyecto.
  • Spring Roo puede eliminarse de un proyecto, dejando un proyecto completamente funcional que ya no depende de Spring Roo y que, por supuesto, puede construirse y ampliarse de la manera que desee. La utilidad seam-gen no ofrece esa funcionalidad, aunque en el caso de Seam-Gen, por supuesto, nunca dependes de seam-gen en sí, sino de un paquete JBoss Seam específico (llamado framework).
  • JBoss Seam (con seam-gen) está destinado principalmente para usar JSF como el marco web, mientras que Spring Roo se centra en Spring MVC y / o GWT como su marco web. JBoss Seam también tiene un buen soporte para Wickete, pero no con la herramienta seam-gen. Spring Roo también tiene un complemento Flex y se crean más complementos para otros entornos web en la comunidad, pero todavía no son tan buenos como los de Spring MVC y GWT.
  • La documentación es excelente tanto para JBoss Seam como para Spring, pero para Spring Roo y la herramienta seam-gen carecen de la documentación más avanzada. Spring Roo también ofrece grandes consejos útiles en el shell de la línea de comandos.
  • El soporte de IDE para el enfoque de JBoss Seam es mejor que para el enfoque de Spring Roo. Ambas soluciones tienen un IDE y plugins específicos basados ​​en Eclipse (SpringSource Tool Suite para Spring Roo y JBoss IDE para JBoss Seam) y todos los demás IDE grandes (Netbeans en IntelliJ) tienen un gran soporte para los frameworks base, pero los IDE que no son de Eclipse ( no del todo seguro para IntelliJ IDE) no tienen un buen soporte para los ITD generados por Spring Roo. Esto no es un problema en la construcción, pero sí proporciona problemas con la funcionalidad relacionada con intellisense y la finalización de código en estos IDE.

Aunque hay, por supuesto, muchas más diferencias entre estos dos excelentes productos y ni siquiera he tocado cosas importantes como la capacidad de prueba, la curva de aprendizaje y el futuro de estos proyectos, espero que las viñetas anteriores ya ayuden a las personas que están considerando estas dos soluciones. para tomar una decisión al menos un poco más fundada. Me gustaría volver a enfatizar que la mejor manera de tomar una decisión es crear una prueba de concepto con ambos enfoques y ver cuál es el mejor para usted.

Los puntos principales, en mi humilde opinión, que pueden darle una decisión fácil y rápida son las elecciones entre Spring stack o Java EE stack, IDE support, Web Framework y ''adulthood'' de la solución. Así que si estás muy familiarizado con la pila de Spring (que supongo que eres, viendo que vienes de Grails), ve a Spring Roo ya que de lo contrario podrías perder un poco de tiempo familiarizándote con la pila de Java EE, incluido JSF (por supuesto, esto depende del tamaño de su proyecto, pero suponiendo que no es un proyecto muy grande, el impacto de aprender nuevas técnicas puede ser demasiado grande para un solo proyecto). Si no puedes o no quieres usar Eclipse y eres realmente un apasionado de esto, creo que JBoss Seam podría ser una mejor solución. Si desea usar JSF o Wicket, vaya a JBoss Seam, mientras que si desea usar Spring MVC o GWT, use Spring Roo (para otros frameworks web probablemente no importe cuál elegir, aunque Spring roo podría ser una mejor solución). Y si la ''edad adulta'' es su principal punto de decisión, creo que será mejor que utilice JBoss Seam. En general, decidir entre los dos puede ser realmente difícil, pero al menos debes saber que ambas soluciones son realmente geniales y te ayudarán mucho, en cualquier caso.

Por cierto, asegúrese de vigilar el proyecto de JBoss Forge ya que la solución actual seam-gen será reemplazada en el futuro cercano con este prometedor proyecto.