Ve druhé části seriálu o projektu Eclipse (první část) si řekneme, jakým způsobem je možné využít některé vlastnosti tohoto integrovaného vývojového prostředí při tvorbě a úpravách aplikací napsaných v programovacím jazyku Java. Postupně si ukážeme postup pro vytvoření nového projektu, jak se používají pohledy nazvané „Package Explorer“ a „Outline“ a navíc si ukážeme i způsob, jakým lze v javovských projektech automaticky či alespoň poloautomaticky hledat a opravovat chyby, a to bez nutnosti zdlouhavého přepisování zdrojových kódů. Od této velmi užitečné technologie je to již jen krátký skok k takzvanému refaktoringu, jenž při správném používání může programátorům ušetřit velmi mnoho času stráveného nad rozpracovaným projektem.

Eclipse JDT (Java Development Tools)

V první části seriálu o integrovaném vývojovém prostředí Eclipse jsme si řekli základní informace o vlastnostech tohoto projektu. Taktéž jsme si popsali způsob instalace Eclipse do systému Fedora 16. Instalace Eclipse do dalších distribucí Linuxu je však prakticky shodná, pokud pomineme nepatrné rozdíly v názvech balíčků i rozdíly mezi jednotlivými systémy balíčků. Připomeňme si, že se jednalo o instalaci balíčku nazvaného Eclipse JDT, kde zkratka JDT znamená Java Development Tools. JDT se skládá (velmi zjednodušeně řečeno) ze základního univerzálního jádra Eclipse doplněného o editor zdrojových kódů Javy, integrovaný debugger, inkrementální překladač a taktéž o modul, který se stará o refaktoring zdrojových textů napsaných v Javě.

Obrázek 1: Po instalaci projektu Eclipse JDT do systému Fedora 16 lze ikonu pro spuštění Eclipse nalézt v sekci „Programming“ (Gnome Shell). Alternativně lze samozřejmě Eclipse spustit přímo z příkazového řádku zapsáním příkazu „eclipse“.

Práce s projekty v Eclipse

Nyní si řekneme, jakým způsobem se v Eclipse vytvoří nový javovský projekt. Pojmem „projekt“ se v tomto vývojovém prostředí označuje samostatný adresář obsahující jak jednotlivé zdrojové kódy napsané v Javě, tak i datové soubory (například ikony), HTML a JSP stránky (v případě webového projektu) a navíc taktéž několik speciálních souborů a adresářů, do nichž si integrované vývojové prostředí Eclipse ukládá všechny potřebné informace o konfiguraci projektu. Jedná se zejména o soubory nazvané .project a .classpath a taktéž o adresář .settings. Celý adresář s projektem je většinou uložený v pracovním adresáři (workspace), ovšem nemusí tomu tak být vždy, protože projekt lze vytvořit i na jiném místě souborového systému.

Obrázek 2: Při prvním spuštění integrovaného vývojového prostředí Eclipse se zobrazí okno s uvítacími informacemi a odkazy na další poměrně zajímavé informační zdroje. Před začátkem práce na novém projektu je vhodné toto okno zavřít.

Nový projekt se v IDE Eclipse vytvoří relativně snadno. Po zavření okna s uvítacími informacemi (viz též popis u obrázku číslo 2) se pracovní plocha Eclipse uspořádá způsobem zobrazeným na obrázku číslo 3. Toto rozložení odpovídá perspektivě nazvané „Java“ a v případě potřeby se na tuto perspektivu můžete kdykoli přepnout pomocí hlavního menu: Window -> Open Perspective -> Java, popř. pomocí záložek zobrazených v pravém horním okraji hlavního okna (základní informace o perspektivách jsme si již řekli v úvodní části tohoto seriálu). Jediný rozdíl mezi obrázkem číslo 3 a skutečným uspořádáním perspektivy „Java“ může spočívat v odlišném umístění pohledu „Outline“, který se může nacházet na pravém okraji okna vývojového prostředí.

Obrázek 3: Základní rozmístění jednotlivých pohledů (Views) v perspektivě „Java“. Původní umístění pohledu „Outline“ bylo na pravém okraji hlavního okna Eclipse.

Vytvoření nového projektu

Vytvoření nového javovského projektu lze zajistit hned několika způsoby. Buď se z hlavního menu vybere příkaz: File -> New -> Project, nebo se stlačí pravé tlačítko myši na pohledu „Package Explorer“ a vybere se příkaz New -> Project, popř. se na hlavní nástrojové liště vybere první ikona zleva, která zobrazuje okno se značkou plus (+). Ve všech případech se zobrazí nový dialog, v němž je možné vybrat typ projektu – tento dialog je zobrazen na obrázku číslo 4 (jeho obsah se ve skutečnosti může lišit v závislosti na tom, jaké moduly jsou v Eclipse nainstalovány). Vzhledem k tomu, že si budeme vlastnosti Eclipse ukazovat na jednoduchém projektu napsaném v čisté Javě, vybereme v tomto dialogu možnost „Java Project“ (k tomuto dialogu vede ještě kratší cesta přes další ikonu zobrazenou na nástrojovém panelu – jedná se o osmou ikonu zprava).

