Προγραμματισμός

Γεια σας, OSGi, Μέρος 1: Πακέτα για αρχάριους

Το Open Services Gateway Initiative (OSGi) ορίζει μια αρχιτεκτονική για την ανάπτυξη και ανάπτυξη αρθρωτών εφαρμογών και βιβλιοθηκών. Σε αυτό το πρώτο άρθρο σε μια εισαγωγή τριών μερών στο OSGi, η Sunil Patil ξεκινά με τις ιδέες ανάπτυξης OSGi και σας δείχνει πώς να δημιουργήσετε μια απλή εφαρμογή Hello World χρησιμοποιώντας την εφαρμογή κοντέινερ Eclipse OSGi, Equinox. Επίσης, αγγίζει εν συντομία την κατασκευή εφαρμογών προσανατολισμένων στις υπηρεσίες χρησιμοποιώντας OSGi και παρουσιάζει το OSGi Εργοστάσιο και ServiceTracker τάξεις.

Το Open Services Gateway Initiative (OSGi), επίσης γνωστό ως το Dynamic Module System for Java, ορίζει μια αρχιτεκτονική για ανάπτυξη αρθρωτών εφαρμογών. Οι υλοποιήσεις κοντέινερ OSGi όπως το Knopflerfish, το Equinox και το Apache Felix σάς επιτρέπουν να σπάσετε την εφαρμογή σας σε πολλαπλές λειτουργικές μονάδες και επομένως να διαχειριστείτε πιο εύκολα τις αλληλεξαρτήσεις μεταξύ τους.

OSGi, Equinox και Project Jigsaw

Αποκτήστε μια προβολή πραγματικού κόσμου μελετώντας μαθήματα που αποκτήθηκαν κατά την ολοκλήρωση OSGi / Equinox στο μεγαλύτερο επιστημονικό έργο του Ηνωμένου Βασιλείου και, στη συνέχεια, μάθετε τι μπορείτε να περιμένετε από το Project Jigsaw στην Java 9.

Παρόμοια με τις προδιαγραφές Java Servlet και EJB, η προδιαγραφή OSGi ορίζει δύο πράγματα: ένα σύνολο υπηρεσιών που πρέπει να εφαρμόσει ένα κοντέινερ OSGi και μια σύμβαση μεταξύ του κοντέινερ και της εφαρμογής σας. Η ανάπτυξη στην πλατφόρμα OSGi σημαίνει πρώτα να δημιουργήσετε την εφαρμογή σας χρησιμοποιώντας OSGi APIs και μετά να την αναπτύξετε σε ένα κοντέινερ OSGi. Από την πλευρά του προγραμματιστή, το OSGi προσφέρει τα ακόλουθα πλεονεκτήματα:

  • Μπορείτε να εγκαταστήσετε, να απεγκαταστήσετε, να ξεκινήσετε και να σταματήσετε δυναμικά διαφορετικές ενότητες της εφαρμογής σας χωρίς να κάνετε επανεκκίνηση του κοντέινερ.
  • Η εφαρμογή σας μπορεί να διαθέτει περισσότερες από μία εκδόσεις μιας συγκεκριμένης λειτουργικής μονάδας ταυτόχρονα.
  • Το OSGi παρέχει πολύ καλή υποδομή για την ανάπτυξη εφαρμογών προσανατολισμένων στις υπηρεσίες, καθώς και ενσωματωμένες, κινητές και πλούσιες εφαρμογές διαδικτύου.

Δεδομένου ότι χρησιμοποιείτε δοχεία servlet για τη δημιουργία εφαρμογών Web και δοχεία EJB για τη δημιουργία εφαρμογών συναλλαγών, ίσως αναρωτιέστε γιατί χρειάζεστε έναν ακόμη τύπο κοντέινερ. Η σύντομη απάντηση είναι ότι τα κοντέινερ OSGi προορίζονται ειδικά για την ανάπτυξη σύνθετων εφαρμογών Java που θέλετε να χωρίσετε σε ενότητες. Θα επεκταθώ σε αυτήν τη σύντομη απάντηση σε όλη αυτή τη σειρά.

Γεια σας, OSGi: Διαβάστε τη σειρά

  • Μέρος 1: Πακέτα για αρχάριους
  • Μέρος 2: Παρουσιάζοντας τις δυναμικές ενότητες άνοιξη
  • Μέρος 3: Μεταφέρετέ το στην πλευρά του διακομιστή

OSGi σε εταιρικές εφαρμογές

