Menu

Czym jest Java? Język, JVM i gdzie działa

Czym naprawdę jest Java, jak JVM pozwala uruchomić jeden skompilowany program wszędzie i jakie oprogramowanie buduje się w Javie.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

Java w jednym zdaniu

Java to statycznie typowany, obiektowy język programowania, który kompiluje się do bytecode'u i działa na wirtualnej maszynie Javy (JVM). Ta jedna decyzja projektowa, czyli kompilacja do neutralnego formatu pośredniego i uruchamianie go na maszynie wirtualnej, sprawia, że ten sam skompilowany program w Javie działa bez zmian w Windowsie, macOS, Linuksie i nie tylko.

Oto obowiązkowy pierwszy program. Możesz go uruchomić od razu tutaj:

Formalności jest tu więcej niż w językach skryptowych, i to celowo: Java stawia na jawną strukturę. Każdy element rozłożymy na części na kolejnych kilku stronach.

Dlaczego JVM ma znaczenie

Większość języków kompilowanych zamienia kod źródłowy bezpośrednio w kod maszynowy dla jednego konkretnego procesora i systemu operacyjnego. Program skompilowany dla Windowsa nie uruchomi się na Macu. Java idzie okrężną drogą:

  1. javac kompiluje twoje źródła .java do plików .class zawierających bytecode, czyli instrukcje dla wyimaginowanej maszyny, a nie dla prawdziwego procesora.
  2. JVM dla twojej platformy odczytuje ten bytecode i go wykonuje, tłumacząc go na bieżąco na natywne instrukcje maszynowe.

Każda platforma ma własną JVM, ale wszystkie rozumieją ten sam bytecode, więc kompilujesz raz i uruchamiasz wynik wszędzie, gdzie jest JVM. Stąd słynne hasło: write once, run anywhere (napisz raz, uruchamiaj wszędzie).

JVM nie interpretuje kodu na ślepo. Kompilator just-in-time (JIT) obserwuje, który kod wykonuje się najczęściej, i kompiluje te gorące ścieżki do zoptymalizowanego kodu natywnego, dzięki czemu długo działające programy w Javie zbliżają się szybkością do języków w pełni kompilowanych.

Statyczne typowanie i obiektowość

Dwie cechy kształtują to, jak wygląda i jak się pisze kod w Javie.

Statyczne typowanie oznacza, że każda zmienna ma typ znany w czasie kompilacji, a kompilator sprawdza typy, zanim program w ogóle się uruchomi:

count jest int na zawsze; przypisanie do niej "hello" się nie skompiluje. To wyłapuje całą klasę pomyłek wcześnie, kosztem większej ilości pisania na starcie.

Obiektowość oznacza, że Java organizuje kod w klasy: szablony, które łączą dane z metodami, które na nich działają. Nawet powyższy punkt wejścia mieszka w class Main. Prawie wszystko, co piszesz w Javie, znajduje się wewnątrz jakiejś klasy.

Do czego używa się Javy

Java to jeden z najszerzej stosowanych języków na świecie. Znajdziesz ją w:

  • Backendzie i systemach korporacyjnych: bankowość, ubezpieczenia, duże usługi webowe i wszystko, co musi niezawodnie działać latami.
  • Androidzie: to pierwotny język tej platformy, nadal kluczowy dla środowiska uruchomieniowego Androida, nawet obok Kotlina.
  • Big data: Hadoop, Spark, Kafka i duża część ekosystemu inżynierii danych działają na JVM.
  • Aplikacjach desktopowych i wbudowanych: od środowisk IDE (IntelliJ, Eclipse) po terminale płatnicze i karty chipowe.

Java słynie ze stabilności, wstecznej kompatybilności i ogromnej biblioteki standardowej, a nie z tego, że jest najbardziej zwięzłym językiem. Kod napisany w Javie lata temu zwykle nadal działa.

Java to nie JavaScript

Warto to powiedzieć wprost, bo nazwy wywołują nieustanne zamieszanie: Java i JavaScript to różne, niepowiązane języki. Dzielą cztery litery z historycznych powodów marketingowych i nic więcej, co miałoby znaczenie. Java jest kompilowana, statycznie typowana i działa na JVM; JavaScript jest dynamicznie typowany i działa w przeglądarkach oraz w Node.js. Nauka jednego nie uczy drugiego.

Dalej: instalacja Javy

Żeby pisać i uruchamiać programy w Javie na własnym komputerze, potrzebujesz JDK (Java Development Kit): kompilatora, JVM i biblioteki standardowej w jednym. Następna strona pokazuje, jak go zainstalować i sprawdzić, że działa.

Najczęściej zadawane pytania

Do czego służy Java?

Java napędza duże systemy serwerowe i korporacyjne, aplikacje na Androida (przez Android SDK i środowisko uruchomieniowe współdzielone z Kotlinem), narzędzia big data takie jak Hadoop i Spark oraz niezliczone aplikacje desktopowe i wbudowane. Jej mocne strony to stabilność, ogromna biblioteka standardowa i JVM, która uruchamia ten sam skompilowany program w dowolnym systemie operacyjnym.

Czy Java jest kompilowana, czy interpretowana?

Jedno i drugie. Kompilator Javy (javac) zamienia kod źródłowy w niezależny od platformy bytecode, a JVM potem go wykonuje: na początku interpretuje, a najczęściej używane fragmenty kompiluje do natywnego kodu maszynowego kompilatorem just-in-time (JIT). Java jest więc kompilowana do bytecode'u, a potem interpretowana i kompilowana przez JIT w czasie działania.

Czy Java to to samo co JavaScript?

Nie: to niepowiązane języki, które dzielą nazwę z historycznych powodów marketingowych. Java to statycznie typowany, kompilowany język działający na JVM; JavaScript to dynamicznie typowany język działający w przeglądarkach i w Node.js. Znajomość jednego nie oznacza znajomości drugiego.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