Java jest ulubieńcem programistów. Za jaką cenę?

Jeśli chodzi o przestrzeganie zasad programowania obiektowego, martwię się trendem współczesnych języków programowania. W językach programowania były to prawdziwe celebracje programowania obiektowego. W C++ do anulowania obiektu użyto destruktora, w którym wiadomo było, kiedy go wywołać i jak postępować podczas anulowania obiektów. To była ciężka praca, ale wiedziałeś dokładnie, co robisz. Trzeba było tylko zrobić to dobrze.

Java rozpieszcza programistę, aby mógł zachowywać się jak niegrzeczne dziecko w przedszkolu. Potrafi wybrać dowolne zabawki z półki (stworzyć instancje zajęć), a gdy nie są nim zainteresowane, nie musi ich odkładać na miejsce (usunąć z pamięci). Nie musi tego robić, ponieważ w tym przypadku zrobi to ktoś inny za niego. W szczególności jest to dzieło zbieracza śmieci.

Zastosowania deterministyczne dla procesów produkcyjnych

Czy to problem? Problem w tym, że kiedy oddasz kontrolę, tracisz kontrolę nad rezultatem. Dlatego na przykład. Java nie jest uważana za język deterministyczny - nie możemy dokładnie określić, ile czasu zajmie każda część kodu.

Standardowej Java nie można zastosować w systemach, w których musimy dokładnie obliczyć maksymalną odpowiedź aplikacji. Np. hamulce samochodowe. Co by się stało, gdybyś zobaczył pieszego na przejściu dla pieszych, nacisnął hamulec, a samochód przez 2 sekundy zastanawiał się, co zrobić w stylu klepsydry z Windows 95/ME? Prawdopodobnie nie skończyłoby się to zbyt dobrze.

Wyobraźmy sobie linię rozlewu piwa w browarze. w Velky Šariš. Butelka piwa jest napełniana i przesuwana wzdłuż talii. Jeżeli program napisany w standardowej Javie miałby rozlewać piwo do butelek, to raz pomyślałby przez chwilę i zaczął napełniać butelkę właśnie w momencie przesuwania butelek z piwem, czyli do przestrzeni pośredniej. Piwo wylądowałoby na podłodze.

Rozwiązanie?

Rozwiązaniem jest użycie na przykład JamaicaVM. Nie wykorzystuje się w nim żadnych pamięci podręcznych. To one prowadzą do niedereminizmu. Dodatkowo posiada deterministyczny moduł zbierający elementy bezużyteczne, dzięki czemu wiemy dokładnie, kiedy to nastąpi i jak długo będzie trwało.

JamaicaVM jest stosowany w prawie w przemyśle motoryzacyjnym oraz w aplikacjach wdrażanych w automatyce przemysłowej.

Marián Knězek