Apache гобелені - Apache Tapestry

Apache гобелені
Apache Tapestry логотипі
Түпнұсқа автор (лар)Ховард Льюис кеме
ӘзірлеушілерApache Software Foundation
Тұрақты шығарылым
5.6.1 / 19 шілде, 2020 ж; 4 ай бұрын (2020-07-19)[1]
РепозиторийГобелен репозиторийі
ЖазылғанJava
Операциялық жүйеКросс-платформа (Java виртуалды машинасы )
ТүріВеб-бағдарламаның құрылымы
ЛицензияApache лицензиясы 2.0
Веб-сайтгобелен.apache.org

Apache гобелені болып табылады ашық көзі компонентке бағытталған Java қосымшаның веб-жүйесі тұжырымдамалық тұрғыдан ұқсас JavaServer Faces және Apache Wicket.[2] Гобеленді Ховард Льюис Шип жасады,[қашан? ] және қабылдады Apache Software Foundation жоғары деңгейлі жоба ретінде 2006 ж.[3]

Гобелен қарапайым, қолданудың қарапайымдылығына және әзірлеушілердің өнімділігіне баса назар аударады. Ол ұстанады Конфигурация туралы конвенция барлық дерлік XML конфигурациясын алып тастайтын парадигма.[4] Гобеленде веб-дамудың модульдік әдісі қолданылады міндетті әрқайсысының арасында пайдаланушы интерфейсі компонент (объект) веб-парақта және оған сәйкес Java сынып. Бұл компоненттік сәулет көптеген идеяларды алады WebObjects.[5]

Көрнекті ерекшеліктері

Сабақты қайта жүктеу
Гобелен файлдық жүйені Java бетіндегі сыныптарға, компоненттік сыныптарға, сервис енгізу кластарына, HTML шаблондарына және компоненттің қасиеттері файлдарына енгізілетін өзгерістерді бақылайды, және ол қайта іске қосуды қажет етпестен жұмыс істеп тұрған бағдарламаға өзгертулер енгізеді. Бұл әзірлеушілердің өнімділігін едәуір жақсартуға болатын өте қысқа кодты үнемдеуге мүмкіндік беретін кері байланыс циклын ұсынады.[6]
Компонентке негізделген
Беттер әрқайсысының шаблоны мен компонент сыныбы бар ұя салуға болатын шағын компоненттерден тұруы мүмкін. Таңдамалы компоненттерді құру өте маңызды емес делінеді.[7]
Конфигурация туралы конвенция
Гобеленде қосымшаны конфигурациялау үшін XML-ден гөрі, атау конвенциялары мен аннотациялар қолданылады.[8]
HTTPSession қосалқы пайдалану
HTTPSession-ді минималды пайдалану арқылы гобелен кластерлік, қайталанатын ортада жоғары тиімділікке арналған.[9]
Пост / Бағыттау / алу
Формаға жіберулердің көпшілігі келесіге сәйкес келеді Пост / Бағыттау / алу (PRG) үлгісі, бұл форманы жіберудің бірнеше апаттарын азайтады және URL мекенжайларын ыңғайлы және бетбелгіге айналдырады, сонымен қатар шолушының «Артқа» және «Жаңарту» батырмаларын қалыпты жұмыс істеуге мүмкіндік береді.[10]
Басқарудың инверсиясы (IoC)
Гобелен жеңіл салмаққа негізделген Басқарудың инверсиясы ұқсастықтары бар қабат Google Guice, бірақ гобеленнің барлық іс-әрекеттерін конфигурациялауға және ауыстыруға болатын етіп жасалған.[11]

Сәлем Әлемдік мысал

Минималды, шабандалы гобелен қосымшасына тек үш файл қажет:

