Laufzeitkritische Anwendungen und Java

intf0rm
Erstie
Erstie
Beiträge: 13
Registriert: 19. Aug 2013 15:17

Laufzeitkritische Anwendungen und Java

Beitrag von intf0rm »

Hallo,

in einer der Vorlesungen erwähnte Herr Professor Weihe, dass Java bei laufzeitkritischen Anwendungen nicht verwendet wird.
Was ist der Hintergrund? Was bedeutet laufzeitkritisch? Was hat Java für Eigenschaften, die eine solche Verwendung ungünstig machen.

Vielen Dank schonmal.

vg

Benutzeravatar
JannikV
Nerd
Nerd
Beiträge: 609
Registriert: 24. Apr 2011 12:42

Re: Laufzeitkritische Anwendungen und Java

Beitrag von JannikV »

Hey,

laufzeitkritisch bedeutet, dass ein gewisses Programm, oder ein gewisser Teil davon, relativ rechenintensiv ist. Wenn ich beispielsweise ein Datenpaket erstelle und dieses noch verschlüsseln möchte, dürfte der Teil des Programms, der die Verschlüsselung vornimmt, laufzeitkritisch sein, da dieser Schritt deutlich aufwändiger als das bloße Erstellen eines Datenpakets ist und ich bei der Kommunikation ja trotzdem wenig Verzögerung haben möchte.

In solchen Fällen wird tatsächlich seltener Java verwendet (auch wenn sich in den letzten Jahren performancetechnisch durchaus etwas getan hat).

Um bei Java Platformunabhängigkeit sicherzustellen, wird der Java-Quellcode nicht zu einem nativen, ausführbaren Programm kompiliert, sondern zu einem Zwischenprodukt, dem Bytecode. Dieser wird dann von der Java-Virtual-Machine ausgeführt. Java ist also eine Mischung aus kompilierter und interpretierter Sprache.
Dieses Laden der JVM und das Umsetzen der Bytecode-Befehle in tatsächlich native Befehle auf der Zielplattform dauert dann seine Zeit. In der Regel etwas mehr als wenn es sich um ein natives Programm handelt, welches direkt ausgeführt wird.

Aus diesem Grund benutzt man für laufzeitkritische Programme/Programmteile oft Sprachen die zu nativen Anwendung kompiliert werden. Ganz vorne dabei: C

Im Gegensatz zu C beinhaltet Java aber auch noch Konzepte die ebenfalls schlecht für die Performance sind. Etwa die Garbage-Collection, also das automatische Freigeben von nicht mehr benötigtem Speicherplatz oder die Prüfung von Arraygrenzen zur Laufzeit. Das kostet alles Zeit. Dafür kann man mit C aber auch schnell ne Menge falsch machen, wenn man sich um alles selbst kümmern muss.

VG

Antworten

Zurück zu „Archiv“