V sobotu 2. listopadu proběhla mohutná oslava naší plnoletosti !!
Multimediaexpo.cz je již 18 let na českém internetu !!
V tiskové zprávě k 18. narozeninám brzy najdete nové a zásadní informace.

Tapestry

Z Multimediaexpo.cz

(Rozdíly mezi verzemi)

Verze z 21. 10. 2010, 09:17

Tapestry je výkonný, inovativní a stále více populární open-source framework pro tvorbu webových aplikací v jazyce Java. Byl vytvořen nezávisle Howardem Lewis Shipem a poté adoptován korporací Apache Software Foundation (ASF). Framework doplňuje a navazuje na standardní Java Servlet API. Tapestry rozděluje webové aplikace do skupin stránek, z nichž každá je složena z komponent. Použití komponent umožňuje výrazně zvýšit produktivitu vývoje webu - to je důvod, proč všechny nové frameworky, včetně Tapestry, JavaServer Faces, a ASP.NET, jsou založené na komponentech. To zajišťuje konzistentní strukturu umožňující frameworku, aby přebíral odpovědnost za klíčové problémy, jako je výstavba URL, přetrvávající stav úložiště na straně klienta nebo na serveru, validace vstupu uživatele, lokalizace / internacionalizace a ohlašování výjimek. Aplikace zahrnují tvorbu HTML šablon pomocí prostého HTML a kombinování těchto šablon s malým množstvím kódu v jazyce Java. Je speciálně navržen tak, aby bylo vytváření nových komponent velmi snadné, neboť se jedná o rutinní postup při vytváření aplikací. Navíc je Tapestry snadno integrovatelný s jakýmkoliv druhem backendu, včetně JEE, Spring a Hibernate. Tapestry framework přináší skutečný objektově orientovaný přístup do tvorby webových aplikací v jazyce Java.

Tapestry je vydáván pod Apache Software licencí 2.0

Obsah

Verze

Tapestry má za sebou dlouhou historii. Nejstarší verze se datuje až do ledna roku 2000. V současné době nejsou verze 3 a 4 dále vyvíjeny, veškerá pozornost se směřuje na Tapestry 5.

Novinky v Tapestry 5.1

  • Tapestry nyní používá Blackbird JavaScript konzoli.
  • Tapestry nyní automaticky spojuje několik JavaScript knihoven v jeden pořadavek.
  • Požadavek z Ajaxu může nyní vracet instanci MultiZoneUpdate umožňující aktualizaci vícero míst v klientském prohlížeči.
  • Značné zvýšení výkonu některých vylepšení oproti Tapestry 5.0.18 (čas pro prvotní referování stránky a čas pro aktualizaci stránky se výrazně snížil)
  • Služby Tapestry lze nyní jednoduše aplikovat do Spring Beans při použití Tapestry/Spring knihovny integrace.
  • Tapestry nyní komprimuje odpovědi pro klienty, kteří podporují formát GZIP komprese.
  • Uspořádané a namapované konfigurace mohou být překrývány.
  • Podpora pro volání metod s parametry nebo vytváření seznamů.
… a další

Distribuce Tapestry

Distribuce Tapestry je k dispozici ke stažení na domovské stránce Tapestry.

Skládá se z těchto částí:

  • Jádro Tapestry Frameworku - Tento archív obsahuje všechny základní složky Tapestry. Rovněž obsahuje další třídy, které jsou využívány k poskytování služeb na stránkách a v komponentech.
  • Vložené komponenty - soubor výkonných add-on komponent pro Tapestry dodaných veřejností. Obsahuje komponenty, které jsou použity k vytvoření HTML odpovědí pro renderování stránek. Tyto komponenty mohou být použity v aplikacích aby zahrnuly logickou strukturu v HTML šablonách.
  • Třídy pro podporu anotací – Tato knihovna obsahuje anotace. Anotace modifikátory, které mohou být přidány do kódu Javy. To nám umožňuje provádět některé operace přímo uvnitř Java kódu, které by jinak byly specifikovány na stránce nebo komponentě. Anotace vyžadují JDK 1.5 ke spuštění.
  • Podpora pro portlety – add-on modul pro Tapestry, který umožňuje použití Tapestry k vytváření JSR-168 portletů.

