2010-11-17 19 views
10

estoy buscando para desarrollar una aplicación web totalmente nueva que se vuelva a usar una gran cantidad de componentes Java. Para mí, las opciones obvias para esto son Grails o JRuby on Rails, pero estoy teniendo problemas para encontrar comparaciones objetivas de los dos. ¿Hay alguna razón clara para elegir una sobre la otra con respecto a:jruby on Rails vs Griales

  1. facilidad de integración con componentes Java existentes (fuera del dominio persistente), p. JMS, EIP
  2. soporte para pruebas funcionales marcos de desempeño
  3. en una sola máquina
  4. escalabilidad

Soy no en busca de respuestas relativas a la disponibilidad de los desarrolladores o la actividad de las comunidades.


(He comprobado Grails vs. Rails, y no es relevante para mí)

+0

Además de las respuestas anteriores, grails también tiene un [complemento para JMS] (http://www.grails.org/plugin/jms). –

+0

Creo que la respuesta quizá sea verificar qué gemas o complementos tiene cada uno y que pueden ayudar con las integraciones. –

Respuesta

4
  • facilidad de integración con los componentes de Java existentes:

que es más fácil con maravilloso, causar maravilloso es básicamente java. usted no tiene grandes interruptores de contexto

  • soporte para pruebas funcionales marcos

rubí tiene su propia pila de marcos de prueba como rspec/Shoulda/pepino/carne y toneladas más. ya que me gusta la sintaxis de rubí yo preferiría aquellos rendimiento

  • en una sola máquina

Por lo que yo sé, griales es mejor en múltiples hilos, porque los carriles no lo hicieron fokus demasiado en que en el pasado . actualmente se están poniendo al día, por lo que podría ser un empate.

  • escalabilidad

tanto en escala con el environement JVM. si tienes una infraestructura en ejecución para Java, es más fácil integrar Grails.

+1

gracias por la respuesta. 1. ¿Algún sentimiento sobre la integración más fácil para Groovy que JRuby? 2. Es bueno saber sobre las opciones de Ruby para las pruebas; ¿Son todos compatibles con JRuby? 3. Entiendo que el modelo de subprocesamiento de JRuby es significativamente diferente al de Ruby estándar (por ejemplo, realmente usa subprocesos); has tomado esto en cuenta? 4. Escalar JRuby podría ser tan simple como escalar las aplicaciones de Rails, simplemente usando un servidor de aplicaciones Java en lugar de uno de Ruby. ¿Alguna idea? – Armand

+0

1. no se trata de la integración de Groovy vs JRuby, se trata de la integración de Grails contra JRuby On Rails. Grails es más fácil, porque es solo otra lib de java. JROR usa herramientas como currucas o pilas personalizadas como TorqueBox. 2. Depende 3. como en 1. se trata del soporte de hilos de Rails. Rails 3 tiene un bloqueo de solicitud por defecto. 4. No, vea 3. – phoet

5

Sé Griales muy bien (en este momento estoy trabajando en un proyecto Grails), pero no JRuby, así que aprovecho esta probablemente como una opinión sesgada: mirar la documentación JRuby, se ve que la integración JRubys con Java es un poco más complicado, ya que Java es más nativo en maravilloso de lo que es en Ruby; Por lo tanto, en JRuby, usted tiene una gran cantidad de palabras clave y los métodos (por ejemplo java_import, java_send)-java específico. En pocas palabras, Groovy es un lenguaje orientado específicamente en el mundo Java, mientras que JRuby es, así, Ruby puso en la JVM.

Grails tiene pruebas JUnit incorporadas.

No se puede decir mucho sobre el rendimiento y la escalabilidad, pero dada la buena integración con Java, siempre se puede escribir piezas de rendimiento crítico en Java cuando Groovy es demasiado lento.

+0

gracias, has abordado el primer punto. ¿Tienes mucha experiencia con esta integración? Una comparación de fragmentos de código podría ser útil. En cuanto a JUnit, creo que está más orientado hacia pruebas unitarias que pruebas funcionales; Por favor corrígeme si estoy equivocado. Si entiendo correctamente, reescribir el código en Java por razones de rendimiento es una opción ya sea que use Groovy o JRuby. De nuevo; Por favor corrígeme si estoy equivocado. – Armand

+0

Alison: Groovy se integra perfectamente con Java, un snipplet de código de un método Groovy que llama a un método de un objeto Java se parece a Groovy llamando a Groovy o Java que llama a Java. Acerca de las pruebas funcionales: tienes razón, pero este enlace te ayuda: http://www.grails.org/Functional+Testing –

+0

Reescribir en Java es también una opción en JRuby, claro, pero la sintaxis de Groovy (que está relativamente cerca) a Java) y la integración perfecta puede hacer que sea un poco más fácil en Grails –

3

Al final, usted va a tomar una decisión sobre elección personal, comodidad con los dos idiomas y la disponibilidad de recursos, pero al final, el hecho de que Grails se base en Spring me llevó a la conclusión de que fue la elección correcta para mí. Yo sabía que si todo lo demás fallaba que podía caer de nuevo a la utilización de la infraestructura Spring probado y verdadero

