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.