Wątek przeniesiony 2020-04-28 21:37 z Edukacja przez cerrato.

Jak powstaje program w Javie?

0

Hej

Zacząłem naukę Javy i nie jestem przekonany czy dobrze zrozumiałem jak powstaje program, jak jest wykonywany?

Na potrzeby pytania załóżmy, że mamy 3 główne systemy operacyjne: Windows, Linux, macOS.

Kompilator Javy tworzy z pliku z kodem źródłowym plik z kodem bajtowym. Taki plik z kodem bajtowym jest uruchamiany w JVM. No i zastanawiam się czy każdy z w/w systemów operacyjnych ma wbudowany JVM? Następnie kod w JVM Jest "tłumaczony" na język maszynowy? Są różne wersje JVM dla określonych procesorów czy może jest po prostu jeden JVM dla Windowsa, jeden dla Linuxa, jeden dla macOS?

3
  1. Rzadko system operacyjny ma wbudowaną Javę, ale można doinstalować
    Z mojej perspektywy widzę Javę Oracla (od roku skomercjalizowaną) i Open - z tych samych źródeł, więc w pełni kompatybilną. Na Win, Linux x86, Linux na ARM, LInux na starsze a mocne procesowy i jeszcze jakieś architektury.
    Straciłem z oczu (tzn palcami nie dotykam, jak u początków mojej znajomości z Javą IBM, i są inne firmy).
    Tym niemniej trzeba powiedzieć, że JVM jest więcej niż 1

  2. Bytekod MOŻE być tłumaczony na kod maszynowy, w "klasycznej" JVM po pewnym czasie uruchomienia, wycinkowo, w najbardziej używanych częściach. Tą kompilację można "stracić" tzn zostanie po czasie usunięta, jak ten kod już nie jest używany.
    Innym nowym projektem jest GrallVM, i tłumaczenie całości kodu przed wykonaniem. Nie jest produkcyjny, podaję jako informację.
    Hipotetycznie może być JVM, która nie tłumaczy na maszynowy, i pewnie taka jest, a z całą pewnością takie były dawniejsze wydania w mutacji "client"

To tak popularnie tłumacząc.
I tu kilka słów: https://pl.wikipedia.org/wiki/Wirtualna_maszyna_Javy

2
  1. Wbudowany nie, ale są implementacje JVMa na popularne systemy
  2. Tak, przynajmniej w taki czy inny sposób.
  3. Są różne wersje na różne architektury.

1 użytkowników online, w tym zalogowanych: 0, gości: 1