Java je jedním z nejpoužívanějších programovacích jazyků, známý svou nezávislostí na platformě a všestranností. Napřed si vysvětlím jak funguje java. To nám dá lepší představu o tom co vlastně děláme.
Co se stane, než se spustí kód
Proces spuštění kódu zahrnuje několik kroků. Podívejme se na ně postupně:
1. Napíšeme kód
Za předpokladu, že nebudeme mít žádné syntax chyby. Stejně jako když s někým mluvíme. Můžete říct třeba mám psa nebo kočku a každý bude vědět co tím myslím. Stejně tak můžeme říct blufululu, ale nikdo nám nebude rozumět.
Nevýhoda oproti skutečnému světu je ta, že počítat je striktní a pokud nečemu nerozumí nebaví se dále s náma. Jako programátoří musíme tedy psát kód v Javě v čitelné podobě, např. klasický Hello world System.out.println(“Hello, World!”);. Tento kód uložíme do souboru s příponou .java. Např.: HelloWorld.java.
2. Kompilování kódu
Java používá kompilátor, který převádí lidsky čitelný kód .java na bajtový kód, což je strojově nezávislý meziformát. Kompilátor Javy, javac, vygeneruje soubor .class z vašeho souboru .java. Například při kompilaci HelloWorld.java vznikne soubor HelloWorld.class.
3. Spuštění bajtového kódu na JVM
Proces zpracování kódu
Soubor .class (bajtový kód) je následně spuštěn v Java Virtual Machine (JVM). JVM interpretuje bajtový kód a spoušstí jej za pomocí hardwaru.
Co je to JVM, JRE a JDK
Je velice jednoduché se ztratit v tom co je co, proto si pojďme projít jednotlivé pojmy.
Java Virtual Machine (JVM)
JVM je motor, který spouští váš bajtový kód Javy. Je zodpovědný za:
• Načtení bajtového kódu
• Ověření bajtového kódu kvůli bezpečnosti
• Spuštění bajtového kódu
Každý operační systém (Windows, macOS, Linux atd.) má svou verzi JVM, což činí JVM závislou na platformě. Avšak bajtový kód je nezávislý na platformě, takže programy napsané v Javě mohou běžet na jakékoli platformě s kompatibilním JVM.
Java Runtime Environment (JRE)
JRE poskytuje prostředí potřebné pro spuštění aplikací v Javě. Obsahuje:
• JVM
• Knihovny a soubory nezbytné pro spuštění programů Javy
Když si na počítač nainstalujete Javu pro spouštění aplikací, instalujete JRE.
Java Development Kit (JDK)
JDK je nástroj pro vývojáře, který slouží k vytváření aplikací v Javě. Obsahuje:
• Kompilátor Javy (javac)
• Vývojářské nástroje
• JRE (a tím pádem i JVM)
Pokud vyvíjíte programy v Javě, potřebujete JDK. Pro spuštění aplikací stačí pouze JRE.
Klíčové vlastnosti Javy
Nezávislost na platformě
Java je často popisována jako „Write Once, Run Anywhere“ (WORA). To znamená, že jakmile napíšete a zkompilujete program v Javě, můžete jej spustit na jakémkoli zařízení nebo operačním systému s JVM. Tohle funguje proto, že vytvoříme bajtový kód a ten je nezávislý na platformě.
Role metody main
Aby mohl JVM spustit program v Javě, hledá metodu main s následujícím podpisem:
public static void main(String[] args)
Tato metoda slouží jako vstupní bod programu. Bez ní JVM neví, kde začít.
Třídy a objektově orientované programování
Java je objektově orientovaný programovací jazyk, což znamená, že vše v Javě se točí kolem objektů a tříd. I jednoduchý program vyžaduje alespoň jednu třídu.
Příklad kompletního programu v Javě:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); }}
Struktura hlavního souboru
Struktura hlavního souboru
Kompilace a spuštění
• Uložte kód do souboru s názvem HelloWorld.java
• Zkompilujte ho příkazem: javac HelloWorld.java. Tím vytvoříte soubor HelloWorld.class
• Spusťte program příkazem: java HelloWorld. Tím spustíte bajtový kód a zobrazí se výstup
JVM je vytvořeno pro konkrétní operační systémy a hardware, což z něj činí závislé na platformě. Například JVM pro Windows je odlišné od JVM pro macOS. Avšak díky tomu, že JVM interpretuje bajtový kód nezávislý na platformě, mohou programy napsané v Javě běžet na jakémkoli systému s kompatibilním JVM.
Vrstvy architektury Javy
Abychom to shrnuli, zde je, jak fungují vrstvy architektury Javy:
• Hardware: Váš fyzický stroj (notebook, stolní počítač atd.)
• Operační systém (OS): Systém běžící na vašem hardwaru (Windows, Linux atd.)