Java - Historia
- 1991 - rozpoczęcie prac nad językiem Java (początkowo Oak), James Gosling i zespół Sun Microsystems
- 1995 - wydanie pierwszej wersji (Java 1.0)
- 1996 - Java staje się darmowa dla wszystkich użytkowników
- 1998 - Java 2 (J2EE) - podział na SE (Standard), EE (Enterprice), ME (Micro)
- 2014 - Java 8, 2018 Java 11 (LTS) - kamienie milowe, które wprowadziły największe zmiany w praktyce programistycznej, od Java 11 Oracle JDK wymaga płatnej subskrypcji do użytku komercyjnego, co spowodowało wzrost popularności darmowych implementacji JDK (OpenJDK, Amazon Corretto, itp.)
- 2021 Java 17 (LTS), 2023 Java 21 (LTS) - obecnie rekomendowane dla nowych projektów.
- Obecnie Java rozwijana jest przez firmę Oracle (w 2010 roku Sun został przejęty przez Oracle)
- regularne wydania nowych wersji Javy co kilka miesięcy, z nowymi funkcjami i ulepszeniami
- najnowsza Java 25 SE (LTS), rozwijana Java 26 SE (planowane wydanie 17 marzec 2026),
Java - charakterystyka
- język programowania wysokiego poziomu, obiektowy, z silnym typowaniem
- platforma programistyczna (Java Platform) - środowisko uruchomieniowe (JRE), biblioteki klas, narzędzia programistyczne (kompilator, debugger itp.)
- „Write Once, Run Anywhere” - kod napisany w Javie może być uruchamiany na różnych platformach dzięki maszynie wirtualnej (JVM)
- szerokie zastosowanie
- duża społeczność, bogaty ekosystem bibliotek i narzędzi, wsparcie dla wielu paradygmatów programowania (obiektowy, funkcyjny, itp.)
Zastosowanie
- aplikacje desktopowe, okienkowe (np. Swing, JavaFX)
- aplikacje webowe (np. Spring, JavaServer Pages)
- aplikacje mobilne (Android)
- systemy wbudowane (np. Raspberry Pi)
- duże systemy korporacyjne (bankowość, ubezpieczenia, itp.)
- gry (np. Minecraft)
- nauka programowania - Java jest często wybierana jako pierwszy język programowania ze względu na swoją prostotę i czytelność
Platformy Java
- Java SE (Standard Edition) - podstawowa platforma Java, zawiera podstawowe biblioteki i narzędzia do tworzenia aplikacji desktopowych, konsolowych itp.
- Java EE (Enterprise Edition) - wersja Javy przeznaczona dla aplikacji korporacyjnych (J2EE, obecnie Jakarta EE), zawiera dodatkowe biblioteki i narzędzia do tworzenia aplikacji webowych, serwerów aplikacji, itp.
- Java ME (Micro Edition) - wersja Javy przeznaczona dla urządzeń o ograniczonych zasobach (telefony, IoT, itp.)
- inne specjalistyczne, np: Java Card do tworzenia aplikacji dla kart inteligentnych (smart cards)
Java, JVM, JRE, JDK ?
- Java - język programowania
- JVM (Java Virtual Machine) - maszyna wirtualna, która uruchamia kod Java, tłumacząc go na instrukcje zrozumiałe dla konkretnej platformy (języki Java, Scala, Kotlin, Groovy, Clojure, JRuby, Jython)
- JRE (Java Runtime Environment) - środowisko uruchomieniowe, które zawiera JVM oraz biblioteki klas potrzebne do uruchamiania aplikacji Java
- JDK (Java Development Kit) - zestaw narzędzi programistycznych, który zawiera JRE oraz dodatkowe narzędzia do tworzenia aplikacji Java (kompilator
javac, debugger itp.)
Bytecode
- kod bajtowy (bytecode) - pośrednia reprezentacja kodu Java, która jest generowana przez kompilator
javacz kodu źródłowego Java - kod bajtowy jest niezależny od platformy i może być uruchamiany na dowolnej maszynie wirtualnej (JVM)
- kod bajtowy jest interpretowany lub kompilowany just-in-time (JIT) przez JVM podczas uruchamiania aplikacji, co pozwala na optymalizację wydajności
Narzędzia JDK
- javac - kompilator, tłumaczy kod źródłowy Java na kod bajtowy (bytecode), który jest uruchamiany przez JVM
- java - uruchamia aplikację Java, wykonując kod bajtowy
- javadoc - generowanie dokumentacji z komentarzy w kodzie źródłowym
- jdb - debugger
- jar - tworzenie archiwów JAR (Java ARchive), spakowane aplikacje Java wraz z bibliotekami
- javap - deasembler
- javah - generowania nagłówków C dla natywnych metod (od Java 8 zastąpione
javac -h) - Dostępne są różne implementacje JDK, np. Oracle JDK, OpenJDK, Amazon Corretto, itp.
Implementacje Javy
- Oracle JDK - oficjalna implementacja JDK, rozwijana przez Oracle, z dodatkowymi narzędziami i wsparciem płatnym
- OpenJDK - otwartoźródłowa implementacja JDK, GNU GPL, rozwijana przez społeczność i firmy (np. Red Hat, Amazon, Microsoft).
- KVM Kilobyte Virtual Machine dla urządzeń z procesorami 16- i 32-bitowymi, pracujące z częstotliwością 12-60 MHz oraz 128 kB pamięci RAM
- Kaffe - darmowa, otwartoźródłowa, rozwijana przez społeczność (inżynieria wsteczna klasycznej implementacji Javy)
IDE
- IntelliJ IDEA - The Leading IDE for Professional Development in Java and Kotlin (JetBrains)
- Eclipse - darmowe, otwartoźródłowe IDE dla Javy
- NetBeans - darmowe, otwartoźródłowe IDE dla Javy (Apache)
- Visual Studio Code - lekki edytor kodu z rozszerzeniami do obsługi Javy (Microsoft)
Hello World
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}



