Struts vs Struts2
Struts (həmçinin Apache Struts və ya Struts 1 kimi tanınır) Java-da yazılmış, Java EE veb proqramlarının hazırlanması üçün nəzərdə tutulmuş çarpaz platforma açıq mənbə çərçivəsidir. Bu, ilkin Java EE veb proqram çərçivələrindən biri idi. Lakin bir neçə il sonra Struts2 (və ya Struts versiyası 2) gəldi və bu, tamamilə fərqli və yüksək dərəcədə təkmilləşdirilmiş veb proqram çərçivəsi idi. O, ilkin versiyada çatışmazlıqlar kimi qəbul edilən bir neçə məsələyə toxunmuşdu. İndi Struts2 dünyada Java EE proqramlarının hazırlanması üçün çox istifadə olunur.
Struts nədir?
Struts (Struts 1) çərçivəsi Java EE veb proqramlarını inkişaf etdirmək üçün ilkin veb proqram çərçivələrindən biri idi. Struts çərçivəsi MVC (Model-View-Controller) arxitekturasının istifadəsini təşviq edir. Bu Java Servlet API-nin genişləndirilməsidir. Craig McClanahan Struts-un orijinal yaradıcısıdır. Əvvəlcə Jakaratha Struts kimi tanınırdı və Apache Software Foundation-ın Cakarta Layihəsi çərçivəsində saxlanılırdı. Apache License 2.0 altında buraxılır. Struts çərçivəsi sorğuya əsaslanan çərçivə adlanır və o, üç əsas komponentdən ibarətdir: sorğu işləyicisi, cavab işləyicisi və etiket kitabxanası. Standart URI (Vahid Resurs İdentifikatoru) sorğu işləyicisi ilə əlaqələndirilir. Cavab işləyicisi nəzarətin ötürülməsinə cavabdehdir. Formalarla interaktiv proqramlar yaratmaq üçün etiket kitabxanasının təklif etdiyi funksiyalardan istifadə etmək olar. Struts REST proqramlarını və SOAP, AJAX və s. kimi müxtəlif texnologiyaları dəstəkləyir.
Struts2 nədir?
Struts çərçivəsi o zaman Java EE tərtibatçıları tərəfindən müəyyən məhdudiyyətlər (əsasən təqdimat qatı, sorğunun idarəolunması təbəqəsi və model arasında ayrılığın olmaması) ehtiva etdiyi qəbul edildi və nəticədə bir neçə il sonra Struts2 gəldi. Əslində, Struts2 Struts-dan tamamilə fərqli idi. Əslində, onlar eyni kod bazasını belə bölüşmürdülər, çünki Struts2 sadəcə WebWork 2.2 çərçivəsinin adının dəyişdirilməsinin nəticəsi idi (yəni, bir müddət ayrı-ayrılıqda işləyən WebWork və Struts icmaları nəhayət, Struts2 ilə gəlmək üçün əl-ələ verib). Onun cari stabil buraxılışı 2011-ci ilin may ayında buraxılmış 2.2.3 versiyasıdır.
Struts və Struts2 arasındakı fərq nədir?
Struts çərçivəsinin çoxsaylı problemlərindən biri interfeyslər əvəzinə mücərrəd siniflər üçün proqramlaşdırma ehtiyacı idi. Bu Struts2 çərçivəsi ilə həll edildi. Məsələn, Struts çərçivəsi Fəaliyyət siniflərinin abstrakt əsas siniflərdən genişləndirilməsini tələb edirdi, lakin Struts2 Fəaliyyətləri Fəaliyyət interfeysini həyata keçirə bilər. İki versiya arasındakı iplik modelindəki fərqlərə görə, Struts çərçivəsində Fəaliyyət obyektləri ilə bağlı ortaya çıxan ip təhlükəsizliyi problemləri Struts2 çərçivəsində baş vermir. Səbəb Struts2 Fəaliyyət obyektlərinin hər sorğu üçün yaradıldığı, Struts çərçivəsindəki Fəaliyyətin həmin Fəaliyyət üçün bütün sorğuları idarə etmək üçün yalnız bir nümunəsi olmasıdır. Struts çərçivəsindəki Fəaliyyətlərdən fərqli olaraq, Struts2 Fəaliyyətləri Servlet API-dən asılı deyil.
Struts2 çərçivəsinin sınaq qabiliyyəti Struts çərçivəsindən nisbətən yüksəkdir. Siz sadəcə üç addımdan sonra Struts2 Fəaliyyətlərini sınaqdan keçirə bilərsiniz: nümunələşdirmə, xassələrin təyin edilməsi və metodların işə salınması. Struts2 çərçivəsində daxiletmənin yığılması daha asandır, çünki Fəaliyyət xassələri ikinci giriş obyektini saxlamadan giriş xassələri kimi istifadə olunur. JSTL inteqrasiyası dəstəyindən başqa (Struts-da mövcuddur), Struts2 çərçivəsi daha güclü və ifadəli OGNL-dən (Obyekt Qrafik Notasiyası Dili) istifadə edə bilər. Tip çevrilməsi üçün Strut və Strut2 müvafiq olaraq Commons-Beanutils və OGNL-dən istifadə edir. Bu təkmilləşdirmələrə görə Struts2 çərçivəsi olduqca yetkin çərçivə hesab olunur və Java EE proqramçıları arasında çox populyardır. Digər tərəfdən, Struts çərçivəsi artıq köhnəlmiş hesab olunur.