Apache Tapestry
| Apache Tapestry | |
![]() | |
| "Tapestry 5: Kevesebb kód, többlet teljesítmény" | |
| Fejlesztő | Apache Software Foundation |
| Legfrissebb stabil kiadás | 5.9.0 (stabil verzió, 2025. február 11.)[1] |
| Programozási nyelv | Java |
| Operációs rendszer | multi-platform (Java virtuális gép) |
| Állapot | Aktív |
| Kategória | Webes keretrendszer |
| Licenc | Apache Licenc 2.0 |
| Kódtár | https://git-wip-us.apache.org/repos/asf/tapestry-5.git |
| Az Apache Tapestry weboldala | |
Az Apache Tapestry egy nyílt forráskódú komponens-orientált Java web alkalmazás keretrendszer koncepcióját tekintve hasonló a JavaServer Faces-hez és Apache Wicket-hez.[2] A Tapestry-t Howard Lewis Ship készítette, és az Apache Software Foundation 2006-ban fogadta el felsőszintű projektként.[3]
A Tapestry nagy hangsúlyt fektet az egyszerűségre, könnyen használhatóságra és fejlesztői munkatermelékenységre. A konvenció a konfiguráció felett (angolul Convention over Configuration) paradigmára épül, kiküszöbölve majdnem az összes XML konfigurációt.[4] Tapestry moduláris megközelítést használ a webfejlesztésben azzal, hogy erős kötés van minden weboldalon lévő felhasználói felület komponens (objektum) és az ő Java osztálya között. Ez a komponens alapú architektúra számos ötletet vesz kölcsön a WebObjects-től.[5]
Hello World példa
[szerkesztés | forrásszöveg szerkesztése]Egy minimális, sablonnal ellátott Tapestry alkalmazásnak csak három fájlra van szüksége:
- HelloWorld.tml
- Az (X)HTML sablon a /helloworld oldalhoz. Tapestry sablonok tartalmazhatnak bármilyen jól formált (X)HTML jelöléseket.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<body>
<p>Hello, ${username}</p>
</body>
</html>
- HelloWorld.java
- Az oldal osztálya, amely kapcsolódik a sablonhoz. Ez csak egy *username* property-t biztosít, amit a sablon elérhet.
package org.example.demo.pages;
/** a page class (automatically associated with the template file of the same name) */
public class HelloWorld {
/** an ordinary getter */
public String getUsername() {
return "world";
}
}
- web.xml
- A servlet alkalmazás Deployment descriptor-a, amely a Tapestry-t telepíti, mint servlet filter.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Tapestry Example</display-name>
<context-param>
<!-- megmondja a Tapestry 5-nek, hol keresse az oldalakat, komponenseket és ezek keverékét -->
<param-name>tapestry.app-package</param-name>
<param-value>org.example.demo</param-value>
</context-param>
<filter>
<!-- definiálja a Tapestry servlet filter-t -->
<filter-name>app</filter-name>
<filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
</filter>
<filter-mapping>
<!-- megmondja a servlet konténernek melyik kéréseket melyik Tapestry servlet filter-nek küldje -->
<filter-name>app</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Osztály transzformáció
[szerkesztés | forrásszöveg szerkesztése]A Tapestry bájtkód manipulációt használ, hogy átalakítson oldal és komponens osztályokat futásidőben. Ez a megközelítés lehetővé teszi az osztály és komponens osztályok számára, hogy egyszerű POJOkként legyenek megírva, néhány elnevezési konvencióval és annotációval potenciálisan triggerelve lényegi kiegészítő viselkedéssel az osztály betöltésekor. A Tapestry 5.0, 5.1 és 5.2 verziói a Javassist bájtkód manipulációs könyvtárat használták. Az ezt követő verziók lecserélték a Javassist-ot egy új Plastic nevű bájtkód manipulációs réteggel, amely az ObjectWeb ASM-en alapul.[6][7]
Kliens-oldali támogatás
[szerkesztés | forrásszöveg szerkesztése]A Tapestry 5-ös verziói az 5.3-asig becsomagolták a Prototype és script.aculo.us JavaScript keretrendszereket a Tapestry-specifikus könyvtárral együtt, hogy támogatni tudják a Ajax műveleteket első kézből. A harmadik fél által írt modulok szintén elérhetők, hogy integrálják a jQuery-t a Prototype/Scriptaculous helyett illetve mellett.
Az 5.4-es verziótól kezdve a Tapestry tartalmaz egy új JavaScript réteget, amely eltávolítja a beépített komponensek Prototype-hoz való függőségét, lehetővé téve a jQuery és más JavaScript keretrendszer beépíthető legyen modulként.[8]
Az 5.4-es verzió továbbá bevezette a JavaScript modulok támogatását a RequireJS modul betöltő rendszer használatával.
Alapvető alapelvek
[szerkesztés | forrásszöveg szerkesztése]A Tapestry projekt dokumentáció idézi a "négy alapelv"et, amely irányítja az összes fejlesztési döntést a Tapestry esetén 2008-tól az 5-ös verziótól kezdve:[9]
- Statikus struktúra, dinamikus viselkedés — oldal és komponens struktúra kifejezetten statikus kiküszöbölve a nagy oldalak és komponens fák készítésének szükségességét.
- Alkalmazkodási API – a keretrendszert arra tervezték, hogy alkalmazkodjon a kódhoz, és ne a kódnak kelljen alkalmazkodni a keretrendszernek
- Megkülönbözteti a nyilvános és belső API-kat – minden API kifejezetten "belső" (privát) kivéve azok, melyek szükségszerűen nyilvánosak.
- Biztosítja a visszamenőleges kompatibilitást – A Tapestry fejlesztők maximálisan elkötelezettek annak biztosítása mellett, hogy a frissíteni a Tapestry-t a legfrissebb verziójára mindig nagyon könnyű.
Kritika
[szerkesztés | forrásszöveg szerkesztése]A Tapestry-t sokan kritizálták, hogy a fő verziók visszafelé nem kompatibilisek, legfőképpen a 4-es és 5-ös közti átvitel problémás, ahol nincs tiszta migrációs út a már létező alkalmazásokhoz.[10] A projekt tagok azt elismerték, hogy ez fő probléma volt a Tapestry felhasználók számára a múltban, de a jövőben a visszafelé kompatibilitást tették meg a fő tervezési célkitűzésként.
Kapcsolódó projektek
[szerkesztés | forrásszöveg szerkesztése]- Tynamo Framework aka Trails 2 Archiválva 2014. október 16-i dátummal a Wayback Machine-ben a Tapestry 5-ön alapul.
- JumpStart oktatóanyag Archiválva 2014. október 12-i dátummal a Wayback Machine-ben Tapestry példákon keresztül.
Kapcsolódó szócikkek
[szerkesztés | forrásszöveg szerkesztése]Források
[szerkesztés | forrásszöveg szerkesztése]- Drobiazko, Igor (2012), Tapestry 5: Rapid web application development in Java, Igor Drobiazko, 482. o, hozzáférés: 2014. október 22.
{{citation}}: Unknown parameter|archívdátum=ignored (súgó); Unknown parameter|archívurl=ignored (súgó) Archiválva 2014. december 15-i dátummal a Wayback Machine-ben - Kolesnikov, Alexander (2008. január 15.), Tapestry 5: Building Web Applications: A step-by-step guide to Java Web development with the developer-friendly Apache Tapestry framework, Packt Publishing, 280. o, ISBN 1-84719-307-2
- Iok Tong, Ka (2007. január 1.), Enjoying Web Development with Tapestry (3rd ed.), 497. o, ASIN B00262M3HS
- Ship, Howard M. Lewis (2004), Tapestry in Action, Manning, 580. o, ISBN 1932394117
Jegyzetek
[szerkesztés | forrásszöveg szerkesztése]- ↑ "Release Notes 5.9.0".
- ↑ "Howard Lewis Ship of Tapestry interview [part 1] (2012-10-22)". 2013. január 22. dátummal az eredeti címről archiválva. Hozzáférés: 2013. január 28.
- ↑ Drobiazko 2012, p. 1.
- ↑ http://tapestryjava.blogspot.com/2006/07/tapestry-5-updates.html
- ↑ Tapestry in Action - Preface by Howard Lewis Ship
- ↑ http://tawus.wordpress.com/2011/04/18/meeting-plastic/
- ↑ "Archivált másolat". 2013. június 18. dátummal az eredeti címről archiválva. Hozzáférés: 2014. október 22.
- ↑ http://tapestryjava.blogspot.com/2012/10/zeroing-in-on-tapestry-54.html
- ↑ "Principles". 2010. december 21. 2012. október 12. dátummal az eredeti címről archiválva. Hozzáférés: 2012. október 12.
{{cite web}}: Unknown parameter|deadurl=ignored (|url-status=suggested) (súgó) - ↑ "Tapestry5 future compatiblity?". 2009. április 30. 2013. január 21. dátummal az eredeti címről archiválva. Hozzáférés: 2013. január 21.
További információk
[szerkesztés | forrásszöveg szerkesztése]- Tapestry weboldala
- Howard Lewis Ship
- Tynamo projekt Archiválva 2014. október 16-i dátummal a Wayback Machine-ben
- Getting Started példák Archiválva 2014. október 10-i dátummal a Wayback Machine-ben
Fordítás
[szerkesztés | forrásszöveg szerkesztése]- Ez a szócikk részben vagy egészben az Apache Tapestry 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.
