Struts vs Struts2
Struts (також відомий як Apache Struts або Struts 1) - це платформа з відкритим кодом між платформами, написана на Java, яка призначена для розробки веб-додатків Java EE. Це було однією з початкових рамок веб-додатків Java EE. Але через кілька років прийшов Struts2 (або Struts версії 2), і це був зовсім інший і вдосконалений фреймворк веб-додатків. У ньому було розглянуто декілька питань, які в початковій версії сприймалися як недоліки. Зараз Struts2 дуже активно використовується для розробки програм Java EE у світі.
Що таке Струц?
Рамка Struts (Struts 1) була однією з початкових рамок веб-додатків для розробки веб-додатків Java EE. Рамка Struts заохочує використання архітектури MVC (Model-View-Controller). Це розширення Java Servlet API. Крейг МакКлахан - оригінальний творець Струтса. Спочатку він був відомий як Джакарата Струц і підтримувався в рамках Джакартського проекту програмного фонду Apache Software. Він випускається під ліцензією Apache License 2.0. Рамка Struts називається фреймворком на основі запиту, і вона складається з трьох основних компонентів: обробника запитів, обробника відповідей та бібліотеку тегів. Стандартний URI (Уніфікований ідентифікатор ресурсу) відображається до обробника запиту. Обробник відповідей відповідає за передачу контролю. Для створення інтерактивних програм із формами можна використовувати функції, пропоновані бібліотекою тегів. Підтримки підтримують програми REST та різні технології, такі як SOAP, AJAX тощо.
Що таке Struts2?
Рамки розробників Java EE в той час містили певні обмеження (головним чином, відсутність розділення між шаром презентації, рівнем обробки запитів та моделлю), і, отже, через кілька років Struts2 прибув. Власне, Struts2 зовсім відрізнявся від Struts. Насправді вони навіть не поділили однакову базу коду, тому що Struts2 був просто результатом перейменування рамки WebWork 2.2 (тобто спільноти WebWork та Struts, які працювали окремо деякий час, врешті-решт об'єдналися руками, щоб придумати Struts2). Його поточний стабільний реліз - версія 2.2.3, яка вийшла у травні 2011 року.
Яка різниця між Struts і Struts2?
Однією з багатьох проблем структури Struts була необхідність програмування на абстрактні класи замість інтерфейсів. Це було вирішено рамкою Struts2. Наприклад, структура Struts вимагає розширення класів Action з абстрактних базових класів, але дії Struts2 можуть реалізувати інтерфейс Action. Через відмінності в моделі нарізки між двома версіями, проблеми безпеки потоку, які виникли в рамках Struts щодо об'єктів Action, не виникають у структурі Struts2. Причина полягає в тому, що об’єкти дії Struts2 екземпляруються для кожного запиту, тоді як дія в структурі Struts має лише один екземпляр для обробки всіх запитів цієї дії. На відміну від дій у рамках Struts, дії Struts2 не залежать від API сервлетів.
Тестабельність структури Struts2 порівняно вище, ніж структура Struts. Ви можете перевірити дії Struts2, просто дотримуючись трьох кроків: інстанція, встановлення властивостей та виклик методів. Збір вводу простіший у структурі Struts2, оскільки властивості Action використовуються як вхідні властивості, без необхідності зберігати другий вхідний об'єкт. Окрім підтримки інтеграції JSTL (яка присутня в Struts), структура Struts2 може використовувати і більш потужний та виразний OGNL (Мова об’єкта графіка об'єктів). Для перетворення типів Strut і Strut2 використовують Commons-Beanutils і OGNL відповідно. Завдяки цим удосконаленням, структура Struts2 вважається високозрілою рамкою і є дуже популярною серед програмістів Java EE. З іншого боку, структура Struts зараз вважається застарілою.