Kategórie článkov

Java hýčka programátorov. Za akú cenu?

Pokiaľ ide o dodržiavanie zásad objektovo orientovaného programovania, mám obavu o trend moderných programovacích jazykov.  V programovacích jazykoch, ktoré boli skutočnou oslavou objektovo orientovaného programovania, ako napr. C++, sa používal na zrušenie objektu aj deštruktor, v ktorom ste vedeli, kedy ho voláte aj ako sa má postupovať pri rušení objektov. Bolo to síce pracné, no presne ste vedeli, čo robíte. Len ste to museli urobiť dobre.

Java hýčka programátora tak, že môže fungovať ako neposlušné dieťa v škôlke. Môže si vybrať akékoľvek hračky z police (vytvárať inštancie tried), a keď ho to prestane baviť, nemusí ich upratať (zrušiť z pamäte). Nemusí to urobiť preto, lebo v tomto prípade to za neho urobí niekto iný. Konkrétne je to práca Garbage Collectora.

Deterministické aplikácie pre výrobné procesy

Je to problém? Problém je, že ako náhle riadenie odovzdáte niekomu inému, strácate nad výsledkom kontrolu. Preto napr. Java nie je považovaná za deterministický jazyk – nevieme pri nej presne špecifikovať, koľko budú trvať jednotlivé časti kódu.

Štandardná Java nemôže byť použitá v systémoch, v ktorých potrebujeme presne zrátať, maximálnu odozvu aplikácie. Napr. brzdy auta. Čo by sa stalo, keby ste uvideli chodca na prechode, stlačili brzdu a auto by sa na 2 sekundy zamyslelo, čo urobí v štýle presýpacích hodín s Windows 95/ME? Asi by to nedopadlo veľmi dobre.

Predstavte si linku plnenia piva do fliaš v pivári, napr. vo Veľkom Šariši. Pivná fľaša sa naplní a posunie po páse. Ak by program napísaný v štandardnej Jave dávkoval pivo do fliaš, program by sa raz by sa na chvíľu zamyslel a spustil by plnenie fľaše práve v čase, keď sa posúvajú pivné fľaše, čiže do medzi priestoru. Pivo by skončilo na dlážke.

Riešenie?

Riešenie je použiť napr. JamaicaVM. V nej nie sú použité medzipamäte (cache). Práve tie vedú k nedereministickosti. Okrem toho, má deterministický garbage collector, čiže presne vieme, kedy nastane a koľko bude trvať.

JamaicaVM je používaná v práve v automobilovom priemysle a v aplikáciách, ktoré sú nasadené pre priemyselnú automatizáciu.

Marián Knězek

Súvisiace články: