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?

Začnu možná trochu ze široka, ale považuju za užitečné popsat trochu kontext, v jakém se nový produkt firmy CodeGear objevuje, jaký vztah má firma CodeGear k Borlandu atd.
JGear LiveSource je produkt společnosti CodeGear. Firma CodeGear je dceřiná firma společnosti Borland Software Corp. CodeGear se se specializuje na vývojové nástroje a databáze (její motto zní „where developers matter“). K oddělení CodeGear od samotného Borlandu došlo poměrně nedávno, CodeGear se stal formálně nástupcem Borlandu v oblasti nástrojů pro vývojáře – určitě všichni znáte a používali jste alespoň některé z nich: Delphi, C++ Builder, JBuilder nebo ještě dříve Turbo (Borland) Pascal. Troufnu si říci, že každý z těchto produktů představoval ve své době špičku na trhu. V posledních letech prožil Borland trochu ústup ze slávy a to díky silné konkurenci ze strany ať už opensourcových IDE jako jsou Eclipse a Netbeans či od komerčních IDE jako jsou IBM RAD, BEA Workshop, IntelliJ Idea nebo Oracle JDeveloper.

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:

JGear LiveSource v Update Manageru

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:

JGear LiveSource Start Page

 

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.

Musím se přiznat, že dávám přednost kódu před grafickými návrháři, protože podle mě od jisté chvíle jsou spíše kontraproduktivní. Na druhou stranu, rozhodně nepodceňuju užitečnost modelování, modelů, vizualizace, UML atd. Modely, plánky, náčrtky, diagramy, to vše považuju za moc užitečné věci pokud jde o sdílení znalostí, o komunikaci se zákazníkem, kolegy v týmu atd.
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.
Existují pluginy a nástroje, které vás na základě modelu nechají vygenerovat kód. Dále existuje řada nástrojů a pluginů, které vám z kódu udělají model. No a obojí umí LiveSource:
"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)

Grafický návhář EJB je stěžejní částí LiveSourcu. Abyste si udělali představu, jak tento návrhář funguje, uvedu malý příklad doplňený o screenshoty.

Ř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.
New 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:

New EJB Modeling Project - Step 2

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í:

Modeling Perspective - Paleta nastroju

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.


JGear LiveSource EJB Modeling Project in Eclipse

Samotný modelář je velmi kvalitní, rychlý a uživatelsky přítulný. Pozitivně hodnotím např. možnost schovávat části modelu s tím, že v budoucnu je můžete jejich zobrazení jednoduše znovu zapnout. To vám umožňuje zobrazovat to podstatné a zachovávat tak modelu jeho přehlednost a tím pádem i jeho vyjadřovací hodnotu. Například takhle bychom schovali z modelu objekty reprezentující logovací interceptor a Adressu (Entity Embeddable Class):

JGear LiveSource EJB Modeling Project 2

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.

JGear LiveSource JPA Modeling Project 1

K vytváření nového JPA modelovacího projektu bych měl jednu výtku. Ve wizardu je nutné nastavit databázové připojení – resp. zvolit existující nebo vytvořit nové. Při tvorbě nového databázového připojení zvolíte jeho jméno a specifikujete parametry: typ (Oracle, SQL Server, Derby atd.), verzi, umístění DB, driver, knihovnu s driverem, uživatelské jméno a heslo atd. Několikrát jsem toto absolvoval a příkaz Test Connection mě přesvědčoval, že spojení s databází se bez problému podařilo. Problém nastal když jsem tyto informace potvrdil a vrátil se do původního wizardu pro tvorbu JPA projektu – nově nakonfigurované připojení se zde neobjevilo. Řešením je aktuální wizard zrušit a spustit ho znovu, potom je připojení opět viditelné.

Po ukončení wizardu vám Eclipse nabídne přejít do modelovací perspektivy, kde můžete začít modelovat:

JGear LiveSource JPA Modeling Project 2

Jak vidíte na screenshotu, v modelovací perspektivě máte standardně na očích jak prostor pro modelování a kreslení UML diagramů, tak okno s editorem zdrojáků, dále i properties view pro vybrané objekty.

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:

JGear LiveSource JPA Import Entities 1

Výsledkem je diagram s modelem entit včetně vztahů mezi nimi. Samozřejmě, k modelu existují i zdrojové kódy, takže stačí kliknout na entitu a v editoru se vám otevře její zdrojový kód.
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.

JGear LiveSource JPA Import Entities 3

Kliknutím na package je zobrazen class diagram této package:

JGear LiveSource JPA Import Entities 4

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).

JGear LiveSource Web Service Model

Sekvenční diagramy

Další lahůdkou kterou vám LiveSource nabízí jsou sekvenční diagramy (sequence diagrams). Diagramy tříd (class diagrams) zvládne hodně toolů, použitelné sekvenční diagramy jich nabízí znatelně méně... Tahle funkcionalita není špatná, chcete-li např. zdokumentovat chování existujícího kódu atd. Implementace je celkem povedená, přínosem k přehlednosti je fakt, že můžete velmi jednodušše ovlivňovat hloubku zanoření volání a hlavně odfiltrovat balíčky a třídy, které nechcete aby se do diagramu generovaly a toto nastavení se zapamatuje pro příští použití.

Pro zajímavost uvádím malý příklad. Ze zdrojového kódu této metody:

JGear LiveSource Sequence Diagram Source

byl vygenerován následující sekvenční diagram:

JGear LiveSource Sequence 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.

Dále bych uvítal nějaké tutoriály a příklady. V nápovědě najdete jen pár jednoduchých příkladů typu „jak přidat business metodu do session beany“, ale chybí tu větší ucelený příklad, který by ukázal komplexnější příklad např. od založení nového modelovacího projektu až po jeho deployment na server v IDE.

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.