Programmering

Java EE og Flex, del 1: En overbevisende kombinasjon

Adobe Flex blir et populært valg for å generere klientsiden av bedriftens Java-applikasjoner. I denne første av to artikler demonstrerer Dustin Marx hvordan Flex kan hjelpe deg med å levere svært interaktive brukergrensesnitt som får tilgang til Java EE-applikasjonens bedriftslogikk. Få en praktisk introduksjon til å perfeksjonere en enkel Flex-klient, og la den deretter kommunisere med Java EE-serveren din. Nivå: Nybegynner

Flex 3 gir deg et annet valg for å bygge nettleserbaserte brukergrensesnitt for Java EE-applikasjonene dine. Hvis du ennå ikke har oppdaget hvor enkelt det er å legge til rike klienter i Java-applikasjoner med Flex, kan denne artikkelen tjene som inngangspunkt. Du vil finne ut hvilke fordeler Flex gir til bordet, hvordan du lager applikasjonsoppsett ved bruk av Flexs XML-grammatikk, og hvordan du får Flex-klienten til å fungere med et Java EE-program.

Java-utviklere vedtar Flex

Vi vet at noen Java-utviklere er motstandsdyktige mot Flex som en front-end-teknologi for Java EE, men det er et sterkt argument for å gi Flex en sjanse. Forfatter Dustin Marx diskuterer faktorene som driver Flex-adopsjon i Java-samfunnet i en sidefelt til denne praktiske artikkelen.

Før jeg ber deg om å installere Flex og begynne å sette sammen et eksempel på et program, la oss vurdere fordelene ved å bruke Flex som klientside-teknologi. Flex tilbyr fordeler som er spesifikke for Java-utviklere og noen som er mer generelle. Vi ser på begge deler.

Hvorfor velge Flex?

Å vedta en ny teknologi betyr å omfavne en læringskurve, noe som kan ta noe overbevisende. Her er noen generelle fordeler ved å bruke Flex:

  • Du kan skrive Flex-kode en gang og kjøre den i en hvilken som helst nettleser som det finnes et Flash Player-plugin for. Ingen av nettleserens gjenkjennings- eller objektgjenkjenningskoder som er typiske for JavaScript- eller Ajax-applikasjoner, kreves.
  • Måletid (Flash Player 9 eller nyere) er installert på mer enn 95 prosent av nettlesere over hele verden.
  • Flex er basert på standarder. Skriptspråket (ActionScript 3.0) har røtter i ECMAScript (samme spesifikasjon implementert av JavaScript), og layoutspråket er en spesifikk XML-grammatikk kalt MXML. Kjennskap til de underliggende standardene kan hjelpe deg å lære Flex relativt enkelt.
  • Flex har en forfriskende enkel mekanisme for å binde egenskapen til ett objekt i en Flex-applikasjon til eiendommen til et annet objekt i Flex. Denne vanedannende funksjonen blir ofte referert til som eiendomsbinding. (JSR 295: Beans Binding er ment å legge til denne funksjonen til Java-språket, men den vil ikke bli inkludert i Java SE 7.)
  • Du kan knytte den Flex-baserte front-enden til hvilken som helst back-end-teknologi ved hjelp av teknikker som fremmer løs kobling. Flex gir innebygd støtte for kommunikasjon med bakenden via både tradisjonelle HTTP- og SOAP-baserte webtjenester.
  • Flex gir et rikt sett med komponenter, Flash-effekter (inkludert animasjon, video og lyd) og tilgjengelighetsfunksjoner som gjør det enkelt å legge til rikdom og svært flytende opplevelser til et webapplikasjon.

Flex for Java-utviklere

Generelle fordeler kan være nok til å tiltrekke deg Flex, men det er andre som hovedsakelig eller er rettet mot Java-utviklere.

En slik fordel er den slående likheten mellom Java og ActionScript 3.0 i språkfunksjoner, konsepter og syntaks. Språkene bruker lignende betingede utsagn, looping syntaks og til og med kodingskonvensjoner. (Det kan diskuteres at ActionScript er mer som Java enn JavaFX Script.) Flexs Javadoc-lignende ASDoc-dokumentasjonsgenereringsverktøy bruker samme kommentarsyntaks som du bruker i Java for å generere dokumentasjon. ActionScripts emballasjestruktur er relatert til katalogstruktur på nøyaktig samme måte som Java nærmer seg pakker og kataloger.

ActionScript 3 gir også klassebaserte objektorienterte funksjoner (for eksempel klasser i Java-forstand, arv og grensesnitt) og statisk skriving. Disse tilleggene til det de fleste av oss er vant til i JavaScript, gjør det lettere å lære og bruke ActionScript. (ActionScript gjør fortsatt dynamisk skriving og prototypebasert arv tilgjengelig for situasjoner når du vil ha eller trenger disse funksjonene i tradisjonell JavaScript.)

