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

Η κατάσταση του ενδιάμεσου λογισμικού της εφαρμογής Java, Μέρος 1

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

Το μέγεθος αυτής της εξέλιξης είναι εκπληκτικό. Οι περισσότεροι από τους μεγαλύτερους προμηθευτές πελατών / διακομιστών έχουν εκσυγχρονίσει τα προϊόντα τους και τώρα κατευθύνουν τα δολάρια μάρκετινγκ σε τεχνολογίες τριών επιπέδων. Στις περισσότερες περιπτώσεις, τα νεότερα προϊόντα είναι κεντρικά σε Java και πρωτόκολλο Διαδικτύου. Για παράδειγμα, εντόπισα τουλάχιστον 46 προϊόντα ενδιάμεσου λογισμικού Java. Πριν από δύο χρόνια θα ήταν δύσκολο να βρούμε τον μισό αριθμό.

Αυτή είναι η πρώτη από μια σειρά άρθρων δύο μερών αφιερωμένα στην εξήγηση του ενδιάμεσου λογισμικού Java γενικής χρήσης στις τρέχουσες μορφές του. Σε αυτό το πρώτο άρθρο, θα εξετάσω τα χαρακτηριστικά των τρεχόντων προϊόντων και θα εξηγήσω γιατί αυτές οι λειτουργίες είναι σημαντικές. Στο δεύτερο μέρος, ο Anil Hemrajani θα εξετάσει το Enterprise JavaBeans (EJB) και θα δείξει πώς η τρέχουσα γενιά προϊόντων μεσαίου λογισμικού Java σχετίζεται και υποστηρίζει αυτό το σημαντικό πρότυπο συστατικών.

Ιστορικό

Πρώτα απ 'όλα, ας ορίσουμε Java middleware. Ο όρος περιλαμβάνει διακομιστές εφαρμογών όπως το BEA WebLogic, προϊόντα ανταλλαγής μηνυμάτων όπως το ActiveWorks του Active Software και το SpiritWAVE της Push Technologies, καθώς και υβριδικά προϊόντα που βασίζονται σε μια κληρονομιά DBMS και προσθέτουν λειτουργίες εκτέλεσης αντικειμένων Java που βασίζονται σε διακομιστές. Θα μπορούσα να επικεντρωθώ σε ένα πιο στενό τμήμα, όπως οι διακομιστές εφαρμογών, αλλά αυτό θα ήταν άδικο για τα πολλά προϊόντα που δεν ταιριάζουν με αυτήν την κατηγορία με ακρίβεια, ωστόσο θα πρέπει να ληφθούν υπόψη για εφαρμογές πολλαπλών χρήσεων. Επιπλέον, ακόμη και μεταξύ των διακομιστών εφαρμογών υπάρχει αρκετά φάσμα, συμπεριλαμβανομένων εκείνων που είναι κυρίως διακομιστές servlet, καθώς και εκείνοι που βασίζονται σε ORB ή OODB. Η διαχωριστική γραμμή μεταξύ όλων αυτών των προϊόντων αποδεικνύεται όλο και πιο δύσκολη. Το ενοποιητικό χαρακτηριστικό, ωστόσο, είναι ότι όλοι προσπαθούν να λύσουν το πρόβλημα ανάπτυξης πολλαπλών εφαρμογών χρησιμοποιώντας τεχνολογίες Java και Internet.

Η επιχειρηματική περίπτωση για τη χρήση Java στο middleware είναι συναρπαστική. Μεταξύ των πλεονεκτημάτων που προσφέρει το Java middleware είναι τα ακόλουθα:

  • Η ικανότητα του Διαδικτύου να διασυνδέει οικονομικά γραφεία και οργανισμούς

  • Η ανάγκη των οργανισμών να συνεργάζονται μοιράζονται δεδομένα και επιχειρηματικές διαδικασίες

  • Η επιθυμία ενοποίησης γενικών υπηρεσιών και η διαχείριση αυτών των υπηρεσιών

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

  • Η επιθυμία για χρήση ανοιχτών υπηρεσιών και πρωτοκόλλων

  • Η επιθυμία για αναδιάταξη της επιχειρηματικής λογικής κατά βούληση και χωρίς περιορισμούς από την υποδομή. Αυτό απαιτεί τη χρήση ανοιχτών API και πρωτοκόλλων, τα οποία υποστηρίζονται ευρέως στα περισσότερα προϊόντα υποδομής

  • Η ανάγκη υποστήριξης συνεργαζόμενων εφαρμογών μικτής αρχιτεκτονικής

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

  • Η επιθυμία να μειωθεί η ποικιλομορφία και το επίπεδο των δεξιοτήτων του προγραμματιστή που απαιτούνται και να ελαχιστοποιηθεί η ανάγκη για προηγμένη τεχνογνωσία στην ανάπτυξη εργαλείων στα έργα

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

