Ostatnio zostały dotknięte classloaders Java i nagle uznał, że nie w pełni zrozumieć, co się dzieje krok po kroku gdy ktoś dzwoniCo się stanie, gdy uruchomi się program java?
java -jar App.jar
No Chyba
- nowa instancja JVM jest utworzony
- wykorzystuje ClassLoader do załadowania klasy głównej i innych klas
- kod bajtowy jest uruchamiany z metody main()
Ale nadal sądzę, że jest wiele rzeczy, które muszę wiedzieć o tym więcej.
- Kto i jak decyduje, które klasy należy załadować przy starcie, a które w razie potrzeby?
Znalazłem dwa powiązane pytania, ale tam nie jest wyjaśnione, jak zastosować to do rzeczywistości Java.
What happens when a computer program runs?
What happens when you run a program?
Specyfikacja może pomóc (albiet nieco tępy, dlatego komentarz nie jest odpowiedzią): http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.1 – Charlie
Również ten odsyłacz odnosi się do specyfikacji VM Java: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html#jvms-5.2 – Charlie