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

Java EE and Flex, Μέρος 1: Ένας συναρπαστικός συνδυασμός

Το Adobe Flex γίνεται μια δημοφιλής επιλογή για τη δημιουργία της πλευράς πελατών των εταιρικών εφαρμογών Java. Σε αυτό το πρώτο από τα δύο άρθρα, ο Dustin Marx καταδεικνύει πώς το Flex μπορεί να σας βοηθήσει να παραδώσετε πολύ διαδραστικές διεπαφές χρήστη που έχουν πρόσβαση στην εταιρική λογική της εφαρμογής Java EE. Λάβετε μια πρακτική εισαγωγή για την τελειοποίηση ενός απλού πελάτη Flex και, στη συνέχεια, ενεργοποιήστε τον για να επικοινωνεί με τον διακομιστή Java EE. Επίπεδο: Αρχάριος

Το Flex 3 σάς προσφέρει μια άλλη επιλογή για τη δημιουργία διεπαφών χρήστη με βάση το πρόγραμμα περιήγησης για τις εφαρμογές Java EE. Εάν δεν έχετε ανακαλύψει ακόμα πόσο απλό είναι να προσθέσετε πλούσιους πελάτες σε εταιρικές εφαρμογές Java με το Flex, αυτό το άρθρο θα μπορούσε να χρησιμεύσει ως σημείο εισόδου. Θα μάθετε ποια είναι τα οφέλη που προσφέρει το Flex στο τραπέζι, πώς να δημιουργήσετε διατάξεις εφαρμογών χρησιμοποιώντας τη γραμματική XML του Flex και πώς να κάνετε το πρόγραμμα-πελάτη Flex να λειτουργεί με μια εφαρμογή Java EE.

Οι προγραμματιστές Java υιοθετούν το Flex

Γνωρίζουμε ότι ορισμένοι προγραμματιστές Java είναι ανθεκτικοί στο Flex ως τεχνολογία front-end για το Java EE, αλλά υπάρχει ένα ισχυρό επιχείρημα για να δοθεί στο Flex μια ευκαιρία. Ο συγγραφέας Dustin Marx συζητά τους παράγοντες που οδηγούν την υιοθέτηση του Flex στην κοινότητα Java σε μια πλαϊνή γραμμή σε αυτό το πρακτικό άρθρο.

Πριν σας ζητήσω να εγκαταστήσετε το Flex και να ξεκινήσετε να συνθέσετε ένα δείγμα εφαρμογής, ας εξετάσουμε τα πλεονεκτήματα της χρήσης του Flex ως τεχνολογίας πελάτη. Το Flex προσφέρει πλεονεκτήματα ειδικά για προγραμματιστές Java και ορισμένα γενικά. Θα δούμε και τα δύο.

Γιατί να επιλέξετε το Flex;

Η υιοθέτηση μιας νέας τεχνολογίας σημαίνει αγκαλιάζοντας μια καμπύλη μάθησης, η οποία μπορεί να πάρει κάποια πειστική. Ακολουθούν ορισμένα γενικά πλεονεκτήματα στη χρήση του Flex:

  • Μπορείτε να γράψετε έναν κωδικό Flex μία φορά και να τον εκτελέσετε σε οποιοδήποτε πρόγραμμα περιήγησης στο Web για το οποίο υπάρχει μια προσθήκη Flash Player. Δεν απαιτείται κανένας από τους κωδικούς εντοπισμού προγράμματος περιήγησης ή εντοπισμού αντικειμένων που είναι τυπικοί για εφαρμογές JavaScript ή Ajax.
  • Ο στόχος εκτέλεσης (Flash Player 9 ή μεταγενέστερη έκδοση) είναι εγκατεστημένος σε περισσότερο από το 95 τοις εκατό των προγραμμάτων περιήγησης Ιστού παγκοσμίως.
  • Το Flex βασίζεται σε πρότυπα. Η γλώσσα της δέσμης ενεργειών (ActionScript 3.0) έχει ρίζες στο ECMAScript (η ίδια προδιαγραφή εφαρμόστηκε με JavaScript) και η γλώσσα διάταξης είναι μια συγκεκριμένη γραμματική XML που ονομάζεται MXML. Η εξοικείωση με τα βασικά πρότυπα μπορεί να σας βοηθήσει να μάθετε το Flex με σχετική ευκολία.
  • Το Flex διαθέτει έναν αναζωογονητικό απλό μηχανισμό για τη σύνδεση της ιδιότητας ενός αντικειμένου σε μια εφαρμογή Flex με την ιδιότητα ενός άλλου αντικειμένου στο Flex. Αυτό το εθιστικό χαρακτηριστικό αναφέρεται συνήθως ως δεσμευτική ιδιοκτησία. (JSR 295: Το Beans Binding προορίζεται να προσθέσει αυτήν τη δυνατότητα στη γλώσσα Java, αλλά δεν θα συμπεριληφθεί στο Java SE 7.)
  • Μπορείτε να συσχετίσετε το front-end που βασίζεται στο Flex με οποιαδήποτε τεχνολογία back-end χρησιμοποιώντας τεχνικές που προωθούν τη χαλαρή ζεύξη. Το Flex παρέχει ενσωματωμένη υποστήριξη για επικοινωνία με back-end μέσω παραδοσιακών υπηρεσιών Web που βασίζονται σε HTTP και SOAP.
  • Το Flex παρέχει ένα πλούσιο σύνολο στοιχείων, εφέ Flash (συμπεριλαμβανομένων κινούμενων σχεδίων, βίντεο και ήχου) και δυνατότητες προσβασιμότητας που διευκολύνουν την προσθήκη πλούτου και πολύ ρευστών εμπειριών σε μια εφαρμογή Web.