Ο στόχος του middleware είναι να συγκεντρώσει την υποδομή λογισμικού και την ανάπτυξή της. Ο πελάτης / διακομιστής προέρχεται από μια εποχή ολοκλήρωσης σε ένα τμήμα. Οι οργανισμοί επιχειρούν συνήθως την ενοποίηση πέρα ​​από τα όρια των τμημάτων - ακόμη και από τον έναν οργανισμό στον άλλο. Το Διαδίκτυο - που προσελκύει τις επιχειρήσεις με την ικανότητά του να λειτουργεί ως παγκόσμιο δίκτυο που επιτρέπει σε τμήματα και συνεργάτες να διασυνδέονται αποτελεσματικά και γρήγορα - έχει δημιουργήσει τη ζήτηση για αυτήν την ολοκλήρωση.

Η Java παρέχει ένα κοινή γλώσσα για εύκολη διασύνδεση δεδομένων και εφαρμογών πέρα ​​από τα όρια της οργάνωσης: Σε ένα κατανεμημένο παγκόσμιο περιβάλλον, στο οποίο δεν έχετε τον έλεγχο των επιλογών τεχνολογίας που μπορούν να κάνουν οι συνεργάτες σας, οι έξυπνες εταιρείες επιλέγουν ανοικτά και ουδέτερα πλατφόρμα πρότυπα. Οι εταιρείες δεν μπορούν να προβλέψουν ποιοι θα γίνουν πελάτες, συνεργάτες ή θυγατρικές τους δύο χρόνια στο δρόμο, οπότε δεν είναι πάντα δυνατό να σχεδιάσετε μια κοινή υποδομή με τους συνεργάτες σας. Σε αυτήν την αβέβαιη κατάσταση, η καλύτερη απόφαση μπορεί να είναι η χρήση των πιο καθολικών και προσαρμόσιμων τεχνολογιών.

Η Java σάς επιτρέπει να μειώσετε τον αριθμό των γλωσσών προγραμματισμού και των πλατφορμών που πρέπει να κατανοήσει το προσωπικό σας. Γιατί; Επειδή η Java αναπτύσσεται τώρα σε περιβάλλοντα τόσο διαφορετικά όσο τα προγράμματα περιήγησης στο Διαδίκτυο, οι αποθηκευμένες διαδικασίες εντός βάσεων δεδομένων, τα επιχειρηματικά αντικείμενα εντός των προϊόντων μεσαίου λογισμικού και οι εφαρμογές από την πλευρά του πελάτη.

Στην ηλικία των τριών, ωστόσο, η τεχνολογία Java παραμένει κάπως ανώριμη, και αυτό ισχύει για τα προϊόντα που συζητούνται σε αυτό το άρθρο. Από την άλλη πλευρά, μπορεί τώρα να βρισκόμαστε σε μια εποχή όπου τα προϊόντα δεν φτάνουν πραγματικά στην ωριμότητα, επειδή οι βασικές τεχνολογίες στις οποίες βασίζονται αλλάζουν τόσο γρήγορα. Στην πραγματικότητα, έχω βρει σημαντικά προβλήματα με σχεδόν κάθε προϊόν μεσαίου λογισμικού που έχω χρησιμοποιήσει, συμπεριλαμβανομένων υποτιθέμενων ώριμων προϊόντων που κυκλοφορούν στην αγορά για μερικά χρόνια και πρόσφατα βγήκαν με σημαντικά νέα χαρακτηριστικά. Το θέμα είναι ότι, όταν ένας προμηθευτής καταφέρει να διορθώσει προβλήματα, έχουν προστεθεί νέες δυνατότητες. Ο κύκλος για την προσθήκη νέων δυνατοτήτων είναι τώρα πολύ μικρότερος από ποτέ, και έτσι τα προϊόντα δεν έχουν αρκετό χρόνο για να γίνουν σταθερά προτού συμπεριλάβουν το επόμενο μεγάλο σύνολο χαρακτηριστικών. Αυτό μπορεί να είναι κάτι που πρέπει να συνηθίσουμε και η εκμάθηση των πλεονεκτημάτων και των αδυναμιών των προϊόντων που επιλέγουμε είναι ένα σημαντικό μέρος οποιουδήποτε σχεδιασμού εφαρμογών και πρωτότυπου κύκλου.