+0

gracias. Esperaba que fuera posible tomar una decisión objetiva, pero es posible que tengas razón. – Armand

20

Pruebe ambos y elija el idioma y el entorno que más le convenga. Es cierto que la pila de Grails de la caja es más adecuada para la integración con Java, pero muchos componentes son solo unas pocas líneas de código de Ruby que se alejan de la integración con Rails. Rails 3 es una gran versión que no requiere el uso de ActiveRecord; de hecho, sería trivial usar Hibernate para sus modelos. Consulte también DataMapper, MongoMapper y una gran cantidad de adaptadores de bases de datos para bases de datos SQL y NoSQL.

Además, JUnit! = Prueba funcional. En su lugar, eche un vistazo a Cucumber + Cucumber-Rails + Capybara + Selenium para una experiencia integrada de prueba de automatización del navegador. Eche un vistazo a https://github.com/elabs/front_end_testing para obtener una aplicación de ejemplo que demuestre esta pila.

voy a sugerir que Ruby se adapta mejor como lengua de integración web, y JRuby golpea el punto dulce de hacer la integración con Java fácil, así como agradables al tiempo que una gran cantidad de bibliotecas no-Java disponibles para usted. No piense que Groovy gana automáticamente porque está "más cerca" de Java. A veces es necesario entrar en un entorno refrescantemente diferente para tener una nueva visión de cómo resolver un problema.

Divulgación: como miembro del equipo JRuby, mi parcialidad es evidente en mi respuesta.

+4

¡Guau, 15 votos ascendentes (hasta ahora)! ¿Para qué? - El interlocutor ha especificado cuatro criterios que convertirían una respuesta en una solución. - Sin embargo, solo está respondiendo a uno de esos (pruebas funcionales). - ¿Qué hay de la integración de las tecnologías de la empresa Java como JMS (que ha sido un requisito en la pregunta)? Lo más probable es que haya una gran distancia de JRuby a esos. – robbbert

+0

gracias por la respuesta (comprensiblemente sesgada). Sin embargo, como dice @robbbert, esto no aborda todos los puntos mencionados. Además, soy consciente de que JUnit no es tanto para pruebas funcionales; tal vez esa debería ser la respuesta de un comentario @ ammoQ? – Armand

+1

@robbert +1. ¿Qué hay de la escalabilidad y el rendimiento? http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/ Además Grails no solo está más cerca de Java en sintaxis sino que también es fácil de integrar. Su arquitectura respaldada por Spring es increíble y muy fácil de usar. –

4
  1. Como dijo phoet, Griales cuenta con el apoyo del resorte de primera clase, por lo que es típicamente muy fácil de integrar las bibliotecas de la primavera - eso es lo que hacen muchos plugins, incluyendo el plugin de JMS.

    El código de Java se puede proporcionar en JAR o colocar en el directorio src/java del proyecto. Las clases de Groovy pueden hacer referencia a las clases de Java que pueden hacer referencia a las clases de Groovy. Es bastante perfecto.

  2. Grails tiene soporte para HtmlUnit, Selenium-rc & WebDriver a través de varios complementos. Geb tiene mucho interés en este momento, especialmente cuando se combina con Spock.

  3. Pruébelas. No sé si hay alguna comparación reciente, pero el rendimiento generalmente depende en gran medida de su aplicación. http://grails.org/ y http://beta.grails.org/ se ejecutan en una sola máquina, y ambas son aplicaciones de Grails.

  4. Creo que es bastante fácil agrupar Grails en terracota. También puede hacerlo con Tomcat simple si lo desea. Hay opciones para el almacenamiento en caché distribuido: SpringSource tiene su propia oferta (comercial) en forma de GemFire.

Espero que ayude, y en aras de la plena revelación, soy miembro del equipo de Grails.

1

Para los recién llegados interesados ​​en esta cuestión en 2012 ...

"Con la @CompileStatic, el rendimiento de Groovy es aproximadamente 1-2 veces más lento que Java y sin maravilloso, que es aproximadamente 3-5 veces más lento . (...) Esto significa para mí que Groovy está listo para aplicaciones donde el rendimiento debe ser comparable a Java."

Prueba de rendimiento:. Groovy 2,0 frente Java http://java.dzone.com/articles/groovy-20-performance-compared

Y además del autor, he utilizado maravilloso desde el año 2008 con un gran éxito, no sólo para el CV sólo para hacer trabajo hecho en la necesidad de la empresa Duración del espectáculo es siempre relativo a lo que quiere hacer.

Acerca de la integración, Grails es realmente "tan bueno". Nunca he tenido que dar un paso más para integrarlo con las bibliotecas existentes. Por el contrario, el basado en Spring La naturaleza de Grails hizo el trabajo aún más fácil.

Para aquellos que podrían quejarse de micro-benchm arcas y casos de uso real, aquí es un tanto antiguo (Grails 1.8) pero bueno con frameworks web (Grails 1.3.7): http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/

Espero que esto ayude!

PD .: Me gustaría ver marcas recientes con JRuby y otros lenguajes JVM realmente dinámicos.