Apache Wicket

A Wikipédiából, a szabad enciklopédiából
Apache Wicket
Fejlesztő Apache Software Foundation
Legfrissebb stabil kiadás 6.14.0 (2014. február 20.) [1] +/-
Legfrissebb fejlesztői kiadás ismeretlen +/-
Programozási nyelv Java
Operációs rendszer Multiplatform (Java virtuális gép)
Platform Java virtuális gép
Állapot aktív
Kategória Webalkalmazás keretrendszer
Licenc Apache Licenc 2.0
Az Apache Wicket weboldala

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é.[2]

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 sablon nyelvben í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 komponens fá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űzet esemé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.[3] 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 újra felhaszná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 fekete doboz 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 hook-okat 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 objektum-perzisztencia 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 Wicket-ben 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 Wikcetben. 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]

Kiadások[szerkesztés]

Kiadás Dátum Megjegyzések
1.3.7 2009-07-30 [4]
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."[5]
1.4.1 2009-08-21 [6]
1.4.9 2010-05-24 "... több, mint 15 hibajavítás és továbbfejlesztés."[7]
1.4.10 2010-08-11 "... több mint 30 hibajavítás és továbbfejlesztés."[8]
1.4.16 2011-02-25 "Elsődlegesen egy kisebb hibajavítás kiadás az 1.4.x (stabil) fejlesztési ágon."[9]
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."[10]
1.4.18 2011-08-09 "Elsődlegesen egy kisebb hibajavítási kiadás az 1.4.x (stabil) fejlesztési ágon."[11]
1.4.19 2011-10-19 "Elsődlegesen egy kisebb hibajavítási kiadás az 1.4.x (stabil) fejlesztési ágon."[12]
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."[13]
1.5.1 2011-09-29 "... több, mint 40 hibajavítás és 15 továbbfejlesztés."[14]
1.5.2 2011-10-24 "... több, mint 25 hibajavítás és 5 továbbfejlesztés."[15]
1.5.3 2011-11-14 "... több, mint 40 hibajavítás és továbbfejlesztés."[16]
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]

Referencia[szerkesztés]

Jegyzetek[szerkesztés]

  1. Apache Wicket - Apache Wicket 6.14.0 released. Wicket.apache.org. Retrieved on 2014-03-27.
  2. Dashorst, Martijn: Wicket graduates from Apache Incubation, 2007. július 20. (Hozzáférés: 2008. március 7.)
  3. 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.)
  4. Apache Wicket - Apache Wicket 1.3.7 marks end of life for Wicket 1.3. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
  5. Apache Wicket - Apache Wicket 1.4 takes typesafety to the next level. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
  6. Apache Wicket - Wicket 1.4.1 released. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
  7. Apache Wicket - Wicket 1.4.9 released. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
  8. Apache Wicket - Wicket 1.4.10 released. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
  9. Apache Wicket - Wicket 1.4.16 released. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
  10. Apache Wicket - Wicket 1.4.17 released. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
  11. Apache Wicket - Wicket 1.4.18 released. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
  12. Apache Wicket - Wicket 1.4.19 released. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
  13. Apache Wicket - Apache Wicket releases Wicket 1.5. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
  14. Apache Wicket - Wicket 1.5.1 released. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
  15. Apache Wicket - Wicket 1.5.2 released. Wicket.apache.org. Hozzáférés ideje: 2013-08-13.
  16. [1][halott link]

További információk[szerkesztés]

Cikkek a témában[szerkesztés]

Blogok[szerkesztés]

Dokumentáció[szerkesztés]

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.