Στόχοι για middleware

Το πρότυπο του μεσαίου λογισμικού EJB αναπτύχθηκε με τους ακόλουθους στόχους:

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

  • Να παρέχει ένα εύχρηστο μοντέλο προγραμματισμού, διατηρώντας παράλληλα την πρόσβαση σε API χαμηλού επιπέδου.

  • Για την αντιμετώπιση ζητημάτων κύκλου ζωής, συμπεριλαμβανομένης της ανάπτυξης, της ανάπτυξης και του χρόνου εκτέλεσης.

  • Να παρέχει συμβατότητα με υπάρχουσες πλατφόρμες, η οποία επιτρέπει την επέκταση των υπαρχόντων προϊόντων για την παροχή υποστήριξης για το EJB.

  • Για να διατηρήσετε τη συμβατότητα με άλλα Java API.

  • Για την παροχή διαλειτουργικότητας μεταξύ εφαρμογών EJB και εκτός Java.

  • Να είναι συμβατό με το CORBA.

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

Στην παραπάνω λίστα, προσθέτω τους ακόλουθους πρόσθετους στόχους για το ενδιάμεσο λογισμικό Java εταιρικής κλάσης. Αυτές οι δυνατότητες του προϊόντος χρειάζονται μακροπρόθεσμα για την επιτυχή εκτέλεση και συντήρηση ενός περιβάλλοντος που βασίζεται σε μεσαίο λογισμικό:

  • Θα πρέπει να εξυπηρετεί τη διασύνδεση πολλαπλών επιχειρηματικών μονάδων, εταιρειών και πελατών σε μια κατανεμημένη υποδομή χωρίς να διακυβεύεται η ασφάλεια ή να δημιουργείται χάος

  • Θα πρέπει να επιτρέπει ευέλικτους αλλά αξιόπιστους μηχανισμούς ελέγχου πρόσβασης ώστε να διασφαλίζεται ότι η πρόσβαση στα δεδομένα των επιχειρηματικών εταίρων γίνεται μόνο με τους προβλεπόμενους τρόπους και μόνο από τα μέρη που προορίζονται

  • Θα πρέπει να επιτρέπει στους διαχειριστές συστημάτων να διαχειρίζονται ένα κατανεμημένο περιβάλλον υπολογιστών που περιέχει μεγάλο αριθμό στοιχείων επιχειρησιακής λογικής με ομοιόμορφο τρόπο, χωρίς να χρειάζεται να κατανοούν ή να εφαρμόζουν μοναδικές διαδικασίες σε συγκεκριμένα στοιχεία

  • Θα πρέπει να επιτρέπει στους διαχειριστές συστημάτων να κάνουν επιλογές στοιχείων υποδομής χωρίς να επηρεάζουν τις εφαρμογές, και να συντονίζουν και να κλιμακώνουν αυτά τα στοιχεία και να έχουν ένα ομοιόμορφο και γενικό μέσο μέτρησης της απόδοσης και των αναγκών πόρων όλων των εφαρμογών

  • Θα πρέπει να επιτρέπει την μετεγκατάσταση των επιχειρηματικών στοιχείων μεταξύ πελατών και διακομιστών χωρίς να επηρεάζεται η αρχιτεκτονική των δύο

  • Θα πρέπει να παρέχει έναν μηχανισμό ασφαλείας που επιτρέπει σε συγκεκριμένους χρήστες να προσθέτουν νέα στοιχεία, χωρίς να χρειάζεται να παρέχει στον διαχειριστή του διακομιστή πρόσβαση σε όλα τα στοιχεία και τις πηγές δεδομένων (αυτή είναι μια μεγάλη ευκαιρία για δυνατότητα προστιθέμενης αξίας, καθώς είναι κρίσιμο για τις εφαρμογές extranet και συνεργασιών )