Flex για προγραμματιστές Java

Τα γενικά οφέλη μπορεί να είναι αρκετά για να σας προσελκύσουν στο Flex, αλλά υπάρχουν και άλλα που στοχεύουν κυρίως ή εξ ολοκλήρου σε προγραμματιστές Java.

Ένα τέτοιο πλεονέκτημα είναι η εντυπωσιακή ομοιότητα μεταξύ Java και ActionScript 3.0 σε λειτουργίες γλώσσας, έννοιες και σύνταξη. Οι γλώσσες χρησιμοποιούν παρόμοιες δηλώσεις υπό όρους, σύνταξη βρόχου και ακόμη και συμβάσεις κωδικοποίησης. (Είναι αμφισβητήσιμο ότι το ActionScript μοιάζει περισσότερο με Java από το JavaFX Script.) Το εργαλείο δημιουργίας τεκμηρίωσης ASDoc που μοιάζει με Javadoc του Flex χρησιμοποιεί την ίδια σύνταξη σχολίων που χρησιμοποιείτε στη Java για τη δημιουργία τεκμηρίωσης. Η δομή συσκευασίας του ActionScript σχετίζεται με τη δομή καταλόγου με τον ίδιο ακριβώς τρόπο που η Java προσεγγίζει πακέτα και καταλόγους.

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

Η ικανότητα της Flex να επικοινωνεί με ένα Java EE back-end χρησιμοποιώντας HTTP ή SOAP-based Web Services είναι πολύ χρήσιμη, αλλά δεν περιορίζεστε σε αυτές τις επικοινωνιακές προσεγγίσεις. Το Blaze DS - ένα ξεχωριστό προϊόν ανοιχτού κώδικα από την Adobe - σας δίνει ακόμα μεγαλύτερη ευελιξία για επικοινωνία μεταξύ ενός Flex front-end και ενός Java EE back-end. Το BlazeDS σάς επιτρέπει να χρησιμοποιείτε το JMS για επικοινωνία και σας επιτρέπει να χρησιμοποιείτε απομακρυσμένη αποστολή αντικειμένων με Java. Το BlazeDS προσθέτει επίσης πιθανά οφέλη απόδοσης, επειδή χρησιμοποιεί τη δυαδική μορφή AMF3 για ταχύτερη επικοινωνία από ό, τι συνήθως συμβαίνει με το XML.

Ένα προϊόν ανοιχτού κώδικα τρίτου μέρους που ονομάζεται GraniteDS προσφέρει ακόμη περισσότερες επιλογές για την εφαρμογή ενός F-front-end σε μια εφαρμογή Java EE. Το GraniteDS προσφέρει υποστήριξη για τη δυαδική μορφή AMF3 και επίσης ορισμένες δυνατότητες που δεν είναι διαθέσιμες με το BlazeDS. Για παράδειγμα, το GraniteDS προσφέρει εργαλεία και πλαίσια υπηρεσιών για ευκολότερη ενσωμάτωση του Flex με back-end με βάση το EJB 3, το Spring Framework, το Guice ή το Seam.

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

Απόκτηση και εγκατάσταση του Flex

Τα παραδείγματα αυτού του άρθρου χρησιμοποιούν το Flex 3.2 SDK. Εάν θέλετε να δημιουργήσετε και να εκτελέσετε τα παραδείγματα, πραγματοποιήστε λήψη του Flex SDK (συμπεριλαμβανομένου του μεταγλωττιστή γραμμής εντολών και του εντοπισμού σφαλμάτων). Ένα μεμονωμένο αρχείο ZIP περιέχει το Flex SDK για πολλές πλατφόρμες.

