2010-11-22 7 views
32

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 el archivo no está allí).CRUD: ¿A Roo o no a Roo?

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

+0

Me interesaría también. Sorprendido de que nadie ha respondido todavía ... tal vez un pequeño incentivo ayude. :) –

+0

Por favor [no agregue firmas] (http://stackoverflow.com/faq#signatures) a sus preguntas/respuestas. – meagar

+0

No olvides aceptar la respuesta si de verdad te ayudó. – Tim

Respuesta

51

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 y JBoss Seam (con costura generación) hacen que la creación de aplicaciones CRUD muy fácil, ya que por la forma en que otras soluciones de Java pila completa/andamios como el Play Framework y RIFE también lo hacen. 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 Spring Roo parece un poco mejor en mi humilde opinión, pero como probablemente quiera restyle de todos modos, esto 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 las decisiones de arquitectura/diseño, 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 una aplicación de producción con ambos), pero antes de tomar una decisión, debe observar estas diferencias importantes y decidir qué es lo que más le conviene.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 las diferencias entre los dos y que podría ayudarle a decidir de cualquier manera:

  • el sistema de construcción subyacente utilizado en Spring Roo es Maven, donde JBoss Seam utiliza 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 utilizará 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) utiliza la herencia OO básica para agregar funcionalidad básica a las clases generadas al extender 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 costura pueden (y serán) actualizados por usted, pero si necesita regenerar los archivos con seam-gen, sobrescribirá sus cambios manuales, esto porque usted hará los cambios en el generado por Seam-gen archivos. 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 de ejecución, 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 tiene dependencias con 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 utilizar 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 IDE para el enfoque JBoss Seam es mejor que para el enfoque 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 muchas más diferencias entre estos dos excelentes productos y no 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 puedan ayudar a las personas 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 principales puntos, en mi humilde opinión, que pueden llevarlo a una decisión fácil y rápida son las opciones 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.

+2

Gracias. Una respuesta muy detallada e imparcial. Como desarrollador que trabaja en el soporte de herramientas de AspectJ y Groovy en VMWare, esperaba una comparación más entre Spring Roo y Grails. Pero, ya que lo mencionó, ¿podría entrar en más detalles sobre las deficiencias del soporte de herramientas que encontró para Spring Roo en STS? –

+0

Gracias Andrew. Como últimamente no he usado Grails, no tomé ese enfoque en cuenta en la respuesta anterior. Sin embargo, estoy interesado en comparar Grails con Spring Roo y Seam en estos días, así que tal vez agregue un nuevo comentario o respuesta. – Tim

+0

Con respecto al soporte de IDE, no creo que STS carezca de mucho (si acaso algo) en su soporte para Spring Roo. La razón por la cual, en mi humilde opinión, el soporte IDE para Spring Roo es ligeramente menor que para JBoss Seam es que otros IDE importantes, por ejemplo NetBeans, no tienen un buen soporte para AspectJ y por lo tanto tienen problemas con los ITD generados por Roo. , causando problemas con el autocompletado/intellisense. Entonces, la diferencia en el soporte no está en la funcionalidad, sino en los diferentes IDE. – Tim

1

Just Roo it.

Si eres un novato, 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.

4

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

Si usted es un principiante, usted tendrá una aplicación web, con persistencia, las pruebas y la 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.

Cuestiones relacionadas