→ Slide 1

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),
→ Slide 2
  • 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.)
→ Slide 3
  • 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ść
→ Slide 4
  • 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)
→ Slide 5
  • 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.)
→ Slide 6
  • kod bajtowy (bytecode) - pośrednia reprezentacja kodu Java, która jest generowana przez kompilator javac z 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

→ Slide 7

→ Slide 8

→ Slide 9
  • 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.
→ Slide 10
  • 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)
→ Slide 11
  • 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)
→ Slide 12
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
→ Slide 13