Seriál o programování s databázovou platformou
Caché od InterSystems v JAVA

Jazyk Java si za zhruba 15 let své existence
vydobyl jedno z čelných míst v oblibě mezi vývojáří
aplikací. Jeho hlavní devizou je skutečnost, že je
nezávislý na operačním systému a tudíž s ním lze
vyvíjet aplikace, které lze nasadit v podnicích
preferujících různá prostředí. Další velkou výhodou
Javy je to, že samotná technologie je zdarma. (I když
pro vývoj a provoz skutečně rozsáhlých aplikací je
potřeba hezky za peníze nakoupit vývojová prostředí a
aplikační servery, není-liž pravda?) Jednu slabinu
však Java má, a tou je práce s databázemi. Java totiž
nemá žádné vlastní OPRAVDU EFEKTIVNÍ možnosti pro
práci s persistentními (tj. trvalými, na disku
uloženými) datovými strukturami. Tímto netvrdím, že
nemá žádné možnosti, jak s persistentními daty
pracovat. Jen musí opustit svůj svět objektů a pustit
se do světa relačních databází a tedy paradigmaticky
úplně jiného pojetí práce.

Na druhé straně existuje již téměř 30 let velice
efektivní databázová technologie, vycházející z
vícerozměrného (pro zjednodušení si taková data
můžete představit jako stromy nebo adresáře s
hierarchickou strukturou) uspořádání dat, která
nabízí vysoký výkon jak při transakčním zpracování,
tak při dotazování. Z jejích kořenů vychází
databázová a aplikační platforma Caché. Tato
technologie v sobě jedinečným způsobem spojuje jak
možnost prezentovat uložená data objektově, tak
relačně nebo jako XML dokumenty. Podobně jako Java,
je i Caché nezávislá na operačním systému a nabízí
širokou škálovatelnost od jednouživatelských aplikací
až po heterogenní síťové aplikace s nimiž pracují
najednou desítky tisíc uživatel hlavních („mission
critical“) systémů velkých korporací. Jelikož je
Caché primárně aplikačním a databázovým serverem,
nemá vlastní prostředky pro tvorbu grafického
uživatelského rozhraní.

A tady je právě vidět, že jak Java tak Caché, pokud
se spojí v aplikaci do jednoho celku, dokonale
obsáhnou veškerou požadovanou funkčnost, od
uživatelského rozhraní (Java), přes vrstvu
aplikačního serveru (EJB nebo Caché) až po objektovou
persistenci (Caché).

V tomto seriálu probereme podrobně všechny možnosti
propojení těchto technologií a ukážeme, jak mohou
vývojáři na platformě Java těžit z výhod
poskytovaných oběma technologiemi.

V základě existují následující možné směry
propojení Javy a Caché.

  • Nativní projekce Caché tříd do Java objektů

  • Persistence Java tříd pomocí JALAPENO knihovny

Z uvedených metod je starší nativní projekce Caché
tříd. Ta spočívá v přidání informací k definici
(persistentní) třídy v Caché, které jsou při její
kompilaci interpretovány a na jejichž základě se
generují Java třídy, buď ve formě zdrojového kódu
nebo přeloženého binárního kódu. Tyto třídy
představující proxy třídy, které lze přidat do
libovolné vývojového prostředí Javy a pracovat s nimi
jako by to byly třídy napsané přímo v daném IDE
prostředí. Tedy, při tomto způsobu se předpokládá
určitá předchozí znalost prostředí Caché, a to
alespoň na té úrovni, aby vývojář byl schopen
definovat datový model v prostředí IDE Caché, jelikož
primárním zdrojem informací jsou třídy na straně
Caché a každá změna serverové části aplikace vyžaduje
změny v Caché a posléze jejich přenesení (byť je
obstaráno automaticky) na stranu Javy.

Naproti tomu, JALAPENO, což je akronym pro JAva LAnguage PErsistence
with NO mapping
, představuje opačný přístup.
Primárním zdrojem informací o propojení je prostředí
Java a z něj se generují třídy v Caché. Programátor
tedy nemusí být znalý jazyka popisujícího definice
tříd v Caché. Tato technologie se opírá o tzv.
anotace, což je rozšíření jazyka Java zavedené ve
verzi 1.5. V tomto případě se tedy v Caché generují
pouze persistentní třídy, které neobsahují žádnou
aplikační logiku.

Pro úplnost dodejme, že součástí Caché je nově i
tzv. Java brána, jež umožňuje spouštět třídy nebo
Java archivy v procesech Caché aplikačního serveru.
Tedy umí provozovat Java aplikace mimo JVM ve svém
vlastním virtuálním stroji.

Následující články se budou detailně zabývat všemi
výše naznačenými možnostmi včetně předložení ukázek
kódu. Nejdříve se budeme věnovat projektu JALAPENO, o
kterém se podrobněji rozepíšeme v příštích několika
dílech.