JGear LiveSource je nový modelovací nástroj firmy CodeGear. LiveSource umožňuje modelování a vizuální návrh Java /Java EE aplikací pomocí modelovacího jazyka UML. Tento produkt je distribuován jako plugin pro vývojové prostředí Eclipse. V tomto příspěvku bych chtěl popsat svoje dojmy a zkušenosti z tohoto produktu.
Co je JGear?
CodeGear se snaží navázat na předešlé úspěchy JBuilderu (javovské IDE) a rozhodl se pro radikální krok – přepsat celý JBuilder na platformu Eclipse, využít existující široké komunity a zároveň dodat resp. prodat dodatečnou přidanou hodnotu v podobě jednak:
- rozšířené, předpřipravené, otestované distribuce Eclipsu pod značkou JBuilder (placené JBuilder 2007 a JBuilder 2007 Enterprise Edition, Turbo JBuilder 2007 zdarma)
- specializovaných kvalitních komerčních Eclipse pluginů (distribuovaných samostatně) - tedy kolekce JGear
Kolekce samostatně dostupných pluginů pro Eclipse platformu se jmenuje JGear. Do JGear patří:
- JGear LiveSource
- JGear Performance
- JGear Team Server
- JGear Team Client
Já se v tomto článku budu zabývat pouze prvním z nich, JGear LiveSourcem. Pokud vás zajímají i ostatní, podívejte se na stránku: www.codegear.com/products/jgear .
JGear LiveSource - Instalace
Instalace JGear LiveSource je jednoduchá a probíhá přes standardní manager updatů pro Eclipse – tzn. Help / Software Updates / Find and Install -> Search for new features to install atd. Zadáte “New Remote Site“ http://www.jbuilderupdatesite.com/2007r2. Najdete si a zvolíte JGear LiveSource a nainstalujete ho, včetně všech potřebných knihoven:
Zde bych chtěl upozornit, že JGear LiveSource je momentálně podporuje Eclipse 3.2 (Callisto), oficiální podpora pro Eclipse 3.3 (Aurora) je již na cestě. Release se připravuje se na začátek roku 2008 (viz zde).
Poté co plugin nainstalujete a restarujete, v menu help můžete otevřít domovskou stránku LiveSourcu, kde máte přehledně odkazy na nápovědu, readme a cheat sheety. Pro objevování možností LiveSourcu vřele doporučuji začít odtud:
Co je JGear LiveSource
Poté co jsme se LiveSource nainstalovali, je již na čase přejít k tomu, co LiveSource vůbec je a k čemu určen. Co za cenu, kterou za něj zaplatíte (ano, je to tak, JGear LiveSource je komerční plugin, momentálně stojí 6900,- bez DPH), dostanete?
Když bych to měl vyjádřit jednou větou, řekl bych že je to „obousměrný“ UML modelář pro Javu – je vám jedno zda editujete Javu nebo model, tenhle tool vám udržuje model s kódem pořád synchronizovaný.
Podíváme-li se na web a do marketingových materiálů, dozvíme se, že Gear LiveSource je klasickým příkladem nástroje umožňujícím rychlý vývoj aplikací, neboli RAD (rapid application development).
Rád bych zde poznamenal, že Borland tyto nástroje vždy uměl velmi dobře, takže všem skeptikům bych rád doporučil novou řadu nástrojů od CodeGearu vyzkoušet, než se pustí do nějakých soudů ;-)
LiveSource si klade za cíl zefektivnit, zrychlit a zkvalitnit vývoj J2EE (dnes již vlastně JEE) aplikací. A to jak nováčkům tak i ostříleným J2EE borcům. Toto je úkol nelehký, ale neřekl bych, že nesplnitelný.
Já bych přidal do výčtu uvedených příslibů ještě „zpříjemnit“. S pluginem jsem pracoval (nebo lépe “hrál si” při prototypování jisté JEE aplikace a musím říct, že mě to opravdu bavilo a celkově je moje mínění o tomto produktu velice pozitivní .
Podívejme se tedy podrobněji, jak se výše uvedených cílů snaží LiveSource docílit:
LiveSource vás neomezuje, umožní vám návrh a vývoj aplikací
- jak pomocí modelování a grafických navrhářů
- tak i přímočaře editací zdrojáků
Obojí je pěkně propojeno a synchronizace modelu a kódu je prostě okamžitá. To samozřejmě není nic převratného. V tomto případě jde o to, že v LiveSource toto opravdu funguje. Máte-li otevřené okno s UML modelářem a pod ním okno Java editoru, změny které provedete v UML editoru se okamžitě promítnou do Java kódu. Změny v Java kódu se taktéž automaticky - bez nutnosti vašeho zásahu - promítnou v okně modeláře.
Po zkušenostech s LiveSource mi přijde, že se tento tool limitně blíží tomu, co hledám. K ničemu vás nenutí, neomezuje vás. Chcete-li, můžete jen kódovat ve vašem oblíbeném IDE - Eclipsu. Ale jakmile si vyzkoušíte jednoduchost, s jakou můžete modelovat a navrhovat třídy, komponenty, JPA entity, EJB a vztahy mezi nimi, určitě si modelář oblíbíte a rádi ho budete kódováním kombinovat.
"Full LiveSource capabilities let you use either a code-centric or RAD visual environment. Easily create EJBs and model relationships, security, and OCL constraints. Changes to the source code, annotations, properties view and graphical view are always in sync. LiveSource technology simultaneously replicates changes between the model and the underlying code to ensure system architects and developers are closely aligned in the development process."
Zajímalo by mě, pokud někdo z vás používá podobný obousměrný tool, neváhejte se zmínit o vašich zkušenostech s ním v komentářách pod článkem.
JGear LiveSource - detaily
LiveSource se dělí na dvě součásti:
- Grafický návrhář EJB (Graphical EJB Workbench) (pozn. autora: épe řečeno, UML modelář, který je nejen samozřejmě nejen na EJB)
- Návrhář Webových služeb (Web Services Designer)
LiveSource podporuje následující technologie a standardy, pro které poskytuje specializované grafické nástroje:
- EJB 3
- EJB 2
- JPA
- Webové služby (Web Services)
Pro modelování používá LiveSource standardně modelovací jazyk UML verze 2.0. Podporovány jsou jak diagramy tříd (class diagramy) tak i sekvenční diagramy (sequence diagrams) – viz dále.
Dále s s LiveSourcem dostanete i některé další funkce. Jako například dodatečné implementace pluginů pro runtime podporu aplikačních serverů (od Apache Geronimo 1.1, přes Apache Tomcat 5.5, JBoss, Glassfish, Weblogic, Oracle Application Server, WebSphere, až po JonAS nebo Borland Application Server). Abyste je při jejich instalaci odlišili mezi existujcími runtime-servery, které už v Eclipse máte díky WTP, v jejich názvu najdete informaci že se jedná o implementaci od Borlandu případně CodeGear – tzn. například JBoss v 4.0 for EJB 3.0 (Borland). Ja jsem při vývoji použil plugin JBoss 4.0.5 s EJB 3 od Borlandu a všechno fungovalo tak jak má, bez chybičky. Borlandí implementace vychází z existujících WTP runtimů a rozšiřuje je (např. v případech kdy WTP verze runtimu nepodporuje nějakou verzi aplikačního serveru atd.), případně je fixuje.
Nyní pár ukázek možností, které vám LiveSource dává:Grafický návrhář EJB (Graphical EJB Workbench)
Řekněme, že chci vyvíjet jednoduchou EJB3 aplikaci a provozovat jí na aplikačním serveru JBoss 4.0.5. Začnu průvodcem pro vytvoření nového projektu – New Project a vyberu EJB Modeling Project.
V druhém kroku vyberu runtime aplikačního serveru na který budu chtít projekt deployovat a zadám cesty projektu:
Eclipse vám automaticky nabídne přepnout se do perspektivy určené pro modelování (Modeling Perspective) a vytvoří počáteční diagram. Jak vidíte na screenshotu, máte k dizpozici poměrně širokou paletu nástrojů pro modelování:
Paleta Class Diagram Elements obsahuje nástroje pro tvorbu nové package, třídy, rozhraní, enumerace a pro modelování vztahů – asociace a generalizace, dependence atd. OCL Elementy obsahují nástroje pro zanesení constraintů Object Constraint Language. JPA Elementy pro modelování persistence – entity, relace ale i například Embeddable class, jak je definovaná v EJB3.
No a konečně paleta EJB elementů obsahuje paletu prvků reprezentující od session bean, přes message driven beany, injected EJB reference až po Interceptor Reference tool.
Tento obrázek zachycuje velice jednoduchý příklad, který v klidu naklikáte myší. Vidíte, že možnosti se neomezují jen na vytváření session nebo entity bean, ale v podstatě jen prací myší vytvoříte například Embeddable Class, propojíte jí s její hlavní entitou, můžete vytvořit interceptor k session beaně apod.
Důležité je, že ke kterémukoliv objektu, který namodelujete, se na pozadí generují příslušné zdrojové kódy. Změna v modelu nebo změna pomocí properties inspektoru je okamžitě provedena i v kódu. A to i naopak, přejdete-li do kódu a začnete editovat, příslušné změny se projevují ihned i v modelu. Stačí například změnit i anotaci a změna je vidět ihned v modelu.
V modeláři modelujete obyčenjné (POJO) třídy, EJB, ale i JPA entity:
Modelář JPA (Java Persistence API)
Pokud chcete ve svém projektu použít Java Persistence API (JPA), poskytuje vám LiveSource plugin modelář pro návrh JPA entit a vztahů mezi nimi. Pokud chcete modelování JPA využívat, můžete začít vytvořením nového projektu přes wizard JPA Modeling Project nebo Dynamic Web JPA modeling project. V průvodci pak kromě klasických nastavení projektu dále nakonfigurujete vlastnosti persistence-unit a nastavení databázového připojení. Momentálně LiveSource obsahuje dva persistence providery, které můžete použít, a to Hibernate a TopLink.
Po ukončení wizardu vám Eclipse nabídne přejít do modelovací perspektivy, kde můžete začít modelovat:
Opět musím zdůraznit, že je jedno, jestli k přidání fieldu do entity nebo vztahu použijete UML diagram nebo javovský zdroják. Změny se projeví v podstatě ihned v obou zobrazeních.
Generujeme JPA entity podle existujícího schematu databáze...
Další pěknou featurou je “Import Entities from database…” (obdobná funkcionalita jako je např. v Seamu): zadáte existující databázové schema a necháte si vygenerovat JPA entity podle tohoto schematu včetně vztahů mezi nimi. Na tomto obrázku je vidět postup: nejdříve vyberete schema – zde např. notoricky známý příklad z Oraclu, pro uživatele SCOTT/TIGER ;-)
Průvodce, kde specifikujete, které databázové schema a tabulky v něm obsažené chcete naimportovat:
Na následujícíh screenshotech je výsledek importu pro notoricky známé schema uživatele Scott z Oraclu. Vidíte, že byly vytvořeny čtyři entity, byly umístěny do stejné package.
Kliknutím na package je zobrazen class diagram této package:
Návrhář Webových služeb (Web Services Designer)
LiveSource umožňuje i generovat webové služby (které v modelu vyjadřujete jako UML class se stereotypem <<Web Service>>, viz. obrázek níže). Používá pro generování webových služeb rozšířený framework Apache Axis. Upřímně řečeno, je to možná logická volba, nicméně bych na i na open-source trhu našel několik dalších frameworků se světlejší budoucností. Takže bych navrhoval, aby v budoucnosti bylo možné dát uživateli možnost zvolit si, jaký web services framework by chtěl použít (stejně jako je možné např. při volbě implementace JPA).
Sekvenční diagramy
Pro zajímavost uvádím malý příklad. Ze zdrojového kódu této metody:
byl vygenerován následující sekvenční diagram:
Shrnutí
LiveSource na mě jednoznačně zanechal kladný dojem. Synchronizace mezi kódem a modelem opravdu funguje bezvadně. Zde je důležité zmínit fakt, že jádro LiveSourcu tvoří engine z TogetherJ, takže LiveSource staví na dobrých a pevných základech. Borland, resp. CodeGear vzal to nejlepší z jeho produktů a přenesl to na platformu Eclipse. Ať už se tedy jedná o LiveSource (bývalý TogetherJ) nebo OptimizeIt (nyní nazývaný jako JGear Performace).
To už se blížím k věcem, které bych rád vytknul. Je to především dokumentace.
Jednak je tu jistá nekonzistence v názvech. Nainstalovali jste si produkt JGear LiveSource, nikdo se vám nezmínil o nějakém Togetheru, ale pokud se chcete něco užitečného dočíst o práci v modeláři, budete muset přejít do části Borland Together Guide... Takových věcí je tu více. Souvisí to zřejmě s tím, že Borland (CodeGear) měl dost práce s přepsáním JBuilderu na novou platformu a dokumentace a nápověda se bude zlepšovat postupně.
Celkově mi přijde nápověda a dokumentace dost stručná, často se omezuje na popis dialogu s tím, že přidaná hodnota není v podstatě žádná, jelikož v textu se v podstatě jen zduplikjí názvy políček v daném dialogu.
Celkově je ale LiveSource super tool, držím Borlandu (pardon CodeGearu) palce v dalším vývoji. Sledoval jsem videocast ohledně plánu pro JBuilder a JGear na další roky (viz zde) a vize je to určitě zajímavá.
Nakonec pár odkazů a jedno doporučení. Pokud budete hledat videocasty ohledně použití produktu JGear LiveSource, na stránkách patřících tomuto produktu najdete pouze dva:
Video: Installing JGear Live Source
Video: Using JGear Live Source
Pokud však zabrousíte do sekce věnované JBuilderu 2007, najdete příkladů mnohem více. LiveSource je vlastně nejdůležitější součást JBuilderu 2007, takže pokud hledáte informace a nápovědu, zkuste to i zde: Videa o JBuilder 2007
A jestli se vám zdá produkt zajímavý, můžete si jej koupit na http://shop.codegear.cz.