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?
š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.
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:
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.
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.
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)
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.
                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.

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

                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.

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:

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:

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.

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

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

.png)
.png)
.png)
.png)