Java View-Technologien und Frameworks - Java view technologies and frameworks
Java View-Technologien und -Frameworks sind webbasierte Softwarebibliotheken , die die Benutzeroberfläche oder " Ansichtsebene " von Java- Webanwendungen bereitstellen . Solche Anwendungsframeworks werden zum Definieren von Webseiten und zum Behandeln der von diesen Webseiten generierten HTTP- Anforderungen (Klicks) verwendet. Als Unterkategorie von Webframeworks überschneiden sich Frameworks auf Ansichtsebene häufig in unterschiedlichem Maße mit Webframeworks, die andere Funktionen für Java-Webanwendungen bereitstellen.
Java-Frameworks auf Ansichtsebene behaupten häufig, einige oder alle Entwurfsmuster für Modellansicht-Controller zu unterstützen.
Auf einen Blick
| Aktionsbasierte Frameworks: | Apache Struts , Spring MVC |
|---|---|
| Komponentenbasierte Frameworks: | Apache Click , Apache Tapisserie , Apache Wicket , JavaServer Faces |
| Web Template Systeme: | Apache Tiles , SiteMesh , Thymeleaf |
- JavaServer Faces (JSF), Apache Tapestry und Apache Wicket sind konkurrierende komponentenbasierte Technologien, die den zustandslosen HTTP-Anforderungs-Antwort-Zyklus und die Java-Servlet-API hinter einem objektorientierten , ereignisgesteuerten Komponentenmodell abstrahieren .
- Im Gegensatz dazu sind Struts und das Spring MVC Framework aktionsorientierte Frameworks, die eine dünnere Abstraktionsschicht über der Servlet- API bereitstellen .
- Apache Tiles ist ein Vorlagen-Framework, das für die Arbeit mit Struts entwickelt wurde.
- Facelets ist eine Ansichtsdefinition und Template-Technologie, die für die Arbeit mit JSF entwickelt wurde.
- SiteMesh kann mit jeder JSP verwendet werden .
- Facelets, Tapestry und Wicket haben ihre eigenen Vorlagenansätze, die auf HTML / XHTML basieren .
- Apache Click verwendet HTML-basierte Apache Velocity- Vorlagen und einfache alte Java-Objekte , wobei JavaServer Pages optional sind.
Servlet-API
Die Servlet-API ist die Grundlage für fast alle Java Web View-Technologien. Servlet bietet den grundlegenden Mechanismus zum Schreiben von Java- Klassen für Webanwendungen. Servlets können auf HTTP-Anfragen antworten, Cookies erstellen und Sitzungen verwalten.
JavaServer Pages (JSP)
- JSP basiert auf der Servlet-API und bietet ein dokumentenzentriertes, tagbasiertes Vorlagen- und Serverprogrammierungsmodell, mit dem viele Arten von Textinhalten generiert werden können.
- Java-Code kann in JSP-Dateien eingebettet sein und wird kompiliert und ausgeführt, wenn eine Anforderung empfangen wird.
Apache Struts
- Struts sorgt für eine Entkopplung von Controller und View.
- Anforderungen werden von einer Java-Klasse (Controller) empfangen, die entscheiden kann, welche Ansicht angezeigt werden soll.
- Die eigentliche Ansicht kann in verschiedenen Ansichtstechnologien wie JSP, freier Markierungsvorlage, Geschwindigkeitsvorlage usw. geschrieben werden.
- Eine XML- Konfigurationsdatei wird verwendet, um die "Seitennavigation" anzugeben, dh den Ablauf der Anforderung an den entsprechenden Controller, und welche Ansicht basierend auf dem Ergebnis des Controllers angezeigt werden soll.
- Konkurrent : Spring MVC, Grails
Apache Tapisserie
- Ein komponentenbasiertes Ansichtsframework.
- Klassen werden als POJOs geschrieben und der Bytecode zur Laufzeit transformiert
- Konfiguriert mit Anmerkungen und Namenskonventionen anstelle von XML
- Erzwingt im Vergleich zu JSPs eine klare Trennung von HTML-Markup und Java-Code.
- HTML-Vorlagen können von Webdesignern direkt in der Vorschau angezeigt werden
- Geänderte Komponentenklassen werden zur schnelleren Entwicklung live in die laufende Anwendung geladen.
- Verwendet das Navigationsmuster Post / Redirect / Get für die Formularübermittlung.
- Wettbewerber : Wicket, JSF, HybridJava
Apache Wicket
- Ein komponentenbasiertes Ansichtsframework.
- Seiten interagieren direkt mit zustandsbehafteten Java-Komponenten auf dem Server.
- Komponenten und ihr Status werden vom Wicket-Framework verwaltet, sodass der Anwendungsentwickler HttpSession nicht direkt zum Verwalten des Status verwenden muss.
- Benötigt kein XML für die Konfiguration.
- Erzwingt im Vergleich zu JSPs eine klare Trennung von HTML-Markup und Java-Code.
- Webseitenkomponenten werden aus dem Code in das HTML-Markup 'verschoben'.
- Konkurrent : Tapisserie, JSF, HybridJava
JavaServer Faces (JSF) und Facelets
- Eine Spezifikation für komponentenbasierte Ansichtsframeworks.
- Mojarra- und Apache MyFaces-Implementierungen sind verfügbar
- Verwendet normalerweise Facelets für XML / XHTML-basiertes Templating.
- Klassen werden als POJOs geschrieben, wobei Anmerkungen oder XML-Konfigurationsdateien verwendet werden, um sie Seiten- und Komponentenvorlagen zuzuordnen.
- Die Unified Expression Language ermöglicht das Binden von Komponentenfeldern und Ereignissen an POJO-Bean-Eigenschaften und -Methoden.
- Konvertierungs- und Validierungsbeschränkungen können in Facelets angegeben werden und werden automatisch angewendet. Dies führt normalerweise dazu, dass dieselbe Seite im Fehlerfall erneut veröffentlicht wird.
- Die Navigation kann über Konfigurationsdateiregeln erfolgen oder direkt auf der Seite angegeben werden.
- Kann Ajax transparent unterstützen .
- Konkurrent : Wicket, Tapisserie
SiteMesh
- SiteMesh ist ein HTML-Vorlagen-Framework, das auf dem Modell "Dekoration" basiert.
- Es ermöglicht die Erstellung einer 'Dekorations'-Vorlage, die dann auf jeden anderen HTML-Code angewendet wird, um einen neuen HTML-Code zu generieren.
- Der neu generierte HTML-Code enthält Elemente aus dem ursprünglichen HTML-Code, die in die Vorlage eingefügt wurden.
- Dies ermöglicht, dass der ursprüngliche HTML-Code sehr einfach ist und keine Formatierungs- oder Layoutspezifikationen enthält. Die Vorlage enthält wiederum keine tatsächlichen Informationen.
- Die zwei Blending ermöglicht einen konsistenten Look and Feel für alle Web - Seiten .
- Wettbewerber : Fliesen
Funke
- Funken Sie ein Micro-Web-Framework, das auf einem einfachen Routing-System basiert
- Es wird standardmäßig auf einem eingebetteten Jetty -Webserver ausgeführt, kann jedoch so konfiguriert werden, dass es auf anderen Webservern ausgeführt wird.
- Es unterstützt drei verschiedene Vorlagen-Engines: Velocity , FreeMarker und Moustache
- Es soll eine schnelle Entwicklung ermöglichen und verwendet keine Anmerkungen oder proprietären Lösungen.