Spring Framework series: Μέρος 1ο

ΕΙΣΑΓΩΓΗ 

SpringSourceDecisions, decisions, decisions… λέει το γνωστό απόφθεγμα και δε θα μπορούσε να ταιριάζει καλύτερα σε ένα από το βασικά διλήμματα που έχει να αντιμετωπίσει ένας J2EE architect όσων αφορά την επιλογή middleware. Για ένα τυπικό MVC design pattern, πρέπείτε να γράψει ένα fully custom συστήμα με κάποιον controller και μια ομάδα components για business layer και επικοινωνία με τη βάση ή β) να στηριχθεί σε ένα framework που αναλαμβάνει όλες αυτές τις εργασίες για εκείνον. Μέχρι πρότινως, στη δεύτερη περίπτωση αποτελούσε σχεδόν μονόδρομο η επιλογή των Enterprise Java Beans (EJB) για τα οποία υπήρχαν διαχρονικά παράπονα που σχετίζονται με το ότι είναι βαρεία κτλ. Κάπου λοιπόν στο 2003 ξεκίνησε μία πρωτοβουλία για τη δημιουργία ενός lightweight framework το οποίο δειλά-δειλά και με μεθοδευμένα βήματα αποτελεί σήμερα τον, κατά τη γνώμη πολλών, δεύτερο πόλο ο οποίος δεν είναι άλλος από το Spring Framework. Το άρθρο αυτό αποτελεί το πρώτο σε μία σειρά άρθρων για την τεχνολογία αυτή και εστιάζεται στα γενικά χαρακτηρίστικα και τα πλεονεκτήματα της. 

TI EINAI TO SPRING FRAMEWORK 

Το Spring, προϊόν της εταιρείας Springsource, είναι ένα ελαφρύ Java/J2EE πλαίσιο εφαρμογών που βασίζεται σε κώδικα που δημοσιεύθηκε στο βιβλίο “Expert One-on-One J2EE Design and Development” από τον βασικό συντελεστή του framework, Rod Johnson. Το Spring ανάμεσα στα άλλα έχει τα εξής βασικά χαρακτηριστικά: 

α) Αποτελεί μία δυνατή λύση για τη διαχείριση ρυθμίσεων της εφαρμογής, που βασίζεται σε JavaBeans εφαρμόζοντας την αρχιτεκτονική αρχή (κατά άλλους design pattern) του Inversion of Control, 

β) Ένα γενικό abstraction layer για τη διαχείριση transactions που επίσης επιτρέπει pluggable transactions managers, 

γ) Ένα JDBC abstraction layer, 

δ) Ενσωμμάτωση με ένα πλήθος διαδεδομένων τεχνολογιών όπως το Hibernate, JDO, Apache OJB, 

ε) Λειτουργικότητα Aspect Oriented Programming (AOP) προγραμματιστικό υπόδειγμα στο οποίο οι δευτερεύουσες λειτουργίες διαχωρίζονται από το business logic της εφαρμογής. 

στ) Το καλύτερο για μένα είναι ότι έρχεται πακεταρισμένο με το δικό του, flexible MVC Web framework με πολλαπλές τεχνολογίες στο View κομμάτι. 

ζ) Διαδικασίες για authentication / authorisation που υποστηρίζουν διάφορα προτόκολα (πχ LDAP) . 

η) Ένα Remote Access framework με λειτουργίες Remote Procedure Call (RPC) για εισαγωγή / εξαγωγή Java objects και το οποίο υποστηρίζει RMI, CORBA , SOAP και άλλα. 

 

Η ΚΑΡΔΙΑ ΤΟΥ SPRING 

Το Spring Framework αποτελείται από έναν Container βασισμένο στο Inversion of Control (IoC) ή Dependency Injection κατά άλλους. Πρόκειται για μία τεχνική όπου υποδεικνυέται σε ένα κομμάτι εφαρμογής ποια αλλα κομμάτια μπορεί να χρησιμοποιεί. Για όλες τις εφαρμογές που χτίζονται πάνω στο Spring, ο Container αποτελεί την καρδιά του συστήματος και όλα τα τα Java Beans που περιέχει γίνονται instantiated, παραμετροποιούνται και συναρμολογούνται από τον Container. 

