Cześć. Uczę się nt. różnić pomiedzy JRE,JVM i JIT.
Jeżeli chodzi o JVM, to ogarnąłem mniej więcej jak to działa.
-
javac (który się znajduje w JDK) konwertuje nasz napisy kod na tzw. "bytecode".
-
jvm "łapie" ten bytocde i przechodząc przez te wszystkie komponenty czyli class loader, bytcode verifier, execution engine zamienia bytecode na kod maszynowy
i o ile się nie myle, to jit jest częścią execution engine. Nie potrafię ogarnąć jak to działa. Na stronkach pisza, że usprawnia on JVM, bo sam JVM byłby zbyt wolny ze wzgledu na konwertowanie całego bajtkodu na kod maszynowy. Ludzie piszą, że JIT (just-in-time) konwertuje w czasie run time kod, który jest najbardziej używany na kod maszynowy tak, aby cały kombajn JVM nie musiał konwertować wszystkiego samego sam.
Jak to działa, kiedy on występuje, czy wystepuje on rownolegle z "innymi czesciami" JVM i konwertuje w równoległym czasie najbardziej użytkowany kod?
Jeżeli chodzi o JRE, to na każdej stronie jest napisane, że;
"Actually JVM runs the program, and it uses the class libraries, and other" natomiast
"If you want to run any Java program, you need to have JRE installed in the system.", to co w koncu odpala ten program?
Tak wiem, że JRE = JVM+jakies tam biblioteki, ale to w takiem razie to skoro to i to odpala program to po co nam jest JRE?
Potrzebuje wytłumaczenia na chłopski rozum, najlepiej na przykładzie.