¿Existe alguna otra herramienta de capa de presentación fuertemente integrada que no sea JSF / JSP para Java EE?

StackOverflow https://stackoverflow.com/questions/296325

Pregunta

Estoy enseñando Java EE en la universidad, y esta fue una pregunta que hizo un estudiante. Dije "no", pero no estaba muy seguro, así que pensé en preguntarles a los desarrolladores poderosos. :)

Básicamente, lo que me gustaría hacer es usar entidades si estuvieran en mi contexto: captadores de gatos, setters, etc., como los POJO normales. si uso un EJB usando su inferface remoto, las entidades se desacoplan de la infraestructura central, por lo que no se puede.

Pensé en escribir una capa como esta en mi tesis de maestría. Si es una idea muerta, no dudes en contármelo. Si no es así, dígame si desea uno.

O si existe una herramienta de este tipo, ¡hágamelo saber!

¿Fue útil?

Solución

En una aplicación Java EE básica del mundo moderno, se divide en varias capas, donde tiene 4 capas básicas

+--------------------+
|   Presentation     |
+--------------------+
| Controller/Actions |
+--------------------+
| Business Delegate  |
|     (Service)      |
+--------------------+
|  Data Access Layer |
+--------------------+
|      Database      |
+--------------------+

Sus aplicaciones deben dividirse en estas capas desde el principio, de modo que pueda reemplazar cualquier capa en cualquier momento sin afectar a ninguna de sus capas hermanas.

Ejemplo si usó JDBC para la capa de acceso a datos, debería poder reemplazarlo con Hibernate sin afectar al delegado de negocios o la capa de base de datos. El beneficio de usar dicha arquitectura es permitir la colaboración con múltiples tecnologías. ¡Su delegado comercial (capa de servicio) debería poder hablar con un servicio web y manejar el procesamiento de la aplicación sin siquiera ir a un navegador!

Con respecto al uso de JSP como capa de presentación, hay otras tecnologías disponibles como, velocidad , freemarker , como iberck mencionó anteriormente, el tapiz también tiene su propio motor de renderizado. Puede usar XML + XSLT también para representar la IU. Hay aplicaciones de administración de IU también disponibles como Tiles y sitemesh , que le ayudan a integrar varias tecnologías como diferentes componentes de la página y mostrarlas como una sola.

También puede usar componentes de columpio livianos con JNLP y desarrolle una aplicación empresarial de estilo de escritorio. Todo lo que necesitamos es un poco de imaginación y requisitos del cliente y podemos usar literalmente cualquier cosa como capa de presentación.

Otros consejos

Nunca lo he probado, pero se supone que JSF funciona mejor con Facelets que con JSP.

IBM tiene un artículo al respecto.

Ah. Parece que no respondiste bien mi pregunta :)

Los beans están ahí para proporcionar servicios dentro de una aplicación. Digamos que me gustaría desarrollar una aplicación java independiente con una interfaz gráfica de usuario swing, y desde esa aplicación me gustaría usar las entidades presentes en el alcance de la aplicación java ee.

Eso es lo que me gustaría hacer sin problemas: crear entidades, modificarlas, eliminarlas de forma intuitiva, sin preocuparse por los problemas de separación de EntityManager (si llama a un EJB de forma remota y devuelve un objeto de entidad, se se separará antes de regresar).

No quiero desarrollar una aplicación web. JSF / JSP y tal está fuertemente integrado, pero en muchos entornos sería mejor una aplicación de cliente independiente. :)

Al ver su comentario en el medio, veo que desea un marco de escritorio sobre Java EE.

La respuesta aquí es que JSF funciona sobre la API de servlet. Y definitivamente es para la web, pero espera, ¡aún puedes incrustar tomcat o jetty en tu aplicación!

Las posibilidades son prácticamente infinitas, si su capa empresarial está bien definida, simplemente cree una capa oscilante que llame a sus funciones comerciales.

Además, Java EE es una API, algunas partes pueden reemplazarse, o simplemente puede usar parte de ella. El contenedor es principalmente para tratar con EJB, Servlets JNDI y otras cosas pequeñas. Todo esto también puede ser utilizado por aplicaciones de escritorio.

Entonces, la respuesta depende de su objetivo específico y del diseño / implementación real de la aplicación.

Una alternativa es el Spring Framework . Spring proporciona su propio soporte para vincular objetos de entidad a la vista y maneja la obtención / configuración por usted una vez que está conectado. Hay muchos módulos Spring para elegir. Vale la pena echarle un vistazo a Spring MVC y Spring Webflow. Spring MVC (IMO) es más sencillo de comenzar, pero Sring Webflow permite una navegación más compleja y más opciones de alcance (por ejemplo, alcance de flujo). Si está buscando un libro, Spring In Action es un descenso. Hay algunos conceptos que deberá abordar (como la inyección de dependencia) para usar Spring, pero vale la pena el tiempo.

Otra alternativa es marco Tapestry5 . Tapestry es un marco de código abierto para crear aplicaciones web dinámicas, robustas y altamente escalables en Java. Tapiz complementa y se basa en la API estándar de Java Servlet, por lo que funciona en cualquier contenedor de servlet o servidor de aplicaciones.

Tapestry divide una aplicación web en un conjunto de páginas, cada una construida a partir de componentes. Esto proporciona una estructura coherente, lo que permite que el marco Tapestry asuma la responsabilidad de cuestiones clave como la construcción y el envío de URL, el almacenamiento de estado persistente en el cliente o en el servidor, la validación de entrada del usuario, la localización / internacionalización y el informe de excepciones. El desarrollo de aplicaciones Tapestry implica la creación de plantillas HTML usando HTML simple y la combinación de plantillas con pequeñas cantidades de código Java. En Tapestry, crea su aplicación en términos de objetos y los métodos y propiedades de esos objetos, y específicamente no en términos de URL y parámetros de consulta. Tapestry ofrece un verdadero desarrollo orientado a objetos para aplicaciones web Java.

La ideología detrás de los beans está hoy en día en cualquier marco de Java apropiado que conozca. Como se mencionó anteriormente, Spring es un marco lógico empresarial completo bueno / excelente (consulte su clases de plantilla jdbc , son simplemente increíbles: otra gran joya es applicationContext.xml que es) y para la capa de visualización personalmente prefiero Apache Wicket .

No creo que debas hacer el tuyo propio, sino encontrar un marco que se adapte a tus necesidades y comenzar a contribuir a su base de código, de esa manera puedes comenzar con una base de usuarios ya formada y tu código se creará más a fondo que a su vez te hará un mejor programador.

griales ( http://www.grails.org/ ) o grifón ( http://griffon.codehaus.org/ ) puede ser de interés

StringTemplate está escrito por Terrence Parr, el hombre detrás de ANTLR. Si está interesado en generar algún tipo de presentación textual a partir de un modelo, esto es muy bueno.

He tenido excelentes resultados al usarlo para generar XML, páginas web y archivos de puntos del mismo modelo. Escribe una plantilla para representar un objeto. Esa plantilla puede llamar a otras plantillas (incluidas las recursivas), en función de los datos derivados del modelo. (qv Funciones de imagen )

Getters y map.get () se pueden llamar directamente desde las plantillas. El modelo puede ser cualquier POJO. ST se enorgullece de su estricta separación del controlador, por lo que se permite muy poca lógica en las plantillas mismas.

Al igual que con todos estos pequeños idiomas, es algo nuevo que aprender, y puede que no sea lo que estás buscando. Fue una muy buena opción para mí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top