... jak na něj
Protože Java patří mezi nejpoužívanější programovací jazyky, existuje pro
ni velké množství editorů a programovacích prostředí. Pokud máme nainstalované
JDK, můžeme pro psaní programů v Javě použít libovolný textový editor,
který neukládá do výsledného souboru navíc žádné informace pro formátování
(např. MS Word je pro tento účel naprosto nepoužitelný, protože do výsledného
souboru ukládá spoustu nadbytečných informací, se kterými by si překladač při
spouštění programu neporadil).
Obyčejný textový editor však nezvýrazňuje syntaxi
zdrojového kódu (nijak nám psaní programu nezpřehledňuje). Existují proto
"chytřejší" editory, které během psaní zdrojového kódu barevně odlišují
klíčová slova, textové řetězce, číslice apod., takže je pro nás editovaný
zdrojový text výrazně čitelnější (např SciTe).
Půjdeme-li ještě dál a budeme od editoru požadovat další funkce, které nám
programování usnadní (doplňování zdrojového kódu, debugger, snažší správu souborů apod.),
najdeme celou řadu freewarových i placených produktů.
Mezi nejpopulárnější a neustále se rozvíjející patří prostředí Eclipse SDK.
Tento nástroj, který mimo jiné nabízí příjemné pracovní prostředí, debugger
a nemalé množství rozšiřujících plugginů, je možné bezplatně stáhnout z domovské
stránky http://www.eclipse.org.
V současné době je k dispozici jeho nejnovější verze Eclipse SDK 3.7, která má kódové jméno Indigo.
Samozřejmě i používání prostředí Eclipse musí předcházet instalace Javy (JDK nejlépe 6.0).
Tento návod nám ukáže, jak si Eclipse stáhnout, nainstalovat a jak ho jednoduše používat.
Potřebné činnosti můžeme rozdělit do následujících několika kroků:
1. Stažení a instalace Eclipse SDK
2. První spuštění
3. Vytvoření projektu a souborů
4. Spuštění programu
5. Jak spustit samostatný zdrojový kód
6. Práce s balíky
7. Kreslení - používaní nástroje DrawingTool
8. Debugger
Stažení a instalace Eclipse SDK
Abychom mohli Eclipse používat, musíme mít k dispozici soubor eclipse-SDK-3.7-win32.zip .
Ten získáme buď z CD předmětu PPA1 nebo jej můžeme stáhnou ze stránek
Eclipse (po pravé straně je pouze třeba si zvolit správnou verzi v závislosti na našem operačním systému).
Předpokládejme, že jsme si instalační soubor opatřili. Co nás čeká teď? Soubor eclipse-SDK-3.7-win32.zip
je nutné rozbalit někam, odkud bude možné později program spouštět (Eclipse se neinstaluje, ale pouze rozbalí). Doporučené
místo je c:\Program Files\Eclipse . Adresář obsahuje několik složek a samostatných souborů.
Mimo jiné je v něm umístěn také soubor eclipse.exe . Tento soubor slouží ke spuštění
programu.
Tip týdne: Je dobré umístit si zástupce souboru eclipse.exe tak, aby byl po ruce (např. na pracovní plochu
nebo do hlavního panelu).
První spuštění
Po spuštění programu (spuštění souboru eclipse.exe ) musíme ještě nastavit cestu k tzv.
workspace (složce, kterou bude Eclipse používat jako pracovní). Tuto složku můžeme ponechat tak, jak se
nastaví automaticky nebo si zvolit libovolnou jinou složku. Pokud nechceme, aby se tento dialog otevíral
při každém spuštění, zaškrtneme volbu "Use this as the default and do not ask again".
Je dobré si cestu k workspace pamatovat, abychom veděli, kde máme své soubory později hledat, pokud je
potřebujeme například nakopírovat na flash disk a přenést je na jiný počítač (třeba školní :).
V případě absence instalace JDK, nebo jeho špatného nastavení nahlásí Eclipse chybu a nespustí se.
Poté se již spustí prostředí Eclipse s hlavní uvítací stránkou.
Po jejím uzavření se nám pracovní
prostředí otevře ve své plné kráse :-). Co znamenají a k čemu slouží jeho jednotlivé části se dozvíme v
dalších kapitolách.
Vytvoření projektu a souborů
Zatím máme pracovní prostředí prázdné, pojďme se tedy podívat na to, jak vytvořit projekt, ve kterém budeme
moci vytvářet soubory se zdrojovými kódy. Bez projektů se v Eclipsu neobejdeme, každý program musí být totiž
uložen v některém z projektů, aby ho bylo možné spustit. Volbou File -> New -> Project a pak Java Project v menu
získáme následující dialogové okno.
Toto okno můžeme získat rychleji stiskem tlačítka v hlavní nástrojové liště.
Zde můžeme nastavit několik vlastností zakládaného projektu. Pro začátek nám však bude stačit zadání jména projektu (Project name) a
následný stisk tlačítka Finish. Dialogové okno se zavře a v levém sloupci pracovního prostředí (tvz. Package Explorer)
nám přibyde první položka - námi založený projekt.
Vytvoření nového souboru v projektu
Vytvořili jsme projekt. Ten je však zatím prázdný, neobsahuje žádný soubor se zdrojovým kódem.
Aby tedy celá naše snaha měla nějaký efekt (= abychom mohli spustit program napsaný v Javě), musíme teď nějaký program vytvořit.
Vytvoříme tedy novou třídu - volbou File -> New -> Class, popř. tlačítkem
v hlavní nástrojové liště. V zobrazeném dialogu můžeme zadávat parametry nově vytvořené třídě.
Zadáme jméno třídy (Name), popř. také jméno balíku Package. Pokud necháme jméno balíku nevyplněné,
je třída vložena do defaultního balíku. Na závěr stiskneme tlačítko Finish. Pokud bychom chtěli třídu později vložit do
jiného balíku, můžeme ji pomocí myši jednoduše přetáhnout v Package Exploreru.
V Package Exploreru na levé straně obrazovky se nám teď v projektu objevil nově vytvořený soubor. Ten se zároveň
otevřel v hlavní části okna a my ho můžeme libovolně editovat, ukládat a vytvořit tak takový zdrojový kód,
jaký potřebujeme pro správnou funkčnost našeho programu ;)
Přidání existujícího souboru do projektu
Samozřejmě, že vytvoření nového souboru není jediná
možnost, jak do projektu přidat soubor. Máme-li již zdrojový kód hotový (řekněme v souboru Soubor.java ),
stačí tento soubor nakopírovat do adresáře zdrojových kódů příslušného projektu v pracovní
složce (v našem případě C:\Documents and Settings\Administrator\workspace\ppa1_first\src\ ).
Aby se změna projevila v Package Exploreru, klikneme na projekt, do kterého jsme soubory přidávali,
a stiskneme klávesu F5 (refresh).
Pozor, pokud používáme balíky, musí být i při kopírování zachována správná adresářová struktura, která balíku odpovídá.
Pokud se nám nechce kopírovat soubory mezi adresáři, můžeme využít ještě jiný způsob přidání existujících souborů do projektu.
Jednoduše si soubory v jakémkoli správci souborů (Total Commander, Průzkumník, ...) nakopírujeme do schránky (CTRL+C, CTRL+Insert, nebo
kliknutím pravým tlačítkem na označené soubory a volbou Kopírovat v menu).
Poté se přepneme zpět do prostředí
Eclipse, pravým tlačítkem myši klikneme na balík, do kterého chceme soubor přidat, a v menu zvolíme Paste, popřípadě označíme
název balíku a stiskneme kombinaci kláves CTRL+V, popř. Shift+Insert. Soubory se tak vloží do projektu a jsou
automaticky nakopírovány do adresářové struktury workspace.
Poslední, pro některé možná nejjednodušší, možností je přetažení označených souborů ze správce souborů myší přímo do projektu.
I tomto případě se soubory nakopírují automaticky tam, kam patří. Eclipse se nás ještě raději zeptá, zda má soubory zkopírovat
do adresářové struktury workspace, nebo jen nastavit link na stávající soubor, doporučuji všat použít kopírování.
Stalo se Vám, že jste na svém počítači vytvořili program, přenesli ho na jiný a najednou Vám některé standardní metody
(např. System.out.format() apod.) nefungují? Zkontrolujte si, zda máte v projektu nastavenou správnou verzi Javy.
V menu zvolte Project -> Properties a v otevřeném dialogovém okně zvolte položku Java Compiler.
Po zaškrtnutí checkboxu Enable project specific settings si můžete potřebnou verzi Javy zvolit.
Vše potvrdíte stiskem tlačítka OK
Práce s prostředím Eclipse
Tím, že jsme začali vytvářet zdrojový kód, začínají se nám objevovat položky i v ostatních částech pracovní plochy.
Je tedy na čase si vysvětlit jejich základní význam:
Levý sloupec
 |