HelloWorld.tml
/ Helloworld бетіне арналған (X) HTML үлгісі. Гобелен үлгілері кез-келген дұрыс құрылған (X) HTML түзетулерін қамтуы мүмкін.
<!DOCTYPE html> xmlns =«http://www.w3.org/1999/xhtml»       xmlns: t =«http://tapestry.apache.org/schema/tapestry_5_3.xsd»><body>    <p>Сәлеметсіз бе, $ {username}</p></body></html>
HelloWorld.java
Үлгіге байланысты бет сыныбы. Мұнда ол шаблонға қол жеткізе алатын * пайдаланушы аты * қасиетін ғана ұсынады.
пакет org.example.demo.pages;/ ** Бет сыныбы (автоматты түрде аттас шаблон файлымен байланысты) * /қоғамдық сынып Сәлем Әлем {    / ** Кәдімгі алушы * /    қоғамдық Жол пайдаланушы аты() {        қайту «Әлем»;    }}
web.xml
The сервлет қолдану Орналастыру дескрипторы, ол гобеленді сервлет сүзгісі ретінде орнатады.
<?xml version="1.0" encoding="UTF-8"?>        PUBLIC «- // Sun Microsystems, Inc.//DTD Web Application 2.3 // EN»        «http://java.sun.com/dtd/web-app_2_3.dtd»><web-app>    <display-name>Гобелен мысалы</display-name>    <context-param>        <!-- Tell Tapestry 5 where to look for pages, components and mixins -->        <param-name>гобелен.app-пакет</param-name>        <param-value>org.example.demo</param-value>    </context-param>    <filter>        <!-- Define the Tapestry servlet filter -->        <filter-name>қолданба</filter-name>        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>    </filter>    <filter-mapping>        <!-- Tell the servlet container that requests to send to the Tapestry servlet filter -->        <filter-name>қолданба</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping></web-app>

Кластың өзгеруі

Гобелен жұмыс кезінде беттерді және компоненттер кластарын түрлендіру үшін байт-кодтың манипуляциясын қолданады. Бұл тәсіл парақ пен компонент кластарын қарапайым етіп жазуға мүмкіндік береді POJOs, бірнеше атау конвенциялары мен аннотацияларымен, сынып жүктемесі кезінде айтарлықтай қосымша мінез-құлықты тудыруы мүмкін. 5.0, 5.1 және 5.2 гобелен нұсқалары қолданылған Джавасист байт-кодты манипуляциялау кітапханасы. Кейінгі нұсқалар Javassist-ті жаңа байт-кодты манипуляциялау деңгейімен алмастырды Пластикалық негізделген ObjectWeb ASM.[12][13]

Клиенттік қолдау

Гобелен 5 нұсқадан бастап 5,3-ке дейін жинақталған Прототип және script.aculo.us JavaScript рамкалары, гобеленге арналған кітапханамен бірге Ajax операцияларын бірінші дәрежелі азаматтар ретінде қолдайды. Үшінші тарап модульдері прототип / сценарийдің орнына немесе оған қосымша jQuery интеграциясы үшін қол жетімді.

5.4 нұсқасынан бастап, гобелен құрамында jQuery немесе басқа JavaScript құрылымын қосуға мүмкіндік беретін прототипке кіріктірілген компоненттердің сенімділігін жоятын жаңа JavaScript қабаты бар.[14]

5.4 нұсқасы JavaScript-ті қолдайды модульдер RequireJS модулін жүктеу жүйесін қолдану.

Негізгі принциптер

Гобелен жобасының құжаттамасы 2008 жылы 5-нұсқадан бастап гобеленге арналған барлық даму шешімдерін реттейтін төрт «қағидаға» сілтеме жасайды:[15]

  • Статикалық құрылым, динамикалық мінез-құлық - бет пен компонент құрылымы тұрақты болып табылады, бұл үлкен беттер мен компоненттер ағаштарын құру (және сессия жадында сақтау) қажеттілігін жоққа шығарады.
  • Adaptive API - фреймвор рамкаға бейімделуден гөрі кодқа бейімделуге арналған
  • Public API және API интерфейстерін ажыратыңыз - барлық API интерфейстері міндетті түрде жалпыға ортақ болып табылатындардан басқа «ішкі» (жеке) болып табылады.
  • Артқа үйлесімділікті қамтамасыз етіңіз - гобелен әзірлеушілері гобеленнің соңғы нұсқасын жаңарту әрқашан оңай болатындығына сенімді.

Сын

Гобелен негізгі нұсқаларда артқа үйлесімді емес деп сынға ұшырады, әсіресе 4-ші нұсқадан 5-ші нұсқаға ауысуда атап өтілді, мұнда бар қосымшалар үшін таза көші-қон жолы болмады.[16] Жоба тобы мүшелері мұны бұрын гобелен қолданушылары үшін үлкен проблема деп мойындады, ал артқы үйлесімділік гобелен үшін алға қарай жобалаудың басты мақсаты болды. 5-нұсқаны әзірлеудің басынан бастап, артқа үйлесімділік Гобеленнің төрт жаңа «негізгі қағидаларының» бірі ретінде тізімделді, ал қалған үшеуінің екеуі артқы үйлесімділікті жоғалтпай фреймворктың эволюциясын жасауға мүмкіндік берді. Жоба тобы мүшелері 5.0-тен бастап Tapestry-дің барлық шығарылымдары өте артта жұмыс істейтін болды деп мәлімдейді.

