Java EE и Flex, част 1: Убедителна комбинация

Adobe Flex се превръща в популярен избор за генериране на клиентска страна на корпоративни Java приложения. В тази първа от двете статии Дъстин Маркс демонстрира как Flex може да ви помогне да доставите силно интерактивни потребителски интерфейси, които имат достъп до корпоративната логика на вашето Java EE приложение. Получете практическо въведение в усъвършенстването на прост клиент на Flex, след което му позволете да комуникира с вашия Java EE сървър. Ниво: Начинаещ

Flex 3 ви дава друг избор за изграждане на базирани на браузър потребителски интерфейси за вашите Java EE приложения. Ако все още не сте открили колко лесно е да добавите богати клиенти към корпоративни Java приложения с Flex, тази статия може да ви послужи като точка за влизане. Ще разберете какви ползи Flex носи на масата, как да създавате оформления на приложения, използвайки XML граматиката на Flex, и как да накарате вашия клиент на Flex да работи с Java EE приложение.

Разработчиците на Java, които приемат Flex

Знаем, че някои разработчици на Java са устойчиви на Flex като предна технология за Java EE, но има силен аргумент за даване на шанс на Flex. Авторът Дъстин Маркс обсъжда факторите, които движат приемането на Flex в Java общността в страничната лента на тази практическа статия.

Преди да ви помоля да инсталирате Flex и да започнете да съставяте примерно приложение, нека разгледаме предимствата на използването на Flex като технология от страна на клиента. Flex предлага предимства, специфични за разработчиците на Java и някои, които са по-общи. Ще разгледаме и двете.

Защо да изберем Flex?

Приемането на нова технология означава възприемане на кривата на обучение, което може да отнеме някои убедителни резултати. Ето някои общи предимства при използването на Flex:

  • Можете да напишете Flex код веднъж и да го стартирате във всеки уеб браузър, за който съществува приставка за 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.)
  • Можете да свържете Flex-базирания преден край с която и да е back-end технология, използвайки техники, които насърчават разхлабеното свързване. Flex осигурява вградена поддръжка за комуникация с back-end чрез традиционните HTTP и SOAP-базирани уеб услуги.
  • Flex предоставя богат набор от компоненти, Flash ефекти (включително анимация, видео и аудио) и функции за достъпност, които улесняват добавянето на богатство и много течни преживявания към уеб приложение.

Flex за разработчици на Java

Общите ползи може да са достатъчни, за да ви привлекат към Flex, но има и други, които са предимно или изцяло насочени към разработчиците на Java.

Едно такова предимство е поразителната прилика между Java и ActionScript 3.0 в езиковите функции, концепции и синтаксис. Езиците използват подобни условни изрази, цикличен синтаксис и дори конвенции за кодиране. (Спорно е, че ActionScript е по-скоро Java, отколкото JavaFX Script.) Подобният на Javadoc инструмент за генериране на документация ASDoc на Flex използва същия синтаксис на коментари, който използвате в Java за генериране на документация. Структурата на опаковката на ActionScript е свързана със структурата на директориите по същия начин, по който Java подхожда към пакетите и директориите.

ActionScript 3 също така предоставя базирани на класа обектно-ориентирани функции (като класове в смисъла на Java, наследяване и интерфейси) и статично въвеждане. Тези допълнения към това, с което повечето от нас са свикнали в JavaScript, улесняват обучението и използването на ActionScript. (ActionScript все още прави динамично въвеждане и базирано на прототип наследство достъпно за ситуации, когато искате или имате нужда от тези функции на традиционния JavaScript.)

Способността на Flex да комуникира с Java EE back-end, използвайки HTTP или SOAP-базирани уеб услуги, е изключително полезна, но не сте ограничени до тези комуникационни подходи. Blaze DS - отделен продукт с отворен код от Adobe - ви дава още по-голяма гъвкавост за комуникация между Flex front-end и Java EE back-end. BlazeDS ви позволява да използвате JMS за комуникация и ви позволява да използвате отдалечаване на обекти с Java. BlazeDS също добавя потенциални ползи за производителността, тъй като използва двоичния формат AMF3 за по-бърза комуникация, отколкото обикновено се среща с XML.

