java - application - Qué plataforma de Rich Client usar
java swing spring boot (10)
Recientemente comenzamos a desarrollar una aplicación de escritorio Java y la administración nos ha pedido que hagamos uso de Rich Client Platform. Sé de cuatro para Java, a saber:
- Eclipse RCP - www enlace a ecipse rcp ,
- Netbean RCP - Sitio web de RCP de Netbeans ,
- Spring RCP: cliente rico en primavera
- Valkyrie RCP - cliente rico Valkyrie
¿Alguien ha tenido alguna experiencia en alguno de estos y, de ser así, cuál es la fuerza y la debilidad de cada uno?
Gracias
Si bien no he usado explícitamente ninguno de ellos, he usado partes del Eclipse RCP. Específicamente, he usado el tiempo de ejecución de Eclipse OSGi (Equinox) y algunas utilidades comunes y estoy muy contento. OSGi es fantástico para trabajar. Tengo varios amigos con contratos grandes que usan Eclipse RCP (más de lo que uso) y se entusiasman con ello.
Si mi proyecto no contiene un gran montaje de Swing heredado, Eclipse RCP sería mi primera opción. ¡OSGi es tan divertido! (Imagino que Spring también lo usa, pero aún no lo ha revisado)
Tengo experiencia con Eclipse RCP y lo recomendaría.
Pros:
- Componentes: el modelo de componente / plu-in permite la reutilización.
- Utiliza SWT y JFace que permite una interfaz de usuario nativa
- Las Vistas, Editores y Perspectivas conectables hacen que los diseños sean fáciles y configurables.
- Los puntos de extensión de Eclipse facilitan la ampliación y la integración con API y herramientas de terceros.
Contras:
- Curva de aprendizaje
Si eliges Eclipse RCP, definitivamente obtienes este libro, es invalorable cuando recién comienzas con el marco: http://www.amazon.com/Eclipse-Rich-Client-Platform-Applications/dp/0321334612
Te recomiendo que le eches un vistazo a JSR 296, que todavía no está completo, pero creo que es ideal para proporcionar ciertas funcionalidades básicas que realmente necesitas en cada aplicación GUI de Java sin forzarte a vivir en ellas. un marco demasiado complicado.
He usado JSR 296 con éxito para crear una aplicación de tamaño mediano. Para el diseño de la ventana en esta aplicación, usamos MyDoggy (altamente recomendado). Para la administración del diseño, utilizamos MiGLayout (Más allá de altamente recomendado). Para el enlace de datos, utilizamos una forma modificada de JSR 295 (implementamos algo similar a PresentationModel en la parte superior de JSR 295 que utilizamos para nuestro enlace GUI). Estoy en el proceso de incorporar a Guice como un mecanismo de DI, pero no he terminado ese esfuerzo (hasta ahora, creo que ''jugará bien'' con JSR 296 con un ajuste aquí y allá). Veamos ... la persistencia es el gran eslabón perdido aquí. Actualmente estoy evaluando la persistencia de Simple for XML, pero estoy teniendo problemas para hacer que funcione con contenedores DI como Guice. Tengo Betwixt funcionando, pero las dependencias de Betwixt son enormes, por lo que estamos buscando algo más simplificado.
Opiniones sobre otras opciones de RCP para Java:
NetBeans: Tengo algunas objeciones filosóficas fundamentales al enfoque utilizado por NetBeans (demasiados diseños anti-patrones para mi gusto). Al final, el marco te obliga a tomar malas decisiones de diseño, y es casi imposible de usar si no usas NetBeans como tu IDE (lo intenté, pero no pude cambiar de Eclipse a NB). Probablemente sea solo yo, pero parece que debería ser posible escribir código para un marco RCP sin utilizar grandes asistentes complicados y resmas de código autogenerado y archivos XML. He pasado tantas horas solucionando el viejo código de Visual C ++ generado por Visual Studio que estoy extremadamente receloso de cualquier marco que no pueda codificarse a mano.
Spring RCP: la gente de Spring tiene un buen diseño sólido, pero la documentación es realmente muy débil. Es bastante difícil ponerse al día con eso (pero una vez que lo haces, puedes hacer las cosas bastante rápido).
Eclipse RCP: no ha usado Eclipse solo por la sobrecarga de implementación (depende de su público objetivo; para nosotros, implementar 50 MB adicionales de tiempo de ejecución simplemente no funcionó). Sin dudas, Equinox es algo hermoso si su aplicación necesita una funcionalidad significativa de complementos (por supuesto, también podría ejecutar Equinox con JSR 296, o usar patrones de diseño similares al patrón de Pizarra promovido por OSGi).
Por supuesto, todo depende del tipo de aplicaciones y servicios que desee proporcionar y del entorno de destino. Pero también puedo recomendar OSGi como una plataforma de desarrollo e implementación. La arquitectura y las especificaciones subyacentes están muy bien desarrolladas y comprobadas.
Además del Eclipse RCP, debe echar un vistazo a Apache Felix ( http://felix.apache.org ) y Knopflerfish ( http://www.knopflerfish.org ), que son (más pequeñas) implementaciones OSGi de código abierto.
Eclipse RCP proporciona un mecanismo de complemento para que pueda agregar nuevas funciones más adelante en la implementación. También a través del mecanismo de actualización puede cambiar el sistema sin interferencia del usuario. En la fase de desarrollo, Eclipse RCP proporciona un terreno rápido y robusto con perspectivas, vistas, editores, comandos y mecanismos de acción. Si su proyecto requiere muchas ventanas diferentes con diferentes barras de herramientas y menús (y también menús contextuales personalizados), le sugiero que use Eclipse RCP. Solo reviso los videos de Netbeans Platform y ejecuto el proyecto Helloworld, pero parece lento y torpe :) 40 segundos para la puesta en marcha (puede volver a cargar la aplicación sin reiniciar). Vogella.de es una buena colección de tutoriales para Eclipse RCP
INTRO: omita si solo está interesado en el resultado;)
Estaba desarrollando un editor para un lenguaje de programación personalizado muy similar a JSP. Primero, implementé el editor como mi tesis usando la plataforma NetBeans . Después de terminar la escuela obtuve un trabajo y querían que implementara lo mismo en Eclipse RCP , así que ahora puedo comparar estas dos plataformas al menos en lo que estaba enfrentando durante este proyecto.
RESULTADO: si tuviera que elegir entre la plataforma Netbeans y Eclipse RCP, definitivamente elegiría una plataforma NetBeans . ¿Por qué?
Grandes capturas de pantalla, buenos tutoriales, comunidad amigable y útil muy activa, bastante bien documentados y el código fuente está escrito muy bien y con buenas convenciones de código. También tiene algunos gadgets interesantes (cookies, búsqueda). Simplemente me queda bien.
¿Y por qué Eclipse RCP no me conviene?
La documentación es más débil y las convenciones y API son a veces ... ehm ... demasiado raras para mí :-) Es bastante habitual ver métodos como:
/**
* Returns a description of the cursor position.
*
* @return a description of the cursor position
* @since 2.0
*/
protected String getCursorPosition() {
..
}
Bueno, pensé que deberían estar bromeando :-D ¿Cómo se supone que debo usar este método? O así:
/**
* Returns the range of the current selection in coordinates of this viewer''s document.
*
* @return a <code>Point</code> with x as the offset and y as the length of the current selection
*/
Point getSelectedRange();
Aunque la cantidad y el tipo de atributos se ajustan, no encuentro la estructura de datos ideal del objeto Point para almacenar el rango ;-)
Hay números de estas sorpresas en Eclipse RCP
Actualmente estoy desarrollando una aplicación Spring RCP. La documentación es realmente débil, eso es seguro, pero los blogs y el foro tienen una buena cantidad de información para comenzar. Una vez que consigues cruzar, las cosas se mueven bastante rápido y realmente solo necesitas aprender Spring básico si no estás familiarizado con el framework. Las integraciones con bibliotecas Spring como VLDocking también son excelentes.
Creo que Spring Rich es excelente si su caso de uso es desarrollar una aplicación de escritorio Java independiente. Lo que quiero decir con eso es que si no necesitas distribuir módulos y hacer actualizaciones en línea, entonces debería satisfacer la mayoría de las necesidades.
Demasiado tarde para responder, pero algunos tipos pueden golpear esta página.
Me gustaría ir a Netbeans RCP, 1) plataforma Netbeans. es bastante maduro y ha evolucionado es una plataforma ''fácil de usar'' para desarrollar aplicaciones.
2) Es muy fácil comenzar, mientras que la curva de aprendizaje de Eclipse RCP es bastante pronunciada. Solo vaya a http://netbeans.org/kb/trails/platform.html , allí encontrará tutoriales, videos (mire los 10 mejores videos de api y pruebe los tutoriales antes de leer libros, de ese modo obtendrá un poco de cosas de antemano).
3) Los libros en RCP de Netbeans (supongo que hay 2 en RCP de netbeans) están actualizados (solo pequeños cambios con los que no tendrás muchos problemas). mientras que el libro principal sobre RCP no estuvo disponible durante mucho tiempo (recientemente, es decir, mayo de 2010, se lanzó la nueva edición, así que eso es algo muy bueno para los desarrolladores de RCP de eclipse. No estaba allí cuando lo intentaba para aprenderlo. Me frustran los autores que no publican nuevas ediciones, casi dejan a los nuevos desarrolladores en aprietos. No a todo el mundo le gusta leer documentos. No publicar libros actualizados equivale casi a matar la tecnología). Me encantaría ver un libro de recetas de cocina para ambas plataformas.
4) Netbeans tiene un generador de GUI totalmente integrado, que es una gran ventaja. Eclipse RCP, ya sea que tenga que codificar manualmente o comprar un constructor de GUI de terceros.
5) La plataforma Netbeans tiene esta aplicación API de búsqueda muy buena para la comunicación entre módulos. Supongo que los chicos de Eclipse usan puntos de extensión para este propósito. Pero la API de búsqueda es fácil una vez que te acostumbras.
6) De todos modos, es una gran decisión de diseño, sobre qué plataforma elegir. La plataforma de Netbeans funciona para mí. Puede no funcionar para usted. Ambas plataformas requieren esfuerzos, ambas ofrecen maravillosas características "listas para usar". Prueba de manejo y luego decide.
Desde mi perspectiva del usuario final.
He visto más implementaciones en Eclipse que en las otras dos. En realidad, ya conozco las implementaciones de Netbeans, pero nunca tengo una en mis manos.
Desde Spring esta es la primera vez que escucho sobre esto.
Si bien mi respuesta es definitivamente una vista estupenda de 10,000 pies, refleja de alguna manera la preferencia que la industria había tenido sobre el uso de uno u otro.
Además, la diferencia es proporcional al tiempo que la plataforma estuvo disponible. Recuerda que Eclipse crea SWT para resolver los problemas que tenía Java Swing en 1.3 donde simplemente era prohibitivamente lento.
Netbeans se ha beneficiado mucho con las mejoras de JVM y ahora corre muy rápido.
La primavera todavía es joven (en comparación con las otras dos), pero como siempre, las cosas nuevas aprenden de la primera, lo más probable es que sea más fácil de usar.
Aquí hay un artículo sobre estas dos plataformas Eclipse RCP vs Netbeans RCP. Puede ser útil
http://blogs.oracle.com/geertjan/entry/eclipse_platform_vs_netbeans_platform
Netbeans RCP es excelente. Ha recorrido un largo camino a lo largo de los años. Utiliza una tecnología más robusta (''Swing'') que muchas personas usan y entienden. Eclipse RCP (más específicamente SWT) me confundió.