Struts vs Struts2
Struts (ასევე ცნობილი როგორც Apache Struts ან Struts 1) არის ჯვაში დაწერილი ღია წყაროს პლატფორმა, რომელიც განკუთვნილია Java EE ვებ აპლიკაციების შესაქმნელად. ეს იყო ერთ-ერთი საწყისი Java EE ვებ აპლიკაციის ჩარჩო. მაგრამ რამდენიმე წლის შემდეგ ჩამოვიდა Struts2 (ან Struts ვერსია 2) და ეს იყო სრულიად განსხვავებული და უაღრესად გაუმჯობესებული ვებ აპლიკაციის ჩარჩო. მან განიხილა რამდენიმე საკითხი, რომლებიც აღიქმებოდა როგორც ხარვეზები თავდაპირველ ვერსიაში. ახლა Struts2 ძალიან აქტიურად გამოიყენება მსოფლიოში Java EE აპლიკაციების შესაქმნელად.
რა არის Struts?
Struts (Struts 1) ჩარჩო იყო ერთ-ერთი საწყისი ვებ აპლიკაციის ჩარჩო Java EE ვებ აპლიკაციების შესაქმნელად. Struts Framework ხელს უწყობს MVC (Model-View-Controller) არქიტექტურის გამოყენებას. ეს არის Java Servlet API-ის გაფართოება. კრეიგ მაკკლანაჰანი არის Struts-ის ორიგინალური შემქმნელი. თავდაპირველად იგი ცნობილი იყო როგორც Jakaratha Struts და ინახებოდა Apache Software Foundation-ის ჯაკარტას პროექტის ფარგლებში. ის გამოშვებულია Apache ლიცენზიით 2.0. Struts Framework ეწოდება მოთხოვნაზე დაფუძნებულ ჩარჩოს და შედგება სამი ძირითადი კომპონენტისგან: მოთხოვნის დამმუშავებელი, პასუხის დამმუშავებელი და ტეგების ბიბლიოთეკა. სტანდარტული URI (რესურსების ერთიანი იდენტიფიკატორი) ასახულია მოთხოვნის დამმუშავებელთან. პასუხის დამმუშავებელი პასუხისმგებელია კონტროლის გადაცემაზე. ფორმებით ინტერაქტიული აპლიკაციების შესაქმნელად, შეიძლება გამოყენებულ იქნას ტეგების ბიბლიოთეკის მიერ შემოთავაზებული ფუნქციები. 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-ის ფრეიმურის ერთ-ერთი პრობლემა იყო პროგრამირების საჭიროება აბსტრაქტული კლასებისთვის ინტერფეისების ნაცვლად. ეს მოგვარდა Struts2-ის ფრეიმვიკით. მაგალითად, Struts Framework მოითხოვდა Action კლასების გაფართოებას აბსტრაქტული საბაზისო კლასებიდან, მაგრამ Struts2 Actions-ს შეუძლია განახორციელოს Action ინტერფეისი. ძაფების მოდელში განსხვავებების გამო ორ ვერსიას შორის ძაფების უსაფრთხოების საკითხები, რომლებიც წარმოიშვა Struts Framework-ში Action ობიექტებთან დაკავშირებით, არ გვხვდება Struts2-ში. მიზეზი ის არის, რომ Struts2 მოქმედების ობიექტები ინსტანცირდება თითოეული მოთხოვნისთვის, ხოლო მოქმედება Struts ჩარჩოს აქვს მხოლოდ ერთი მაგალითი ამ მოქმედებისთვის ყველა მოთხოვნის დასამუშავებლად. Actions in Struts ჩარჩოსგან განსხვავებით, Struts2 მოქმედებები არ არის დამოკიდებული Servlet API-ზე.
Struts2 ჩარჩოს ტესტირება შედარებით მაღალია, ვიდრე Struts ჩარჩო. თქვენ შეგიძლიათ შეამოწმოთ Struts2 მოქმედებები უბრალოდ სამი ნაბიჯის შემდეგ: ინსტალაცია, თვისებების დაყენება და მეთოდების გამოძახება. შეყვანის შეგროვება უფრო ადვილია Struts2 ჩარჩოში, რადგან Action თვისებები გამოიყენება შეყვანის თვისებად, მეორე შეყვანის ობიექტის შენახვის გარეშე. გარდა JSTL ინტეგრაციის მხარდაჭერისა (რომელიც არის Struts-ში), Struts2 ჩარჩოს შეუძლია გამოიყენოს უფრო ძლიერი და ექსპრესიული OGNL (ობიექტის გრაფიკის ნოტაციის ენა). ტიპის კონვერტაციისთვის, Strut და Strut2 იყენებენ Commons-Beanutils და OGNL, შესაბამისად. ამ გაუმჯობესების გამო, Struts2 ფრეიმვორკი განიხილება უაღრესად მომწიფებულ ჩარჩოდ და ის ძალიან პოპულარულია Java EE პროგრამისტებში. მეორეს მხრივ, Struts-ის ჩარჩო ახლა მოძველებულად ითვლება.