Naučte se Javu – aplikace
Jazyk Java je možné uplatnit mnoha různými způsoby. Mezi ty nejčastější patří Java applety a aplikace. Dnes se podíváme na to, jak se v Javě aplikace píše a co musí třída splňovat, aby ji bylo možné spouštět jako aplikaci. Zároveň si ukážeme dva konkrétní příklady aplikace v Javě.
Jemný úvod – aplikace vs. applet
Aplikace je samostatně běžící program, který pro své spuštění potřebuje pouze Java Virtual Machine (aplikace v jazyce Java). Tím se liší od appletu, který samostatně neběží, ale je začleněn v HTML stránce, kde je mu vyhraněna obdélníková oblast (podobně jako obrázkům).
Kromě aplikací a appletů lze používat Javu pro psaní servletů, což je javový kód běžící v rámci webového serveru používaný pro generování obsahu HTML stránek. Další oblast použití Javy je psaní uložených procedur pro některé databázové servery (např. Oracle). Novým trendem na poli mobilních telefonů jsou přístroje, používající Javu pro spouštění aplikací. To jen ukazuje univerzálnost jazyku Java (Java byla dokonce původně vyvinuta pro účely ovládání elektrických spotřebičů).
Těmito způsoby využití se však v rámci našeho seriálu zabývat nebudeme. Osvojíte–li si však jazyk Java, nebude pro vás problém ho využívat jinde než pouze v appletech či aplikacích.
Aplikace
Jako aplikace může být spuštěna libovolná třída, která implementuje metodu main()
:
public static void main (String args[])
Jedná se o statickou metodu, tedy metodu třídy, která nevrací žádnou hodnotu. Jako parametr dostává pole řetězců, ve kterém jsou uloženy parametry aplikace předané na příkazovém řádku.
Následující příklad ukazuje aplikaci pro výpočet faktoriálu.
public class faktorial {
/** metoda fakt() počítá faktoriál parametru */
static int fakt(int x) {
if (x<0) return -1;
if (x==0) return 1;
return x*fakt(x-1);
}
/** Hlavní metoda, která bude vyvolána, pokud se třída spustí
* jako aplikace.
* Vyžaduje jeden celočíselný nezáporný parametr.
*/
public static void main(String[] args) {
try {
// převedení řetězce na číslo
int cislo = Integer.parseInt(args[0]);
// výpočet a výpis faktoriálu
System.out.println( fakt(cislo) );
}
// ošetření výjimek, které mohou nastat při čtení parametru
catch (ArrayIndexOutOfBoundsException e) {
// hodnota argv[0] nebyla definována
System.out.println(„Musíte zadat parametr!“);
}
catch (NumberFormatException e) {
// hodnota argv[0] nebyla celé číslo
System.out.println(„Zadaný parametr nebyl celé číslo!“);
}
}
}
Zkompilovanou třídu faktorial si můžete stáhnout.
Všimněte si, že tato třída má pouze statické metody a při běhu programu nevzniká žádná její instance. To však samozřejmě není podmínkou. V metodě main()
se často založí instance této třídy, která se pak používá při běhu programu (to bude vidět i v dalším příkladu).
Třídu zkompilujeme běžným způsobem:
javac faktorial.java
a spustíme např.
java faktorial 5
Kromě toho, že lze třídu spustit jako aplikaci, můžeme se na ni odkazovat i z jiných tříd tak, že z jiného místa v kódu zavoláme faktorial.fakt(5)
.
Pozn.: pro vysoké hodnoty vstupního parametru program vrátí chybné hodnoty, protože dojde k přetečení proměnné (hodnota je větší, než největší přípustná hodnota proměnné typu int
). Pro přehlednost zde tento problém neošetřujeme.
Aplikace s oknem
Na dalším příkladu si ukážeme aplikaci, která vytváří okno. Jedná se o prohlížeč souborů, který zobrazí soubor, jehož jméno je zadáno coby parametr programu.
Příklad je složitější a je v něm využito několik technik, které budou popsány v následujících dílech seriálu. Proto můžete klidně přeskočit ty části, kterým nebudete rozumět.
Metoda main()
založí instanci objektu prohlizec, která zobrazuje okno se souborem. Na příkladu je dobře vidět ošetření výjimek, které bylo popsáno v předcházejícím díle.
Okno obsahuje rámeček s výpisem souboru (TextArea
) a tlačítko pro zavření okna (Button
). Rozmístění těchto komponent na ploše okna zajišťuje objekt BorderLayout
. Na stisknutí tlačítka reaguje objekt ActionListener
tím, že spustí metodu zavri()
. Pro reakci na stisk tlačítka je zde použito vnořených tříd, se kterým jsme se zatím nesetkali. Používání grafického uživatelského rozhraní a používání událostí bude popsáno v některým z dalších dílů.
Používáním vstupů a výstupů a práce se soubory bude rovněž vysvětleno v samostatné kapitole, zatím se můžete spokojit s tím, že tento kód načte obsah souboru do proměnné text
.
import java.awt.*;
import java.lang.*;
import java.io.*;
import java.awt.event.*;
public class prohlizec extends Frame {
TextArea soubor;
Button tlacitko;
/** Konstruktor objektu */
public prohlizec(String jmenoSouboru) {
// volá konstruktor třídy Frame
super(jmenoSouboru);
// nastavení správce rozvržení
this.setLayout(new BorderLayout(10, 10));
// nastavení textové oblasti
soubor = new TextArea();
soubor.setEditable(false);
this.add(soubor, „Center“);
// nastavení tlačítka
tlacitko = new Button(„Zavři“);
tlacitko.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
zavri();
}
});
this.add(tlacitko, „South“);
// konečné uspořádání komponent na ploše okna
this.pack();
}
/** Metoda zavri() způsobí zavření okna */
public void zavri() {
dispose();
}
/** Metoda nastavText() nastaví text v hlavním panelu okna */
public void nastavText(String text) {
soubor.setText(text);
}
/** Hlavní metoda, která bude vyvolána, pokud se třída spustí
* jako aplikace.
* Vyžaduje jeden parametr se jménem souboru.
*/
public static void main(String[] args) {
try {
String text = „“;
// vytvoření instance třídy
prohlizec pr = new prohlizec(args[0]);
// otevření souboru pro čtení
DataInputStream vstup = new DataInputStream(new FileInputStream(args[0]));
// načtení obsahu souboru do proměnné text
while (vstup.available()>0) {
text += vstup.readLine()+“\n“;
}
// nastavení textu
pr.nastavText(text);
// zobrazení dialogu
pr.show();
}
// ošetření výjimek
catch (IndexOutOfBoundsException e) {
System.out.println(„Syntaxe: java prohlizec <jmeno_souboru>“);
}
catch (FileNotFoundException e) {
System.out.println(„Zadaný soubor nebyl nalezen.“);
}
catch (IOException e) {
System.out.println(„Chyba při čtení souboru.“);
}
}
}
Zkompilovanou třídu prohlizec si můžete stáhnout.
V příštím díle se podobným způsobem podíváme na to, jak se píší applety.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Znovuuvedení domény .AD
5. září 2024 -
Co je to DNSSEC, jak funguje a jak si ho nastavit?
14. srpna 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024