pondělí 3. prosince 2007

Neměňte jazyk, změňte infrastrukturu

Lehce jsem se orosil při poslechu posledního Javaposse podcastu. Pánové tam probírali změny do syntaxe a rozšiřování sémantiky jazyku Java. Nechci říkat, že mi všechny ty syntaktická cukrátka nejsou sympatická, ale vidím plno jiných oblastí, které by mohla Java 7 či 8 pokrýt a vývojáři by to dozajista ocenili také. Jednou z těchto oblastí je samotná infrastruktura Javy (kompilátaor, VM) , kterou lze rozšířit i bez toho, aby byla výrazně narušená zpětná kompatibilita. Tady jsou moje tipy.

Dynamický znovunačtení tříd

Každý kdo dělal webové aplikace vám potvrdí, že neustálý redeploy aplikace je peklo. Každá větší změna v třídách znamená redepoloy aplikace a to i v případě, že používáte hot swap funkcionalitu JVM. Nepředpokládám, že by byl problém rozšířit JVM o možnost dynamického znovunačtení tříd. Obzvláště když existují v tomto směru průkopníci JavaRebel Brings Class Reloading to Java.

Deklarativní modifikátory viditelnosti

Modifikátory viditelnosti (public, private, protected, implicitní) jsou nedostačující. Bylo by dobré mít možnost říci deklarativní cestou (anotace, descriptor), které třídy či metody chci exportovat k veřejnému použití. Inovátorem budiž OSGi a jeho bundle descriptory. Doufejme, že se z nich poučili všechny ty superpackage a JAMy.

Izolace uvnitř JVM

Koncept izolace uvnitř JVM je vypůjčen z Multitasking Virtual Machine. Jde o to, že více aplikací běžících v jedné VM by se mělo co nejméně ovlivňovat viz problém hostingů. To je typicky problém webových aplikací, běžících v jedné instanci JVM. Bylo by velice užitečné umožnit řízení míry ovlivnění mezi aplikacemi (nejlépe žádné). S tím souvisí i schopnost nastavení hranice prostředků (CPU, paměť, síťové IO), které může maximálně aplikace využít.

A tak by se jistě dalo pokračovat dále. Můžete si sami dosadit vaši oblíbenou funkčnost, kterou by měla infrastruktura Javy poskytovat. Bohužel obávám se, že místo investic do zlepšení infrastruktury nám ústa zalepí nějaká syntaktická cukrátka, což je jenom trochu levnější pozlátko.