Αποσυμπιέστε το αρχείο σε μια εμφανή τοποθεσία, όπως Γ: \ flex_sdk_3_2. Για ευκολία, προσθέστε τη θέση του Flex SDK αποθήκη κατάλογο στη διαδρομή έτσι ώστε τα εργαλεία της γραμμής εντολών να μπορούν να εκτελούνται από οποιονδήποτε κατάλογο. Μου αρέσει να δημιουργώ ένα FLEX_HOME μεταβλητή περιβάλλοντος που δείχνει στη θέση Flex SDK και, στη συνέχεια, προσθέστε $ FLEX_HOME / κάδο ή % FLEX_HOME% \ bin στο ΜΟΝΟΠΑΤΙ. Μπορείτε να επαληθεύσετε τη σωστή εγκατάσταση του Flex εκτελώντας την εντολή mxmlc-μετατροπή, όπως φαίνεται στο σχήμα 1.

Παρόλο που δεν απαιτείται να δημιουργήσετε και να εκτελέσετε τα παραδείγματα, ίσως σας ενδιαφέρει να κατεβάσετε το FlexBuilder 3, το οποίο είναι διαθέσιμο χωρίς κόστος για μια δοκιμαστική περίοδο. Το FlexBuilder σάς επιτρέπει να χρησιμοποιείτε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου (όπως JEdit ή vim) ή Java IDE (όπως NetBeans ή Eclipse) για να γράφετε και να συντηρείτε αρχεία MXML και ActionScript. Το Aptana Studio και το Spket IDE περιλαμβάνουν ειδική υποστήριξη για την επεξεργασία αρχείων που σχετίζονται με το Flex.

MXML: Ευέλικτη διάταξη με XML

Το Flex χρησιμοποιεί MXML για τον καθορισμό της διάταξης μιας εφαρμογής Flex. Τα αρχεία ευέλικτης διάταξης ονομάζονται συνήθως με ένα .mxml επέκταση. Ο κωδικός MXML πρέπει να είναι καλά διαμορφωμένος XML και να χρησιμοποιεί χώρους ονομάτων XML. Το παράδειγμα στην Λίστα 1 δείχνει μια απλή αλλά πλήρως λειτουργική εφαρμογή Flex, γραμμένη εξ ολοκλήρου με MXML, η οποία εμφανίζει μια λίστα επιλεγμένων άρθρων JavaWorld.

Λίστα 1. Στατικό παράδειγμα MXML

Επειδή αυτό το παράδειγμα είναι στατικό, δεν δείχνει πολλά από τα πλεονεκτήματα των Flex και Flash. Ωστόσο, χρησιμεύει ως μια καλή εισαγωγή στο MXML.

Όλος ο κώδικας στη λίστα 1 είναι καλά σχηματισμένο XML. Οι περισσότερες από τις γραμμές XML στη λίστα 1 σχετίζονται με τις ίδιες γραμμές κώδικα (επαναλαμβανόμενες GridRow στοιχεία με ένθετα GridItem και Επιγραφή στοιχεία). Χρησιμοποιούνται για τον ορισμό ενός στατικού πλέγματος οθόνης με το Πλέγμα συστατικό και του GridRow και GridItem επιμέρους στοιχεία. Η χρήση του , , και οργανώστε και παρουσιάστε δεδομένα με τρόπο παρόμοιο με τον τρόπο με τον οποίο τα στοιχεία του πίνακα HTML

, , και , αντίστοιχα, χρησιμοποιούνται συχνά.

Αυτό το πρώτο παράδειγμα MXML δείχνει επίσης το root tag που χρησιμοποιείται σε όλες τις εφαρμογές MXML. Αυτή η ετικέτα περιλαμβάνει ένα ρητό πλάτος και ύψος για την εφαρμογή Flex. ο μχ Το πρόθεμα σχετίζεται με το χώρο ονομάτων Flex XML ως μέρος αυτού του ριζικού στοιχείου.

Θα χρησιμοποιήσετε το μεταγλωττιστή γραμμής εντολών Flex, mxmlc, για να συγκεντρώσετε τα παραδείγματα αυτού του άρθρου. Οι προεπιλογές Flex (ορίζονται στο flex-config.xml αρχείο) είναι επαρκείς για τις ανάγκες των παραδειγμάτων, κάνοντας τη συλλογή με mxmlc Ανετα. Υποθέτοντας ότι η πρώτη λίστα MXML αποθηκεύεται σε ένα αρχείο με το όνομα Παράδειγμα1.mxml, το μεταγλωττίζετε με αυτήν την εντολή:

mxmlc Παράδειγμα1.mxml

Σύμφωνα με τις προεπιλεγμένες ρυθμίσεις, αυτό το αρχείο MXML μεταγλωττίζεται σε ένα αρχείο SWF, το οποίο ονομάζεται Παράδειγμα 1.swf, τοποθετείται στον ίδιο κατάλογο με το αρχείο MXML από το οποίο δημιουργήθηκε. Μπορείτε να εκτελέσετε το αρχείο SWF ανοίγοντας το σε πρόγραμμα περιήγησης Web ή απλά εισάγοντας ολόκληρο το όνομα αρχείου στη γραμμή εντολών. Το αρχείο SWF που αποδίδεται μοιάζει με το σχήμα 2.