Obrázek 4: Dialog s výběrem typu projektu. Obsah tohoto dialogu se může lišit v závislosti na tom, které moduly jsou v Eclipse v daný okamžik nainstalovány.

Po výběru typu projektu a stisku tlačítka „Next“ se spustí takzvaný wizard (známý i z mnoha dalších aplikací), který se v několika po sobě jdoucích formulářích zeptá na základní parametry projektu. V případě javovských projektů je wizard poměrně jednoduchý, protože se skládá z pouhých dvou dialogů. První z těchto dialogů, který je zobrazen na pátém obrázku, slouží především pro nastavení jména projektu a taktéž pro specifikaci, ve kterém adresáři má být projekt uložen. V neposlední řadě zde lze nastavit i prostředí jazyka Java, které se má použít při spouštění projektu. Zde je možné taktéž zvolit, jaká verze jazyka Java má být podporována. Některé projekty jsou totiž stále vytvářeny pro dnes již historickou Javu 1.4 (1.4.2) či Javu 5.0, u novějších projektů se na druhou stranu můžeme setkat i s Javou 7 (my budeme trošičku konzervativní, takže zůstaneme u Javy 6).

Obrázek 5: První dialog, na němž je nutné vyplnit základní informace o novém javovském projektu.

Pro jednoduchost prozatím v prvním formuláři pouze vyplníme jméno vytvářeného projektu (což je informace, která se musí zadat v každém případě) a ihned poté přejdeme na další formulář stiskem tlačítka „Next“. Tento formulář je zobrazen na šestém obrázku. Zde je možné nastavit podrobnější informace o vytvářeném projektu, například cestu ke knihovnám (.jar), které jsou v projektu používány apod. K této části konfigurace se lze kdykoli v budoucnosti opět vrátit, proto se jí nyní nebudeme podrobněji zabývat. V dolní části tohoto formuláře je možné zvolit, zda se budou soubory .class (tj. soubory obsahující bajtkód získaný překladem zdrojových textů) ukládat do stejných adresářů jako zdrojové soubory, nebo do adresáře zvláštního (zde je přednastaven podadresář bin/).

Obrázek 6: Druhý dialog s konfiguračními parametry nového javovského projektu.

Osobně dávám přednost tomu, aby se navzájem nemíchaly zdrojové soubory .java a zkompilované soubory .class, už jen proto, že se zjednodušuje zálohování, popř. využití systémů pro správu verzí (CVS, SVN, GIT, Mercurial atd.) Z tohoto důvodu není poněkud krypticky nazvaná volba „Allow output folders for source folders“ vybrána. Nyní nám již nezbývá nic jiného než na tomto formuláři vybrat tlačítko „Finish“, po jehož stisku se vrátíme zpět do hlavního okna integrovaného vývojového prostředí Eclipse. V pohledu „Package Explorer“ by už nyní měly být viditelné jednotlivé komponenty nově vytvořeného projektu – adresář se zdrojovými kódy a externí archiv obsahující knihovny tvořící standardní API Javy.

Obrázek 7: Komponenty nově vytvořeného projektu se zobrazí v pohledu „Package Explorer“.

Vytvoření nové třídy v projektu

Každý projekt vytvořený v Javě se skládá z jedné nebo více tříd, rozhraní a výčtových typů. Třídy se vytváří – podobně jako celý projekt – taktéž s využitím formuláře, do něhož se zadají základní informace o nové třídě (popř. informace o rozhraní nebo o výčtovém typu). Tento formulář se zobrazí buď po výběru příkazu File -> New -> Class, výběrem příslušné ikony na nástrojovém panelu (desátá ikona zleva), popř. z kontextového menu zobrazeného po stisku pravého tlačítka myši na pohledu „Package Explorer“ buď přímo v adresáři se zdrojovými texty, nebo ve vybraném balíčku (my však žádný balíček prozatím nemáme vytvořený). Ať již zvolíme jakoukoli výše popsanou možnost, zobrazí se formulář podobný formuláři z obrázku číslo 8.

Obrázek 8: Formulář zobrazený při vytváření nové třídy v projektu.