To interface 

org.springframework.context.ApplicationContext

αντιπροσωπεύει τον Spring IoC container και υπάρχουν παρά πολλα implementations του ανάλογα με τον τύπο εφαρμογής (stand-alone, web κτλ.) 

 

ΓΙΑΤΙ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΩ SPRING ; 

Για μένα το μεγαλύτερο προσόν του Spring framework έιναι ότι αποτελεί (όπως φαίνεται και από τα παραπάνω) ένα one-stop shop, παρέχει δηλαδή όλα τα εργαλεία που χρειάζονται για να χτιστεί μία εφαρμογή. Επιπλέον: 

  • Παίρνει πάνω του όλη τη διαχείριση των middle layer objects ακόμη και αν χρησιμοποιηθούν EJBs.
  • Επιτρέπει να λυθούν πολλά προβλήματα χωρίς τη χρήση EJB. Για παράδειγμα, με το Spring μπορεί να να χρησιμοποιηθεί το AOP για transaction managment χωρίς τη χρήση ενός EJB container
  • Είναι σχεδιασμένο έτσι ώστε τα business objects να έχουν την όσο το δυνατό λιγότερη εξάρτηση από το framework
  • Εκ φύσεως αποτρέπει και περιορίζει την εξάπλωση των Singletons που συχνά αποτελούν τροχοπέδη sto management και testability εφαρμογών.
  • Προσφέρει, τέλος, ένα ομοιόμορφο, απλό μοντέλο προγραμματισμού σε πολλούς τομείς, καθιστώντας μια ιδανική λύση αρχιτεκτονικής “κόλλας.” για τα διάφορα components μίας εφαρμογής. Αυτό φαίνεται στο πώς προσεγγίζει την ενσωμάτωση των τεχνολογιών όπως JDBC, JMS, JavaMail, JNDI και πολλά άλλα σημαντικά API.

ΣΥΜΠΕΡΑΣΜΑ 

Το Spring Framework έχει ως κύριο στόχο να κάνει ευκολότερη τη χρήση και την προώθηση ορθών πρακτικών προγραμματισμού J2EE με τελικό στόχο την απλοποίηση στην ανάπτυξη εφαρμογών. Αυτό το κάνει, ενεργοποιώντας ένα μοντέλο προγραμματισμού που βασίζεται σε POJO, και που μπορεί να εφαρμοστεί σε ένα ευρύ φάσμα περιβαλλόντων. 

Επιπλέον, φιλοδοξεί να κάνει πολύ εύκολη την σύνδεση με πολλές άλλες δημοφιλείς τεχνολογίες και αυτό την αναδεικνύει σε ένα εξαιρετικά ευέλικτο πλαίσιο ανάπτυξης εφαρμογών. 

Το γεγονός ότι αυτή τη στιγμή κερδίζει ραγδαία μερίδιο αγοράς στις επιχειρήσεις αποτελεί ένδειξη της δυναμικής που έχει αναπτύξει και βεβαία, σε συνάρτηση με τις συνέργειες που προκύπτουν από την πρόσφατη εξαγορά της SpringSource απο την VMWare, αναμένεται ότι θα αποτελέσει την ηγέτιδα δύναμη στο χώρο για τα επόμενα χρόνια. 

Στο επόμενο άρθρο θα πάρουμε μια πρώτη γεύση από το στήσιμο μίας J2EE εφαρμογής σε Spring framework 

REFERENCES 

Passionate Archer, Runner, Linux lover and JAVA Geek! That's about everything! Alexius Dionysius Diakogiannis is a Senior Java Solutions Architect and Squad Lead at the European Investment Bank. He has over 20 years of experience in Java/JEE development, with a strong focus on enterprise architecture, security and performance optimization. He is proficient in a wide range of technologies, including Spring, Hibernate and JakartaEE. Alexius is a certified Scrum Master and is passionate about agile development. He is also an experienced trainer and speaker, and has given presentations at a number of conferences and meetups. In his current role, Alexius is responsible for leading a team of developers in the development of mission-critical applications. He is also responsible for designing and implementing the architecture for these applications, focusing on performance optimization and security.