Продукт на трета страна с отворен код, наречен GraniteDS, предлага още повече възможности за прилагане на Flex-базиран интерфейс към Java EE приложение. GraniteDS предлага поддръжка за двоичен формат AMF3, а също и някои функции, които не са налични при BlazeDS. Например, GraniteDS предлага инструменти и рамки за услуги за по-лесно интегриране на Flex с back-end базирани на EJB 3, Spring Framework, Guice или Seam.

При обсъждането на Flex досега многократно съм използвал думите прости и лесни . Но не ми вярвайте само на думата. Най-добрият начин да разберете колко прости и лесни са основите на Flex е да ги изпробвате сами. В следващите раздели ще внедрите примерно приложение, ще го рефакторирате, за да добавите функции и да намалите кода на шаблона, и след това ще установите комуникация между вашия нов, базиран на Flex клиент и Java сървлет.

Придобиване и инсталиране на Flex

Примерите в тази статия използват Flex 3.2 SDK. Ако искате да изградите и стартирате примерите, изтеглете Flex SDK (включително компилатора на командния ред и дебъгъра). Един ZIP файл съдържа Flex SDK за множество платформи.

Разархивирайте файла на очевидно място, като C:\flex_sdk_3_2. За удобство добавете местоположението на директорията Flex SDK binв пътя, така че инструментите на командния ред да могат да се изпълняват от всяка директория. Обичам да създавам FLEX_HOMEпроменлива на средата, която сочи към местоположението на Flex SDK и след това да добавя $FLEX_HOME/binили %FLEX_HOME%\binкъм PATH. Можете да проверите правилната инсталация на Flex, като изпълните командата mxmlc -version, както е показано на фигура 1.

Въпреки че не е необходимо да изграждате и стартирате примерите, може да се интересувате от изтеглянето на FlexBuilder 3, който се предлага безплатно за пробен период. FlexBuilder ви позволява да използвате всеки текстов редактор (като JEdit или vim) или Java IDE (като NetBeans или Eclipse), за да пишете и поддържате MXML и ActionScript файлове. Aptana Studio и Spket IDE включват специфична поддръжка за редактиране на файлове, свързани с Flex.

MXML: Flex оформление с XML

Flex използва MXML за определяне на оформлението на приложението на Flex. Файловете за Flex оформление обикновено се именуват с .mxmlразширение. MXML кодът трябва да е добре оформен XML и да използва XML пространства от имена. Примерът в Листинг 1 демонстрира просто, но напълно функционално приложение Flex, написано изцяло с MXML, което показва списък с избрани статии на JavaWorld.

Листинг 1. Пример за статичен MXML

Тъй като този пример е статичен, той не показва много от предимствата на Flex и Flash. Той обаче служи като добро въведение в MXML.

Целият код в Листинг 1 е добре оформен XML. Повечето от XML редовете в Листинг 1 са свързани със същите редове на кода (повтарящи се GridRowелементи с вложени GridItemи Labelелементи). Те се използват за дефиниране на статична дисплейна мрежа с Gridкомпонента и неговите GridRowи GridItemподелементи. Използването на , и организира и представянето им по начин, подобен на начина, елементи HTML маса

, , и
, съответно, често се използват.

Този първи MXML пример също демонстрира корен маркер, използван във всички MXML приложения. Този маркер включва изрична ширина и височина за приложението Flex. В mxпрефикс е свързано с Flex XML пространство от имена като част от този главен елемент.

Ще използвате компилатора на командния ред Flex mxmlc,, за да компилирате примерите в тази статия. По подразбиране Flex (дефинирани във flex-config.xmlфайла) са достатъчни за нуждите на примерите, улеснявайки компилацията mxmlc. Ако приемем, че първият MXML списък е записан във файл с име Example1.mxml, вие го компилирате с тази команда:

mxmlc Example1.mxml

В съответствие с настройките по подразбиране, този MXML файл се компилира в SWF файл, наречен Example1.swf, който се поставя в същата директория като MXML файла, от който е генериран. Можете да изпълните SWF файла, като го отворите в уеб браузър или просто въведете цялото име на файла в командния ред. Полученият SWF файл изглежда като Фигура 2.