Εξαρτήματα και δυνατότητες πλατφορμών Java middleware

Η ταχύτερα αναπτυσσόμενη κατηγορία Java middleware σήμερα είναι πιθανώς διακομιστές εφαρμογών. Ωστόσο, είναι σημαντικό να συνειδητοποιήσουμε τη μεγάλη ποικιλία διακομιστών εφαρμογών (και άλλων ειδών προϊόντων μεσαίου λογισμικού) που υπάρχουν. Οι διακρίσεις μεταξύ των κατηγοριών προϊόντων μεσαίου λογισμικού Java σήμερα δεν αντιπροσωπεύονται από μια γραμμή αλλά από ένα τεράστιο συνεχές λογισμικό ενδιάμεσου λογισμικού. Θα συζητήσω τώρα τις δυνατότητες του Java middleware, με βάση τις δικές μου συγκρίσεις εργασίας, οι οποίες καλύπτουν κάθε κατηγορία προϊόντων Java middleware που γνωρίζω.

Μοντέλα αντικειμένων, στοιχείων και κοντέινερ

Τα στοιχεία της εφαρμογής πρέπει να συμμορφώνονται με κάποιο μοντέλο ανάπτυξης χρόνου εκτέλεσης, το οποίο καθορίζει τον τρόπο με τον οποίο το στοιχείο επικοινωνεί με το περιβάλλον του. (πιθανώς) πώς εγκαθίσταται, ξεκινά, σταματά και καλείται. και πώς έχει πρόσβαση σε σημαντικές υπηρεσίες για το περιβάλλον της. Τα δημοφιλή μοντέλα χρόνου εκτέλεσης και κοντέινερ που βασίζονται σε κεντρικό υπολογιστή Java περιλαμβάνουν τα RMI, EJB, CORBA, DCOM, servlet, JSP (Java Server Pages) και Java αποθηκευμένες διαδικασίες. Επιπλέον, τα συστατικά μοντέλα μπορούν να εκφραστούν σε μια ποικιλία υποκείμενων γλωσσών, όπως Java, IDL, C ++ και πολλά άλλα.

Υπάρχει αλληλεπικάλυψη με διάφορα μοντέλα εξαρτημάτων. Για παράδειγμα, το RMI είναι ένα ασήμαντο συστατικό μοντέλο με πολύ βασικές εγκαταστάσεις για ενεργοποίηση αντικειμένων και τοποθεσία, και είναι κυρίως ένα απομακρυσμένο πρότυπο επίκλησης, ενώ το EJB αξιοποιεί το RMI και καθορίζει το RMI ως το πρωτεύον μοντέλο επίκλησης αντικειμένων. Το EJB υποστηρίζει επίσης το CORBA. Στην πραγματικότητα, κανένα από αυτά τα μοντέλα δεν είναι αποκλειστικό και πολλοί διακομιστές εφαρμογών Java υποστηρίζουν τα περισσότερα ή όλα τα παραπάνω μοντέλα.

