Struts срещу Struts2
Struts (известен също като Apache Struts или Struts 1) е междуплатформена рамка с отворен код, написана на Java, която е предназначена за разработване на Java EE уеб приложения. Това беше една от първоначалните рамки за уеб приложения на Java EE. Но няколко години по-късно пристигна Struts2 (или Struts версия 2) и това беше съвсем различна и силно подобрена рамка за уеб приложения. В него бяха разгледани няколко въпроса, които бяха възприети като недостатъци в първоначалната версия. Сега Struts2 се използва много активно за разработване на Java EE приложения в света.
Какво е Struts?
Рамката Struts (Struts 1) беше една от първоначалните рамки на уеб приложения за разработване на уеб приложения на Java EE. Структурата на Struts насърчава използването на архитектурата MVC (Model-View-Controller). Това е разширение на Java Servlet API. Крейг Маккланахан е оригиналният създател на Struts. Първоначално беше известен като Jakaratha Struts и се поддържаше в рамките на проекта Джакарта на Apache Software Foundation. Пуска се под лиценз Apache 2.0. Структурата на Struts се нарича рамка, базирана на заявки, и се състои от три основни компонента: манипулатор на заявки, манипулатор на отговори и библиотека с маркери. Стандартният URI (унифициран идентификатор на ресурс) се съпоставя с манипулатора на заявки. Обработващият отговор е отговорен за прехвърлянето на контрола. За да създадете интерактивни приложения с формуляри, функциите, предлагани от библиотеката с тагове, могат да бъдат използвани. Подпори поддържат REST приложения и различни технологии като SOAP, AJAX и др.
Какво е Struts2?
Структурата на Struts беше възприета да съдържа определени ограничения (главно липсата на разделяне между слоя на презентацията, слоя за обработка на заявки и модела) от разработчиците на Java EE по това време и следователно няколко години по-късно пристигна Struts2. Всъщност Struts2 беше напълно различен от Struts. Всъщност те дори не споделят една и съща кодова база, защото Struts2 беше просто резултат от преименуването на рамката WebWork 2.2 (т.е. общностите WebWork и Struts, които работеха отделно за известно време, в крайна сметка се събраха, за да излязат с Struts2). Настоящата му стабилна версия е версия 2.2.3, която беше пусната през май 2011 г.
Каква е разликата между Struts и Struts2?
Един от многото проблеми на Struts framework беше необходимостта от програмиране на абстрактни класове вместо интерфейси. Това беше решено от Struts2 framework. Например, структурата Struts изисква класовете Action да бъдат разширени от абстрактните базови класове, но Struts2 Action може да реализира интерфейс Action. Поради разликите в модела на резби между двете версии, проблеми с безопасността на нишките, възникнали в Struts framework по отношение на Action обекти, не се появяват в Struts2 framework. Причината е, че обектите за действие Struts2 се създават за всяка заявка, докато действието в структурата Struts има само един екземпляр, който да обработва всички заявки за това действие. За разлика от действията в структурата Struts, действията Struts2 не зависят от API на Servlet.
Изпробваемостта на Struts2 framework е сравнително по-висока от Struts framework. Можете да тествате Struts2 действия, просто следвайки трите стъпки: създаване на екземпляр, настройка на свойства и извикване на методи. Събирането на въвеждането е по-лесно в Struts2 framework, тъй като свойствата на Action се използват като входни свойства, без да се налага да запазвате втори обект на въвеждане. Освен поддръжката за интеграция на JSTL (която присъства в Struts), структурата Struts2 може да използва по-мощен и изразителен OGNL (Object Graph Notation Language). За преобразуване на типа Strut и Strut2 използват съответно Commons-Beanutils и OGNL. Поради тези подобрения, Struts2 framework се счита за много зряла рамка и е много популярен сред Java EE програмистите. От друга страна, структурата на Struts вече се счита за остаряла.