Fleks evne til å kommunisere med en Java EE-back-end ved hjelp av HTTP eller SOAP-baserte webtjenester er svært nyttig, men du er ikke begrenset til disse kommunikasjonsmetodene. Blaze DS - et eget produkt med åpen kildekode fra Adobe - gir deg enda større fleksibilitet for å kommunisere mellom en Flex-frontend og en Java EE-back-end. BlazeDS lar deg bruke JMS til kommunikasjon og lar deg bruke objektfjerning med Java. BlazeDS legger også til potensielle ytelsesfordeler fordi den bruker det binære AMF3-formatet for raskere kommunikasjon enn det man normalt opplever med XML.

Et tredjeparts open source-produkt kalt GraniteDS tilbyr enda flere valg for å bruke en Flex-basert frontend til et Java EE-program. GraniteDS tilbyr støtte for AMF3 binært format, og også noen funksjoner som ikke er tilgjengelige med BlazeDS. For eksempel tilbyr GraniteDS verktøy og servicerammer for enklere integrering av Flex med bakenden basert på EJB 3, Spring Framework, Guice eller Seam.

Når jeg har diskutert Flex så langt, har jeg flere ganger brukt ordene enkel og lett. Men ikke bare ta ordet mitt for det. Den beste måten å forstå hvor enkelt og enkelt Flex-grunnleggende er, er å prøve dem selv. I de neste seksjonene implementerer du et eksempel på et program, omformer det for å legge til funksjoner og reduserer kjeleplatekoden, og deretter opprette kommunikasjon mellom din nye, Flex-baserte klient og en Java-servlet.

Å anskaffe og installere Flex

Denne artikkelens eksempler bruker Flex 3.2 SDK. Hvis du vil bygge og kjøre eksemplene, kan du laste ned Flex SDK (inkludert kommandolinjekompilatoren og feilsøkingsprogrammet). En enkelt ZIP-fil inneholder Flex SDK for flere plattformer.

Pakk ut filen til et tydelig sted, for eksempel C: \ flex_sdk_3_2. For enkelhets skyld legger du til plasseringen av Flex SDK søppel katalog i banen slik at kommandolinjeverktøyene kan kjøres fra hvilken som helst katalog. Jeg liker å lage en FLEX_HOME miljøvariabel som peker på Flex SDK-plasseringen og deretter legger til $ FLEX_HOME / søppel eller % FLEX_HOME% \ bin til STI. Du kan bekrefte en riktig installasjon av Flex ved å kjøre kommandoen mxmlc -versjon, som vist i figur 1.

Selv om det ikke kreves å bygge og kjøre eksemplene, kan du være interessert i å laste ned FlexBuilder 3, som er tilgjengelig gratis i en prøveperiode. FlexBuilder lar deg bruke hvilken som helst teksteditor (som JEdit eller vim) eller Java IDE (for eksempel NetBeans eller Eclipse) til å skrive og vedlikeholde MXML- og ActionScript-filer. Aptana Studio og Spket IDE inkluderer spesifikk støtte for redigering av Flex-relaterte filer.

MXML: Fleksibel layout med XML

Flex bruker MXML for å definere layoutet til en Flex-applikasjon. Flex-layoutfiler blir vanligvis navngitt med en .mxml Utvidelse. MXML-koden må være godt utformet XML og bruke XML-navneområder. Eksemplet i Listing 1 demonstrerer en enkel, men fullstendig funksjonell Flex-applikasjon, skrevet helt med MXML, som viser en liste over utvalgte JavaWorld-artikler.

Oppføring 1. Statisk MXML-eksempel

Fordi dette eksemplet er statisk, viser det ikke mange av Flexs og Flashs fordeler. Det fungerer imidlertid som en god introduksjon til MXML.

All koden i liste 1 er velformet XML. De fleste XML-linjene i liste 1 er relatert til de samme kodelinjene (gjentas GridRow elementer med nestede Rutenett og Merkelapp elementer). De brukes til å definere et statisk skjermgitter med Nett komponent og dens GridRow og Rutenett delelementer. Bruken av , , og organisere og presentere data på en måte som ligner på hvordan HTML-tabellelementer

, , og , henholdsvis brukes ofte.

Dette første MXML-eksemplet viser også root tag brukt i alle MXML applikasjoner. Denne taggen inneholder en eksplisitt bredde og høyde for Flex-applikasjonen. De mx prefikset er assosiert med Flex XML-navneområdet som en del av dette rotelementet.

Du bruker Flex-kommandolinjekompilatoren, mxmlc, for å samle denne artikkelens eksempler. Flex-standardinnstillingene (definert i flex-config.xml fil) er tilstrekkelig for eksemplenes behov, og lager kompilering med mxmlc lett. Forutsatt at den første MXML-oppføringen er lagret i en fil som heter Eksempel1.mxml, kompilerer du det med denne kommandoen:

mxmlc Eksempel1.mxml

I samsvar med standardinnstillingene blir denne MXML-filen samlet til en SWF-fil, kalt Eksempel1.swf, som er plassert i samme katalog som MXML-filen den ble generert fra. Du kan kjøre SWF-filen ved å åpne den i en nettleser eller ved å skrive inn hele filnavnet på kommandolinjen. Den gjengitte SWF-filen ser ut som figur 2.

$config[zx-auto] not found$config[zx-overlay] not found