Was ist neu an JIT ?

L

Lopder

Ambitioniertes Mitglied
1
Hallo

Kann man mich mal aufklähren ?? :D
Ich hab öfters gelesen "Android 2.2 dank JIT deutlich schneller" sein soll. Und jetzt würde mich mal intressieren wie das funktioniert. JIT beduetet ja Just-in-time-Kompilierung (JIT).

1 Frage ist ja war das früher nicht auch schon so ? Die Apps sind ja in sowas ähnlichem wie "Java" entwickelt. und ich dacht das immer schon der Code zuerst in so einen Bytecode kompiliert wird. Und erst dann zur Laufzeit "fertig" kompiliert. Das ist doch schon JIT ? Ich hab leider niergends was gefunden wo das richtig gut erklährt wird.
2 Frage warum sollte JIT schneller sein ? und im vergleich zu was ?(Ok dazu müsste ich jetzt wissen wie es davor wirklich gemacht wurde) wenn jedes mal der code kompiliert werden muss. Besser wäre es doch nur das erste mal zu kompilieren und dann in einem cache den kompilierten Code zu speichern. Braucht halt wieder Speicher. Also ganz verstehe ich noch nicht was an JIT jetzt neu sein soll ?

Grüße
 
Du hast eben das Prinzip das hinter der Programmiersprache Java steht nicht ganz verstanden.

Ich versuche es mal im groben möglichst einfach zu erklären.

Bei einem normalen Compiler (gcc wenn man in C programmiert) wird der Quellcode ja direkt in Maschinensprache übersetzt und direkt vom Prozessor ausgeführt.

Bei Java hingegen wird wie du schon angemerkt hast nur eine Art Bytecode erzeugt mit dem der Prozessor erst einmal nichts anfangen kann. Dieser Bytecode wird dann von der Java-Virtual-Machine zur Laufzeit interpretiert.
Es wird bei Java bei der Ausführung der Programme nichts mehr kompiliert, sonder nur interpretiert!!

Das hat den Vorteil das die Programme (von der Idee her) auf jeder Hardware / OS laufen auf dem eine kompatible Java-VM installiert ist.
Das kann funktionieren weil der Bytecode nicht vom OS und der darunterliegenden Hardware abhängt.
(Ist bei normalen Maschinencode ja anders, versuch mal ein Windows Programm auf nem Unix laufen zu lassen, oder Software von x86 Hardware auf nem ARM Gerät auszuführen :) )

Der Nachteil ist das die Java-VM ja eine weitere Abstraktionsschicht ist die auch Ressourcen verbraucht und das ganze nicht schneller macht.

Die Idee hinter JIT ist das ich vor der Ausführung des Java Programms den Bytecode in Maschinencode übersetze, welcher dann direkt auf der Hardware deutlich performter läuft.
 
Das heutige Java interpretiert ja nicht mehr. Das war doch 1990 oder was weiß ich wann genau. :D.
Heute ist ja auch be Java immer ein JIT dabei. Java Virtual Machine ? Wikipedia

Aber jaaa ok. Jetzt wird es mir schon klar. :unsure: Ich bin wohl fälschlicherweise davon ausgegangen das es sich so wie die fortgeschrittene VMs verhält. Ja ok wenn die erste Dalvik VM noch interpretiert hat ja dann klar. Dann macht man quasi die Entwicklung von damals wieder mit :).
 

Ähnliche Themen

cptechnik
Antworten
1
Aufrufe
170
DOT2010
DOT2010
Bildpunkt7
  • Bildpunkt7
Antworten
13
Aufrufe
500
Bildpunkt7
Bildpunkt7
M
Antworten
12
Aufrufe
617
Daichink
Daichink
Zurück
Oben Unten