2010-05-29 11 views
11

Estoy en la etapa de planificación de una aplicación web y estoy tratando de elegir entre GWT y Cappuccino. Tengo una idea de cuál creo que es mejor, pero mi compañero se vende con la otra opción. Tenía la esperanza de obtener algunos comentarios sobre los pros y los contras de cada uno de las personas que han utilizado uno u otro o ambos. Gracias de antemano por cualquier idea que pueda tener.GWT contra Cappuccino

+3

Sin ningún tipo de requisitos detallados para el proyecto que desea hacer, este tipo de pregunta no puede ser contestada. E incluso entonces, en su mayoría, obtendría opiniones de ambos lados de la valla: todos tienen sus favoritos. Recomiendo probar ambos frameworks para obtener la "sensación" de ellos y elegir el que mejor se adapte * a tu * estilo. –

+0

Estoy de acuerdo en que las respuestas a esta pregunta solo serán opiniones o preferencias personales, pero aún me gustaría saber qué le gusta y qué no le gusta a las personas de ambos marcos. ¡Gracias! – James

Respuesta

34

Toolkit v/s Marco de

GWT es un toolkit. Su fuerza radica en las herramientas que proporciona para crear una aplicación. Sin embargo, no proporciona un marco. Los desarrolladores suelen construir un pequeño marco sobre GWT para satisfacer sus necesidades. Ha habido mucho énfasis en el patrón de MVP para crear aplicaciones, pero no es la única forma de usar GWT.

Cappuccino es un Framework. Tiene una forma predeterminada de crear aplicaciones. Además, proporciona bibliotecas para realizar tareas de alto nivel como animación, arrastrar y soltar deshacer/rehacer, etc. GWT no proporciona ninguna biblioteca para tales tareas, aunque hay bibliotecas de terceros disponibles.

Esto significa que las aplicaciones Cappuccino tienden a ser más ricas que las correspondientes aplicaciones GWT.

Desconectado Compilación v/s tiempo de ejecución de traducción

GWT cree en la toma de decisiones en tiempo de compilación. La detección del navegador, I18N, la alineación de la imagen, la generación de sprites, la evaluación de la plantilla uibinder se realizan en tiempo de compilación. Deferred Binding permite a los desarrolladores aprovechar este concepto en sus propias aplicaciones.

EDITAR

Cappuccino, de forma predeterminada, no necesita compilación. El navegador descarga archivos object-j, y luego el framework los traduce/interpreta directamente en tiempo de ejecución. Sin embargo, es posible compile using jake. Puede elegir entre varios minificadores/compresores, incluido google's closure compiler.

Como resultado de esta decisión arquitectónica, aplicaciones GWT tienden a ser más rápido en tiempo de ejecución de aplicaciones Cappuccino equivalentes.Sin embargo, debido al costo del tiempo de compilación, el desarrollo de tiende a ser más lento que Cappuccino. El complemento de desarrollo GWT alivia un poco este dolor, pero el costo no desaparece por completo.

Dado que GWT es un compilador closed-world, puede eliminar el código no utilizado, las llamadas al método en línea, las cadenas internas y optimizar el código en formas que Cappuccino no puede. Si Cappuccino introdujera un paso de compilación, podría realizar las mismas optimizaciones; pero a mi leal saber y entender, no hay forma de hacer la traducción en tiempo de compilación.

Con el paso de compilación opcional, este punto se vuelve irrelevante. Sin embargo, las aplicaciones de cappuccino que no realizan dicha compilación tendrán un rendimiento bajo en comparación con una aplicación GWT.

Tipo de seguridad

GWT es java - y por lo tanto es type safe. Objective J es javascript y, por lo tanto, se escribe de forma dinámica. Esto tiene su propio advantages and disadvantages, y dado que es una discusión religiosa, me abstendré de emitir un juicio.

Depuración

GWT proporciona un plugin para el navegador que ayuda a los desarrolladores directamente depurar código Java. En el modo de desarrollo, los desarrolladores pueden ver los rastros de la pila de Java. En tiempo de ejecución, sin embargo, el código JS generado está ofuscado y es muy difícil de depurar (aunque hay una manera de decirle a GWT 'no ofuscar mi código').

Usando el super-dev-mode ahora es posible depurar el código de Java directamente desde el navegador web.

Cappuccino no tiene un modo de desarrollo, lo que significa que tiene que usar herramientas existentes como firebug para depurar. El navegador informa sobre los errores y, para depurar el código, debe usar los depuradores JS.

pruebas unitarias

Con GWT, puede escribir casos de prueba de unidad pura de Java que no requieren un navegador para funcionar. Esto tiene ventajas obvias: la velocidad y la capacidad de reutilizar la infraestructura existente son algunas de ellas. Cuando necesite un navegador para probar, puede elegir entre GWTTestCase o HTMLUnit. También es posible probar usando Selenio.