Package Explorer - slouží pro správu projektů, jejich souborů, knihoven apod.
Projekty uložené v pracovním prostředí lze otevírat a zavírat, u otevřeného projektu můžeme procházet jednotlivé
soubory, seznamy lze rozbalovat a následně zase sbalovat. Kliknutím na soubor se daný soubor otevře v pracovní
části okna.
|
Pravý sloupec
 |
Outline - zobrazuje všechny proměnné, metody a třídy v právě otevřeném souboru.
Kliknutím na příslušnou položku se kurzor v souboru přenese na její deklaraci.
|
Spodní řádka

Obsahuje několik záložek, ze kterých nás budou zatím zajímat pouze dvě:
Problems - odkazuje na chyby (Errors) a upozornění (Warnings), poklikáním na hlášení chyby/warningu je
daný problém vyznačen přímo ve zdrojovém kódu
Console - zajišťuje textový výstup
Pro zjednodušení a hlavně programování nabízí Eclipse řadu funkcí pro práci se zdrojovým kódem:
automatické doplňování |
CTRL + mezerník |
automatická korekce importů |
CTRL + Shift + O |
podtrhávání chyb |
automaticky (aktualizace po uložení souboru - CTRL + S) |
hromadné přejmenování názvů |
ALT + Shift + R |
rekompilace + spuštění |
F11 |
... a řadu dalších, na které v průběhu programování každý přijde a začne je ochotně využívat.
Spuštění programu
Nyní jsme tedy vytvořili zdrojový kód našeho programu, jak ho ale spustit? Postup je následující:
V menu zvolíme Run -> Run As -> Java Application. Stejného
efektu docílíme kliknutím na ikonku a volbami
Run As -> Java Application. V obou případech musíme mít v hlavním
okně otevřený soubor obsahující metodu main(), ve kterém je aktivní kurzor. Další možností,
jak spustit program, je kliknout na název souboru obsahující metodu main() v Package Exploreru
pravým tlačítkem a zvolit opět Run As -> Java Application.
Textové výstupy programu jsou vypsány na konzoli. Pokud budeme program spouštět opakovaně, můžeme použít tlačítko
v hlavní nástrojové liště nebo klávesu F11.
Vlastnosti kompilace lze měnit i dodatečně volbou (Run -> Run Configurations...). Jednou z užitečných vlastností,
které lze nastavit, je nastavení parametrů pro spouštění programu (viz spouštění z příkazové řádky ve tvaru:
java Hello aaa ) a sice zadáním parametrů do textového pole Program arguments v záložce
Arguments.
Pokud chcete nastavit vlastnosti kompilace a ještě jste program nespustili, musíte nejdříve novou kompilaci vytvořit.
Není to nijak komplikované, stačí v otevřeném dialogovém okně zvolit Java Aplication a následně kliknout
na tlačítko .
Jak spustit samostatný zdrojový kód
Problém je jednoduchý: studenti a studentky PPA1 si doma připraví programy a chtějí je na cvičení upravit nebo se ujistit, že jsou
naprogramované správně. Programy (v podobě zdrojových kódů) si přinesou na cvičení a chtějí je co nejjednodušším způsobem
načíst do Eclipsu. Jak to udělat?
V laboratoři už je Eclipse nainstalovaný a jistě už v něm doma pracovali, kapitoly 1 a 2 mohou tedy klidně přeskočit.
Podle kapitoly 3 Vytvoření projektu a souborů si vytvoří projekt s libovolným názvem (jako vhodný si troufám
navrhnout například naše osobní číslo A09xxx). Pokud používají správu souborů uvedenou v kapitole 6 Práce s balíky,
volí názvy adekvátním způsobem. Po vytvoření prázdného projektu se ve složce označené jako pracovní (tzv. workspace)
vytvoří adresář s názvem shodným se jménem projektu. Do tohoto adresáře studenti a studentky překopírují své vlastnoručně
vyrobené zdrojové kódy (buď do defaultního nebo vhodně pojmenovaného balíku). Poté se vrátí do pracovního prostředí Eclipsu, v
okně Package Explorer kliknou na projekt ppa1 a stisknou klávesu F5 (provedou refresh). Další možností je
nakopírování souborů nebo jejich přetažení myší z Total Commanderu nebo Průzkumníka přímo do projektu (pozor na dodržení
správné adresářové struktury). Podrobnější popis všech tří variant najdeme v podkapitole Přidání existujícího
souboru do projektu. Všechny nakopírované zdrojové kódy teď můžeme dvojklikem otevřít, upravit a dále s nimi pracovat.
Práce s balíky
V předchozím textu se již několikrát objevil pojem balík (package). Balíky v podstatě k funkčnosti
našich programů nezbytně nutně nepotřebujeme. Pokud programujeme jednoduché příklady, jejichž zdrojový
kód je uložený v jednom nebo pouze několika zdrojových souborech, bez problémů se bez balíků obejdeme.
Jestliže však začneme pracovat na větším programu nebo si ve svých zdrojových kódech chceme udržovat
přehlednost a pořádek, balíky se nám budou hodit. Přestože na cvičeních PPA1 ve většině případů nepotřebujeme
velké množství tříd, je vhodné balíky používat právě pro organizování zdrojových souborů.
Jedna z možných variant je následující: Na začátku semestru si
každý student vytvoří projekt se jménem shodujícím se se svým osobním číslem (takže například A07999).
Pro každé cvičení se pak vytvoří samostatný balík (např. cv01), do kterého si student bude ukládat zdrojové
kódy vypracovaných příkladů příslušného cvičení.
Vytvoření nového balíku je jednoduché. Buď v menu zvolíme File -> New -> Package,
nebo použijeme ikonu v hlavní nástrojové liště.
Dialog pro vytvoření nového balíku má pouze dvě kolonky. Source folder udává, do kterého z projektů
bude balík vytvořen. Druhá řádka Name pak slouží pro zadání jména balíku.
Po stisku tlačítka Finish se vytvoří nový balík.
Na následujícím screenshotu vidíme strukturu, která vznikne, pokud budeme používat výše popsaný způsob organizace
našich zdrojových kódů:
Pozor:
Odevzdávání takto organizovaných zdojových kódů vyžaduje před odevzdáváním přes validátor ještě jednu drobnou
úpravu a sice smazání nebo zakomentování jedné řádky ze zdrojového kódu. Jestliže pracujeme s balíky,
obsahuje každá třída informaci, do kterého balíku patří - např. package cv01; . Validátor však
předpokládá, že odevzdávané zdrojové kódy nejsou zařazené do žádných balíků, proto je nutné tuto řádku
ze zdrojového kódu odstranit (zakomentovat nebo smazat).
Kreslení - používání nástroje DrawingTool
Abychom mohli ve svých programech snadno používat grafiku, budeme používat již připravenou knihovnu DrawingTool.
Návod na používání knihovny jako takové najdeme v samostatném pdf na stránkách nebo CD předmětu.
Jak ale zařídit, aby DrawingTool fungoval i v Eclipsu? Není to tak složité, jak by se mohlo zdát. Jediné, co
k tomu potřebujeme, je soubor DrawingToolEclipse.jar a chvilka nastavování.
JAR soubor můžeme mít v podstatě kdekoli, vhodným místem, kam ho uložit je přímo do workspace Eclipsu
(např. C:\Documents and Settings\Administrator\workspace\ ). Teď ještě musíme projektu nastavit,
že má Eclipse tento soubor používat jako knihovnu. To uděláme v menu Project -> Properties,
nebo kliknutím pravým tlačítkem na projekt v Package Exploreru a volbou Properties. V Dialogovém okně
dále volíme položku Java Build Path a poté záložku Libraries. Po pravé straně najdeme
tlačítko Add External JARs....
To nám umožní zvolit cestu k souboru DrawingToolEclipse.jar a přidat ho mezi knihovny. Tlačítkem
OK pak vše potvrdíme.
Od této chvíle zná Eclipse cestu ke knihovně a my ji můžeme používat. Aby však překladač věděl, že ji má používat,
je nutné ve zdrojovém kódu, který grafické funkce používá, importovat balík ppa1 - import ppa1.DrawingTool;
(viz zvýrazněná řádka v kódu na obrázku). Teď už můžeme začít ve svých programech bez obav používat grafiku.
Při odevzdávání příkladů přes validátor musíme udělat opět drobnou úpravu jako při používání balíků a sice smazat
nebo zakomentovat import balíku, popř. i definici balíku, pokud v kódu je.
Debugger
Až dosud jsme pracovali v tzv. Java perspektivě (to poznáme podle stisknutého tlačítka Java v pravém horním rohu obrazovky).
Tato perspektiva je vhodná pro programování, správu zdrojových souborů apod. Pro ladění je praktičtější používat
tzv. Debug perspektivu. Do té se musíme nejdříve přepnout. V pravém horním rohu najdeme tlačítko Open Perspective ,
po jeho stisku nám Eclipse nabídne menu, ve kterém si můžeme Debug perspektivu otevřít. Poté se v pravé horní části objeví
nové tlačítko Debug, pomocí kterého můžeme pracovní prostředí Eclipsu přepnout do perspektivy vhodné pro ladění.
Celé pracovní prostředí se tak přepne do následující podoby:
Pro další výklad bude lepší zvolit trošku složitější vzorový příklad. Jedná se o příklad na výpočet mocniny e^x.
import java.util.*;
public class LadeniPomociDebuggeru {
final static double EPS = 1e-3;
static int atribut = 2;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Iteracni vypocet e**x");
System.out.print("Zadej x: ");
int x = sc.nextInt();
System.out.println("x=" + x); // ladici vypis
double suma = 1.0; // vypocet
double clen = 1.0;
int i = 1;
while (clen > EPS) {
clen *= (double) x / i;
suma += clen;
System.out.format("i=%2d, clen=%.3f, suma=%.3f%n", i, clen, suma); // ladici vypis
i++;
atribut = i;
}
System.out.println("Vysledek: " + suma);
// ladici vypisy
System.out.println("Funkci: " + Math.exp(x));
System.out.println("Presnost: " + Math.abs(Math.exp(x) - suma));
}
}
Jak debugger spustit:
Pokud spouštíme debuger poprvé, musíme nejdříve vytvořit kompilaci pro debuggování.
Tu vytvoříme podobně jako kompilaci pro spouštění programu buď kliknutím na ikonu
a následnou volbu Debug As -> Java Aplication
nebo v menu zvolíme Run -> Debug As -> Java Aplication.
Pokud chceme nastavovat podrobnější parametry pro debuggování zvolíme
Run -> Run Configurations... a pokračujeme jako při vytváření kompilace
pro spuštění bez debuggování:
Pokud budeme ladění spouštět opakovaně,
stačí nám, když použijeme tlačítko v hlavní nástrojové liště.
K čemu všemu můžeme debugger použít:
Po stisku tlačítka Debug se spustí program v ladicím režimu.
Po zahájení debug režimu máme k dispozici další nástrojovou lištu pracovního okna Debug
(význam jednotlivých tlačítek se dozvíme za chvíli).
Během ladění standardně potřebujeme alespoň několik základních činností:
-
nastavení míst přerušení programu (breakpoints) - jsou to speciálně označené řádky zdrojového kódu, pokud
program začne zpracovávat tuto řádku, zastaví se.
Breakpoint přidáme/odstraníme dvojklikem na levou krajní část editoru kódu. Breakpoit je umístěn, objeví-li se
před řádkem modrý puntík.
-
výpisy všech dostupných proměnných - lokální proměnné se vypisují automaticky všechny, nelokální proměnné
může jich být mnoho) jsou vypisovány na žádost. Výpis lokálních proměnných je prováděn v okně Variables
v pravé horní části obrazovky. Lokální proměnná je zde zobrazena, jakmile je jí v běhu programu přiřazena hodnota.
Jestliže chceme během ladění kontrolovat obsah statických globálních proměnných a konstant, musíme si zobrazení nastavit.
To provedeme v menu okna Variables -> Java zaškrtnutím položek Show Constants a
Show Static Variables
Hodnotu proměnné získáme také tím, že na ní najedeme kurzorem myši. Pokud už jí byla přiřazena hodnota,
zobrazí se, pokud ne, zobrazí se pouze popis proměnné.
- krokování programu řádku po řádce - krokování dovnitř podprogramů (Step into) nebo
provedení podprogramu jako jeden příkaz (Step over) - tlačítka v nástrojové liště Debug
- běh programu do následujícího breakpointu - tlačítko Resume v nástrojové liště Debug
- ukončení běhu programu - tlačítko Terminate v nástrojové liště Debug
Použití debuggeru významně urychluje ladění programu a je vhodné se naučit alespoň jeho základní možnosti.
Eclipse má debugger na vysoké úrovni.
Výjimka ClassNotFoundException(Object).<init>() a její možné příčiny:
Tak si to představte. Napíšete program a chcete ho oddebuggovat a debugger Vám začne vyhazovat
výjimku ClassNotFoundException . Co s tím?
Jedním z možných problémů je nevyhovující nastavení Java compileru. Nastavení zkontrolujeme jednoduše.
Například v menu zvolíme Project -> Properties -> Java Compiler v sekci
Classfile Generation by měly být zaškrtány alespoň první 4 položky. Jedná se o nastavení
informací přidávaných do *.class souborů, které potom debugger využívá. Pokud bychom
jejich generování zakázali, debugger je bude postrádat. Pokud je toto nastavení správně, problém může být ještě jinde.
Ukažme si problém na reálné situaci.
public class App {
public static void main(String[] args) {
for (int i=0; i<5; i++) {
Vrchol novy = new Vrchol(i);
}
}
}
public class Vrchol {
int klic;
public Vrchol(int klic) {
this.klic = klic;
}
}
Umístíme breakpoint na řádek Vrchol novy = new Vrchol(i); do třídy App .
Po zastavení běhu programu na breakpointu začneme pomocí Step Into náš program krokovat.
Pokud vše bez problémů funguje, buďte rádi a nelamte si následujícím vysvětlovánim hlavu :),
pokud ale během debuggování narazíte na problém, třeba vám následující popis pomůže najít řešení.
Pokud se v příkladu snažíte najít nějakou chybu, hledáte marně, příklad je opravdu správně,
a přesto Eclipse hlásí chybu. Jak je to možné? Eclipse má pro debuggování javovských zdrojáků
defaultně nastaveno při použití Step Into procházení i standardních balíků (případně i dalších
importovaných balíků). Co se tedy stane ve chvíli, kdy se dostaneme na řádek
Vrchol novy = new Vrchol(i); a stiskneme Step Into? Debugger se bude snažit
zanořit do standardně volané metody super() v konstruktoru třídy
Vrchol a přesně to vyvolá naši výjimku, protože debugger samozřejmě nemá k dispozici zdrojáky.
Stejný problém vyvolá i situace, kdy umístíme breakpoint na řádku s nějakou standardní funkcí
- např. System.out.println();
V našem případě by stačilo umístit breakpoint až do konstruktoru třídy Vrchol , obecně na to ale
budeme muset jinak. Abychom se vyhnuli zanořování do standardních knihoven Javy, trošku si změníme nastavení debuggeru.
V menu zvolíme Window -> Preferences -> Java -> Debug -> Step Filtering.
Tady si zaškrtáme balíky, které nemají být při krokování brány v potaz. V našem příkladě bude stačit zaškrtnout
balík java.* . Teď je ještě potřeba zapnout používání filtru, to zařídíme stiskem
tlačítka Use Step Filters/Step Debug v liště debug okna.
Od této chvíle by mělo debuggování fungovat :)
|