Existe-t-il un autre outil de couche de présentation fortement intégré autre que JSF / JSP pour Java EE?

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

Question

J'enseigne Java EE à l'université et cette question a été posée par un étudiant. J'ai dit "non", mais je n'étais pas vraiment sûr, alors j'ai pensé vous adresser à de puissants développeurs. :)

En gros, ce que j'aimerais faire, c'est utiliser des entités si elles étaient dans mon contexte: des chasseurs de chat, des setters, etc., comme des POJO normaux. Si j'utilise un EJB à l'aide de son interface distante, les entités sont découplées de l'infrastructure principale, ce qui est inacceptable.

J'ai pensé à écrire une couche de ce type dans ma thèse de maîtrise. Si c'est une idée morte, n'hésitez pas à me le dire. Si ce n'est pas le cas, dites-moi si vous en voulez un.

Ou s'il existe un tel outil, faites-le moi savoir!

Était-ce utile?

La solution

Dans une application Java EE du monde moderne de base, elle est divisée en plusieurs couches, où vous avez 4 couches de base

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

Vos applications doivent être scindées dans ce calque dès le début, de manière à pouvoir à tout moment remplacer n'importe quel calque sans modifier le calque frère.

Exemple si vous avez utilisé JDBC pour la couche d'accès aux données, vous devriez pouvoir le remplacer par Hibernate sans affecter le délégué commercial ou la couche base de données. L’utilisation d’une telle architecture présente l’avantage de permettre la collaboration avec plusieurs technologies. Votre délégué d’entreprise (couche de service) devrait être en mesure de parler à un service Web et de gérer le traitement de l’application sans même utiliser un navigateur!

En ce qui concerne l'utilisation de JSP en tant que couche de présentation, d'autres technologies sont disponibles, telles que vélocité , freemarker , comme mentionné ci-dessus par iberck, tapestry dispose également de son propre moteur de rendu. Vous pouvez également utiliser XML + XSLT pour restituer l'interface utilisateur. Des applications de gestion de l'interface utilisateur sont également disponibles, telles que Tiles et sitemesh , qui vous aide à intégrer divers techniciens en tant que différents composants de la page et à les afficher en tant que tels.

Vous pouvez également utiliser des composants légers swing avec une JNLP et développez une application d’entreprise de type bureau. Tout ce dont nous avons besoin est d’un peu d’imagination et des exigences du client et nous pouvons utiliser littéralement n'importe quoi comme couche de présentation.

Autres conseils

Je ne l'ai jamais essayé, mais JSF est censé fonctionner mieux avec Facelets plutôt qu'avec JSP.

IBM a un article à ce sujet.

Ah. Il semble que vous n’ayez pas bien compris ma question:)

Les haricots servent à fournir des services dans une application. Disons que je voudrais développer une application Java autonome avec une interface graphique, et à partir de cette application, j'aimerais utiliser les entités présentes dans le champ d'application de l'application java ee.

C’est ce que je voudrais faire en toute transparence: créer des entités, les modifier, les supprimer de manière intuitive, sans se soucier des problèmes de détachement d’EntityManager (si vous appelez un EJB à distance et qu’il renvoie un objet sera détaché avant le retour).

Je ne veux pas développer une application Web. JSF / JSP et autres sont fortement intégrés, mais dans de nombreux environnements, une application client autonome serait préférable. :)

En voyant votre commentaire au milieu, je vois que vous souhaitez un environnement de bureau sur Java EE.

La réponse ici est que JSF fonctionne sur l’API de servlet. Et c'est définitivement pour le Web, mais attendez, vous pouvez toujours intégrer Tomcat ou Jetty dans votre application!

Les possibilités sont quasiment infinies. Si votre couche métier est bien définie, il vous suffit de créer une couche pivot qui appelle vos fonctions métier.

De plus, Java EE est une API, certaines parties peuvent être remplacées ou vous pouvez en utiliser une partie. Le conteneur est principalement destiné aux EJB, aux Servlets JNDI et à d’autres petites choses. Tout cela peut également être utilisé par les applications de bureau.

La réponse dépend donc de votre objectif spécifique et de la conception / implémentation réelle de l'application.

Une alternative est le Framework Spring . Spring fournit son propre support pour lier des objets d'entité à la vue et gère l'obtention / le réglage pour vous une fois que celui-ci est câblé. Il existe de nombreux modules Spring parmi lesquels choisir. Spring MVC et Spring Webflow valent le détour. Spring MVC (IMO) est plus simple à utiliser, mais Sring Webflow permet une navigation plus complexe et des options plus étendues (ex: flow scope). Si vous recherchez un livre Spring In Action est une descente. Vous devrez vous attaquer à certains concepts (comme l’injection de dépendance) pour pouvoir utiliser Spring, mais cela en vaut vraiment la peine.

Une autre alternative est le cadre Tapestry5 . Tapestry est un framework open-source permettant de créer des applications Web dynamiques, robustes et hautement évolutives en Java. Tapestry complète et construit sur l’API Java Servlet standard. Il fonctionne donc dans n’importe quel conteneur de servlets ou serveur d’applications.

Tapestry divise une application Web en un ensemble de pages, chacune construite à partir de composants. Ceci fournit une structure cohérente, permettant au framework Tapestry d'assumer la responsabilité de préoccupations clés telles que la construction et la distribution d'URL, le stockage d'état persistant sur le client ou sur le serveur, la validation des entrées utilisateur, la localisation / internationalisation et la génération de rapports sur les exceptions. Le développement d'applications Tapestry implique la création de modèles HTML à l'aide de HTML brut et la combinaison des modèles avec de petites quantités de code Java. Dans Tapestry, vous créez votre application en termes d'objets, ainsi que les méthodes et propriétés de ces objets, et en particulier en termes d'URL et de paramètres de requête. Tapestry apporte un véritable développement orienté objet aux applications Web Java.

L'idéologie derrière les haricots est de nos jours dans tous les frameworks Java que je connaisse. Comme le mentionnait Rich, Spring est un bon / excellent système de logique d’entreprise (consultez son gabarit jdbc , ils sont tout simplement géniaux - un autre bijou est applicationContext.xml qui est) et pour la couche de visualisation, je préfère personnellement Apache Wicket .

Je ne crois pas que vous deviez créer le vôtre, mais plutôt trouver un cadre qui réponde à vos besoins et commencer à contribuer à sa base de code. Ainsi, vous commencerez avec une base d'utilisateurs déjà formée et votre code sera créé de manière plus approfondie. ce qui fera de vous un meilleur programmeur.

grails ( http://www.grails.org/ ) ou de griffon ( http://griffon.codehaus.org/ ) pourrait présenter un intérêt

StringTemplate est écrit par Terrence Parr, le gars derrière ANTLR. Si vous souhaitez générer une présentation textuelle à partir d'un modèle, c'est très bien.

J'ai obtenu d'excellents résultats en l'utilisant pour générer du XML, des pages Web et des fichiers de points du même modèle. Vous écrivez un modèle pour rendre un objet. Ce modèle peut appeler d'autres modèles (y compris de manière récursive), en fonction des données dérivées du modèle. (qv Fonctions d'image )

Getters et map.get () peuvent être appelés directement à partir des modèles. Le modèle peut être n'importe quel POJO. ST est fier de sa séparation stricte avec le contrôleur, de sorte que très peu de logique est autorisée dans les modèles eux-mêmes.

Comme pour toutes ces petites langues, c’est quelque chose de nouveau à apprendre et peut-être pas ce que vous cherchez. C’était vraiment bien pour moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top