Struts vs 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. Ο Craig McClanahan είναι ο αρχικός δημιουργός του Struts. Αρχικά ήταν γνωστό ως Jakaratha Struts και διατηρήθηκε στο πλαίσιο του Jakarta Project του Apache Software Foundation. Κυκλοφορεί υπό την άδεια Apache 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 ήταν η ανάγκη προγραμματισμού σε αφηρημένες κλάσεις αντί για διεπαφές. Αυτό λύθηκε από το πλαίσιο Struts2. Για παράδειγμα, το πλαίσιο Struts απαιτούσε την επέκταση των κλάσεων Action από τις αφηρημένες βασικές κλάσεις, αλλά το Struts2 Actions μπορεί να υλοποιήσει μια διεπαφή Action. Λόγω των διαφορών στο μοντέλο νήματος μεταξύ των δύο εκδόσεων, ζητήματα ασφάλειας νήματος που προέκυψαν στο πλαίσιο Struts σχετικά με τα αντικείμενα δράσης δεν εμφανίζονται στο πλαίσιο Struts2. Ο λόγος είναι ότι τα αντικείμενα δράσης Struts2 δημιουργούνται στιγμιότυπα για κάθε αίτημα, ενώ ένα πλαίσιο δράσης σε Struts έχει μόνο μία παρουσία για να χειριστεί όλα τα αιτήματα για αυτήν την Ενέργεια. Σε αντίθεση με το πλαίσιο Actions in Struts, οι ενέργειες Struts2 δεν εξαρτώνται από το Servlet API.
Η δυνατότητα δοκιμής του πλαισίου Struts2 είναι συγκριτικά υψηλότερη από το πλαίσιο Struts. Μπορείτε να δοκιμάσετε το Struts2 Actions απλά ακολουθώντας τα τρία βήματα: εγκατάσταση, ρύθμιση ιδιοτήτων και επίκληση μεθόδων. Η συλλογή εισόδου είναι ευκολότερη στο πλαίσιο Struts2, καθώς οι ιδιότητες Action χρησιμοποιούνται ως ιδιότητες εισόδου, χωρίς να χρειάζεται να διατηρηθεί ένα δεύτερο αντικείμενο εισόδου. Εκτός από την υποστήριξη για ενσωμάτωση JSTL (η οποία υπάρχει στο Struts), το πλαίσιο Struts2 μπορεί να χρησιμοποιεί πιο ισχυρό και εκφραστικό OGNL (Γλώσσα σημειογραφίας γραφήματος αντικειμένου). Για τη μετατροπή τύπου, το Strut και το Strut2 χρησιμοποιούν Commons-Beanutils και OGNL, αντίστοιχα. Λόγω αυτών των βελτιώσεων, το πλαίσιο Struts2 θεωρείται ένα πολύ ώριμο πλαίσιο και είναι πολύ δημοφιλές μεταξύ των προγραμματιστών Java EE. Από την άλλη πλευρά, το πλαίσιο Struts θεωρείται πλέον ξεπερασμένο.