Struts срещу Struts2
Struts (известен също като Apache Struts или Struts 1) е междуплатформена рамка с отворен код, написана на Java, която е предназначена за разработване на Java EE уеб приложения. Това беше една от първоначалните рамки за уеб приложения на Java EE. Но няколко години по-късно се появи Struts2 (или Struts версия 2) и това беше напълно различна и силно подобрена рамка за уеб приложения. В него бяха разгледани няколко проблема, които бяха възприети като недостатъци в първоначалната версия. Сега Struts2 се използва много силно за разработване на Java EE приложения в света.
Какво е Struts?
Struts (Struts 1) framework беше една от първоначалните рамки за уеб приложения за разработване на Java EE уеб приложения. Struts framework насърчава използването на MVC (Model-View-Controller) архитектура. Това е разширение на Java Servlet API. Крейг Маккланахан е оригиналният създател на Struts. Първоначално беше известен като Jakaratha Struts и се поддържаше от проекта Jakarta на Apache Software Foundation. Пуснат е под Apache License 2.0. Структурата на Struts се нарича рамка, базирана на заявки, и се състои от три основни компонента: манипулатор на заявки, манипулатор на отговор и библиотека с етикети. Стандартният URI (Uniform Resource Identifier) е съпоставен с манипулатор на заявки. Манипулаторът на отговорите отговаря за прехвърлянето на контрола. За създаване на интерактивни приложения с формуляри могат да се използват функциите, предлагани от библиотеката с етикети. Struts поддържа 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 изисква класовете за действие да бъдат разширени от абстрактните базови класове, но Struts2 Actions може да реализира интерфейс за действие. Поради разликите в модела на нишки между двете версии, проблемите с безопасността на нишките, възникнали в рамката на Struts по отношение на обектите за действие, не възникват в рамката Struts2. Причината е, че обектите на Struts2 Action се създават за всяка заявка, докато Action в Struts framework има само един екземпляр за обработка на всички заявки за това действие. За разлика от рамката Действия в Struts, Действията на Struts2 не зависят от API на Servlet.
Тестируемостта на Struts2 framework е сравнително по-висока от Struts framework. Можете да тествате Struts2 Actions, като просто следвате трите стъпки: инстанциране, настройка на свойства и извикване на методи. Събирането на вход е по-лесно в Struts2 Framework, тъй като свойствата на действие се използват като входни свойства, без да се налага да поддържате втори входен обект. Освен поддръжката за JSTL интеграция (която присъства в Struts), Struts2 framework може да използва по-мощен и изразителен OGNL (Object Graph Notation Language). За преобразуване на типове Strut и Strut2 използват съответно Commons-Beanutils и OGNL. Поради тези подобрения Struts2 framework се счита за много зряла рамка и е много популярна сред Java EE програмистите. От друга страна, рамката Struts вече се счита за остаряла.