Základním údajem, který musí být vždy vyplněn, je pochopitelně jméno třídy. Taktéž lze zvolit jméno balíčku, v němž má být třída umístěna. Pokud daný balíček neexistuje, bude vytvořený současně s třídou. Mezi další informace, které lze v tomto formuláři zadat, patří jméno nadtřídy (superclass), jež lze buď zapsat přímo z klávesnice, nebo vybrat po stisku tlačítka „Browse“. Modifikátory třídy asi není nutné programátorům znalým Javy podrobně popisovat, stejně jako textové pole, do něhož se zadává seznam implementovaných rozhraní. Právě zde se dostáváme k jednomu užitečnému pomocníkovi – pokud například přes tlačítko „Add“ vybereme rozhraní „Comparable“ (postačuje zapsat několik počátečních písmen) a je zatržena volba „Inherited abstract methods“, je po vytvoření zdrojového kódu třídy automaticky vytvořena i hlavička metody „compareTo()“, která je v tomto rozhraní předepsána. Podobně je tomu i u dalších implementovaných rozhraní.

Obrázek 9: Zdrojový kód nové třídy, u níž bylo předepsáno, že má implementovat rozhraní Comparable a Runnable. Eclipse zjistí, které metody z těchto rozhraní se mají implementovat, a doplní jejich hlavičky, samozřejmě včetně komentářů.

Automatické doplňování kódu

Mezi další vlastnosti integrovaného vývojového prostředí Eclipse JDT patří automatické doplňování kódu a zobrazení JavaDocu u všech tříd, metod a atributů, u nichž jsou použity příslušné komentáře (to se samozřejmě týká i knihoven standardního API). Použití automatického doplňování kódu je snadné – kdykoli při psaní jména třídy, metody, atributu či lokální proměnné je možné použít klávesovou zkratku Ctrl+Space a editor buď přímo doplní celé jméno (které dává v daném kontextu smysl), nebo zobrazí seznam všech možných jmen, z nichž je možné provést výběr. Druhou možností je zapsat jméno třídy (popř. jméno objektu implementujícího nějakou třídu) a za ním tečku. V této chvíli se zobrazí podobné okno jako v předchozím případě, z něhož lze vybrat požadovanou metodu či atribut.

Obrázek 10: Okno zobrazené v případě, že se za jméno třídy (či její instance) zapíše tečka. Eclipse nabídne seznam všech dostupných metod i atributů, které je možné v daném kontextu použít.

Zobrazení JavaDocu

Při všech výše popsaných operacích se Eclipse snaží najít ve zdrojových kódech doplňované metody či atributu strukturovaný komentář (JavaDoc), a pokud ho najde, zobrazí ho v pomocném okně. Aby se tato nápověda zobrazila i pro třídy tvořící standardní API Javy, je zapotřebí mít nainstalovaný balíček se zdrojovými kódy těchto tříd (jedná se většinou o jediný archiv src.zip uložený v adresáři /usr/lib/jvm/java/). Integrované vývojové prostředí Eclipse nabízí programátorům výpomoc i při zápisu parametrů volaných metod. Jediné, co je nutné udělat, je nastavit textový kurzor mezi závorky, do nichž mají být zapsány parametry, a stlačit klávesovou zkratku Ctrl+Space. Pokud se jedná o přetíženou metodu, zobrazí se seznam všech variant parametrů, samozřejmě i s příslušnou nápovědou (JavaDoc).

Obrázek 11: Zobrazení všech variant přetížené metody System.out.println() ve zvláštním okně.

Oprava chyb ve zdrojových kódech

Integrované vývojové prostředí Eclipse se snaží při každém uložení zdrojového kódu (Ctrl+S) zavolat překladač a zjistit všechny chyby, které se ve zdrojovém kódu nachází. Tyto chyby jsou pak zvýrazněny červenou vlnovkou a navíc se na pravé straně editoru (vedle posuvníku) zobrazí červený obdélník, díky němuž lze chyby snadno lokalizovat i v rozsáhlejších zdrojových textech. Seznam všech chyb a případných varování se taktéž zobrazuje v pohledu „Problems“.

Obrázek 12: Inkrementální překladač se neustále snaží najít ve zdrojovém textu chyby, které jsou následně podtrženy a jejich seznam je zobrazen v pohledu „Problems“.

Ovšem Eclipse se kromě prostého upozornění na chyby snaží i o jejich poloautomatickou opravu. Většinou postačuje na chybu přejít textovým kurzorem a stlačit takřka magickou klávesovou zkratku Ctrl+1. Eclipse v této chvíli provede analýzu zdrojového kódu a nabídne jednu nebo i několik možností, jak chybu opravit. Jedná se o velmi užitečnou vlastnost, jejíž další funkce si popíšeme v následující části tohoto seriálu.

Obrázek 13: Chybně zapsané jméno metody (na konci chybí „n“) je inkrementálním překladačem snadno odhaleno. Postačuje však stlačit klávesovou zkratku Ctrl+1

Obrázek 14: …a Eclipse nabídne hned dva různé rozumné způsoby, jak zdrojový text opravit. V levém okně se navíc zobrazí způsob, jakým se zdrojový kód při opravě změní.