Tapestry 5-тің алғашқы сындары құжаттаманы кемшілік ретінде де атап өткен. Жоба мүшелері енді бұл жетіспеушілік негізінен толықтай өңделген және жаңартылған Пайдаланушы нұсқаулығымен және басқа құжаттармен жойылды деп мәлімдейді.

5.0 нұсқасынан бастап гобелен прототипі мен Scriptaculous JavaScript кітапханаларын біріктірді. Ховард Льюис Шиптің айтуынша, 2008-2009 жылдар аралығында бұл ақылға қонымды таңдау болған. Содан бері прототиптің танымалдығы төмендеп, jQuery-дің деңгейі күрт өсті. Бұған жауап ретінде гобелендер қауымдастығы прототипке немесе оның орнына jQuery-ді қолдануға мүмкіндік беретін модульдер жасады. Сонымен қатар, гобеленнің қазіргі нұсқасы, 5.4, прототипке тәуелділікті толығымен жояды, оны үйлесімділік деңгейімен алмастырады, оған jQuery немесе Prototype (немесе кез келген басқа JavaScript фреймбрін) қосуға болады.

Басқа құрылымдармен байланыс

Ховард Льюис Шиптің айтуы бойынша, гобелен алғашында Java-да WebObjects-та кездесетін кейбір жалпы тұжырымдамалар мен тәсілдерді енгізу әрекеті ретінде ойластырылған. Мақсат-С және жабық көз.[17]

Apache Wicket Wicket шығарушысы Джонатан Локктың айтуы бойынша гобеленнің алғашқы нұсқаларының күрделілігіне жауап ретінде әзірленген.[18]

Facelets, әдепкі көрініс технологиясы JavaServer Faces, гобеленнің алғашқы нұсқаларынан шабыттандырылды, бұл «индустрия стандарты ретінде JavaServer Faces қолдайтын гобелен сияқты құрылымға» деген қажеттілікті толтыру үшін.[19][20]

Тарих

НұсқаКүніСипаттама
Ескі нұсқасы, енді қолданылмайды: 1.02000Ішкі қолдану үшін Ховард Льюис Шип жасаған
Ескі нұсқасы, енді қолданылмайды: 2.02002-04Бірінші қол жетімді SourceForge астында GNU кіші жалпыға ортақ лицензиясы.[21]
Ескі нұсқасы, енді қолданылмайды: 3.02004-04Джакарта кіші жобасы ретінде Apache-дің алғашқы шығарылымы.[22]
Ескі нұсқасы, енді қолданылмайды: 4.02006-01JDK 1.5 аннотацияларына қолдау енгізді, кірісті тексерудің жаңа ішкі жүйесі және қателер туралы есеп беру жақсартылды [23]
Ескі нұсқасы, әлі де сақталған: 5.02008-12Tapestry 4-тен толықтай дерлік қайта жазыңыз, конфигурация туралы конвенцияны баса көрсететін POJO-ға негізделген компоненттердің жаңа моделін енгізіп, Hivemind-ті жаңа-XML инверсиясының басқару деңгейімен ауыстырды.
Ескі нұсқасы, әлі де сақталған: 5.12009-04Өнімділік пен жадты жақсарту, GZIP-ті автоматты түрде қысу, JavaScript-ті біріктіру, бірақ Tapestry 5.0-ге сәйкес келеді.
Ескі нұсқасы, әлі де сақталған: 5.22010-12Қосылды JSR 303 Bean Validation.[24] Қызметтік бағдарламаларға тірі сыныпты қайта жүктеу. Беттерді біріктіру жойылды.[25]
Ескі нұсқасы, әлі де сақталған: 5.32011-11HTML5 doctype-ге қолдау, инъекцияға арналған JSR-330 аннотациялары,[26] өнімділігі мен жадын жақсарту, жаңа компоненттер, JavaAssist-тен ASM байт-кодын басқаруға ауысқан
Ескі нұсқасы, әлі де сақталған: 5.3.1 - 5.3.82012-2014Қателерді түзету және кішігірім жақсартулар
Ағымдағы тұрақты нұсқа: 5.4-5.4.52015-2019Клиенттің негізгі жақсартулары. Ауыстырылатын jQuery / Prototype қолдауы үшін жаңа JavaScript қабаты, JavaScript модуль жүйесі үшін Require.js қолданады, Twitter жүктеуіші оның әдепкі стилі үшін.[27]
Ағымдағы тұрақты нұсқа: 5.52020-03Ағымдағы тұрақты нұсқа. Java 12 байт коды, Typescript және Bootstrap 4 қолдау.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  • Дробиазко, Игорь (2012), Гобелен 5: Java-да жылдам веб-қосымшалар жасау, Игорь Дробиазко, б. 482, мұрағатталған түпнұсқа 2014-12-15, алынды 2013-01-20
  • Колесников, Александр (15 қаңтар, 2008), Гобелен 5: Веб-қосымшаларды құру: әзірлеушілерге ыңғайлы Apache Tapestry фреймворкымен Java веб-дамыту бойынша қадамдық нұсқаулық, Packt Publishing, б. 280, ISBN  1-84719-307-2
  • Iok Tong, Ka (1 қаңтар, 2007), Гобеленмен веб-дамытудан рахат алу (3-ші басылым), б. 497, ASIN  B00262M3HS
  • Кеме, Ховард М. Льюис (2004), Іс-әрекеттегі гобелендер, Маннинг, б. 580, ISBN  1932394117

