Apache Wicket
Az Apache Wicket gyakran csak Wicket, egy pehelysúlyú komponens alapú java nyelvű webalkalmazás keretrendszer, hasonló JavaServer Faces-hez illetve a Tapestry-hez. Eredetileg Jonathan Locke kezdte írni 2004 áprilisában. Az 1.0-s verziót 2005 júniusában adták ki. 2007 júniusában vált az Apache felsőszintű projektjévé.[1]
Működési elve
[szerkesztés]A hagyományos modell-nézet-vezérlő (angol rövidítéssel MVC) keretrendszerek a teljes HTTP-kérésre és teljes oldalra alapozva működnek. Minden kérési ciklusban a bejövő kérések le vannak képezve egy metódusra a vezérlő objektumban, amely ezután generálja a kimenő választ az teljes egészében, általában adatokat szedve ki egy modellből, amivel aztán feltölt egy speciális webes sablonnyelvben írt nézetet. Ez teszi a alkalmazás vezérlési folyamatát tisztává és egyszerűvé, ugyanakkor a kód-újrafelhasználást a vezérlőben bonyolulttá.
Ezzel szemben a Wicket esetében az állapottal rendelkező GUI-keretrendszerek szolgáltak mintául, mint amilyen pl. a Swing. A Wicket alkalmazások komponensfák, melyek figyelőket (angolul listener) delegálnak hogy reagáljanak a HTTP-kérésekre (hivatkozásokra és formokra), ugyanolyan módon, mint a Swing-komponensek reagálnak az egér- és billentyűzeteseményekre. Ezért a Wicketet komponens alapú keretrendszerek közé lehet sorolni, ha kategorizálni szeretnénk.
Tervezési alapelvek
[szerkesztés]A Wicket egyszerű XHTML szöveges fájlokat használ a sablonokhoz (angolul template), mely megköveteli a megjelenítés és az üzleti logika tiszta különválasztását és lehetővé teszi a sablonok szerkeszthetőségét hagyományos WYSIWYG szerkesztőeszközökkel.[2] Mindegyik komponens egy nevesített elemhez van kötve az XHTML-ben, és felelős az adott elem rendeléséért a végső kimenetben. Az oldal egyszerűen egy felső szintű komponens és pontosan egy XHTML sablonnal van párosítva. Egy speciális címkét (angolul tag) használva, egyes komponens csoportok kiemelhetők egy ún panal komponensbe, amely teljes mértékben újrafelhasználható az adott oldalon, más oldalakon vagy teljesen más paneleken.
Minden komponenst a saját modellje támogat, amely reprezentálja a komponens állapotát. A keretrendszernek nincs tudomása arról, hogy a komponensek hogyan kommunikálnak a modelljükkel, amelyek feketedoboz-objektumként viselkednek, automatikusan szerializáltak és perzisztáltak a kérések között. Az összetettebb modellek leválaszthatók (angolul detachable) és hookokat nyújtanak ahhoz, hogy gondoskodjanak a saját tárolásukról és visszaállításukról minden kérési ciklus elején és a végén. A Wicket nem követel meg semmilyen objektumperzisztencia vagy ORM réteget, így az alkalmazások gyakran használják a Hibernate objektumok, EJB vagy POJOk egyfajta kombinációját modellként.
A Wicketben minden szerver oldali állapot automatikusan kezelve van. Soha nincs szükség a HttpSession objektum vagy hasonló csomagoló közvetlen használatához az állapot tárolásához. E helyett az állapot a komponensekhez tartozik. Minden szerver oldali oldal komponens tartalmaz állapottal rendelkező komponensek beágyazott hierarchiáját, ahol minden komponens modellje végül is egy POJO (Plain Old Java Object).
A Wicket leginkább az egyszerűségről szól. Nincsenek konfigurációs fájlok, melyeket meg kell tanulni a Wicketben. A Wicket egy egyszerű osztályhierarchia a komponens struktúrához következetes megközelítéssel.
Példa
[szerkesztés]Egy Hello World Wicket alkalmazás, 4 fájllal:
- HelloWorld.html
- The XHTML template.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd"
xml:lang="en" lang="en">
<body>
<span wicket:id="message" id="message">Message goes here</span>
</body>
</html>
- HelloWorld.java
- Az oldal komponensek, melyek a sablonhoz köthetők. Ez valójában egy gyerek komponenshez kötött (a Label komponens neve "message").
package org.wikipedia.wicket;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
public class HelloWorld extends WebPage {
/**
* Constructor
*/
public HelloWorld() {
add(new Label("message", "Hello World!"));
}
}
- HelloWorldApplication.java
- A fő alkalmazás osztály, amely a kéréseket irányítja a weboldalon a HelloWorld oldal komponenshez.
package org.wikipedia.wicket;
import org.apache.wicket.protocol.http.WebApplication;
public class HelloWorldApplication extends WebApplication {
/**
* Constructor.
*/
public HelloWorldApplication() {
}
/**
* @see org.apache.wicket.Application#getHomePage()
*/
public Class getHomePage() {
return HelloWorld.class;
}
}
- web.xml
- A Servlet alkalmazás Deployment descriptor-a, amely telepíti a Wicket-et, mint a servlet alapértelmezett handlere, és gondoskodik arról, hogy a HelloWorldApplication példányosodjon induláskor.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>Wicket Example</display-name>
<filter>
<filter-name>HelloWorldApplication</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>org.wikipedia.wicket.HelloWorldApplication</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>HelloWorldApplication</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Komponensek
[szerkesztés]- Az alapvető komponensek mint a formok, linkek, ciklusok stb. beépítettek. Lásd Wicket komponensek Archiválva 2014. július 12-i dátummal a Wayback Machine-ben
- Az összes komponens
Kiadások
[szerkesztés]Kiadás | Dátum | Megjegyzések |
---|---|---|
1.3.7 | 2009-07-30 | [3] |
1.4 | 2009-07-30 | "elrugaszkodás a múlttól, magunk mögött hagyjuk a Java 1.4-et és minimális JDK verzióként a Java 5-t lesz megkövetelt. A Java 5 felé való elmozdulás mint megkövetelt minimális platform esetén képesek voltunk a Java 5 idiómákat hasznosítani és a típus biztosságot emelni az API-jainkban."[4] |
1.4.1 | 2009-08-21 | [5] |
1.4.9 | 2010-05-24 | "... több, mint 15 hibajavítás és továbbfejlesztés."[6] |
1.4.10 | 2010-08-11 | "... több mint 30 hibajavítás és továbbfejlesztés."[7] |
1.4.16 | 2011-02-25 | "Elsődlegesen egy kisebb hibajavítás kiadás az 1.4.x (stabil) fejlesztési ágon."[8] |
1.4.17 | 2011-04-02 | "Elsődlegesen egy nem jelentős hibajavítási kiadás az 1.4.x (stabil) fejlesztési ágon."[9] |
1.4.18 | 2011-08-09 | "Elsődlegesen egy kisebb hibajavítási kiadás az 1.4.x (stabil) fejlesztési ágon."[10] |
1.4.19 | 2011-10-19 | "Elsődlegesen egy kisebb hibajavítási kiadás az 1.4.x (stabil) fejlesztési ágon."[11] |
1.5.0 | 2011-09-07 | "Apache Wicket 1.5 fejlesztés alatt állt az elmúlt két évben és számos továbbfejlesztést hozott az előző verziókhoz képest."[12] |
1.5.1 | 2011-09-29 | "... több, mint 40 hibajavítás és 15 továbbfejlesztés."[13] |
1.5.2 | 2011-10-24 | "... több, mint 25 hibajavítás és 5 továbbfejlesztés."[14] |
1.5.3 | 2011-11-14 | "... több, mint 40 hibajavítás és továbbfejlesztés."[15] |
1.6 | 2012-09-05 | Beépített jQuery integráció, teljes kontroll az AJAX kérések felett, továbbfejlesztett esemény regisztráció a böngészőkben, nagy adathalmazok támogatása, függőség kezelés a kliens oldali JavaScript könyvtárakhoz, a websocketek kísérleti támogatása |
1.6.3 | 2013-01-02 | jQuery 1.8.2; JavaScript hibák javítása az IE7-ben IE8-ban. |
1.6.4 | 2013-01-14 | jQuery 1.8.3, bootstrap 2.2.2, JSR 303 BeanValidation támogatás, hierarchikus visszajelzési panel. |
Kapcsolódó szócikkek
[szerkesztés]Források
[szerkesztés]- Apache Wicket Cookbook, 1st, Packt Publishing, 312. o. (2011. május 15.). ISBN 1-84951-160-8
- Wicket in Action, 1st, Manning, 392. o. (2008. szeptember 15.). ISBN 1-932394-98-2
- Gurumurthy, Karthik. Pro Wicket [archivált változat], 1st, Apress, 328. o. (2006. szeptember 7.). ISBN 1-59059-722-2. Hozzáférés ideje: 2016. szeptember 20. [archiválás ideje: 2010. december 23.] Archiválva 2010. december 23-i dátummal a Wayback Machine-ben
Jegyzetek
[szerkesztés]- ↑ Dashorst, Martijn: Wicket graduates from Apache Incubation, 2007. július 20. (Hozzáférés: 2008. március 7.)
- ↑ Carleton, Daniel: Java Web Development the Wicket Way. DevX, 2007. október 12. [2008. március 10-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. március 7.)
- ↑ Apache Wicket - Apache Wicket 1.3.7 marks end of life for Wicket 1.3 Archiválva 2011. január 5-i dátummal a Wayback Machine-ben. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
- ↑ Apache Wicket - Apache Wicket 1.4 takes typesafety to the next level Archiválva 2012. április 25-i dátummal a Wayback Machine-ben. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
- ↑ Apache Wicket - Wicket 1.4.1 released Archiválva 2010. szeptember 22-i dátummal a Wayback Machine-ben. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
- ↑ Apache Wicket - Wicket 1.4.9 released Archiválva 2014. október 6-i dátummal a Wayback Machine-ben. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
- ↑ Apache Wicket - Wicket 1.4.10 released Archiválva 2012. április 25-i dátummal a Wayback Machine-ben. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
- ↑ Apache Wicket - Wicket 1.4.16 released Archiválva 2012. április 25-i dátummal a Wayback Machine-ben. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
- ↑ Apache Wicket - Wicket 1.4.17 released Archiválva 2014. október 6-i dátummal a Wayback Machine-ben. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
- ↑ Apache Wicket - Wicket 1.4.18 released Archiválva 2014. október 6-i dátummal a Wayback Machine-ben. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
- ↑ Apache Wicket - Wicket 1.4.19 released Archiválva 2014. október 6-i dátummal a Wayback Machine-ben. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
- ↑ Apache Wicket - Apache Wicket releases Wicket 1.5 Archiválva 2014. október 6-i dátummal a Wayback Machine-ben. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
- ↑ Apache Wicket - Wicket 1.5.1 released Archiválva 2014. október 6-i dátummal a Wayback Machine-ben. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
- ↑ Apache Wicket - Wicket 1.5.2 released Archiválva 2011. november 1-i dátummal a Wayback Machine-ben. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
- ↑ [1][halott link]
További információk
[szerkesztés]Cikkek a témában
[szerkesztés]- Wicket: A simplified framework for building and testing dynamic Web pages
- A First Look at the Wicket Framework
- The Server Side discussion on Wicket 1.0 Archiválva 2014. október 6-i dátummal a Wayback Machine-ben
- Tim Boudreau's Blog
- Kickstart Wicket in NetBeans IDE 6.1
- The Server Side discussion Archiválva 2004. szeptember 9-i dátummal a Wayback Machine-ben
- Javalobby interview with Martijn Dashorst (project chairman)
- Wicket introduction presentation by Martijn Dashorst
- Wicket at FOSDEM 2011
Blogok
[szerkesztés]Dokumentáció
[szerkesztés]- Reusable components and patterns for Wicket
- Site that has live demos and a repository of components
- Wiki with how-tos, a manual and more
- Plethora of examples of using Wicket in the real world
- A free and comprehensive user guide to Wicket
Fordítás
[szerkesztés]- Ez a szócikk részben vagy egészben az Apache Wicket című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.