Tapestry má řadu dalších runtime závislostí, které musí být staženy a přidány k JAR souborům popsaným výše do složky WEB-INF/lib webových aplikací Tapestry. Toho lze docílit pomocí skriptů Antu pro Tapestry, které automaticky stáhnou tyto závislosti. Tyto skripty vyžadují určitou konfiguraci, aby pracovaly správně. Podrobnosti jsou k dispozici na Tapestry Wikipedii. Alternativně lze tyto závislosti stáhnout ze složky quick-start Howarda Lewis Shipa jako tapestry-libraries.tar.gz (21,7 MB).

Příklad Hello World pomocí Tapestry

Tapestry aplikace vždy přikládají stránku nazvanou „Home“. Je to první stránka, která je zobrazena aplikací při prvním spuštění (jinak řečeno, když internetový prohlížeč přistupuje k počáteční URL). Tapestry stránky jsou vždy kombinací tříd Javy a šablon (mohli bychom říct HTML šablon, ale Tapestry není nijak limitováno jen na HTML). V mnoha případech Tapestry použije vestavěnou Java třídu, když mu sami nějakou nepřipravíme. Ukázku začneme vytvořením šablony Home.html:

<html>
  <head>
    <title>Tutorial: HelloWorld</title>
  </head>
  <body>
= HelloWorld Tutorial =
  </body>
</html>


Zatím v této HTML šabloně není nic zvláštního. Nyní můžeme nastavit web. xml:


<?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>Tutorial: HelloWorld</display-name>
  <servlet>
    <servlet-name>app</servlet-name>
    <servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>app</servlet-name>
    <url-pattern>/app</url-pattern>
  </servlet-mapping>
</web-app>


Zde jsme dali naší aplikaci jméno „app“. Používáme standardní Tapestry třídu ApplicationServlet jako náš servlet a namapovali jsme ho do /app. Jméno aplikace je relativně nepodstatné, Tapestry se přizpůsobí jakémukoliv jménu, které zadáte. Cesta na druhou stranu musí být /app. Není to pevně stanoveno v Tapestry, ale pokud bychom chtěli použít jinou cestu, vyžadovalo by to malé nastavování. Změníme teď naší Home stránku přidáním současného data a času. Upravená šablona vypadá takto:

<html>
  <head>
    <title>Tutorial: HelloWorld</title>
  </head>
  <body>
= HelloWorld Tutorial =
<p>
  The current data and time is: 
  '''<span jwcid="@Insert" value="ognl:new java.util.Date()">June 26 2005</span>'''
</p>
  </body>
</html>


Speciální atribut „jwcid“ je náznakem Tapestry, že je to komponenta a ne jen obyčejné HTML. Hodnota „@Insert“ atributu jwcid může být považována za „instanci komponenty Insert“. Je to jedna z mnoha zabudovaných Tapestry komponent. Možná je zde trochu matoucí text “ June 26 2005“ v těle tagu . Ten je zde proto, abychom viděli, jak stránka bude vypadat bez spuštění aplikace. Stránku Home.html můžeme spustit v prohlížeči nebo editorech jako Dreamweaver nebo HomeSite. Tím vlastně obejdeme Tapestry servlet a přistoupíme ke stránce přímo a pak se nám zobrazí právě zadaný text místo vygenerovaného data a času. Vraťme se nyní ještě k výrazu „ognl:new java.util.Date()“. Prefix „ognl:“ je signálem pro Tapestry, že se jedná o výraz, který má být vyhodnocen, a ne jen obyčejný String řetězec. Vyhodnocením výrazu získáme novou instanci třídy java.util.Date spojenou s komponentou Insert. Parametr value umožní komponentě Insert přístup k této hodnotě a tato komponenta dále zkonvertuje typ Date do textového řetězce a zobrazí ho na vygenerované stránce. A tím máme hotovou naší malou ukázku Hello World v Tapestry.

Tapestry tým

  • Howard Lewis Ship - tvůrce Tapestry a také autor knihy TapestryInAction.
  • Erik Hatcher - konzultant, spisovatel, mluvčí. Často přednáší na NoFluffJustStuffSymposiums circuit, kde mluví o Tapestry a dalších tématech.
  • Geoff Longman - tvůrce Spindlu, Eclipse pluginu pro tvorbu Tapestry aplikací.

Externí odkazy