Java hýčka programátorů. Za jakou cenu?

Pokud jde o dodržování zásad objektově orientovaného programování, mám obavu o trend moderních programovacích jazyků. V programovacích jazycích, které byly skutečnou oslavou objektově orientovaného programování. C++, se používal ke zrušení objektu i destruktor, ve kterém jste věděli, kdy jej voláte i jak se má postupovat při rušení objektů. Bylo to sice pracné, ale přesně jste věděli, co děláte. Jen jste to museli udělat dobře.

Java hýčka programátoru tak, že může fungovat jako zlobivé dítě ve školce. Může si vybrat jakékoli hračky z police (vytvářet instance tříd), a když ho to přestane bavit, nemusí je uklidit (zrušit z paměti). Nemusí to udělat proto, že v tomto případě to za něj udělá někdo jiný. Konkrétně je to práce Garbage Collectora.

Deterministické aplikace pro výrobní procesy

Je to problém? Problém je, že jakmile řízení předáte někomu jinému, ztrácíte nad výsledkem kontrolu. Proto například. Java není považována za deterministický jazyk – neumíme při ní přesně specifikovat, kolik budou trvat jednotlivé části kódu.

Standardní Java nemůže být použita v systémech, ve kterých potřebujeme přesně spočítat, maximální odezvu aplikace. Např. brzdy auta. Co by se stalo, kdybyste uviděli chodce na přechodu, stlačili brzdu a auto by se na 2 sekundy zamyslelo, co udělá ve stylu přesýpacích hodin s Windows 95/ME? Asi by to nedopadlo moc dobře.

Představte si linku plnění piva do lahví v pivaři. ve Velkém Šariši. Pivní láhev se naplní a posune po pase. Pokud by program napsaný ve standardní Javě dávkoval pivo do lahví, program by se jednou by se na chvíli zamyslel a spustil by plnění láhve právě v době, kdy se posouvají pivní láhve, tedy do meziprostoru. Pivo by skončilo na podlaze.

Řešení?

Řešení je použít například JamaicaVM. V ní nejsou použity mezipaměti (cache). Právě ty vedou k nedereminističnosti. Kromě toho má deterministický garbage collector, tedy přesně víme, kdy nastane a kolik bude trvat.

JamaicaVM je používána v právu v automobilovém průmyslu a v aplikacích, které jsou nasazeny pro průmyslovou automatizaci.

Jak začít programovat?

Úvod do programování pro každého bez předchozích znalostí.

Stáhněte si náš ebook teď výjimečně zdarma!!!

Viac informacií preberáme na kurze:

Kurz JAVAOOP - Java: Objektově Orientované Programování

Marián Knězek

 

Súvisiace články: