Кіріспе
Ашық кодты веб-қосымшалар жасауға арналған Apache Tapestry – JavaServer Faces және Apache Wicket-ке ұқсас, компоненттік бағытталған Java веб-қосымшалар құрылғысы. Tapestry-ді Говард Льюис Шип жасаған, ал 2006 жылы Apache Software Foundation оны жоғары деңгейдегі жоба ретінде қабылдады. Tapestry қарапайымдылықты, қолданудың жеңілдігін және бағдарламашының өнімділігін баса назар аударады. Ол «Конфигурациядан гөрі конвенция» қағидасын ұстанады, XML конфигурациясын жоққа шығарады. Tapestry веб-дамытуға модульдік тәсіл қолданады, веб-беттегі әрбір пайдаланушы интерфейсі компонентінің (объектінің) және оған сәйкес Java класының арасында тығыз байланыс орнатады. Бұл компоненттік архитектура WebObjects-тен көптеген идеяларды қабылдаған.
Apache Tapestry is an open source component oriented Java web application framework conceptually similar to JavaServer Faces and Apache Wicket. Tapestry was created by Howard Lewis Ship, and was adopted by the Apache Software Foundation as a top level project in 2006. Tapestry emphasizes simplicity, ease of use, and developer productivity. It adheres to the Convention over Configuration paradigm, eliminating almost all XML configuration. Tapestry uses a modular approach to web development by having a strong binding between each user interface component (object) on the web page and its corresponding Java class. This component based architecture borrows many ideas from WebObjects.
Ерекше белгілері
Live Class Reloading Tapestry Java беттерінің, компоненттерінің, қызметтерді іске асыру кластарының, HTML үлгілерінің және компонент қасиеттері файлдарының өзгерістерін файлдық жүйеде бақылайды және қосымшаны қайта іске қосу қажеттілігінсіз, осы өзгерістерді жұмыс істеп тұрған қолданбаға «ыстық ауыстыру» арқылы енгізеді. Бұл кодты сақтағаннан кейін дереу кері байланыс циклын қамтамасыз етеді, бұл әзірлеушінің өнімділігін едәуір арттырады деп есептеледі. Компоненттік негіздегі беттер кіші, бірін-біріне енгізілетін компоненттерден құрастырылуы мүмкін, әр компоненттің өзінің үлгісі мен компонент класы болады. Арнайы компоненттерді жасау өте оңай деп хабарланады. Tapestry конфигурация үшін XML-дің орнына атау конвенцияларын және түсіндірмелерді пайдаланады – конфигурацияны конвенциямен алмастыру. HTTPS сессиясын сирек пайдалану Tapestry HTTPS сессиясын минималды түрде пайдаланады, сондықтан кластерленген және сессия көшірмеленген ортада жоғары тиімділікке ие болу үшін жасалған. Жариялау/Жайғастыру/Алу (PRG) Көптеген форма жіберулер Жариялау/Жайғастыру/Алу (PRG) үлгісін қолданады, бұл бірнеше рет форма жіберудің қателіктерін азайтады, URL-дерді пайдалануға ыңғайлы және кітапшаға қоюға қолайлы етеді, сонымен қатар браузердің «Артқа» және «Жаңарту» түймелерінің қалыпты жұмыс істеуін қамтамасыз етеді. Басқаруды инверсиялау (IoC) Tapestry жеңіл Басқаруды инверсиялау қабатына негізделген, ол Google Guice-қа ұқсас, бірақ Tapestry мінез-құлқының барлық аспектілерін конфигурациялауға және алмастыруға мүмкіндік береді.
Клиенттік қолдау
Tapestry 5 нұсқасы 5.3-ке дейін Prototype және Scriptaculous, сондай-ақ aculo.us JavaScript фреймворктерін және Tapestry-ге арналған кітапхананы Ajax операцияларын толыққанды қолдау үшін бірге қамтыды. Үшінші тарап модульдері Prototype/Scriptaculous орнына немесе олармен қатар jQuery-ны интеграциялауға мүмкіндік береді. 5.4 нұсқасынан бастап Tapestry жаңа JavaScript қабатын қамтиды, ол құрамындағы компоненттердің Prototype-ке тәуелділігін жояды, соның арқасында jQuery немесе басқа JavaScript фреймворкін қосуға болады. 5.4 нұсқасы сонымен қатар RequireJS модульдерді жүктеу жүйесі арқылы JavaScript модульдерін қолдауды ұсынады.
Сын
Тапитер негізгі нұсқалар бойынша кері үйлесімділік жоқ деп сынға ұшырады, әсіресе 4-ші нұсқадан 5-ші нұсқаға өту кезінде, бұрынғы қолданбалар үшін таза миграциялау жолы болмады. Жоба командасының мүшелері бұл мәселені Tapestry қолданушылары үшін бұрынғыда үлкен проблема деп мойындады және болашақта кері үйлесімділік Tapestry-дің маңызды жобалау мақсаты болды. 5-ші нұсқаны әзірлеу басталғанда, кері үйлесімділік Tapestry-дің төрт жаңа «Негізгі қағидасының» бірі ретінде тізімделді, ал қалған үш қағиданың екеуі кері үйлесімділіктен бас тартып, фреймворктің дамуын қамтамасыз етуге бағытталған. Жоба тобының мүшелері 5.0 нұсқасынан бастап шыққан барлық Tapestry нұсқаларының жоғары кері үйлесімді екенін мәлімдейді. Tapestry 5-тің алғашқы сыншылары құжаттаманың жеткіліксіздігін атап көрсетті. Жоба мүшелері бұл кемшілікті жаңадан қаралып, жаңартылған Пайдаланушы нұсқаулығы және басқа да құжаттама арқылы толығымен жойғанын мәлімдейді. 5.0 нұсқасынан бастап Tapestry Prototype және Scriptaculous JavaScript кітапханаларын қосты. Говард Льюис Шиптің сөзіне сәйкес, 2008-2009 жылдар аралығында бұл орынды таңдау болды. Бірақ содан бері Prototype-тың танымалдылығы төмендеп, jQuery-тің танымалдылығы күрт өсті. Оған жауап ретінде Tapestry қауымдастығы jQuery-ді Prototype-пен бірге немесе оның орнына пайдалануға мүмкіндік беретін модульдерді жасады. Сонымен қатар, Tapestry-дің қазіргі 5.4 нұсқасы Prototype-қа тәуелділікті толығымен жойып, оны jQuery немесе Prototype (немесе кез келген басқа JavaScript фреймворкі) қосылатын үйлесімділік қабатымен алмастырады.
Басқа жүйелермен байланыс
Говард Льюис Шиптің сөзінше, Tapestry бастапқыда Java-да WebObjects-та қолданылған негізгі идеялар мен тәсілдерді іске асыруға бағытталған әрекет ретінде жоспарланған, ол сол кезде Objective C тілінде және жабық кодпен жазылған. Apache Wicket-тің авторы Джонатан Локктың мәлімдемесінше, ол Tapestry-дің алғашқы нұсқаларының күрделілігіне жауап ретінде әзірленген. JavaServer Faces-тің стандартты көрініс технологиясы Facelets, өнеркәсіп стандарты ретінде JavaServer Faces қолдауымен "Tapestry сияқты фреймворкке" деген қажеттілікті қанағаттандыру мақсатында Tapestry-дің алғашқы нұсқаларынан шабыттанды.
Тарих
Версия Күні Сипаттамасы 2000 Howard Lewis Ship ішкі пайдалану үшін әзірледі 2002 04 Алғаш рет SourceForge-де GNU Lesser General Public License лицензиясы бойынша қолжетімді болды. 2004 04 Apache аясында Жакартаның кіші жобасы ретінде алғашқы шығарылым. 2006 01 JDK 1.5 аннотацияларына қолдау, жаңа деректерді тексеру жүйесі және қате туралы хабарларды жақсарту. 2008 12 Tapestry 4-тен толыққанды қайта жазу, конфигурациядан гөрі конвенцияны басымдыққа қоятын жаңа POJO негізіндегі компонент моделін енгізу және Hivemind-ті XML-сіз инверсиялық басқару қабатымен алмастыру. 2009 04 Өнімділік пен жадты жақсарту, автоматты GZIP сығылуы, JavaScript жинақтауы, бірақ Tapestry 5.0-ге кері үйлесімділікті сақтады. 2010 12 JSR 303 Bean Validation қосылды. Қызметтерді жүзеге асыруға тікелей класты қайта жүктеуді кеңейту. Беттерді жинақтау алынып тасталды. 2011 11 HTML5 doctype, JSR 330 инъекциясы үшін аннотацияларға қолдау, өнімділік пен жадты жақсарту, жаңа компоненттер, JavaAssist-тен ASM байт-кодын өңдеуге ауысу. 2012-2014 Қателерді жою және шағын жақсартулар. 2015-2019 Клиенттік жағынан маңызды жақсартулар. jQuery/Prototype қолдауын ауыстыруға арналған жаңа JavaScript қабаты, JavaScript модульдік жүйесі үшін Require.js, әдепкі стиль үшін Twitter Bootstrap қолданылады. 2020 03 Қазіргі тұрақты нұсқасы. Java 12 байт-коды, Typescript және Bootstrap 4 үшін қолдау.