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ą:
javackompiluje twoje źródła.javado plików.classzawierających bytecode, czyli instrukcje dla wyimaginowanej maszyny, a nie dla prawdziwego procesora.- 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.