Java view technologies and frameworks: Difference between revisions

Content deleted Content added
Reverted to revision 604059445 by Macofe (talk): Rv not constructive. (TW)
 
(44 intermediate revisions by 28 users not shown)
Line 1:
{{Short description|Programming language and libraries}}
'''Java view technologies and frameworks''' are [[web-based]] [[software libraries]] that provide the [[user interface]], or "[[Model–view–controller|view-layer]]", of [[Java (programming language)|Java]] [[web application]]s. Such [[application framework]]s are used for defining [[web page]]s and handling the [[HTTP]] [[List of HTTP header fields#Requests|requests]] (clicks) generated by those web pages. As a sub-category of [[web application frameworksframework]]s, view-layer frameworks often overlap to varying degrees with web frameworks that provide other functionality for Java web applications.
 
Java view-layer frameworks often claim to support some or all of the [[Model–view–controllermodel–view–controller]] design pattern.
 
==At a glance==
{| class="wikitable" border="1"
|-
! Action-based frameworks:
| [[Apache Struts]], [[Spring Framework|Spring MVC]]
|-
! Component-based frameworks:
| [[Apache Click]], [[Apache Tapestry]], [[Apache Wicket]], [[JavaServerJakarta Faces]]
|-
! Web template systems:
| [[Apache Tiles]], [[SiteMesh]], [[Thymeleaf]]
|-
|}
 
* [[JavaServerJakarta Faces]] (JSF), [[Apache Tapestry]] and [[Apache Wicket]] are competing component-based technologies, abstracting the [[Stateless protocol|stateless]] HTTP request-response cycle and the [[JavaJakarta Servlet]] [[API]] behind an [[Object-oriented programming|object-oriented]], event-driven component model.
* In contrast, Struts and the [[Spring Framework|Spring MVC Framework]] are action-oriented frameworks that provide a thinner [[abstraction layer]] over the servlet [[API]].
* Apache Tiles is a templating framework designed to work with Struts.
* [[Facelets]] is a view definition and templating technology designed to work with JSF.
* [[SiteMesh]] can be used with any [[JavaServerJakarta Server Pages|JSPJakarta Pages]] (JSP).
* Facelets, Tapestry and Wicket have their own templating approaches based on [[HTML]]/[[XHTML]].
* [[Apache Click]] uses HTML based [[Apache Velocity]] templates and [[Plainplain Oldold Java Objectobject]]s (POJOs), with [[JavaServer Pages]]JSP optional.
 
==Servlet API==
{{main |Jakarta Servlet}}
 
The Servlet API is the foundation of almost all Java Web View technologies. ServletsServlet provides the basic mechanism for writing Java [[Classclass (computer programming)|classesclass]]es for web applications. Servlets can respond to HTTP requests, create cookies and maintain sessions.
 
==JavaServerJakarta Pages (JSP) ==
{{main |Jakarta Server Pages}}
* Built on top of the Servlet API, JSP provides for an HTML-centric server programming model.
 
* Built on top of the Servlet API, JSP provides fora an HTMLdocument-centric, tag-based templates, server programming model which can generate many forms of textual content.
* Java code may be embedded in JSP files and is compiled and executed when a request is received.
 
==Apache Struts==
{{main |Apache Struts}}
* Struts provides for a [[Coupling (computer programming)|decoupling]] of the Controller and the View.
 
* Struts provides for a [[Couplingcoupling (computer programming)|decoupling]] of the Controller and the View.
* Requests are received by a Java Class (Controller) which can decide which View to display.
* The actual View can be written in different view technologies, like JSP, free marker template, velocity template etc.
Line 41 ⟶ 47:
 
==Apache Tapestry==
{{main |Apache Tapestry}}
 
* A component-based view framework.
* Classes are written as POJOs and byte-code transformed at run timeruntime
* Configured with annotations and naming conventions rather than XML
* Compared to JSPs, enforces a clear separation of [[HTML element|HTML markup]] and Java code.
* HTML templates arecan be directly previewablepreviewed by web designers
* Changed component classes are live-reloaded into running application for faster development.
* Uses the [[Post/Redirect/Get]] navigation pattern for form submission.
* '''Competitor''': Wicket, JSF, HybridJava
 
==Apache Tiles==
In this Java jGrasp Training Course we will see an introduction to this development environment used to write Java programs. We will see over the course classes, how to create them, what they contain, and how to create objects in the main method. We will also discuss constructors, getters and setters, and...
{{see also |d:Special:EntityPage/Q28912908|l1=Apache Tiles}}
 
* This is an HTML templating framework based on the [[composite pattern]].
* It allows for the HTML page to be broken up into multiple "pagelets", called Templates, Definitions and Composing pages.
* At [[runtime (program lifecycle phase)|runtime]] the pagelets are stitched together to generate the final HTML. Pages are written in JSP.
* '''Competitor''': SiteMesh
 
==Apache Wicket==
{{main |Apache Wicket}}
 
* A component-based view framework.
* Pages directly interact with stateful Java components on the server.
Line 59 ⟶ 75:
* Compared to JSPs, enforces a clear separation of [[HTML element|HTML markup]] and Java code.
* Web page components are 'pushed' into the HTML markup from the code.
* '''Competitor''': Tapestry, JSF, HybridJava
 
==JavaServerJakarta Faces (JSF) and Facelets==
{{main |Jakarta Faces}}
 
==JavaServer Faces (JSF) and Facelets==
* A specification for component-based view frameworks.
* [[Eclipse Mojarra]] and [[Apache MyFaces]] implementations are available
* Typically uses Facelets for XML/XHTML-based templating.
* Classes are written as POJOs, with and Annotations or XML configuration files used to associate them with page and component templates.
* The [[Unified Expression Language]] allows binding component fields and events to POJO bean properties and methods.
* Conversion and validation constraints can be specified in Facelets and are automatically applied, normally resulting in reposting of the same page with error information in case of failure.
Line 73 ⟶ 91:
 
==SiteMesh==
{{main |SiteMesh}}

* [[SiteMesh]] is an HTML templating framework based on the "Decoration" model.
* It allows for the creation of a 'decoration' template which is then applied to any other HTML to generate a new HTML.
* The newly generated HTML contains elements from the original HTML blended into the template.
Line 80 ⟶ 100:
* '''Competitor''': Tiles
 
==Spark==
<!-- formatting; please do not remove until some more text lines are added to compensate spacing -->
{{main |Spark (software)}}
 
* Spark a micro web framework built around a simple routing system
==See also==
* It runs on an embedded [[Jetty (web server)|Jetty]] web server by default, but can be configured to run on other webservers.
{{Portal|Java}}
* It supports three different templates engines: [[Apache Velocity|Velocity]], [[FreeMarker]] and [[Mustache (template system)|Mustache]]
*[[List of web service frameworks]]
* It aims to facilitate rapid development, and does not make use of annotations or proprietary solutions.
 
==ReferencesSee also==
{{Portal|Computer programming}}
* [[Java Servlet]] Technology (http://java.sun.com/products/servlet/)
* [[List of web service frameworks]]
* [[JavaServer Pages]] Technology (http://java.sun.com/products/jsp/)
* [[List of Java frameworks]]
* [[Apache Struts]] 2 Documentation (http://struts.apache.org/2.1.6/docs/home.html)
* Apache Tiles (http://tiles.apache.org/)
* [[Click Framework]] Project Documentation (http://incubator.apache.org/click/)
* Apache Wicket (http://wicket.apache.org/)
* [http://tapestry.apache.org/ Tapestry Home Page]
* [http://www.hybridjava.com/ HybridJava Home Page]
 
[[Category:Java (programming language)]]
[[Category:Java APIs]]