Las aplicaciones de Cappuccino se pueden probar utilizando OJTest. Lamentablemente, no pude encontrar mucha documentación sobre el tema, por lo que no puedo comentar mucho. Por supuesto, siempre puedes usar Selenium para probar tu aplicación web.

Interoperabilidad con Javascript

GWT proporciona una manera de hablar con bibliotecas JS existentes - su llamada Javascript Native Interface. Es maduro y funciona bien, pero no es realmente intuitivo. El objetivo J es javascript, por lo que no tiene que hacer nada especial para interoperar con Javascript.

Visión

no puedo respaldar este argumento, pero GWT tiende a centrarse en la creación de aplicaciones web de alto rendimiento sin preocuparse mucho acerca de apariencia. Nunca ponen en peligro el rendimiento.Por otro lado, Cappuccino tiende a centrarse en características y marcos de mayor nivel, y comprometer el rendimiento del tiempo de ejecución.

Como resultado, las aplicaciones de Cappuccino se ven más ricas, pero tardan un poco en cargarse. Las aplicaciones GWT se cargan y responden más rápido, pero se ven aburridas. Puede evitar ambos problemas, estoy seguro, pero así es como está listo para usar.

Soporte Comunidad y Copia de

GWT está respaldado por Google. Su compromiso con GWT es bastante fuerte. Las aplicaciones más recientes (Wave, Adwords, Orkut) de Google están basadas en GWT. Google IO ha tenido varias sesiones en GWT. El user forum es bastante activo y receptivo, y el conjunto de herramientas en sí mismo es desarrollado y mantenido activamente por Google y la comunidad de código abierto. El Cappuccino user group no está tan activo y tiene muchos menos miembros.

+0

Sri, ¡eso es mucha información! Gracias por la comparación! – James

+1

Gran resumen. Sin embargo, "Traducción de tiempo de ejecución de compilación sin conexión v/s" es incorrecta. Cappuccino proporciona un compilador fuera de línea. Al desarrollar su aplicación, puede optar por no utilizarla para guardarse el paso de compilación, y Cappuccino compilará su código de forma transparente en el tiempo de ejecución. Antes de la implementación, normalmente compilaría sin conexión antes de minimizar y ejecutar optimizadores, como la herramienta de eliminación de código inactivo 'aplanar'. –

+1

Hay una bandera de seguridad de tipo experimental en Cappuccino, aunque es una comprobación de tiempo de ejecución en lugar de compilación. No es muy útil en este momento. –

5

Tengo mucha más experiencia con Cappuccino que con GWT, pero por lo que parece, GWT se ve increíblemente rápido y bastante robusto. Después de todo, está respaldado por un jugador bastante grande en el campo de Internet. La demostración en Google IO fue impresionante. Aunque esto podría cambiar, las aplicaciones de GWT dejan totalmente Cappuccino en el polvo en lo que respecta a los tiempos de carga y el tamaño de implementación en la actualidad.

Dicho esto, fui con Cappuccino por dos razones: en primer lugar, mientras que GWT es una solución de ingeniería clásica "lo suficientemente buena", Cappuccino se enfoca directamente en el público "solo el mejor es lo suficientemente bueno". Creo que con Cappuccino puede lograr un estándar que rara vez se ha visto en la web. No solo en píxeles bonitos, sino en funcionalidad y potencia brutas donde todo funciona a un nivel de "calidad de escritorio". Arrastra y suelta, deshace la pila, desplazamiento y cambio de tamaño de fluido, paneles divididos, y así sucesivamente. GWT se está poniendo al día, como se ve en Google Wave, pero tiene un largo camino por recorrer y Google tradicionalmente no se ha preocupado mucho por el pulido. Esto es visible, por ejemplo, en Gmail, que no solo tiene una apariencia monótona sino que es torpe en la interacción del usuario después de tantos años.

La segunda razón por la que fui con Cappuccino es que Java me vuelve loco con su estilo inflexible, ridículamente prolijo e ilegible. Pero eso solo podría ser yo.

+1

fuiste con Objective-J debido al estilo ridículamente prolijo e ilegible de Java ?? – seanmonstar

+3

Objective-J es detallado, en el sentido de que tiene nombres de métodos largos, Java es detallado, en el sentido de que debe escribir más líneas de código. Para mí eso hace una gran diferencia. –

+0

noto más estilo ilegible de Objective-J. eso es lo que más me importa – seanmonstar

0

Usted puede estar interesado en mi nuevo marco de interfaz de usuario de GWT, CappuccinoGWT