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.