Οι εργασίες για τις προδιαγραφές OSGi ξεκίνησαν από την OSGi Alliance τον Μάρτιο του 1999. Ο κύριος στόχος της ήταν να δημιουργήσει μια ανοιχτή προδιαγραφή για την παροχή διαχειριζόμενων υπηρεσιών σε τοπικά δίκτυα και συσκευές. Η βασική ιδέα είναι ότι μόλις προσθέσετε μια πλατφόρμα υπηρεσίας OSGi σε μια δικτυωμένη συσκευή (ενσωματωμένη καθώς και διακομιστές), θα πρέπει να μπορείτε να διαχειριστείτε τον κύκλο ζωής των στοιχείων λογισμικού σε αυτήν τη συσκευή από οπουδήποτε στο δίκτυο. Τα στοιχεία του λογισμικού μπορούν να εγκατασταθούν, να ενημερωθούν ή να αφαιρεθούν εν κινήσει χωρίς να χρειάζεται να διακόψετε τη λειτουργία της συσκευής.

Για χρόνια, η τεχνολογία OSGi έχει αναπτυχθεί στην αγορά ενσωματωμένων συστημάτων και συσκευών δικτύου. Τώρα, χάρη εν μέρει στο Eclipse, το OSGi αναδεικνύεται ως μια βιώσιμη και πολύτιμη τεχνολογία για την ανάπτυξη των επιχειρήσεων.

Αυξανόμενη υποστήριξη για OSGi

Το 2003, η ομάδα ανάπτυξης του Eclipse άρχισε να αναζητά τρόπους για να κάνει το Eclipse μια πιο δυναμική πλατφόρμα πλούσιου πελάτη και να αυξήσει τη λειτουργικότητα του σετ εργαλείων. Τελικά, η ομάδα εγκατέστησε τη χρήση του πλαισίου OSGi ως μοντέλο συστατικού χρόνου εκτέλεσης. Το Eclipse 3.0, που κυκλοφόρησε τον Ιούνιο του 2004, ήταν η πρώτη έκδοση του Eclipse που βασίστηκε σε OSGi.

Σχεδόν όλοι οι διακομιστές εταιρικών εφαρμογών υποστηρίζουν ή σχεδιάζουν να υποστηρίξουν OSGi. Το πλαίσιο Spring υποστηρίζει επίσης το OSGi, μέσω του έργου Spring Dynamic Modules for OSGi Service Platforms, το οποίο παρέχει ένα επίπεδο υποδομής για να διευκολύνει τη χρήση του OSGi στην ανάπτυξη εφαρμογών Java που βασίζεται σε Spring.

Δοχεία ανοιχτού κώδικα OSGi

Από την άποψη ενός προγραμματιστή επιχείρησης, το κοντέινερ OSGi έχει τόσο χαμηλό αποτύπωμα που μπορείτε εύκολα να το ενσωματώσετε σε μια εταιρική εφαρμογή. Για παράδειγμα, ας υποθέσουμε ότι αναπτύσσετε μια σύνθετη εφαρμογή Web. Θέλετε να χωρίσετε την εφαρμογή σε πολλές ενότητες: μία ενότητα για το επίπεδο προβολής, μια άλλη για το επίπεδο DAO και μια τρίτη ενότητα για το επίπεδο πρόσβασης δεδομένων. Η χρήση ενός ενσωματωμένου κοντέινερ OSGi για τη διαχείριση των αλληλεξαρτήσεων αυτών των ενοτήτων θα σας επιτρέψει να ενημερώσετε το επίπεδο DAO (ας πούμε από αργό DAO σε γρήγορο DAO) χωρίς να επανεκκινήσετε την εφαρμογή σας.

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

  • Το Equinox είναι η εφαρμογή αναφοράς για το τμήμα πλαισίου του OSGi Service Platform Release 4. Είναι ο αρθρωτός χρόνος εκτέλεσης Java στην καρδιά του Eclipse IDE και εφαρμόζει όλα τα υποχρεωτικά και τα περισσότερα από τα προαιρετικά χαρακτηριστικά της προδιαγραφής OSGi R4.
  • Το Knopflerfish είναι μια εφαρμογή ανοιχτού κώδικα των προδιαγραφών OSGi R3 και OSGi R4. Το Knopflerfish 2 εφαρμόζει όλα τα υποχρεωτικά χαρακτηριστικά και μερικά από τα προαιρετικά χαρακτηριστικά που ορίζονται στην προδιαγραφή R4.
  • Το Apache Felix είναι το κοντέινερ ανοιχτού κώδικα OSGi από το Apache Software Foundation. Τη στιγμή της σύνταξης, αυτό το κοντέινερ δεν συμμορφώνεται πλήρως με τις προδιαγραφές OSGI R4.

Σε αυτό το άρθρο θα χρησιμοποιήσουμε το Equinox ως κοντέινερ OSGi. Ανατρέξτε στην ενότητα Πόροι για περισσότερες πληροφορίες σχετικά με το Apache Felix και το Knopflerfish.