úterý 20. června 2006

Je čas na MVN

Startují Vám javovské aplikace dlouhpu dobu, žerou hodně paměti a pustit jich několik je pamětový zabiják? Pokud ano, nemusí být všem dnům konec. V laboratořích firmy Sun byl, pod kódovým označením Barcelona, proveden výzkum a vývoj Multitasking Virtual Machine (dále MVN). Pravda, informace je to trochu starší nicméně zajímava, pokud jste o konceptu MVN nikdy neslyšeli.

V klasickém provozu rovná se jedna javovská aplikace jedné JVM. Jedna JVM to je heap, garbage collector, JIT, definice standardních tříd atd. Pokud pustíte na svém počítači, či jakémkoliv jiném zařízení např. mobilním telefonu, dvě Java aplikace budete mít dvě absolutně nazávislé JVM. To znamené, že se budou muset dvakrát kompilovat všechny standardní třídy a paměťové nároky vzrostou díky tomu, že každá JVM bude mít vlastní pamětový prostor, ve kterém budou ležet definice těchto tříd.

MVN oproti tomu umožňuje, aby více java aplikací běželo odděleně a nezávisle v rámci jednoho virtuálního stroje. Díky tomu je provoz více java aplikací mnohem ekonomičtější z hlediska: paměťové náročnosti (díky sdílení společných tříd), rychlosti zavedení aplikace a doby nutné k bytecode kompilaci.

Základní vlastnost, kterou MVN využívá, je Application Isolation API (JSR 121). Díky tomu každá spuštěná java aplikace běží v izolaci od ostatních. To má za následek, že aplikace se navzájem neovlivňují, např. volání System.exit() nezpůsobí ukončení celé MVN a také, že aplikace vůbec nepoznají jestli běží v klasické či multitasking VM tj. není nutné upravovat stávající kód.

Dalším opěrným bodem MVN je Resource Management Interface. Toto rozhraní poskytuje MVN a umožňuje monitorovat a spravovat dostupné zdroje jako CPU, paměť apod.

Samzořejmě i MVN má své nevýhody. Nelze vyloučit, že i přes použítí isolate API nebude moci dojít k tomu, že jedna aplikace nezbortí celou MVN např. voláním nativního kódu. A s tím přímo souvisí, že pád celé MVN znamená automatický konec pro všechny uvnitř běžící aplikace.

Koncept MVN už v mnoha rysech připomíná operační systém. Ne ve všech oblastech je ovšem tato vlastnost plně využitelná. MVN si podle mého názoru najde místo především v enterprise a mobilní oblasti. Tedy v těch oblastech kde je zcela běžné, že v rámci systému běží několik java aplikací.

V oblasti desktop aplikací je přínos sporný, protože v tomto segmentu se Java nikdy pořádně neprosadila. Kolik java aplikací nám běží na desktopu, když vypneme IDE a aplikaci, kterou v něm vyvíjíme? Na druhou stranu, právě pro vývojaře by mohla MVN přinést úsporu paměti a času při vývoji a nabídnout použitelné rozhraní pro správu systémových zdrojů na různých úrovních.

Solaris MVN implementace pro J2SE 5.0 je k dispozici formou projektu Multi-Tasking Virtual Machine na serveru Java.net. Pokud jste majitele tohoto OS je možné si aplikace běžící v rámci MVN vyzkoušet třeba hned. Implementace MVN je též připravena pro CLDC (J2ME).

Zdroje