Apache Tapestry

Apache Tapestry
"Tapestry 5: Kevesebb kód, többlet teljesítmény"
"Tapestry 5: Kevesebb kód, többlet teljesítmény"

FejlesztőApache Software Foundation
Legfrissebb stabil kiadás5.8.4 (stabil verzió, 2024. február 6.)[1]
Programozási nyelvJava
Operációs rendszermulti-platform (Java virtuális gép)
ÁllapotAktív
KategóriaWebes keretrendszer
LicencApache Licenc 2.0
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

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ó

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

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ámogotni 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

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

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

  • 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

  • Java EE
  • Webalkalmazás keretrendszerek összehasonlítása
  • Faceletek
  • Apache Wicket
  • Java view technológiák és keretrendszerek

Jegyzetek

  • Drobiazko, Igor (2012), Tapestry 5: Rapid web application development in Java, Igor Drobiazko, pp. 482, <http://www.tapestry5book.com/>. Hozzáférés ideje: 2014-10-22 Archiválva 2014. december 15-i dátummal a Wayback Machine-ben
  • Kolesnikov, Alexander (January 15, 2008), Tapestry 5: Building Web Applications: A step-by-step guide to Java Web development with the developer-friendly Apache Tapestry framework, Packt Publishing, pp. 280, ISBN 1-84719-307-2, <http://www.packtpub.com/tapestry-5/book>
  • Iok Tong, Ka (January 1, 2007), Enjoying Web Development with Tapestry (3rd ed.), pp. 497
  • Ship, Howard M. Lewis (2004), Tapestry in Action, Manning, pp. 580, ISBN 1932394117

Jegyzetek

  1. Download
  2. Howard Lewis Ship of Tapestry interview [part 1 (2012-10-22)]. [2013. január 22-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. január 28.)
  3. Drobiazko 2012, p. 1.
  4. http://tapestryjava.blogspot.com/2006/07/tapestry-5-updates.html
  5. Tapestry in Action - Preface by Howard Lewis Ship
  6. http://tawus.wordpress.com/2011/04/18/meeting-plastic/
  7. Archivált másolat. [2013. június 18-i dátummal az eredetiből archiválva]. (Hozzáférés: 2014. október 22.)
  8. http://tapestryjava.blogspot.com/2012/10/zeroing-in-on-tapestry-54.html
  9. Principles, 2010. december 21. [2012. október 12-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. október 12.)
  10. Tapestry5 future compatiblity?, 2009. április 30. [2013. január 21-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. január 21.)

További információk

  • 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

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.

Sablon:Apache
  • m
  • v
  • sz
Felső szintű projektek
Abdera · Accumulo · ActiveMQ · Ambari  · Ant · Aries · Apache HTTP Server · APR · Avro · Axis · Axis2 · Bloodhound · Buildr · Camel · Cassandra · Cayenne · Chemistry · Click · CloudStack · Cocoon · Continuum · Cordova · CouchDB · cTAKES · CXF · Deltacloud · Derby · Directory · Empire-db · Felix · Flex · Forrest · Geronimo · Gora · Gump · Hadoop · Hama · HBase · Hive · HBase · Isis · Jackrabbit · James · JMeter · Karaf · Lenya · Mahout · Marmotta · Maven · MINA · mod_perl · MyFaces · ODE · OFBiz · OpenEJB · OpenJPA · OpenNLP · OpenOffice · PDFBox · Phoenix · POI · Pivot · Qpid · River · Roller · Samza · ServiceMix · Shindig · Shiro · Sling · Spark · Stanbol · Storm · SpamAssassin · Struts · Subversion · Sqoop · Tapestry · Tcl · Thrift · Tiles · Tomcat · Trafficserver · Turbine · Tuscany · UIMA · Velocity · Wave · Wicket · Wink · Xalan · Xerces · XMLBeans
Commons projektek
BCEL · BSF · Daemon · Jelly
Lucene projektek
Lucene Java · Lucene.Net · Nutch · Solr
Hadoop projektek
HDFS · HBase · Hive · Pig · Spark · ZooKeeper
Egyéb projektek
Chainsaw · Batik · FOP · Log4j · XAP · Log4Net · Ivy
Incubator projektek
ACE · Composer · JSPWiki · XAP
Nyugdíjazott projektek
AxKit · Beehive · Bluesky · Cactus · Excalibur · Jakarta · Harmony · HiveMind · Slide · Shale · stdcxx · iBATIS · Jakarta
Licenc sztenderdek
Category Apache weboldala · Category Kategória · Commons pageCommons