Ескертулер

  1. ^ «ASF Git Repos - гобелен-5.git / жаса». Алынған 4 қыркүйек 2019.
  2. ^ «Гобеленнен жасалған Ховард Льюис кемесінің сұхбаты [1 бөлім] (2012-10-22)». Архивтелген түпнұсқа 2013-01-22. Алынған 2013-01-28.
  3. ^ Дробиазко 2012, б. 1.
  4. ^ http://tapestryjava.blogspot.com/2006/07/tapestry-5-updates.html
  5. ^ Іс-әрекеттегі гобелен - Ховард Льюис Шиптің алғысөзі
  6. ^ http://tapestry.apache.org/class-reloading.html
  7. ^ Дробиазко 2012, б. 20.
  8. ^ Дробиазко 2012, б. 7.
  9. ^ http://tapestry.apache.org/performance-and-clustering.html
  10. ^ http://tapestry.apache.org/forms-and-validation.html
  11. ^ Дробиазко 2012, б. 7.
  12. ^ http://tawus.wordpress.com/2011/04/18/meeting-plastic/
  13. ^ «Мұрағатталған көшірме». Архивтелген түпнұсқа 2013-06-18. Алынған 2013-02-21.CS1 maint: тақырып ретінде мұрағатталған көшірме (сілтеме)
  14. ^ http://tapestryjava.blogspot.com/2012/10/zeroing-in-on-tapestry-54.html
  15. ^ «Принциптер». 2010-12-21. Мұрағатталды 2012 жылғы 12 қазандағы түпнұсқадан. Алынған 2012-10-12.
  16. ^ «Гобелен5 болашақ үйлесімділігі [sic]". 2009-04-30. Алынған 2013-01-21.
  17. ^ «Мұрағатталған көшірме». Архивтелген түпнұсқа 2013-01-22. Алынған 2013-01-28.CS1 maint: тақырып ретінде мұрағатталған көшірме (сілтеме)
  18. ^ https://web.archive.org/web/20040909074534/http://www.theserverside.com/news/thread.tss?thread_id=28162
  19. ^ https://web.archive.org/web/20070706220453/https://facelets.dev.java.net/
  20. ^ https://web.archive.org/web/20130113100928/http://www.jsfcentral.com/articles/facelets_1.html
  21. ^ «Гобелен: Java веб-компоненттерінің 2.0 нұсқасы шықты». Алынған 2013-01-20.
  22. ^ «Гобелен 3.0 қорытынды шығарылымы». Алынған 2013-01-20.
  23. ^ «Гобелен 4.0 шығарылды». Алынған 2013-01-20.
  24. ^ «Гобелен және JSR-303 Bean Validation API». 2010-01-04. Мұрағатталды түпнұсқадан 2010 жылғы 16 сәуірде. Алынған 2010-03-13.
  25. ^ «Гобелен 5.2 хабарландыру». 2010-12-17. Мұрағатталды түпнұсқадан 2012 жылғы 14 қарашада. Алынған 2012-11-14.
  26. ^ http://tapestry.apache.org/using-jsr-330-standard-annotations.html
  27. ^ «JavaScript қайта жазу». Архивтелген түпнұсқа 2012-11-14. Алынған 2013-01-20.

Сыртқы сілтемелер