Πολλοί διακομιστές μεσαίου λογισμικού Java εκτελούν πολλές παρουσίες επιχειρηματικών αντικειμένων (τις οποίες ο κόσμος CORBA καλεί τώρα υπηρέτες) μέσα σε μια ενιαία εικονική μηχανή Java (JVM). Η ασφάλεια τύπου της γλώσσας Java επιτρέπει μια μεμονωμένη διαδικασία JVM για την εξυπηρέτηση αιτημάτων από πολλούς πελάτες και τη χρήση δομών δεδομένων προγράμματος και φορτωτών κλάσης για τη διατήρηση των δεδομένων πελατών ξεχωριστά. Εφ 'όσον οι υπάλληλοι δεν χρησιμοποιούν τις δικές τους εγγενείς μεθόδους, δεν είναι δυνατό για έναν υπηρέτη να κατεβάσει άλλους υπαλλήλους εάν καταρρεύσει (εκτός αν συναντήσει ένα σφάλμα στο ίδιο το JVM) ή εάν έχει πρόσβαση σε δεδομένα που είναι ιδιωτικά σε άλλες τάξεις . Ένας σωστά σχεδιασμένος διακομιστής αντικειμένων θα προστατεύσει τα ιδιωτικά του αντικείμενα και θα αποτρέψει την πρόσβαση εσφαλμένων αντικειμένων σε αυτά που ανήκουν σε άλλα αντικείμενα.

Ωστόσο, τα δεδομένα που δηλώνονται στατικά σε μια κλάση Java μπορούν να μοιραστούν μεταξύ των πελατών εντός του ίδιου JVM εάν οι πελάτες χρησιμοποιούν τον ίδιο φορτωτή κλάσης, επομένως πρέπει να οριστούν κανόνες για να υπαγορεύσουν πότε ένα ξεχωριστό JVM (ή το αντίστοιχο ενός ξεχωριστού JVM που χρησιμοποιεί μνήμη- τεχνικές διαμέρισης) ή ξεχωριστός φορτωτής κλάσης απαιτείται για να δώσει στον πελάτη το δικό του χώρο στατικών δεδομένων. Τέτοιοι κανόνες έχουν καθοριστεί για μικροεφαρμογές, αλλά όχι για άλλα περιβάλλοντα εκτέλεσης. Ο διακομιστής Web Java της Sun χρησιμοποιεί ένα μόνο JVM για όλα τα servlets και έναν ξεχωριστό χώρο ονόματος κλάσης για servlets με διαφορετική βάση κώδικα. Το EJB παρακάμπτει το ζήτημα απαγορεύοντας μη τελικά στατικά δεδομένα.

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

Συμβατότητα EJB (έκδοση)

Το μοντέλο EJB υποστηρίζεται ήδη παγκοσμίως. Σχεδόν κάθε προμηθευτής μεσαίου λογισμικού έχει υποσχεθεί να το υποστηρίξει και πολλοί ήδη το κάνουν. Επιπλέον, η ομάδα διαχείρισης αντικειμένων (OMG) έχει ενσωματώσει μια χαρτογράφηση στο EJB ως μέρος της προτεινόμενης Προδιαγραφή συστατικών CORBA. Είναι δύσκολο να φανταστεί κανείς ότι ακόμη και η Microsoft, η μόνη και σταθερή αναμονή, τελικά δεν θα αποδώσει και θα παρέχει κοντέινερ EJB για το DCOM.

Ενώ διαφορετικά συμβατά με το EJB ενδιάμεσο λογισμικό μπορούν να αναπτύξουν και να λειτουργήσουν τα ίδια στοιχεία εφαρμογής (εφ 'όσον αυτά τα στοιχεία χρησιμοποιούν μόνο τυπικές απαιτούμενες λειτουργίες EJB), εξακολουθεί να υπάρχει μεγάλη παραλλαγή μεταξύ διακομιστών συμβατών με EJB. Πρώτον, η ίδια η προδιαγραφή EJB εξελίσσεται. Μια σημαντική ερώτηση κατά την αξιολόγηση των προϊόντων μεσαίου λογισμικού Java, επομένως, είναι: Υποστηρίζει ο διακομιστής την τελευταία έκδοση του EJB ή υποστηρίζει μόνο μια προηγούμενη έκδοση; Μια άλλη βασική ερώτηση είναι: Το προϊόν EJB-κεντρικό, ή η υποστήριξη EJB περιλαμβάνεται μόνο στις δυνατότητες προστιθέμενης αξίας του προϊόντος (και επομένως δεν είναι διαθέσιμος όταν χρησιμοποιούνται υπηρεσίες ή API EJB); Και τέλος: Ποιες προαιρετικές δυνατότητες EJB περιλαμβάνονται (για παράδειγμα, φασόλια οντοτήτων και επιμονή που διαχειρίζεται το κοντέινερ);