Z´apadoˇcesk´a univerzita v Plzni Fakulta aplikovan´ych vˇed Katedra informatiky a v´ypoˇcetn´ı techniky

Bakal´aˇrsk´apr´ace

Srovn´an´ıst´avaj´ıc´ıch IDE pro jazyk

Plzeˇn2016 Petr Zeman Prohl´aˇsen´ı

Prohlaˇsuji, ˇzejsem bakal´aˇrskou pr´aci vypracoval samostatnˇea v´yhradnˇes po- uˇzit´ım citovan´ych pramen˚u.

V Plzni dne 3. kvˇetna 2016 Petr Zeman Podˇekov´an´ı

R´ad bych podˇekoval panu Ing. Tom´aˇsi Potuˇz´akovi, Ph.D. za ˇcas, rady a pˇri- pom´ınky poskytnut´epˇri vytv´aˇren´ıt´eto bakal´aˇrsk´epr´ace. Abstract

Title: Comparison of existing IDE for Java Language

The aim of this thesis is to research the existing integrated development enviroments for Java language and then comparison of several of them. For the comparison, the BlueJ and IDEs, which are designed to lear- ning programming, and and Netbeans IDEs, which are intended for application development, were chosen. All selected IDEs are described in this thesis in detail and compared, so it can help to readers in choosing right ap- plication for their own work.

Key words: Java, IDE, BlueJ, Greenfoot, Eclipse, Netbeans

Abstrakt

C´ılem t´eto bakal´aˇrsk´epr´ace je prov´est reˇserˇsiexistuj´ıc´ıch v´yvojov´ych pro- stˇred´ı pro jazyk Java a n´asledn´eporovn´an´ı nˇekolika z nich. K tomu byla zvolena prostˇred´ıBlueJ a Greenfoot, kter´ajsou urˇcen´ak v´yuce programo- v´an´ı, a prostˇred´ıEclipse a Netbeans, kter´ajsou urˇcen´apro v´yvoj aplikac´ı. Vˇsechna uveden´aprostˇred´ıjsou v pr´aci podrobnˇepops´ana a porovn´ana, coˇz m˚uˇzeˇcten´aˇripomoci pˇrivolbˇespr´avn´eho prostˇred´ıpro vlastn´ıpr´aci.

Kl´ıˇcov´aslova: Java, v´yvojov´eprostˇred´ı, BlueJ, Greenfoot, Eclipse, Netbe- ans Obsah

1 Uvod´ 1

2 Z´akladn´ıpojmy 2 2.1 Jazyk Java ...... 2 2.2 Java prostˇred´ı ...... 2 2.3 V´yvojaplikac´ı...... 3 2.4 V´yvojov´eprostˇred´ı ...... 3 2.5 V´yvojov´aplatforma ...... 4

3 Vlastnosti IDE a jejich n´astroje 5 3.1 Editor ...... 5 3.2 Zv´yraznˇen´ısyntaxe ...... 6 3.3 Kontextov´an´apovˇeda ...... 6 3.4 Kontrolak´odu...... 7 3.5 Pˇreklad a spouˇstˇen´ıprogramu ...... 7 3.6 Generov´an´ıdokumentace ...... 8 3.7 Debugger ...... 8 3.8 Testovac´ın´astroje ...... 9 3.9 Buildovac´ın´astroje ...... 10 3.10 Verzovac´ın´astroje ...... 10

4 Reˇserˇse existuj´ıc´ıch IDE 11 4.1 NetBeans ...... 11 4.2 Eclipse...... 11 4.3 IntelliJ IDEA ...... 12 4.4 JDeveloper ...... 13 4.5 BlueJ...... 13 4.6 AndroidStudio ...... 13 4.7 JCreator ...... 14 4.8 JBuilder ...... 14 4.9 SnapCode ...... 15 OBSAH OBSAH

4.10Navicoder ...... 15 4.11 jGRASP ...... 15 4.12DrJava...... 16 4.13 Greenfoot ...... 16 4.14SkyIDE ...... 16 4.15 Asterix IDE ...... 17 4.16tIDE...... 17 4.17 Zeus IDE ...... 17 4.18 Jenuity ...... 17 4.19 JotAzul ...... 18 4.20 Dalˇs´ıaplikace ...... 18

5 Popis porovn´avan´ych prostˇred´ı 19 5.1 Eclipse...... 19 5.1.1 Instalace ...... 20 5.1.2 Spuˇstˇen´ıa konfigurace ...... 20 5.1.3 Generov´an´ık´odu ...... 21 5.1.4 Doplˇnov´an´ık´odu ...... 23 5.1.5 Refaktoring ...... 24 5.1.6 Historie k´odu ...... 24 5.1.7 Dalˇs´ımoˇznosti ...... 26 5.1.8 Moˇznosti rozˇs´ıˇren´ı ...... 26 5.1.9 Dokumentace a zdroje informac´ı...... 27 5.2 Netbeans ...... 29 5.2.1 Instalace ...... 30 5.2.2 Spuˇstˇen´ıa konfigurace ...... 30 5.2.3 Generov´an´ık´odu ...... 31 5.2.4 Doplˇnov´an´ık´odu ...... 32 5.2.5 Refaktoring a anal´yza k´odu ...... 33 5.2.6 Historie k´odu ...... 33 5.2.7 GUI builder ...... 34 5.2.8 Dalˇs´ımoˇznosti ...... 34 5.2.9 Moˇznosti rozˇs´ıˇren´ı ...... 36 5.2.10 Dokumentace a zdroje informac´ı...... 36 5.3 BlueJ...... 38 5.3.1 Instalace ...... 38 5.3.2 Spuˇstˇen´ıa konfigurace ...... 39 5.3.3 Popis prostˇred´ı ...... 39 5.3.4 Diagram tˇr´ıd ...... 39 5.3.5 Implementace k´odu ...... 40 5.3.6 Pr´aces objekty ...... 40 OBSAH OBSAH

5.3.7 Pˇr´ıkazov´aˇr´adka ...... 41 5.3.8 Ladˇen´ıa testov´an´ı ...... 42 5.3.9 Dalˇs´ımoˇznosti ...... 43 5.3.10 Moˇznosti rozˇs´ıˇren´ı ...... 44 5.3.11 Dokumentace ...... 44 5.4 Greenfoot ...... 45 5.4.1 Instalace ...... 45 5.4.2 Spuˇstˇen´ıa konfigurace ...... 45 5.4.3 Popis prostˇred´ı ...... 46 5.4.4 Diagram tˇr´ıd ...... 46 5.4.5 Implementace k´odu ...... 47 5.4.6 Pr´aces objekty ...... 47 5.4.7 Ladˇen´ı...... 48 5.4.8 Dalˇs´ımoˇznosti ...... 49 5.4.9 Dokumentace ...... 49

6 Porovn´an´ıprostˇred´ı 51 6.1 V´yukov´aprostˇred´ı ...... 51 6.1.1 Jednoduchost prostˇred´ı...... 52 6.1.2 Uk´azkov´eprojekty ...... 52 6.1.3 Diagram tˇr´ıd ...... 52 6.1.4 Editor ...... 52 6.1.5 Vizualizace a pr´ace s objekty ...... 53 6.1.6 Ladˇen´ıa testov´an´ı ...... 53 6.1.7 Dostupn´emateri´aly ...... 53 6.1.8 Dalˇs´ımoˇznosti ...... 53 6.1.9 Bodov´ehodnocen´ı ...... 54 6.1.10 Shrnut´ı ...... 54 6.2 Profesion´aln´ıprostˇred´ı ...... 55 6.2.1 Podpora Java technologi´ı...... 55 6.2.2 Reakce prostˇred´ı ...... 56 6.2.3 Moˇznosti pˇrizp˚usoben´ı ...... 56 6.2.4 Generov´an´ık´odu ...... 56 6.2.5 Kontextov´an´apovˇeda ...... 56 6.2.6 Refaktoring ...... 56 6.2.7 Ladˇen´ı...... 57 6.2.8 Testov´an´ı ...... 57 6.2.9 Verzov´an´ı ...... 57 6.2.10 N´apovˇeda v prostˇred´ı...... 57 6.2.11 Zdroje informac´ı ...... 58 6.2.12 Moˇznosti rozˇs´ıˇren´ı ...... 58 OBSAH OBSAH

6.2.13 Bodov´ehodnocen´ı ...... 58 6.2.14 Dotazn´ıkov´eˇsetˇren´ı...... 59 6.2.15 Shrnut´ı ...... 60

7 Z´avˇer 61

Pˇrehled zkratek 62

Seznam obr´azk˚u 63

Seznam tabulek 65

Literatura 66

A Dotazn´ık 72 1 Uvod´

T´ematem bakal´aˇrsk´epr´ace je srovn´an´ıst´avaj´ıc´ıch IDE (Integrated Develop- ment Enviroment — Integrovan´ev´yvojov´eprostˇred´ı) pro jazyk Java. Pr´ace si klade za ´ıl nejprve ˇcten´aˇre sezn´amit s bˇeˇzn´ymi vlastnostmi a n´astroji, kter´ev´yvojov´aprostˇred´ıobvykle obsahuj´ı, a tedy i s t´ım, co vˇse mu mohou umoˇznit. Radaˇ tˇechto n´astroj˚uje bˇehem let neust´ale vyv´ıjena a zdokonalo- v´ana, aby co nejv´ıce ulehˇcila pr´aci program´ator˚upˇri psan´ızdrojov´ych k´od˚u.

V dalˇs´ıˇc´asti pr´ace nastiˇnuje seznam dostupn´ych v´yvojov´ych prostˇred´ı, at’ uˇz zam´yˇslen´ych pro v´yuku nebo v´yvoj aplikac´ı, kter´alze v souˇcasn´edobˇenal´ezt na trhu. Z kandid´atsk´ych v´yvojov´ych prostˇred´ıjsou n´aslednˇevybr´ana ˇctyˇri (dvˇev´yukov´aa dvˇepro v´yvoj aplikac´ı). Tato prostˇred´ıjsou v dalˇs´ıˇc´asti pr´ace d˚ukladnˇeprozkoum´ana a otestov´ana na z´akladˇezvolen´ych krit´eri´ı. Produkty hodnot´ınejen autor t´eto pr´ace, ale i dalˇs´ıdotazovan´ıs odliˇsn´ymi program´a- torsk´ymi zkuˇsenostmi. D´ıky tomu by mˇelˇcten´aˇrz´ıskat poznatky o tom, kter´e v´yvojov´eprostˇred´ıby mohlo b´yt nejvhodnˇejˇs´ıpro jeho pr´aci vzhledem k jeho zkuˇsenostem a zvyklostem.

1 2 Z´akladn´ıpojmy

Tato kapitola definuje nˇekolik z´akladn´ıch pojm˚u, kter´eby mˇelˇcten´aˇrzn´at pˇred zapoˇcet´ım ˇcten´ıt´eto pr´ace, jelikoˇzjsou tyto pojmy v pr´aciˇcasto zmi- ˇnov´any.

2.1 Jazyk Java

Jazyk Java je objektovˇeorientovan´yprogramovac´ıjazyk vyvinut´yfirmou Sun Microsystems, jehoˇzsyntaxe vych´az´ız jazyka C a C++. Zvl´aˇstnost´ıtoho ja- zyka je, ˇzese nepˇrekl´ad´ado strojov´eho k´odu dan´eho poˇc´ıtaˇce,ale do jazyka zvan´eho bajtk´od (bytecode). Program je pak interpretov´an pomoc´ıvirtu´al- n´ıho stroje (JVM – Java Virtual Machine), d´ıky ˇcemuˇzlze Java programy vyuˇz´ıvat na ˚uzn´ych zaˇr´ızen´ıch s r˚uzn´ymoperaˇcn´ım syst´emem bez nutnosti nov´eho pˇrekladu. V souˇcasnosti se vyuˇz´ıv´atechnologie HotSpot, kter´ase kom- binuje s JIT (Just-In-Time) kompil´atory, kter´epˇreloˇz´ıbajtk´od do strojov´eho jazyka poˇc´ıtaˇce, coˇzurychl´ıbˇeh samotn´eho programu [1].

Jazyk Java je jednoduˇsˇs´ıoproti jazyku C hlavnˇed´ıky tomu, ˇzeprogram´a- tor nemus´ıˇreˇsit spr´avu pamˇeti. To za nˇejˇreˇs´ıpr´avˇeJVM, jenˇzaplikace ˇz´a- daj´ıo pˇridˇelen´ıa uvolnˇen´ıpamˇeti. K tomu JVM vyuˇz´ıv´aGarbage Collector, kter´yautomaticky vyhled´av´a´useky pamˇeti vhodn´ek uvolnˇen´ı. D´ıky tomu se pˇredch´az´ınechtˇen´ym ´unik˚um pamˇeti pˇri pˇr´ıpadn´emneuvolnˇen´ıv programu [2].

2.2 Java prostˇred´ı

Prostˇred´ıJava je dostupn´eve dvou verz´ıch, a to ve verzi JRE a JDK. JRE (Java Runtime Enviroment) je bˇehov´eprostˇred´ı Javy, kter´eje nutn´em´ıt nainstalovan´epro moˇznost spouˇstˇetna poˇc´ıtaˇciprogramy psan´ev Javˇe.Pro moˇznost vyv´ıjet a n´aslednˇespouˇstˇetsv´evlastn´ıprogramy je ovˇsemnutn´e m´ıt nainstalovan´edruh´eprostˇred´ı, tedy JDK (Java Development Kit), coˇzje prakticky bˇehov´eprostˇred´ıobohacen´eo v´yvojov´en´astroje (pˇrekladaˇc,n´astroj pro generov´an´ıdokumentace z koment´aˇr˚ujavadoc atp.) [3].

2 Z´akladn´ıpojmy V´yvojaplikac´ı

2.3 V´yvoj aplikac´ı

Jak bylo ˇreˇceno, vyv´ıjet aplikace lze na poˇc´ıtaˇc´ıch, kter´eobsahuj´ıJDK. Pak je jiˇzmoˇzn´evytv´aˇret zdrojov´yk´od, kter´ybude vykon´avat urˇcitou ˇcinnost. Ten je moˇzn´enapsat v podstatˇev libovoln´emtextov´emeditoru, kter´yneukl´ad´a ˇz´adn´einformace o form´atov´an´ı, ale pouze samotn´ytext. Pˇr´ıkladem takov´eho editoru je jednoduch´yPozn´amkov´yblok obsaˇzen´yv syst´emu Windows. Na- psat ovˇsemi kr´atk´yprogram v tomto editoru nen´ıv˚ubec jednoduch´e, protoˇze n´ampr´acinijak neusnadn´ı[4].

Moˇznost´ıje tedy doinstalovat sofistikovanˇejˇs´ıeditor, kter´yk´odalespoˇntro- chu zpˇrehledn´ı. Mezi takov´eeditory patˇr´ınapˇr´ıklad PSPad, Note++, Scite nebo . Tyto editory umoˇzˇnuj´ızv´yraznit syntaxi zvolen´eho jazyka a t´ım barevnˇeodliˇsit napˇr´ıklad datov´etypy, ˇretˇezce,koment´aˇrea dalˇs´ı´useky zdro- jov´eho k´odu, ˇc´ımˇzse k´od st´av´al´epe ˇcitelnˇejˇs´ı. Nˇekter´eeditory umoˇzˇnuj´ıi au- tomatick´eodsazov´an´ı, statick´edoplˇnov´an´ık´odu ˇcidokonce pˇreklad a spuˇstˇen´ı programu (s vyuˇzit´ım vnˇejˇs´ıch pˇrekladaˇc˚u). Pokud pˇreklad a spuˇstˇen´ınedo- voluj´ı, je nutn´eto prov´adˇetmanu´alnˇezad´av´an´ım pˇr´ıkaz˚uv pˇr´ıkazov´eˇr´adce syst´emu [5].

Pˇri psan´ı program˚uovˇsemprogram´ator potˇrebuje mnohem v´ıce podpoˇrit sv˚uj v´yvoj. Potˇrebuje ˇradu n´astroj˚u, kter´elze vˇsechny pouˇz´ıvat z jednoho m´ısta a umoˇzn´ı mu snadnˇejivytv´aˇret zdrojov´yk´od nebo rychleji odhalit pˇr´ıpadn´echyby. A pr´avˇekv˚uli tomu byla vytvoˇrena v´yvojov´aprostˇred´ı.

2.4 V´yvojov´eprostˇred´ı

V´yvojov´eprostˇred´ı(IDE) je samostatn´ysoftware umoˇzˇnuj´ıc´ıefektivn´ıv´yvoj aplikac´ı. IDE shrnuje schopnosti mnoha n´astroj˚ua funkc´ıpro v´yvoj, pˇreklad a ladˇen´ıprogramu do jednoho softwaru. Umoˇzˇnuje tedy program´atorovi pˇri- stupovat z jednoho m´ısta ke vˇsemn´astroj˚um, kter´em˚uˇzebˇehem sv´epr´ace potˇrebovat. C´ılem IDE je tedy co nejv´ıce ulehˇcit a urychlit pr´aci program´a- tora [6].

3 Z´akladn´ıpojmy V´yvojov´aplatforma

2.5 V´yvojov´aplatforma

V´yvojovou platformu lze definovat jako sadu framework˚ua sluˇzeb, kter´edo- hromady vytv´aˇr´ıinfrastrukturu, kterou lze vyuˇz´ıt jako z´aklad naˇsich aplikac´ı. Tato minim´aln´ısada modul˚uje ˇcasto oznaˇcov´ana jako Rich client platform (RCP). RCP pˇrin´aˇs´ıˇradu funkcionalit, kter´ejsou ned´ılnou souˇc´ast´ıkaˇzd´e klientsk´eaplikace, jako je grafick´erozhran´ıa pr´ace s n´ım, pr´ace s daty, ukl´a- d´an´ıstavu a mnoho dalˇs´ıho. Je tedy moˇzn´evyuˇz´ıt tˇechto jiˇzodzkouˇsen´ych funkcionalit a pˇridat pouze vlastn´ımoduly specifick´epro naˇsiaplikaci. T´ım lze uˇsetˇrit velk´emnoˇzstv´ıˇcasu a pr´ace[7, 8].

Nˇekter´epˇr´ıklady v´yvojov´ych platforem jsou zm´ınˇeny i v t´eto pr´aci, jelikoˇz slouˇz´ıjako z´aklad nˇekter´ym zde popisovan´ym v´yvojov´ym prostˇred´ım.

4 3 Vlastnosti IDE a jejich n´astroje

Vlastnost, kterou maj´ıIDE spoleˇcnou je ta, ˇze pracuj´ınad cel´ymi projekty. Neˇztedy program´ator zaˇcne vytv´aˇret zdrojov´yk´od, mus´ınˇejak´yprojekt za- loˇzit. T´ım na disku vznikne adres´aˇr, kter´ybude obsahovat veˇsker´esoubory t´ykaj´ıc´ıse tohoto projektu. Tyto soubory uˇzIDE ukl´adaj´ısama podle toho, jak maj´ıdefinovanou adres´aˇrovou strukturu. Standardnˇeukl´adaj´ızdrojov´e a bin´arn´ısoubory do vlastn´ıch podadres´aˇr˚u. To plat´ıi pro jednotkov´etesty a metadata t´ykaj´ıc´ıse projektu. Neplat´ıto ovˇsempro vˇsechna v´yvojov´apro- stˇred´ı. Napˇr´ıklad BlueJ tuto hierarchii naprosto ignoruje a ukl´ad´avˇsechny soubory do jednoho adres´aˇre [9].

Zdrojov´esoubory (tˇr´ıdy), kter´espolu nˇejak funkˇcnˇesouvis´ı, se v Javˇesdru- ˇzuj´ıdo jednotliv´ych bal´ık˚u. Hlavn´ım d˚uvodem je pˇrehlednost, protoˇze velk´e projekty mohou obsahovat klidnˇei stovky tˇr´ıd. Jak jsou tˇr´ıdy rozloˇzeny do jednotliv´ych bal´ık˚u, IDE zobrazuj´ıprostˇrednictv´ım okna Package Explorer (pr˚uzkumn´ıkbal´ık˚u). Ten je obvykle zobrazen ve v´ychoz´ım vzhledu prostˇred´ı, stejnˇejako napˇr´ıklad okno pro chybov´ahl´aˇsen´ınebo konzole [10].

Jelikoˇzjsou ovˇsemIDE velmi intuitivn´ı, dovoluj´ı vˇetˇsinou uˇzivatel˚um na- stavit si vzhled prostˇred´ıpodle toho, co potˇrebuj´ıbˇehem v´yvoje program˚u sledovat. Hlavn´ıa nejd˚uleˇzitˇejˇs´ıokno zde ovˇsembude vˇzdy, a t´ım je editor, kter´yje spolu s dalˇs´ımi hlavn´ımi n´astroji rozebr´anv n´asleduj´ıc´ıch bodech pr´ace.

3.1 Editor

Editorem se u v´yvojov´ych prostˇred´ınaz´yv´aprostor, ve kter´emlze zapiso- vat zdrojov´yk´od. Jednotliv´eeditory se od sebe mohou liˇsit pouze vzhledem a zp˚usobem zobrazov´an´ızapisovan´eho k´odu. Co maj´ıovˇsem spoleˇcn´eje po- uˇzit´ıneproporcion´aln´ıho fontu p´ısma. U takov´eho p´ısma maj´ıvˇsechny znaky stejnou ˇs´ıˇrku, takˇzeje k´od zarovnan´ya dobˇre ˇciteln´y. Pˇr´ıkladem takov´eho p´ısma je napˇr´ıklad Courier New, Consolas nebo Lucida [11].

Samozˇrejmˇeje moˇzn´esi editor nastavit podle sv´ych zvyklost´ı. A t´ım ne- mus´ıb´yt jen nastaven´ıfontu p´ısma, ale i definov´an´ıvlastn´ıch kl´avesov´ych zkratek, odsazen´ıapod. S editorem souvis´ıi n´asleduj´ıc´ı3 body t´eto pr´ace.

5 Vlastnosti IDE a jejich n´astroje Zv´yraznˇen´ısyntaxe

3.2 Zv´yraznˇen´ısyntaxe

Zv´yraznˇen´ısyntaxe standardnˇeobsahuj´ıvˇsechna v´yvojov´aprostˇred´ı. Tato jednoduch´afunkce zajiˇst’uje zmˇenu barvy, pˇr´ıpadnˇei zmˇenu ˇrezu p´ısma u da- tov´ych typ˚u, koment´aˇr˚u, ˇretˇezc˚ua dalˇs´ıch ´usek˚u, ˇc´ımˇzje k´od mnohem ˇcitel- nˇejˇs´ı(viz Obr´azek 3.1).

Obr´azek 3.1: Pˇr´ıklad zv´yraznˇen´ısyntaxe jazyka Java

3.3 Kontextov´an´apovˇeda

Kontextov´an´apovˇeda je v dneˇsn´ıdobˇestandardn´ıfunkc´ıvˇetˇsiny v´yvojov´ych prostˇred´ı. Jedn´ase o pr´aci ulehˇcuj´ıc´ın´astroj, kter´yprogramov´an´ıv´yraznˇe zefektivn´ı. Bˇehem psan´ık´odu totiˇznaˇsept´av´aprogram´atorovi, co je moˇzn´e d´ale doplnit ˇci vyuˇz´ıt vzhledem k dosud napsan´emu v´yrazu. U nalezen´ych moˇznost´ı, jako jsou napˇr´ıklad metody, m˚uˇzezobrazovat i dalˇs´ı informace, napˇr. Java dokumentaci. N´apovˇeda se zobrazuje bud’ automaticky nebo se d´avyvol´avat manu´alnˇestisknut´ım kl´avesov´ezkratky [12]. Pˇr´ıklad kontextov´e n´apovˇedy je vidˇetna Obr´azku 3.2.

Obr´azek 3.2: Kontextov´an´apovˇeda v prostˇred´ıEclipse

Poprv´ese tato funkce (ve formˇejak ji dnes zn´ame) objevila v roce 1996 v prostˇred´ıVisual Basic 5.0 firmy Microsoft. Funkce dostala pojmenov´an´ı

6 Vlastnosti IDE a jejich n´astroje Kontrola k´odu

IntelliSense. Pozdˇejiobdobu t´eto funkcionality implementovala i dalˇs´ıv´yvo- jov´aprostˇred´ı[13].

3.4 Kontrola k´odu

Kdyby se program´ator dozvˇedˇelo vˇsech chyb´ach aˇzbˇehem pˇrekladu k´odu, musel by je vˇsechny zpˇetnˇedohled´avat a opravovat, coˇzby jeho pr´aci zpoma- lilo. Proto IDE kontroluj´ık´od uˇzbˇehem jeho z´apisu a informuj´ıprogram´atora o nalezen´ych chyb´ach. R´adek,ˇ ve kter´emse vyskytla chyba, barevnˇeoznaˇc´ı, nebo u nˇejzobraz´ıurˇcitou chybovou ˇcivarovnou znaˇcku. Chybami mohou b´ytnapˇr´ıklad [14]:

• chybˇej´ıc´ız´avorky,

• zamˇenˇen´ıvelk´ych/mal´ych p´ısmen, pˇreklepy,

• chybˇej´ıc´ın´avratov´ahodnota,

• chybˇej´ıc´ıimporty,

• ˇspatn´evstupn´ıparametry metody,

• porovn´av´an´ır˚uzn´ych datov´ych typ˚uapod.

Kromˇechyb se zobrazuj´ı i r˚uzn´avarov´an´ı. Ty sice neznemoˇzˇnuj´ı pˇreklad k´odu, ale upozorˇnuj´ına to, ˇzeby bylo vhodn´ek´od upravit (napˇr. odstranit nepouˇz´ıvan´epromˇenn´e).

3.5 Pˇreklad a spouˇstˇen´ıprogramu

Samozˇrejmost´ıu v´yvojov´ych prostˇred´ıje moˇznost kompilovat a spouˇstˇetpro- gram jedn´ım stisknut´ım tlaˇc´ıtka. D´ıky tomu je program´ator osvobozen od opakovan´eho procesu zad´av´an´ıkompilaˇcn´ıch pˇr´ıkaz˚uv pˇr´ıkazov´eˇr´adce, coˇz mu velmi zpˇr´ıjemn´ıpr´aci. V´ystupy i pˇr´ıpadn´evstupy programu jsou pˇresmˇe- rov´any do vlastn´ıho termin´alu prostˇred´ı.

7 Vlastnosti IDE a jejich n´astroje Generov´an´ıdokumentace

3.6 Generov´an´ıdokumentace

Automatick´egenerov´an´ıdokumentace prov´ad´ın´astroj Javadoc, kter´yje sou- ˇc´ast´ıprostˇred´ıJDK. Tento n´astroj um´ıproch´azet zdrojov´yk´oda vyhled´avat speci´aln´ıv´ıceˇr´adkov´ekoment´aˇre uvozen´eznaˇckami /** a */ (pˇr´ıklad uve- den na Obr´azku 3.3). Tyto koment´aˇremohou b´yt v IDE barevnˇeodliˇseny od bˇeˇzn´ych koment´aˇr˚ua vztahuj´ıse k tˇr´ıd´am, metod´am, konstruktor˚um ˇci promˇenn´ym tˇr´ıdy a instance. Mˇely by obsahovat pˇreddefinovan´eznaˇcky, d´ıky kter´ym vznikne stejn´adokumentace, jako je k dispozici pro tˇr´ıdy API (Appli- cation Programming Interface — aplikaˇcn´ıprogramov´erozhran´ı). V pˇr´ıpadˇe, ˇzeprogram´ator vytv´aˇr´ı tyto koment´aˇre uˇzbˇehem v´yvoje programu, staˇc´ı mu po jeho dokonˇcen´ıvygenerovat dokumentaci ve form´atu HTML t´ımto n´astrojem [15].

/** * Description of countingMethod(int a, int b, char c) * @param a Description of a * @param b Description of b * @param c Description of c * @return d Description of d */

Obr´azek 3.3: Pˇr´ıklad dokumentaˇcn´ıho koment´aˇre v jazyce Java [15]

3.7 Debugger

Debugger je n´astroj urˇcen´ypro ladˇen´ıprogramu. Tento n´astroj urychluje cel- kov´yv´yvoj program˚u, protoˇze napom´ah´aprogram´atorovi rychle naj´ıt chyby v jeho vytvoˇren´em k´odu. V editoru lze totiˇzu jak´ehokoliv ˇr´adku k´odu na- stavit tzv. breakpoint (bod pˇreruˇsen´ı) a spustit proces ladˇen´ı. Po spuˇstˇen´ı program´atorovi umoˇzn´ınajednou sledovat zdrojov´yk´od, v´ypisy programu v termin´alu a rovnˇeˇzhodnoty definovan´ych promˇenn´ych (viz Obr´azek 3.4). Program pracuje, jako by byl standardnˇespuˇstˇen, ovˇsemv nastaven´ych bo- dech pˇreruˇsen´ı se pozastav´ı. T´ım umoˇzn´ı program´atorovi sledovat, jak´ych hodnot nab´yvaj´ıpromˇenn´ev dan´yokamˇzik, s jak´ymi parametry je vyvol´ana sledovan´ametoda, jak´yje obsah pamˇeti a dalˇs´ı. D´ıky tomu dok´aˇzesn´aze

8 Vlastnosti IDE a jejich n´astroje Testovac´ın´astroje zjistit pˇr´ıˇcinu chyby a k´odopravit. Program je moˇzn´eladit i po kroc´ıch, tedy pˇr´ıkaz po pˇr´ıkazu sledovat, co se v programu dˇeje [16].

Obr´azek 3.4: Pˇr´ıklad ladˇen´ıprogramu v Eclipse

3.8 Testovac´ın´astroje

K vytvoˇren´ı co nejkvalitnˇejˇs´ıho programu je nutn´eho opakovanˇetestovat a modifikovat podle v´ysledk˚utest˚u. K testov´an´ıse pouˇz´ıvaj´ıtakzvan´e Unit (jednotkov´e)testy. Tyto testy, kter´esi mus´ıprogram´ator s´am vytvoˇrit, slouˇz´ı k otestov´an´ıjednotliv´ych tˇr´ıd a metod. Standardem pro Unit testov´an´ıv Javˇe jsou n´astroje JUnit a TestNG, kter´ejsou integrov´any s nejrozˇs´ıˇrenˇejˇs´ımi v´y- vojov´ymi prostˇred´ımi. Pro kvalitn´ıotestov´an´ıje ovˇsem nutn´eprov´estkromˇe Unit test˚ui statickou anal´yzu k´odu a v´ykonov´etesty [17, 18].

Pro statickou anal´yzu k´odu lze pouˇz´ıt n´astroj FindBugs nebo PMD. Oba tyto n´astroje jsou integrovan´es mnoha v´yvojov´ymi prostˇred´ımi. Pˇri sv´eana- l´yze se zamˇeˇruj´ıpˇredevˇs´ım na duplicitn´ıa nepouˇz´ıvan´yk´od, odhal´ırovnˇeˇz i pr´azdn´eklauzule try/catch/finally, chybˇej´ıc´ıdokumentaci apod. [18].

V´ykonov´etesty vyhled´avaj´ıtzv. ´uzk´am´ısta“ programu a umoˇzˇnuj´ıje od- ” stranit uˇzbˇehem jeho v´yvoje. Tyto testy pˇredch´az´ıpˇr´ıpadn´emu zpomalov´an´ı nˇekter´ych operac´ıpˇri rostouc´ız´atˇeˇziprogramu. Pro v´ykonov´etesty lze vyuˇz´ıt napˇr´ıklad n´astroj JMeter [18].

9 Vlastnosti IDE a jejich n´astroje Buildovac´ın´astroje

3.9 Buildovac´ın´astroje

Buildovac´ın´astroje jsou zodpovˇedn´eza sestaven´ızdrojov´eho k´odu v jazyce Java do v´ysledn´eaplikace, podobnˇejako n´astroj Make v jazyce C. Pˇr´ıkladem m˚uˇzeb´ytn´astroj Ant nebo novˇejˇs´ıMaven. Oba jsou jiˇzvˇetˇsinou souˇc´ast´ı nejrozˇs´ıˇrenˇejˇs´ıch v´yvojov´ych prostˇred´ı[18].

3.10 Verzovac´ın´astroje

Verzovac´ın´astroje umoˇzˇnuj´ıvytv´aˇret jednotliv´everze (z´alohy) zdrojov´ych k´od˚ua d˚uleˇzit´ych soubor˚u. Jasnˇedefinuj´ı´uloˇziˇstˇe, do kter´eho se budou sou- bory ukl´adat a umoˇzn´ıs n´ım pracovat pˇr´ımo v prostˇred´ı. V pˇr´ıpadˇeprobl´em˚u s vyv´ıjen´ym programem se tedy lze snadno vr´atit ke starˇs´ı, funguj´ıc´ıverzi. Pˇri pr´aci na t´ymov´ych projektech jsou verzovac´ısyst´emy ide´aln´ıke sd´ılen´ı zdrojov´ych k´od˚us ostatn´ımi spolupracovn´ıky [19].

Verzovac´ısyst´emy se rozdˇeluj´ıdo dvou kategori´ı, a to na centralizovan´ea dis- tribuovan´e(decentralizovan´e). U centralizovan´ych syst´em˚use jedn´ao klasick´e spojen´ıklient-server, kdy pouze na serveru je uloˇzena kompletn´ıhistorie verz´ı. Centralizovan´everzovac´ısyst´emy jsou napˇr´ıklad CVS (Control Version Sys- tem) ˇciSVN (Subversion). Distribuovan´esyst´emy se liˇs´ı t´ım, ˇzevˇsechny uzly“ jsou rovnocenn´e.Vˇsechny obsahuj´ıkompletn´ıhistorii zmˇen, takˇzese ” lze snadno vr´atit k libovoln´everzi bez nutnosti dotazov´an´ıse serveru. Tento zp˚usob pouˇz´ıvaj´ınapˇr´ıklad syst´emy Git ˇciMercurial [19].

10 4 Reˇserˇse existuj´ıc´ıch IDE

Pˇri pr˚uzkumu trhu lze nal´ezt velk´emnoˇzstv´ıv´yvojov´ych prostˇred´ıpro ja- zyk Java. Pr˚uzkum ovˇsem trochu komplikuje rozˇs´ıˇrenost dan´ych prostˇred´ı. Hled´an´ıtotiˇzˇcasto smˇeˇruje ke st´ale stejn´ym v´ysledk˚um, a to k nejpouˇz´ıvanˇej- ˇs´ım prostˇred´ım jako je Netbeans, Eclipse, IntelliJ apod. Podle oˇcek´av´an´ıse potvrdilo, ˇzeprozat´ım neexistuje ˇz´adn´akniˇzn´ıliteratura zab´yvaj´ıc´ıse t´ımto t´ematem, respektive jsem ˇz´adnou takovou nenalezl. Proto jsem obr´atil pozor- nost k webov´ym zdroj˚um, kter´esice neprov´adˇej´ıˇz´adn´asrovn´an´ı, ale alespoˇn poskytuj´ıseznam nˇekolika v´yvojov´ych prostˇred´ı[20, 21].

4.1 NetBeans

Netbeans je bezplatn´ev´yvojov´eprostˇred´ınyn´ıjiˇzvlastnˇen´efirmou Oracle Corporation. Samotn´eIDE je naprogramov´ano v jazyce Java, pro kter´yje i prim´arnˇeurˇceno. Umoˇzˇnuje ovˇsemi programov´an´ıv jin´ych jazyc´ıch jako je PHP, C/C++, HTML5 a dalˇs´ı. I d´ıky tomu jde o jedno z nejobl´ıbenˇej- ˇs´ıch a nejrozˇs´ıˇrenˇejˇs´ıch v´yvojov´ych prostˇred´ı, kter´em˚uˇzepracovat na r˚uz- n´ych operaˇcn´ıch syst´emech. Charakteristick´yje snadn´ym pouˇzit´ım a tendenc´ı k jednoduchosti. To dokazuje i t´ım, ˇzeje ho moˇzn´enainstalovat pouze s ba- l´ıky technologi´ı, kter´ebude program´ator skuteˇcnˇevyuˇz´ıvat. Netbeans rovnˇeˇz disponuje pomˇernˇevelkou komunitou uˇzivatel˚ua v´yvoj´aˇr˚u, kter´apˇrisp´ıv´a k v´yvoji modul˚urozˇsiˇruj´ıc´ıch toto IDE [22, 23].

4.2 Eclipse

Eclipse je software vyvinut´yfirmou IBM a stejnˇejako Netbeans je neplacen´y. Jeho hlavn´ı v´yhodou je nepˇrebern´emnoˇzstv´ı plugin˚u, pomoc´ı kter´ych lze rozˇs´ıˇrit. Radaˇ jich je vyv´ıjena pouze pro toto prostˇred´ıa ˇz´adn´ejin´e,z ˇcehoˇz Eclipse tˇeˇz´ı. Prim´arnˇeje urˇcenpro v´yvoj v jazyce Java, ale lze rozˇs´ıˇrit i o dalˇs´ı jazyky. V souˇcasnosti se jedn´ao pravdˇepodobnˇenejpouˇz´ıvanˇejˇs´ıIDE, coˇzje d´ano hlavnˇed´ıky zm´ınˇen´emu mnoˇzstv´ıplugin˚u, o kter´elze rozˇs´ıˇrit [22].

11 Reˇserˇseexistuj´ıc´ıchIDE IntelliJ IDEA

4.3 IntelliJ IDEA

V´yvojov´eprostˇred´ıIntelliJ IDEA od firmy JetBrains je dostupn´eve dvou verz´ıch. Konkr´etnˇese jedn´ao placenou verzi Ultimate Edition a bezplat- nou verzi Community Edition. Bezplatn´averze nab´ız´ız´akladn´ıprogramovac´ı moˇznosti pro jazyk Java, Scala a Groovy. Placen´averze oproti tomu obsa- huje ˇsirˇs´ınab´ıdku n´astroj˚ua podporovan´ych technologi´ı. Pˇr´ıkladem mohou b´ytn´astroje pro pr´acis datab´azemi, podpora v´yvoje aplikac´ıv Java EE ˇci podpora jazyk˚uSQL, Javascript, PHP a dalˇs´ıch. IntelliJ IDEA je stejnˇejako Netbeans ˇciEclipse jedno z nepouˇz´ıvanˇejˇs´ıch prostˇred´ısouˇcasnosti [24].

K pouˇz´ıv´an´ı verze Ultimate Edition je zapotˇreb´ı vlastnit jednu z licenc´ı. Jejich seznam a popis je uveden v Tabulce 4.1.

Tabulka 4.1: Licence pro verzi Ultimate Edition [25]

Licence Popis pouˇzit´ı Cena (na rok)1 Komerˇcn´ı Urˇcena pro komerˇcn´ı pouˇzit´ı ve 12 900 Kˇc/osoba firm´ach a organizac´ıch. Individu´aln´ı Urˇcena pro jednotlivce, kter´ysi li- 3 990 Kˇc/osoba cenci hrad´ız vlastn´ıch (nefirem- n´ıch) zdroj˚u. Umoˇzˇnuje komerˇcn´ı pouˇzit´ı. Studentsk´a Urˇcena pro nekomerˇcn´ı pouˇzit´ı, Zdarma (po schv´alen´ı) vzdˇel´av´an´ıa akademick´yv´yzkum student˚u a uˇcitel˚u. Licence se v´aˇzena jednotlivce. Akademick´a Urˇcena pro akreditovan´ev´yukov´e Zdarma (po schv´alen´ı) organizace (v´yuka ve tˇr´ıd´ach). Staˇc´ıjedna licence pro neomezen´y poˇcet uˇzivatel˚u. Open-source Urˇcena pro v´yvoj open-source Zdarma (po schv´alen´ı) projekt˚u.

Spoleˇcnost JetBrains v minulosti uvolnila platformu IntelliJ, na kter´eje zalo- ˇzena ˇrada v´yvojov´ych prostˇred´ıt´eto spoleˇcnosti (IntelliJ IDEA, PHPStorm, AppCode a dalˇs´ı). Tuto open-source platformu pokr´yv´alicence Apache 2.0,

1Ceny plat´ı pro prvn´ı rok pouˇz´ıv´an´ı produktu, v dalˇs´ıch letech jsou jiˇzceny niˇzˇs´ı. Licence, kter´ejsou k dispozici zdarma, mus´ıb´yt kaˇzdoroˇcnˇeobnovov´any a schv´aleny.

12 Reˇserˇseexistuj´ıc´ıchIDE JDeveloper coˇzznamen´a, ˇze na jej´ıch z´akladech lze bezplatnˇestavˇetopen-source i ko- merˇcn´ıprodukty. Vyuˇz´ıt ji ovˇsemlze pouze pro aplikace zaloˇzen´ena editoru k´odu (v´yvojov´aprostˇred´ı) [26].

4.4 JDeveloper

JDeveloper je bezplatn´ev´yvojov´eprostˇred´ıdistribuovan´efirmou Oracle Cor- poration. Oproti jin´ym v´yvojov´ym prostˇred´ım se ovˇsem nesnaˇz´ıb´yt univer- z´aln´ıa nab´ızet moˇznosti rozˇs´ıˇren´ıprostˇred´ı. O tom svˇedˇc´ımal´emnoˇzstv´ıdo- stupn´ych plugin˚u, ze kter´ych vˇetˇsinu napsal Oracle s´am. Prostˇred´ıse v´aˇzena dalˇs´ısoftware od Oraclu, pˇredevˇs´ım na datab´aze, coˇzje jeho hlavn´ıprodukt. JDeveloper nelze br´atjako klasick´eIDE. Sp´ıˇseje potˇreba na nˇejnahl´ıˇzet jako na vnitˇrn´ıv´yvojov´yprostˇredek Oraclu, kter´yje dostupn´ykaˇzd´emu, komu se m˚uˇzehodit [22].

4.5 BlueJ

BlueJ je bezplatn´ev´yvojov´eprostˇred´ı, kter´eumoˇzˇnuje snadno a rychle vyv´ı- jet programy v jazyce Java. Je to jednoduch´eprostˇred´ı, kter´ese v´yraznˇeliˇs´ı od ostatn´ıch IDE na trhu. Vyvinut byl pˇredevˇs´ım pro v´yuku a v´yvoj mal´ych projekt˚u. BlueJ m´az´amˇernˇemenˇs´ıa jednoduˇsˇs´ırozhran´ı, takˇzezaˇc´ateˇcn´ık nen´ızahlcen mnoˇzstv´ım n´astroj˚u, kter´eby prozat´ım stejnˇenevyuˇzil. Jeho hlavn´ıv´yhodou je, ˇzeje interaktivn´ı. Umoˇzˇnuje vizu´alnˇevytv´aˇret instance objekt˚u, volat metody a kontrolovat jejich hodnoty, d´ıky ˇcemuˇzlze l´epe po- chopit objektov´eorientovan´eprogramov´an´ı(OOP) [27].

4.6

Android Studio je pomˇernˇenov´e,volnˇedostupn´eIDE od Googlu. Vytvoˇren´e je na z´akladech IntelliJ IDEA Community Edition, takˇzeobsahuje ˇradu jeho n´astroj˚u(navigace v k´odu, anal´yza k´odu, naˇsept´av´an´ı, refaktoring a dalˇs´ı). Jak napov´ıd´an´azev, je urˇcen´ek v´yvoji aplikac´ıpro mobiln´ısyst´emAndroid. Dostupn´eje ve form´ach bal´ık˚upro r˚uzn´eoperaˇcn´ısyst´emy. Na stejn´emk´odu

13 Reˇserˇseexistuj´ıc´ıchIDE JCreator jako Android Studio je postaven i Android plugin pro IntelliJ IDEA, takˇze veˇsker´efunkce a zmˇeny jsou dostupn´ei pro uˇzivatele tohoto prostˇred´ı[28, 29].

4.7 JCreator

Prostˇred´ıJCreator bylo vytvoˇreno spoleˇcnost´ıXinox Software a je kompletnˇe napsan´ev jazyce C++. Podle tvrzen´ıv´yrobce je pr´avˇekv˚uli tomu rychlejˇs´ı a produktivnˇejˇs´ıneˇzjeho konkurence napsan´av jazyce Java. Je to jedno- duch´e,ale z´aroveˇnv´ykonn´eprostˇred´ıvhodn´epro zaˇc´ateˇcn´ıky i profesion´aly. Dostupn´eje pouze pro operaˇcn´ısyst´emWindows, a to ve dvou verz´ıch. Bo- huˇzelobˇetyto verze jsou placen´e(jejich ceny jsou uvedeny v Tabulce 4.2) [30].

Tabulka 4.2: Ceny produkt˚uJCreator [30]

Produkt Poˇcetosob Cena2 JCreator LE 1 35 $ JCreator Pro 1 79 $ 25 725 $ (29 $/osoba) JCreator Pro (akademick´alicence) Neomezen´ypoˇcet 2500 $

4.8 JBuilder

JBuilder je v´yvojov´eprostˇred´ıp˚uvodnˇevyvinut´espoleˇcnost´ıBorland Corpo- ration, pozdˇeji vˇsak pˇrevzat´espoleˇcnost´ıEmbarcadero Technologies. Jedn´a se o placen´eprostˇred´ı, kter´eje dostupn´eve dvou verz´ıch, a to konkr´etnˇeve verzi R2 Professional a R2 Enterprise. Obˇeverze podporuj´ıv´yvoj Java EE aplikac´ı, umoˇzˇnuj´ımodelov´an´ıUML diagram˚ua obsahuj´ın´astroje pro sledo- v´an´ızat´ıˇzen´ıpamˇeti a CPU. Verze Enterprise obsahuje nav´ıc ˇradu rozˇs´ıˇren´ı a umoˇzˇnuje nasazen´ıa ´udrˇzbu uvnitˇrpodniku. Obˇeverze jsou z roku 2008 a dalˇs´ıv´yvoj tohoto prostˇred´ıse nepl´anuje. Ceny3 obou verz´ıjsou uvedeny v Tabulce 4.3 [31].

2Cena se vztahuje vˇzdy ke konkr´etn´ıverzi produktu. V pˇr´ıpadˇe,ˇze chce uˇzivatel pˇrej´ıt na vyˇsˇs´ıverzi produktu, je mu k dispozici upgrade za niˇzˇs´ıcenu. 3Informace o cen´ach z´ısk´ana z mailov´ekomunikace se spoleˇcnost´ızastupuj´ıc´ıEmbar- cadero Technologies v Cesk´eRepublice.ˇ

14 Reˇserˇseexistuj´ıc´ıchIDE SnapCode

Tabulka 4.3: Verze prostˇred´ıJBuilder

Verze Cena JBuilder 2008 R2 Professional 13 800 Kˇc(bez DPH) JBuilder 2008 R2 Enterprise 41 400 Kˇc(bez DPH)

4.9 SnapCode

Jedn´ase o jednoduch´e,volnˇedostupn´eIDE vytvoˇren´ehlavnˇepro v´yuku. Umoˇzˇnuje snadno a rychle vytv´aˇret Java aplikace i ´upln´ym zaˇc´ateˇcn´ık˚um. Obsahuje totiˇzgrafick´yeditor a moˇznost pracovat s komponentami pouh´ym klik´an´ım myˇsibez nutnosti ps´at zdrojov´yk´od. Pro pokroˇcilejˇs´ıuˇzivatele na- b´ız´ıi klasick´ytextov´yeditor obsahuj´ıc´ıstandardn´ın´astroje jako ostatn´ıIDE [32].

4.10 Navicoder

Navicoder je bezplatn´eIDE urˇcen´epouze pro nekomerˇcn´ıpouˇzit´ı. Toto pro- stˇred´ı si zakl´ad´ana rychl´edobˇeodezvy, tud´ıˇzmoˇznosti rychleji vytv´aˇret a ladit k´odprogramu. Naprogramovan´eje v jazyku C++, d´ıky ˇcemuˇzje rychlejˇs´ıneˇzjin´aIDE zaloˇzen´ana jazyku Java. Dostupn´eje pouze pro ope- raˇcn´ısyst´emy Windows [33].

4.11 jGRASP jGRASP je bezplatn´ev´yvojov´eprostˇred´ı implementov´ano v jazyce Java, kter´elze spustit na vˇsech operaˇcn´ıch syst´emech s JVM. Vytvoˇren´eje spe- ci´alnˇeza ´uˇcelem automatick´eho generov´an´ısoftwarov´ych vizualizac´ı, kter´e umoˇzˇnuj´ızaˇc´ateˇcn´ık˚um l´epe pochopit z´aklady programov´an´ı. D´ıky tomu jej lze vyuˇz´ıt jako v´yukov´yn´astroj na stˇredn´ıch ˇci vysok´ych ˇskol´ach. jGRASP vytv´aˇr´ıdiagramy tˇr´ıd ˇcidiagram sloˇzitosti k´odu a umoˇzˇnuje intuitivn´ızobra- zov´an´ıhodnot v´ıcerozmˇern´ych pol´ı, rozs´ahl´ych bin´arn´ıch strom˚u, front apod. [34].

15 Reˇserˇseexistuj´ıc´ıchIDE DrJava

4.12 DrJava

DrJava je jednoduch´ev´yvojov´eprostˇred´ıurˇcen´epˇredevˇs´ım pro studenty, z´a- roveˇnvˇsak obsahuje v´ykonn´efunkce pro pokroˇcilejˇs´ıuˇzivatele. Jedn´ase o bez- platn´eprostˇred´ıaktivnˇevyv´ıjen´eskupinou JavaPLT group na Rice Univer- sity. Dostupn´eje ke staˇzen´ıjako spustiteln´aaplikace pro operaˇcn´ısyst´emy Windows a Mac a jako .jar soubor pro jin´eoperaˇcn´ısyst´emy [35].

4.13 Greenfoot

Greenfoot je dalˇs´ım volnˇedostupn´ym v´yvojov´ym prostˇred´ım spadaj´ıc´ıdo ka- tegorie v´yukov´ych n´astroj˚upro jazyk Java. Zaˇc´ateˇcn´ık˚um umoˇzˇnuje snadn´e vytv´aˇren´ıaplikac´ıs 2D grafikou, jako jsou vizu´aln´ısimulace ˇci interaktivn´ı hry. Zaloˇzen je na koncepci n´astroje BlueJ, takˇzes n´ım m´amnoho spoleˇcn´eho. Na rozd´ıl od nˇejovˇsemobsahuje vlastn´ıtˇr´ıdy World a Actor, jeˇzjsou rodiˇci veˇsker´ych tˇr´ıd vytvoˇren´ych program´atorem. Tˇr´ıda World (svˇet) slouˇz´ıpro reprezentaci grafick´eho pl´atna, ve kter´emse dˇejeveˇsker´avizualizace. Tˇr´ıda Actor (herec) slouˇz´ıpro reprezentaci objekt˚u, kter´ese ve vytv´aˇren´eaplikaci mohou vyskytnout. Greenfoot umoˇzˇnuje interaktivn´ıpr´aci s vytvoˇren´ymi ob- jekty, d´ıky ˇcemuˇzmohou zaˇc´ateˇcn´ıci l´epe pochopit objektov´eprogramov´an´ı. Nainstalovat jej lze na vˇsech operaˇcn´ıch syst´emech. Vyuˇz´ıvat lze i verzi por- table (obsahuje vlastn´ıJDK) pro spouˇstˇen´ıaplikace z pˇrenosn´ych m´edi´ıUSB [36].

4.14 SkyIDE

SkyIDE je dalˇs´ıv´yvojov´eprostˇred´ıumoˇzˇnuj´ıc´ıv´yvoj projekt˚uv jazyce Java. Rovnˇeˇzpodporuje i dalˇs´ıjazyky jako C++, PHP, JavaScript a dalˇs´ı. Jedn´ase o v´yvojov´eprostˇred´ı, kter´enen´ızapotˇreb´ıinstalovat, jelikoˇzje ke staˇzen´ıjiˇz jako spustiteln´aaplikace. D´ıky tomu lze jednoduˇsepˇren´aˇset na pˇrenosn´ych disc´ıch a spouˇstˇetna jak´emkoliv PC s operaˇcn´ım syst´emem Windows. Sky- IDE nen´ınijak n´aroˇcn´ena pamˇet’ a v´ykon poˇc´ıtaˇce,takˇze lze bez probl´em˚u spouˇstˇeti na starˇs´ıch PC sestav´ach. Posledn´ınalezen´averze je ovˇsem z roku 2009, lze tedy pˇredpokl´adat, ˇzev´yvoj tohoto prostˇred´ıbyl ukonˇcen [37].

16 Reˇserˇseexistuj´ıc´ıchIDE Asterix IDE

4.15 Asterix IDE

Asterix IDE je jednoduch´ev´yvojov´eprostˇred´ıpodporuj´ıc´ıjazyky Java, HTML a C/C++. Nainstalov´ano m˚uˇze b´yt na r˚uzn´ych operaˇcn´ıch syst´emech. Jedn´a se o pomˇernˇenov´eIDE, jelikoˇzprvn´ıverze byla vyd´ana v roce 2013. Ot´az- kou ovˇsemje, zda v´yvoj tohoto prostˇred´ıaktivnˇepokraˇcuje, nebot’ posledn´ı nalezen´averze je z kvˇetna roku 2014 [38].

4.16 tIDE

V´yvojov´eprostˇred´ıtIDE je jednoduch´y,ale efektivn´ın´astroj umoˇzˇnuj´ıc´ıpro- gramov´an´ıv jazyce Java. Jako u nˇekter´ych v´yˇsezm´ınˇen´ych IDE nen´ık jeho pouˇz´ıv´an´ınutn´ainstalace. D´ıky tomu jej lze snadno pouˇz´ıvat na r˚uzn´ych po- ˇc´ıtaˇc´ıch s r˚uzn´ymi operaˇcn´ımi syst´emy. Posledn´ıverze byla vyd´ana v prosinci roku 2015, coˇzznaˇc´ı, ˇzev´yvoj tohoto prostˇred´ıaktivnˇepokraˇcuje [39].

4.17 Zeus IDE

Zeus je v´yvojov´eprostˇred´ıpodporuj´ıc´ıˇradu programovac´ıch jazyk˚u, urˇcen´e pro syst´emy Windows. Jedn´ase o placen´yn´astroj nab´ızej´ıc´ı45 denn´ılh˚utu na vyzkouˇsen´ızdarma. Z´akladn´ıcena tohoto produktu je 89,95 $. Po zapla- cen´ıobdrˇz´ıuˇzivatel licenˇcn´ık´od, kter´ynikdy nevyprˇs´ı. V pˇr´ıpadˇe,ˇzevyjde nov´averze, mohou b´yt nˇekter´efunkce registrovan´ym uˇzivatel˚um dostupn´e jako bezplatn´yupgrade. Jinak maj´ın´arok na slevu 45 % na zakoupen´ıpl- nohodnotn´everze. Ke staˇzen´ıje dostupn´ai bezplatn´averze Zeus Lite, kter´a nˇekterou funkcionalitu postr´ad´a. Ta je ovˇsemoznaˇcov´ana sp´ıˇse jako editor neˇzv´yvojov´eprostˇred´ı[40].

4.18 Jenuity

Jenuity je jednoduch´e, bezplatn´ev´yvojov´eprostˇred´ıurˇcen´epro stˇrednˇepo- kroˇcil´eprogram´atory. Nen´ınijak n´aroˇcn´ena poˇc´ıtaˇcov´ezdroje, takˇzelze bez probl´em˚uvyuˇz´ıt i na starˇs´ıch poˇc´ıtaˇc´ıch s r˚uzn´ymi operaˇcn´ımi syst´emy. Po- prv´ebylo Jeunity uvedeno na trh v roce 2008. Posledn´ınalezen´averze je

17 Reˇserˇseexistuj´ıc´ıchIDE JotAzul z roku 2011, takˇze v´yvoj tohoto prostˇred´ı pravdˇepodobnˇejiˇznepokraˇcuje [41].

4.19 JotAzul

JotAzul je jednoduch´ev´yvojov´eprostˇred´ıurˇcen´epro operaˇcn´ısyst´emWin- dows. Inspirov´ano je prostˇred´ım BlueJ, z ˇcehoˇzplyne, ˇzeje urˇcen´epro stu- denty a zaˇc´ınaj´ıc´ıprogram´atory. Ke staˇzen´ıje zdarma, ovˇsemposledn´ınale- zen´averze je z roku 2005, takˇze s velkou pravdˇepodobnost´ınedok´aˇzekonku- rovat jin´ym v´yukov´ym n´astroj˚um, kter´ese neust´ale vyv´ıj´ı[42].

4.20 Dalˇs´ıaplikace

Tato pr´ace se zamˇeˇruje v´yhradnˇena v´yvojov´aprostˇred´ıvytvoˇren´apro ja- zyk Java. Proto ve v´yˇseuveden´ych prostˇred´ıch nen´ıobsaˇzen´eVisual Studio, kter´ev z´akladn´ıverzi tento jazyk nepodporuje. Je vˇsak moˇzn´edoinstalovat plugin, kter´yz´akladn´ıpodporu Javy zajist´ı. D´ale existuj´ıaplikace jako jEdit, JSource, Sublime a dalˇs´ı, kter´ejsou oznaˇcov´any sp´ıˇsejako textov´eeditory, ale vzhledem k tomu, jakou ˇsk´alu funkc´ıv dneˇsn´ıdobˇenab´ızej´ı, se pomysln´e hranici mezi editorem a IDE v´yraznˇepˇribliˇzuj´ı.

18 5 Popis porovn´avan´ych prostˇred´ı

Z kapitoly 4 je zˇrejm´e,ˇzeje moˇzn´evyb´ırat z cel´eˇrady v´yvojov´ych prostˇred´ı. Ukolem´ t´eto pr´ace je alespoˇndvˇez uveden´ych prostˇred´ıprozkoumat a na- vz´ajem porovnat. Nem´aovˇsem smysl navz´ajem porovn´avat prostˇred´ıurˇcen´a pro r˚uzn´e´uˇcely. Rozhodl jsem se proto podrobit pr˚uzkumu celkem ˇctyˇri IDE, a to dvˇeurˇcen´epro v´yvoj a dvˇeurˇcen´epro v´yuku zaˇc´ateˇcn´ık˚u.

Z prvn´ıkategorie jsem se rozhodl pro IDE Eclipse a Netbeans, a to z prost´ych d˚uvod˚u. Obˇejsou neust´ale aktivnˇevyv´ıjena a zdokonalov´ana, tud´ıˇzm´atoto srovn´an´ıpro ˇcten´aˇre vˇetˇs´ıinformaˇcn´ıhodnotu, neˇzsrovn´an´ıstarˇs´ıch aplikac´ı. Obˇejsou rovnˇeˇzdostupn´ezdarma vˇsem, kteˇr´ımaj´ız´ajem je pro svou pr´aci pouˇz´ıt. Dalˇs´ım d˚uvodem je jejich rozˇsiˇritelnost, jelikoˇzpro obˇeprostˇred´ıexis- tuje velk´emnoˇzstv´ıplugin˚u. I kdyˇznebyl nalezen ˇz´adn´yofici´aln´ıˇzebˇr´ıˇcek, kter´yby informoval o m´ıˇrerozˇs´ıˇrenosti jednotliv´ych IDE, patˇr´ıtato dvˇepro- stˇred´ımezi nejpouˇz´ıvanˇejˇs´ıa nejzn´amˇejˇs´ı.

Z kategorie v´yukov´ych prostˇred´ı byla prvn´ı volba jasn´a— BlueJ. Zde si troufnu ˇr´ıci, ˇzejde o nejzn´amˇejˇs´ıv´yukov´eprostˇred´ına trhu. Zvolit druh´e prostˇred´ıbylo o nˇeco sloˇzitˇejˇs´ı. Pˇrestoˇzezde bylo uvedeno nˇekolik prostˇred´ı, kter´ese oznaˇcuj´ıza v´yukov´e,tak nˇekter´ez nich (napˇr. jGRASP) nep˚usob´ı jako jednoduch´eIDE pro zaˇc´ateˇcn´ıky. Proto bylo zvoleno prostˇred´ıGreen- foot, kter´eje sice vyv´ıjeno stejnou skupinou jako samotn´yBlueJ, ale pˇristu- puje k v´yuce odliˇsn´ym zp˚usobem.

5.1 Eclipse

Projekt Eclipse p˚uvodnˇevznikl v listopadu roku 2001 vytvoˇren´ım konsorcia spoleˇcnost´ıIBM, Borland, QNX Software Systems a dalˇs´ıch spoleˇcnost´ıdo- d´avaj´ıc´ıch software. Koncem roku 2003 tento projekt podporovalo v´ıce neˇz 80 spoleˇcnost´ı. Poˇc´atkem ´unora roku 2004 doˇslo k reorganizaci na neziskovou organizaci Eclipse Foundation, kter´aje v souˇcasnosti podporov´ana jednot- livci a organizacemi napˇr´ıˇcsoftwarov´ym pr˚umyslem [43].

P˚uvodn´ıkonsorcium vzniklo pot´e, co spoleˇcnost IBM uvolnila Eclipse plat- formu jako open-source. Ta je vyd´ana pod licenc´ı Eclipse Public Licence, coˇzumoˇzˇnuje komukoliv postavit na t´eto platformˇevlastn´ıaplikaci. Mimo

19 Popis porovn´avan´ychprostˇred´ı Eclipse stejnojmenn´eho IDE je na Eclipse platformˇepostavena i ˇrada komerˇcn´ıch a open-source aplikac´ı[44, 45].

5.1.1 Instalace

Nejjednoduˇsˇs´ızp˚usob instalace ˇci updatu je vyuˇz´ıt pˇredpˇripraven´y Installer, kter´yprovede celou instalaci za uˇzivatele. Ten mus´ıpouze zvolit syst´em, na kter´yse bude Eclipse instalovat, a bal´ıˇcek, kter´ysi pˇreje pouˇz´ıvat. Bal´ıˇcky obsahuj´ır˚uzn´en´astroje a technologie podle zamˇeˇren´ıv´yvoje (Java, Java EE, C/C++, PHP a dalˇs´ı).

Posledn´ıverz´ı, kterou lze nainstalovat, je Eclipse Mars 2 (4.5.2 — vyd´ana 12. 2. 2016), kter´aje v t´eto pr´acipopisov´ana.

5.1.2 Spuˇstˇen´ıa konfigurace

Pˇri spuˇstˇen´ıaplikace je uˇzivatel dot´az´an, kde chce vytvoˇrit workspace (pra- covn´ıprostor). Jedn´ase o m´ısto na disku (sloˇzku), kam bude Eclipse ukl´adat vˇsechny projekty, nastaven´ı apod. Pˇri dalˇs´ım spuˇstˇen´ı Eclipsu nen´ı nutn´e vyb´ırat jiˇzexistuj´ıc´ıworkspace, ale je moˇzn´evytvoˇrit dalˇs´ı. Eclipse ovˇsem mus´ıjiˇzpˇri spuˇstˇen´ızn´at, kam bude ukl´adat jednotliv´eprojekty a soubory. Tento syst´empravdˇepodobnˇepouˇz´ıv´apouze Eclipse, u ostatn´ıch prostˇred´ı lze projekty a soubory ukl´adat kamkoliv. Po zvolen´ıworkspace se jiˇzzaˇcnou naˇc´ıtat vˇsechny moduly, kter´ejsou zapotˇreb´ık fungov´an´ıaplikace. Cel´ypro- ces spuˇstˇen´ıtrv´anˇekolik des´ıtek vteˇrin v z´avislosti na konkr´etn´ım poˇc´ıtaˇcia poˇctu naˇc´ıtan´ych plugin˚u.

V Eclipsu si program´ator m˚uˇzenastavit prakticky vˇsechno podle sv´ych po- ˇzadavk˚u. At’ uˇzjde o verzi Javy, form´atov´an´ık´odu, kl´avesov´ezkratky, debu- gger, generov´an´ık´odu apod. Veˇsker´enastaven´ılze prov´est po otevˇren´ımenu Window ->Preferences. Z Obr´azku 5.1 je vidˇet, ˇzeje nastaven´ı rozdˇelen´e do r˚uzn´ych sekc´ı, kter´ejeˇstˇeobsahuj´ıdalˇs´ıpodsekce. Ovˇsemorientovat se v tom, kde se nˇekter´anastaven´ıskr´yvaj´ı, nemus´ıb´ytv˚ubec jednoduch´e.Je zde proto pˇrid´an i filtr, kter´yzobraz´ıjen ty sekce, jeˇzobsahuj´ıhledan´yv´yraz. Tato nastaven´ıse vztahuj´ık cel´emu v´yvojov´emu prostˇred´ı. Moˇzn´eje i ob- dobn´ym zp˚usobem nastavit specifick´evlastnosti vˇzdy pro konkr´etn´ıprojekt (Project ->Properties).

20 Popis porovn´avan´ychprostˇred´ı Eclipse

Obr´azek 5.1: Eclipse: nastaven´ıvlastnost´ıprostˇred´ı

Dalˇs´ıvˇec´ı, kterou by program´ator mohl nastavovat, je vyobrazen´ır˚uzn´ych oken (pohled˚u), kter´esi pˇreje pˇri pr´aci sledovat. Eclipse to za nˇejˇreˇs´ımoˇz- nost´ıpˇrep´ınat mezi r˚uzn´ymi perspektivami podle toho, jakou ˇcinnost zrovna prov´ad´ı(implementace k´odu, ladˇen´ıapod.). Kaˇzd´aperspektiva obsahuje se- skupen´ır˚uzn´ych oken, kter´amohou s ˇcinnost´ısouviset. Samozˇrejmˇeje moˇzn´e si tyto perspektivy nastavit podle vlastn´ıch poˇzadavk˚ua uloˇzit. Vˇseje patrn´e na Obr´azku 5.2.

5.1.3 Generov´an´ık´odu

Pˇri v´yvoji program´ator ocen´ıjakoukoliv funkci, kter´amu usnadn´ıa urychl´ı pr´aci, a tˇech Eclipse nab´ız´ıcelou ˇradu. Co se t´yˇce ˇcasto se opakuj´ıc´ıch ˇc´ast´ı

21 Popis porovn´avan´ychprostˇred´ı Eclipse

Obr´azek 5.2: Eclipse: moˇznosti perspektiv k´odu, nechyb´ımoˇznost generovat gettery/settery, konstruktory ˇcidokumen- taˇcn´ıkoment´aˇre. D´ale je moˇzn´evyuˇz´ıt funkci pro pˇrekryt´ı/implementov´an´ı metod. Ta umoˇzˇnuje zvolit metody (at’ jiˇzse jedn´ao zdˇedˇen´emetody urˇcen´e k pˇrekryt´ıˇcimetody dan´erozhran´ım), jejichˇzhlaviˇcky budou doplnˇeny do zdrojov´eho k´odu. Program´atorovi pak staˇc´ıpouze doplnit tˇela tˇechto metod.

Za zm´ınku stoj´ıi funkce Organize imports a Clean up. Prvn´ızm´ınˇen´afunkce odstran´ız k´odu jiˇznepouˇz´ıvan´eimporty. Ta druh´azasahuje do k´odu mno- hem v´ıce, jelikoˇzho upravuje podle definovan´ych nastaven´ı. Tˇemi m˚uˇzeb´yt odstranˇen´ınepouˇz´ıvan´ych import˚u, odstranˇen´ınepouˇz´ıvan´ych lok´aln´ıch pro- mˇenn´ych, doplnˇen´ıchybˇej´ıc´ıch @Override notac´ıa dalˇs´ıakce zvolen´eprogra- m´atorem.

Posledn´ızaj´ımav´afunkcionalita se skr´yv´apod n´azvem Externalize Strings. Pˇri jej´ım pouˇzit´ı jsou veˇsker´eˇretˇezce(napˇr.v´ypisy na obrazovku) v edi- tovan´em zdrojov´emsouboru nahrazeny promˇenn´ymi, kter´ejsou definovan´e v samostatn´emsouboru. V definovan´ebal´ıku vzniknou rovnou dva nov´esou- bory, konkr´etnˇe xxx.properties a xxx.java. Prvn´ıtedy obsahuje zm´ınˇen´e definovan´epromˇenn´e,druh´yobsahuje algoritmus k naˇc´ıt´an´ıkonkr´etn´ıch ˇre- tˇezc˚uze souboru. Takov´ychto soubor˚um˚uˇzeb´ytv projektu v´ıce, z´aleˇz´ıjen na tom, do kolika soubor˚usi program´ator ˇretˇezce rozdˇel´ı. V´yhodou toho po-

22 Popis porovn´avan´ychprostˇred´ı Eclipse uˇzit´ıje uloˇzen´ıˇretˇezc˚una jednom m´ıstˇe, tud´ıˇzjejich jednoduˇsˇs´ıeditace bez nutnosti proch´azet zdrojov´yk´od. Jelikoˇzse k´odm˚uˇzeˇcasto z´asadnˇemˇenit, je zde pˇrid´ana i moˇznost kontrolovat aktu´alnost ˇretˇezc˚u, tedy zda nˇejak´y nechyb´ınebo nepˇreb´yv´a.Kontrola se m˚uˇzeprov´adˇetnad dan´ym souborem, bal´ıkem nebo cel´ym projektem. Jak se po externalizaci zmˇen´ısamotn´yk´od, je uk´az´ano na Obr´azku 5.3.

Obr´azek 5.3: Eclipse: externalizace ˇretˇezc˚u

5.1.4 Doplˇnov´an´ık´odu

Automatick´edoplˇnov´an´ı, nebo-li Content Assist, nab´ız´ıprogram´atorovi k na- hl´ednut´ıˇc´asti k´odu, kter´ezapadaj´ıdo kontextu jiˇznapsan´eho v´yrazu. Stan- dardnˇeje nastaveno, aby se n´avrhy k´odu zobrazovaly po naps´an´ı znaku .“, ale je moˇzn´eje zobrazit kdykoliv pomoc´ıkl´avesov´ezkratky (standardnˇe ” Ctrl+mezern´ık).

Pˇri prvn´ım vyvol´an´ıkontextov´en´apovˇedy nab´ız´ıContent Assist prakticky vˇsechny moˇzn´en´avrhy, zapadaj´ıc´ı do pˇredeˇsl´eho k´odu, jako jsou objekty a metody rozhran´ıAPI, definovan´eˇsablony apod. N´apovˇedu lze ovˇsempro- ch´azet i cyklicky, a to opakovan´ymvyvol´an´ım kl´avesov´ezkratky. T´ım se zobrazovan´en´avrhy omez´ıpouze na ty, jeˇzspadaj´ıdo urˇcit´ekategorie (napˇr. definovan´eˇsablony). Omezen´ınab´ızen´ych n´avrh˚uvysvˇetluje Obr´azek 5.4.

23 Popis porovn´avan´ychprostˇred´ı Eclipse

Obr´azek 5.4: Eclipse: omezen´ın´apovˇedy pouze na ˇsablony

V´yˇsezm´ınˇen´eˇsablony umoˇzˇnuj´ıprogram´atorovi pod urˇcitou slovn´ızkratku skr´yt libovoln´y, ˇcasto se opakuj´ıc´ı´usek k´odu. Doplnˇen´ık´odu se vyvol´astejnou kl´avesovou zkratkou jako kontextov´an´apovˇeda. Pamatuje-li si tedy progra- m´ator zkratku dan´eho k´odu, staˇc´ımu ji napsat a stisknout Ctrl+mezern´ık. Pokud je pod danou zkratkou uloˇzenpouze jeden k´od, je automaticky dopl- nˇen. V opaˇcn´em pˇr´ıpadˇeje zobrazena klasick´akontextov´an´apovˇeda, kter´a umoˇzn´ıvybrat konkr´etn´ık´od. Eclipse jiˇzobsahuje pˇreddefinovan´eˇsablony, lze je ovˇsemupravovat ˇci vytvoˇrit sv´evlastn´ı. Pˇr´ıklad ˇsablony a doplnˇen´y k´od je uveden na Obr´azku 5.5.

5.1.5 Refaktoring

Eclipse obsahuje ˇradu funkc´ı, jeˇzumoˇzˇnuj´ıprov´adˇetzmˇeny v cel´emprojektu bez zdlouhav´eho upravov´an´ıjednotliv´ych tˇr´ıd. Mezi tyto funkce patˇr´ınapˇr´ı- klad pˇrejmenov´an´ıpromˇenn´ych ˇcimetod, zmˇeny n´avratov´ych typ˚u, zav´adˇen´ı n´avrhov´ych vzor˚u, pˇresouv´an´ımetod ˇcitˇr´ıd v r´amci projektu apod. Pˇresouvat ˇc´asti k´odu napˇr´ıˇcprojektem lze i v panelu zobrazuj´ıc´ım hierarchii projektu, a to jednoduch´ym pˇretaˇzen´ım napˇr. tˇr´ıdy do jin´eho bal´ıku. Veˇsker´ez´avislosti se pˇritom v projektu sami aktualizuj´ı. Pokud bˇehem prov´adˇen´ızmˇen dojde k nˇejak´ym probl´em˚um, je proces pozastaven a o vznikl´ych probl´emech je informov´anprogram´ator.

5.1.6 Historie k´odu

Eclipse si udrˇzuje historii refaktoringu, do kter´eukl´ad´ainformace o tom, kdy a k jak´ym zmˇen´am v projektu doˇslo. Tedy napˇr´ıklad, ˇzepˇred nˇekolika dny byl v projektu zmˇenˇenn´azev metody. Zmˇeny ovˇsem nen´ımoˇzn´enavracet.

24 Popis porovn´avan´ychprostˇred´ı Eclipse

Obr´azek 5.5: Eclipse: k´od ˇsablony pro slouˇcen´ıpol´ı

Rovnˇeˇzdisponuje lok´aln´ıhistori´ı. V t´ejsou uloˇzen´ejednotliv´erevize sou- bor˚udan´eho projektu. Je tedy moˇzn´eporovnat nˇekterou tˇr´ıdu s jej´ıstarˇs´ı reviz´ıa pˇr´ıpadnˇeˇc´asti k´odu ˇcicelou tˇr´ıdu obnovit. V pˇr´ıpadˇe,ˇzeby tedy program´ator nˇeconedopatˇren´ım smazal, nemus´ıse b´at, ˇzeby o svou pr´aci pˇriˇsel. Eclipse pˇri porovn´av´an´ısoubor˚uviditelnˇeoznaˇcuje ˇc´asti k´odu, kter´e se liˇs´ıa umoˇzˇnuje je jednoduˇseslouˇcit (viz Obr´azek 5.6).

Obr´azek 5.6: Eclipse: porovn´av´an´ık´odu s lok´aln´ıhistori´ı

25 Popis porovn´avan´ychprostˇred´ı Eclipse

5.1.7 Dalˇs´ımoˇznosti

Samozˇrejmost´ıje moˇznost vyuˇz´ıvat v prostˇred´ıdebugger pro ladˇen´ıaplikac´ı. Jako velmi uˇziteˇcn´eshled´av´am moˇznost pˇrid´avat podm´ınky k breakpoint˚um a t´ım omezit pozastaven´ıprogramu. Eclipse pouˇz´ıv´ak buildov´an´ıprogram˚u vlastn´ıbuilder, moˇzn´eje vˇsak vyuˇz´ıt i integrovan´en´astroje Ant, Maven ˇci Gradle. S buildov´an´ım souvis´ıi moˇznost vytv´aˇret specifick´ebˇehov´ekonfigu- race. Ty lze spouˇstˇeti pro testov´an´ıˇc´ast´ıprojektu, jelikoˇzEclipse umoˇzˇnuje vytv´aˇret a spouˇstˇetJUnit testy.

Pokud jde o verzovac´ısyst´emy, Eclipse v sobˇejiˇzobsahuje Egit (Git klient pro Eclipse). Formou plugin˚uje moˇzn´edoinstalovat i dalˇs´ızn´am´everzovac´ı syst´emy jako Subversion (plugin Subversive) ˇciMercurial (plugin Mercuria- lEclipse). V pˇr´ıpadˇet´ymov´ych projekt˚use m˚uˇze hodit i integrovan´yn´astroj Mylyn, umoˇznuj´ıc´ıspr´avu ´ukol˚uv projektu. U menˇs´ıch projekt˚usi lze jed- noduˇsepˇrid´avat ´ukoly k jednotliv´ym ˇr´adk˚um k´odu.

Jelikoˇzje v t´eto pr´aci porovn´av´an Eclipse s IDE Netbeans, kter´ejiˇzintegruje GUI designer, nab´ızelo by se jeho srovn´an´ıs nˇejak´ym dostupn´ym pluginem pro Eclipse. Tˇech je ovˇsemk dispozici v´ıce a jejich kvalita se m˚uˇze v´yraznˇe liˇsit, tud´ıˇzby srovn´an´ıs jedn´ım z nich nebylo pˇr´ıliˇsobjektivn´ı.

5.1.8 Moˇznosti rozˇs´ıˇren´ı

Jak uˇzbylo jednou zm´ınˇeno, plugin˚udostupn´ych pro Eclipse je opravdu mnoho, takˇze lze doinstalovat t´emˇeˇrcokoliv. Vyb´ırat lze at’ jiˇzz plugin˚u vydan´ych organizac´ıEclipse ˇcitˇech od extern´ıch v´yvoj´aˇr˚u. Ot´azkou ovˇsem z˚ust´av´a,kolik tˇechto rozˇs´ıˇren´ıje opravdu kvalitn´ıch a aktu´aln´ıch.

Rozˇs´ıˇren´ılze pˇr´ımo v IDE doplnit dvˇema zp˚usoby. Prvn´ımoˇznost´ıje vyuˇzit´ı MarketPlace klienta, coˇzje rozhran´ıumoˇzˇnuj´ıc´ıproch´azet webov´estr´anky (dalo by se ˇr´ıci datab´azi) s uloˇzen´ymi rozˇs´ıˇren´ımi pro Eclipse. Pluginy jsou rozdˇeleny do urˇcit´ych kategori´ı. Rovnˇeˇzje zde o nich uveden kr´atk´ypopis vˇcetnˇepoˇctu jejich staˇzen´ı. Druh´yzp˚usob je pouˇzit´ıfunkce Instalovat nov´y ” software“. Zde se vyhled´avaj´ı rozˇs´ıˇren´ı na z´akladˇekonkr´etn´ı URL adresy ´uloˇziˇstˇeEclipse. V pˇr´ıpadˇe,ˇzeji program´ator zn´a, je toto pouˇzit´ıopravdu jednoduch´e.V opaˇcn´empˇr´ıpadˇem˚uˇzeb´yt dohled´an´ı konkr´etn´ıho pluginu pomˇernˇesloˇzit´e. Hlavnˇevyps´an´ıvˇsech rozˇs´ıˇren´ıze vˇsech jiˇzuloˇzen´ych adres ´uloˇziˇstˇem˚uˇzezabrat velmi dlouhou dobu (klidnˇei nˇekolik minut).

26 Popis porovn´avan´ychprostˇred´ı Eclipse

Co vˇsechno prostˇred´ı obsahuje, je moˇzn´evidˇetv detailech instalace. Zde je moˇzn´epluginy i odinstalovat. Eclipse si vede historii konfigurac´ı, do kter´e pˇrid´av´az´aznam v okamˇziku, kdy dojde v prostˇred´ık instalaci respektive odin- stalaci nˇekter´eho pluginu. Tuto sekci t´ykaj´ıc´ıse plugin˚ushrnuj´ıObr´azky 5.7 a 5.8.

Obr´azek 5.7: Eclipse: moˇznosti doinstalov´an´ırozˇs´ıˇren´ı

5.1.9 Dokumentace a zdroje informac´ı

Eclipse disponuje opravdu zdaˇrilou dokumentac´ı, kter´aje dostupn´anejen na domovsk´ych str´ank´ach1, ale rovnˇeˇzintegrov´ana v samotn´em prostˇred´ı. Moˇzn´eje ji otevˇr´ıt v dalˇs´ım oknˇeaplikace nebo ji pˇripnout jako postrann´ı panel do prostˇred´ı. V prvn´ım pˇr´ıpadˇeje dokumentace mnohem l´epe ˇciteln´a, v druh´em pˇr´ıpadˇeji m´aprogram´ator neust´ale na oˇc´ıch, z´aleˇz´ıtedy jen na nˇemjak´yzp˚usob si zvol´ı. Obˇemoˇznosti jsou vyobrazen´ena Obr´azku 5.9.

Dokumentace je rozdˇelena do r˚uzn´ych sekc´ı, jeˇzvelmi podrobnˇepopisuj´ıjed- notliv´efunkce a moˇznosti prostˇred´ıˇciobsahuj´ır˚uzn´etutori´aly. Za povˇsimnut´ı stoj´ıi sekce What’s new informuj´ıc´ıo zmˇen´ach a novink´ach v pouˇz´ıvan´everzi IDE. Samozˇrejmost´ıje moˇznost vyhled´av´an´ı, kter´eodkazuje do jednotliv´ych sekc´ıdokumentace. 1https://eclipse.org

27 Popis porovn´avan´ychprostˇred´ı Eclipse

Obr´azek 5.8: Eclipse: historie instalovan´ych plugin˚u

V pˇr´ıpadˇe,ˇze by nˇekomu dokumentace nestaˇcila, je moˇzn´ese obr´atit na dalˇs´ızdroje informac´ı. Z kniˇzn´ıch publikac´ıje moˇzn´evyuˇz´ıt napˇr´ıklad starˇs´ı publikaci [46] ˇcinovˇejˇs´ıa obs´ahlejˇs´ıpublikaci vˇenuj´ıc´ıse verz´ım 4.2 a 4.3 [47]. Publikac´ıje cel´aˇrada, ale zd´ase, ˇze dosud ˇz´adn´anebyla vyd´ana v ˇcesk´em jazyce. Pro jejich ˇcten´ıje tedy nutn´apokroˇcil´aznalost angliˇctiny.

V dneˇsn´ıdobˇeovˇsemspatˇruji jako hlavn´ızdroj informac´ıinternet a to hlavnˇe z d˚uvodu aktu´alnosti. Odpovˇedi na ot´azky lze proto hledat na ofici´aln´ıch str´ank´ach organizace Eclipse, kter´eodkazuj´ına komunitn´ıf´orum, Eclipse- pedii, video kan´al, novinky apod. Vzhledem k rozˇs´ıˇrenosti Eclipsu je velmi pravdˇepodobn´e,ˇzepoˇzadovan´einformace nalezneme i na dalˇs´ıch program´a- torsk´ych f´orech2.

2Pˇr´ıkladem m˚uˇzeb´yt velmi popul´arn´ıwww.stackoverflow.com.

28 Popis porovn´avan´ychprostˇred´ı Netbeans

Obr´azek 5.9: Eclipse: n´apovˇeda v prostˇred´ı

5.2 Netbeans

V roce 1996 vznikl v Cesk´eRepubliceˇ studentsk´yprojekt Xelfi, jenˇzmˇelza c´ıl vyvinout v´yvojov´eprostˇred´ıpro jazyk Java, podobn´eIDE . Xelfi bylo v˚ubec prvn´ıJava v´yvojov´eprostˇred´ınapsan´ev Javˇe. Pozdˇejibyl n´azev zmˇenˇenna Netbeans. Netbeans byl p˚uvodnˇevyd´av´anjako komerˇcn´ıprodukt. V roce 1999 vˇsak Netbeans z´ıskala (prostˇrednictv´ım n´akupu aktiv) spoleˇc- nost Sun Microsystems a v n´asleduj´ıc´ım roce jej uvolnila jako open-source. V roce 2010 Oracle z´ıskal spoleˇcnost Sun (s t´ım i Netbeans) a rozhodl se jej nad´ale sponzorovat. Dokonce jej povaˇzuje za ofici´aln´ıIDE pro jazyk Java [48].

Stejnˇejako u Eclipse je k dispozici rovnˇeˇzopen-source platforma Netbeans (RCP). Ta m˚uˇzeb´yt z´akladem r˚uzn´ych desktopov´ych Swing aplikac´ı. Jeli- koˇzje sama platforma modul´arn´ı, umoˇzˇnuje vytv´aˇret robustn´ıa rozˇsiˇriteln´e aplikace. Webov´estr´anky organizace se snaˇz´ıudrˇzovat pˇrehled aplikac´ıpo- staven´ych na Netbeans platformˇe.Ten v souˇcasn´edobˇeˇc´ıt´astovky aplikac´ı [49, 50].

Distribuce Netbeans jsou vyd´av´any pod licencemi Common Development and Distribution License 1.0 a GNU General Public License v2. Nˇekter´arozˇs´ıˇren´ı vˇsak mohou podl´ehat licenc´ım tˇret´ıch stran [51].

29 Popis porovn´avan´ychprostˇred´ı Netbeans

5.2.1 Instalace

Pˇred instalac´ısi mus´ıuˇzivatel nejdˇr´ıve zvolit, jak´yz pˇredpˇripraven´ych bal´ık˚u bude vyuˇz´ıvat. Kter´ebal´ıky jsou k dispozici je patrn´ez Obr´azku 5.10. Pro Javu to jsou bal´ıky Java SE, Java EE ˇcipˇr´ıpadnˇebal´ık All, kter´yshrnuje technologie vˇsech bal´ık˚ua nav´ıc umoˇzˇnuje i v´yvoj mobiln´ıch aplikac´ı. Net- beans je moˇzn´est´ahnout s jiˇzpˇridan´ym modulem pro pˇreklad prostˇred´ıdo jin´eho jazyka, ovˇsemv pˇr´ıpadˇeˇceˇstiny je stejnˇejako u pluginu pro Eclipse pˇreloˇzena jen urˇcit´aˇc´ast.

Posledn´ıverz´ı, kterou lze nainstalovat, je Netbeans 8.1 (vyd´ana 4. 11. 2015), kter´aje v t´eto pr´aci popisov´ana.

Obr´azek 5.10: Netbeans: instalaˇcn´ıbal´ıky [52]

5.2.2 Spuˇstˇen´ıa konfigurace

Pojem workspace u IDE Netbeans ´uplnˇeodpad´a, jelikoˇzje moˇzn´eukl´adat projekty kamkoliv. Proces spuˇstˇen´ıaplikace rovnˇeˇztrv´anˇekolik des´ıtek vte- ˇrin, jako je tomu u prostˇred´ıEclipse. Konkr´etn´ıˇcasnelze uv´est, jelikoˇzje z´avisl´yna konkr´etn´ım poˇc´ıtaˇcia poˇctu naˇc´ıtan´ych modul˚u, kter´yse samo- zˇrejmˇem˚uˇze liˇsit.

Co se t´yˇce konfigurace, i Netbeans umoˇzˇnuje nastavit prostˇred´ıpodle vlast- n´ıch poˇzadavk˚u. Moˇznosti nastaven´ıjsou ponˇekud omezenˇejˇs´ıneˇzje tomu u Eclipsu, ovˇsemnejobvyklejˇs´ınastaven´ı(doplˇnov´an´ık´odu, kl´avesov´ezkratky apod.) pochopitelnˇenechyb´ı. Okno pro nastaven´ı p˚usob´ı velmi pˇrehlednˇe, jelikoˇzjednotliv´anastaven´ınejsou schovan´ave sloˇzit´estromov´estruktuˇre.

30 Popis porovn´avan´ychprostˇred´ı Netbeans

I pˇresto nechyb´ıvyhled´avaˇc, jenˇzzv´yrazn´ıpouze ty sekce, kter´eobsahuj´ıhle- dan´yv´yraz. Velmi uˇziteˇcn´am˚uˇzeb´yt moˇznost importovat konfiguraci z jiˇz existuj´ıc´ıho .zip archivu. Vˇseje vyobrazeno na Obr´azku 5.11.

Obr´azek 5.11: Netbeans:konfigurace prostˇred´ı

5.2.3 Generov´an´ık´odu

Moˇznosti generov´an´ık´odu jsou prakticky stejn´ejako u IDE Eclipse. Lze tedy generovat gettery/settery a konstruktory, prov´adˇetspr´avu import˚u, form´a- tovat k´od apod. Nechyb´ıani moˇznost obalit“ oznaˇcen´yk´odk´odov´ymi bloky ” (viz Obr´azek 5.12). I Netbeans umoˇzˇnuje pˇresunout ˇretˇezce do extern´ıho souboru .properties. Z tohoto souboru se pot´enaˇc´ıtaj´ıvyuˇzit´ım tˇr´ıdy Re- sourceBundle.

Pˇri vytv´aˇren´ınov´eho souboru program´ator ocen´ıcelou ˇradu ˇsablon, jeˇzdefi- nuj´ık´od, kter´ybude vygenerov´anv novˇevznikl´em souboru. Tyto ˇsablony lze snadno editovat ˇcivytv´aˇret sv´evlastn´ı. Pouˇzit´ıvlastn´ıˇsablony pˇri vytv´aˇren´ı souboru ukazuje Obr´azek 5.13.

31 Popis porovn´avan´ychprostˇred´ı Netbeans

Obr´azek 5.12: Netbeans: moˇznosti doplnˇen´ık´odov´ych blok˚u

Obr´azek 5.13: Netbeans: vytvoˇren´ısouboru z vlastn´ıˇsablony

5.2.4 Doplˇnov´an´ık´odu

Pouˇz´ıv´an´ıkontextov´en´apovˇedy je t´emˇeˇrstejn´ejako v prostˇred´ıEclipse. Pro jej´ızobrazen´ıje nastavena stejn´akl´avesov´azkratka a rovnˇeˇzse zobrazuje po naps´an´ıznaku .“. Pochopitelnˇeje moˇzn´esi uloˇzit vlastn´ınastaven´ı. V ˇcemse ” ovˇsemkontextov´an´apovˇeda liˇs´ıje jej´ıproch´azen´ı. Pˇri prvn´ım vyvol´an´ıjsou zobrazeny n´avrhy, kter´eNetbeans povaˇzuje za relevantn´ıvzhledem k dosud napsan´emu k´odu. Pˇri druh´emvyvol´an´ıkl´avesov´ezkratky jiˇzzobraz´ıvˇsechny n´avrhy, kter´eje moˇzn´edoplnit vzhledem k napsan´emu v´yrazu. Nen´ıtedy moˇzn´ecyklicky pˇrep´ınat n´apovˇedu a omezovat tak n´avrhy podle konkr´etn´ıch kategori´ı, jako je tomu u Eclipsu.

Moˇznost vytv´aˇret a pouˇz´ıvat ˇsablony samozˇrejmˇenechyb´ı. Co chyb´ı, je jiˇz

32 Popis porovn´avan´ychprostˇred´ı Netbeans zm´ınˇen´amoˇznost omezit kontextovou n´apovˇedu pouze na definovan´eˇsablony. Je tedy nutn´esi pamatovat konkr´etn´ızkratku, pod kterou se hledan´yk´od m˚uˇzeskr´yvat.

5.2.5 Refaktoring a anal´yzak´odu

Refaktoring v prostˇred´ıNetbeans umoˇzˇnuje prov´adˇett´emˇeˇrstejn´eoperace, jako je tomu u prostˇred´ıEclipse. Jedineˇcn´aje zde moˇznost prov´adˇetkontrolu (vyuˇzit´ım statick´eanal´yzy k´odu) a pˇr´ıpadnˇezmˇeny nad souborem, bal´ıkem ˇci cel´ym projektem. Pod kontrolou je moˇzn´esi pˇredstavit napˇr´ıklad dohled´an´ı chybˇej´ıc´ıdokumentace, jak je uk´az´ano na Obr´azku 5.14. Nalezen´eprobl´emy jsou nejprve pouze vyps´any a veˇsker´ezmˇeny mus´ıpotvrdit program´ator.

Obr´azek 5.14: Netbeans: statick´aanal´yza k´odu a refaktoring

5.2.6 Historie k´odu

I Netbeans si vede lok´aln´ıhistorii reviz´ıjednotliv´ych soubor˚u. S tou souvis´ı i n´astroj pro porovn´av´an´ıdvou soubor˚u, kter´yje s histori´ıspojen´y. Ten ba-

33 Popis porovn´avan´ychprostˇred´ı Netbeans revnˇeodliˇsuje ˇc´asti k´odu, kter´ese liˇs´ıa umoˇzˇnuje jednoduˇse prov´adˇetzmˇeny v souboru. Prakticky se jedn´ao stejnou funkcionalitu jako obsahuje Eclipse. N´astroj pro porovn´an´ıje pochopitelnˇemoˇzn´evyuˇz´ıt i pro dva r˚uzn´esoubory.

Co Netbeansu sch´az´ı, je historie refaktoringu, ve kter´eby bylo moˇzn´ena- l´eztzmˇeny proveden´enad cel´ym projektem. K dispozici je pouze historie smazan´ych soubor˚ua moˇznost je v projektu obnovit.

5.2.7 GUI builder

D˚uleˇzitou souˇc´ast´ıprostˇred´ıje jiˇzvestavˇen´ygrafick´ybuilder. Ten umoˇzˇnuje jednoduˇsevytv´aˇret grafick´erozhran´ıbez nutnosti ps´atveˇsker´yzdrojov´yk´od. Staˇc´ıpouze vyb´ırat prvky z pˇredpˇripraven´e palety“, kter´aobsahuje r˚uzn´e ” AWT a Swing komponenty a vkl´adat je na pl´atno. K´od se pˇri tom generuje automaticky podle toho, jak´evlastnosti se pˇridan´ym prvk˚um nastav´ı. Net- beans se rovnˇeˇzautomaticky star´ao zarovn´an´ıpˇridan´ych komponent, coˇzje moˇzn´evidˇetna Obr´azku 5.15.

Obr´azek 5.15: Netbeans: integrovan´yGUI builder

5.2.8 Dalˇs´ımoˇznosti

Samozˇrejmost´ıje moˇznost vyuˇz´ıvat v prostˇred´ıdebugger pro ladˇen´ıaplikac´ı. Zde oceˇnuji moˇznost poˇrizovat sn´ımky GUI aplikac´ıa zobrazovat informace o jednotliv´ych komponent´ach na sn´ımku. To m˚uˇzeb´yt uˇziteˇcn´enejen pˇri

34 Popis porovn´avan´ychprostˇred´ı Netbeans ladˇen´ı, ale napˇr´ıklad i pˇri vytv´aˇren´ıuˇzivatelsk´ych pˇr´ıruˇcek pro vytvoˇrenou aplikaci.

Pro testov´an´ıjednotek je zde pˇrid´ana podpora nejen pro framework JUnit, ale rovnˇeˇzi pro TestNG. S testov´an´ım souvis´ıi moˇznost profilov´an´ı, tedy moˇznost prov´adˇet za bˇehu programu dynamickou anal´yzu, kter´aumoˇzn´ısle- dovat napˇr´ıklad vyuˇzit´ıpamˇeti, vyt´ıˇzen´ıCPU, poˇcetbˇeˇz´ıc´ıch vl´aken, dobu prov´adˇen´ıjednotliv´ych metod a mnoho dalˇs´ıho. Pˇr´ıklad v´ystupu dynamick´e anal´yzy ukazuje Obr´azek 5.16.

Obr´azek 5.16: Netbeans: integrovan´yprofiler

K sestaven´ıprogram˚uje standardnˇevyuˇz´ıv´an Ant builder. Moˇzn´eje ovˇsem vyuˇz´ıt i n´astroj Maven, kter´yje jiˇzintegrov´an v prostˇred´ı. K dispozici je rov- nˇeˇzplugin pro buildovac´ın´astroj Gradle. Moˇznost vytv´aˇret vlastn´ıbˇehov´e konfigurace pochopitelnˇenechyb´ı.

Pro podporu t´ymov´ych projekt˚uNetbeans obsahuje verzovac´ısyst´emy Sub- version, Git a Mercurial. Zde popisovan´averze 8.1 lze rozˇs´ıˇrit jeˇstˇeo syst´em CVS. Starˇs´ıverze bylo moˇzn´erozˇs´ıˇrit i o syst´em ClearCase. Pro souˇcasnou verzi plugin dosud k dispozici nen´ı[53].

35 Popis porovn´avan´ychprostˇred´ı Netbeans

5.2.9 Moˇznosti rozˇs´ıˇren´ı

Jak ukazuje Obr´azek 5.17, i Netbeans umoˇzˇnuje prov´adˇetspr´avu plugin˚u pˇr´ımo v prostˇred´ı. Vyb´ırat zde lze pouze z plugin˚u, kter´ejsou dostupn´epro pouˇz´ıvanou verzi IDE. Teoreticky je moˇzn´edoinstalovat i rozˇs´ıˇren´ı, kter´a nejsou pro pouˇz´ıvanou verzi urˇcena, a to jejich dohled´an´ım a staˇzen´ım z Net- beans plugin port´alu a n´aslednou instalac´ı v sekci Downloaded. Rozˇs´ıˇren´ı ovˇsemnemus´ı pracovat spr´avnˇea m˚uˇze doch´azet k neˇz´adouc´ımu chov´an´ı prostˇred´ı.

Obr´azek 5.17: Netbeans: spr´ava plugin˚uv prostˇred´ı

V´yˇsezm´ınˇen´yplugin port´al je online datab´aze, kterou lze prohl´ıˇzetna do- movsk´ych str´ank´ach Netbeans. Vyhled´av´an´ıplugin˚uje moˇzn´efiltrovat podle r˚uzn´ych kategori´ıˇciverz´ıIDE, pro kter´ejsou urˇcen´e.V souˇcasn´edobˇe(20. 3. 2016) datab´aze ˇc´ıt´a975 r˚uzn´ych rozˇs´ıˇren´ı[54].

5.2.10 Dokumentace a zdroje informac´ı

Pˇri prvotn´ım pohledu na okno n´apovˇedy m˚uˇze jej´ıobsah p˚usobit ponˇekud stroze. Obsahuje totiˇzpouze odkazy na uˇzivatelskou pˇr´ıruˇcku Oraclu dostup- nou online. Ta velmi podrobnˇepopisuje moˇznosti pr´ace s v´yvojov´ym prostˇre- d´ım, ovˇsemnebude ji moˇzn´evyuˇz´ıt v pˇr´ıpadˇenedostupnosti internetov´eho pˇripojen´ı. K dispozici je i dokumentace offline, integrovan´apˇr´ımo v prostˇred´ı.

36 Popis porovn´avan´ychprostˇred´ı Netbeans

Postr´ad´am v n´ıovˇsemrozdˇelen´ıdo nˇejak´ych logick´ych sekc´ı, kter´eby bylo moˇzn´eproch´azet. Jedin´yzp˚usob, jak ji vyuˇz´ıt, je tedy pouˇzit´ıvyhled´avaˇce, jenˇzpodle hledan´eho slova zobraz´ırelevantn´ıodkazy do dokumentace. N´a- povˇeda v prostˇred´ıNetbeans je zobrazena na Obr´azc´ıch 5.18 a 5.19.

Obr´azek 5.18: Netbeans: n´apovˇeda v prostˇred´ı

Prakticky jak´ekoliv informace lze nal´eztna ofici´aln´ıch str´ank´ach3 Netbe- ans. Ty obsahuj´ıodkazy na r˚uzn´etutori´aly, videa, dokumentace k jednot- liv´ym verz´ım, komunitn´ıf´orum, FAQ a mnoho dalˇs´ıho. Zaj´ımav´ejsou i tzv. Learning trails“, kter´eshromaˇzd’uj´ıveˇsker´emateri´aly t´ykaj´ıc´ıse konkr´et- ” n´ıho v´yvoje, jako napˇr. Java EE, Java SE apod.

Kniˇzn´ıch publikac´ıo Netbeans, at’ jiˇzplatformˇenebo samotn´emv´yvojov´em prostˇred´ı, existuje cel´aˇrada. Z tˇech popisuj´ıc´ıch v´yvojov´eprostˇred´ılze zm´ınit publikaci [55], kter´aprov´ad´ıˇcten´aˇre zaˇc´atkem pouˇz´ıv´an´ıtohoto IDE. Druh´a publikace, o kter´ese zm´ın´ım, se vˇenuje API platformy Netbeans a prov´az´ı ˇcten´aˇrev´yvojem Rich Client Aplikac´ı. Tuto knihu uv´ad´ım hlavnˇeproto, je- likoˇzbyla komunitou Netbeans pˇreloˇzena do ˇcesk´eho jazyka [56].

3https://netbeans.org

37 Popis porovn´avan´ychprostˇred´ı BlueJ

Obr´azek 5.19: Netbeans: vyhled´av´an´ıv n´apovˇedˇe

5.3 BlueJ

Na konci 90. let vytvoˇril Michael K¨olling jako souˇc´ast sv´edisertaˇcn´ıpr´ace na australsk´euniverzitˇeMonash v´yukov´y, objektovˇeorientovan´yjazyk a z´aroveˇn v´yvojov´eprostˇred´ızvan´eBlue. Svou koncepc´ıse jazyk Blue velmi podobal jazyku C++. V´yukov´eprostˇred´ıbylo urˇceno pˇredevˇs´ım pro v´yuku student˚u prvn´ıch roˇcn´ık˚u. V´yvoj ovˇsemd´ale nepokraˇcoval, jelikoˇzse v´yvoj´aˇri zamˇeˇrili na vytvoˇren´ıstejn´eho v´yvojov´eprostˇred´ıjako Blue, ovˇsempro Javu — tedy BlueJ. V roce 1999 byla vyd´ana jeho prvn´ıverze a od t´edoby (hlavnˇed´ıky velk´epodpoˇre Sun Microsystems a nyn´ıOraclu) jeho v´yvoj nad´ale pokraˇcuje. V´yvojov´yt´ym se rozˇs´ıˇril o dalˇs´ıˇcleny a v souˇcasnosti cel´yt´ympracuje na univerzitˇeKent ve Velk´eBrit´anii [27, 57].

5.3.1 Instalace

BlueJ je dostupn´ypro r˚uzn´eoperaˇcn´ısyst´emy, at’ jiˇzjako pˇredpˇripraven´y installer pro syst´emy Windows a Mac, bal´ık .deb pro Ubuntu/Debian ˇcispustiteln´y .jar soubor pro ostatn´ıoperaˇcn´ısyst´emy. Vyuˇz´ıt lze i moˇznost pouˇz´ıvat pˇrenosnou verzi BlueJ spustitelnou z disk˚uUSB. Souˇc´ast´ıinstalaˇc- n´ıch bal´ık˚uje i nˇekolik uk´azkov´ych projekt˚u, kter´emohou usnadnit zaˇc´atky

38 Popis porovn´avan´ychprostˇred´ı BlueJ s objektovˇeorientovan´ym programov´an´ım.

Posledn´ıverz´ı, kterou lze nainstalovat, je BlueJ 3.1.7 (vyd´ana 23. 2. 2016), kter´aje v t´eto pr´aci rovnˇeˇzpopisov´ana.

5.3.2 Spuˇstˇen´ıa konfigurace

Prostˇred´ıse spust´ıprakticky okamˇzitˇe, jelikoˇzse nenaˇc´ıtaj´ıˇz´adn´erozs´ahl´e moduly, jako je tomu u profesion´aln´ıch prostˇred´ı. V jednom oknˇeaplikace lze otevˇr´ıt pouze jeden projekt. Existuje ovˇsem rozˇs´ıˇren´ı, kter´eumoˇzˇnuje pr´aci s v´ıce projekty najednou. Samotn´eprojekty nedodrˇzuj´ınˇejakou striktn´ı strukturu rozdˇelen´ısoubor˚udo jednotliv´ych adres´aˇr˚u. Adres´aˇre jsou pouˇzity pouze pro dokumentaci, bal´ıky ˇcipˇr´ıpadnˇepˇridan´arozˇs´ıˇren´ı, kter´abudou vysvˇetlena v sekci 5.3.10.

V konfiguraci prostˇred´ıtoho nen´ıpˇr´ıliˇsmnoho co nastavovat kromˇez´aklad- n´ıch nastaven´ı editoru ˇcikl´avesov´ych zkratek. D˚uleˇzit´aje ovˇsemmoˇznost volby pouˇzit´eho jazyka v prostˇred´ı, kdy je moˇzn´evyb´ırat z 18 jazyk˚uvˇcetnˇe ˇceˇstiny.

5.3.3 Popis prostˇred´ı

Zeˇ je BlueJ jednoduch´eprostˇred´ı, je vidˇetjiˇzpˇriprvotn´ım pohledu na uˇziva- telsk´erozhran´ı. Nenach´az´ıse zde ˇz´adn´erozs´ahl´epanely tlaˇc´ıtek ani seskupen´ı pohled˚u. V nˇeˇcem je ovˇsem jednoduch´yaˇzpˇr´ıliˇs.N´astroje jako je editor ˇci debugger se spouˇst´ıjako dalˇs´ıokno aplikace. Editor nav´ıc m˚uˇzeobsahovat pouze jednu tˇr´ıdu, takˇzev pˇr´ıpadˇepotˇreby editovat v´ıce tˇr´ıd z´aroveˇnje nutn´e m´ıt spuˇstˇeno nˇekolik oken, coˇzvelmi komplikuje pr´aci s prostˇred´ım. Pr´aci s prostˇred´ım lze prakticky rozdˇelit do nˇekolika ˇc´ast´ı, kter´ejsou pops´any n´ıˇze.

5.3.4 Diagram tˇr´ıd

Tˇr´ıdy jsou v prostˇred´ıreprezentov´any jako ikony, a to r˚uzn´epro klasickou tˇr´ıdu, rozhran´ı, testovac´ıtˇr´ıdu apod. Jak je vidˇetna Obr´azku 5.20, tˇr´ıdy mezi sebou mohou m´ıt urˇcit´evazby. Pln´aˇc´ara mezi tˇr´ıdami reprezentuje dˇediˇcnost, pˇreruˇsovan´aˇc´ara s troj´uheln´ıkovou ˇsipkou oznaˇcuje implementaci

39 Popis porovn´avan´ychprostˇred´ı BlueJ rozhran´ıa pˇreruˇsovan´aˇc´ara s jednoduchou ˇsipkou slouˇz´ıpro zobrazen´ınˇejak´e funkˇcn´ız´avislosti. Celkovˇetoto zobrazen´ıp˚usob´ıjako diagram tˇr´ıd dan´eho projektu vˇcetnˇez´avislost´ımezi nimi.

Obr´azek 5.20: BlueJ: diagram tˇr´ıd

5.3.5 Implementace k´odu

BlueJ se snaˇz´ıudrˇzet v k´odu pˇrehlednost, proto barevnˇeodliˇsuje bloky k´odu jako jsou metody, cykly apod. Rovnˇeˇznab´ız´ımoˇznost automaticky zform´a- tovat napsan´yk´od ˇcidoplnit dokumentaˇcn´ıkoment´aˇr. S t´ım souvis´ımoˇz- nost pˇrepnout pohled pr´avˇena dokumentaci editovan´etˇr´ıdy. Obsaˇzen´aje i jednoduch´akontextov´an´apovˇeda. Chyby v k´odu se odhal´ıaˇzpo pˇrekladu dan´etˇr´ıdy. Kompil´ator odhal´ıpouze prvn´ıchybu, na kterou pˇri pˇrekladu na- raz´ı. R´adek,ˇ ve kter´em se chyba vyskytuje barevnˇeoznaˇc´ıa vyp´ıˇse chybovou zpr´avu. V´yˇsepopsan´evlastnosti editoru jsou vyobrazeny na Obr´azku 5.21.

5.3.6 Pr´ace s objekty

V prostˇred´ı je kladen d˚uraz na interakci s uˇzivatelem, proto lze spouˇstˇet statick´emetody tˇr´ıdy nebo vytv´aˇret instance objekt˚ubez nutnosti pouˇzit´ı metody main(). Vytvoˇren´einstance objekt˚ujsou zobrazeny jako vizu´aln´ı

40 Popis porovn´avan´ychprostˇred´ı BlueJ

Obr´azek 5.21: BlueJ: editor obsaˇzen´yv prostˇred´ı prvky, se kter´ymi je moˇzn´ed´ale pracovat, tedy spouˇstˇet jejich metody ˇci prohl´ıˇzethodnoty promˇenn´ych. Pr´acis objekty shrnuj´ıObr´azky 5.22 a 5.23.

Obr´azek 5.22: BlueJ: vytvoˇren´ıinstance objektu

5.3.7 Pˇr´ıkazov´aˇr´adka

Pˇr´ıkazov´aˇr´adka umoˇzˇnuje zaznamen´avat pˇr´ıkazy uˇzivatele a postupnˇeje prov´adˇet. Je moˇzn´ezde vytv´aˇret promˇenn´e,instance objekt˚ua volat jejich

41 Popis porovn´avan´ychprostˇred´ı BlueJ

Obr´azek 5.23: BlueJ: prohl´ıˇzen´ıpromˇenn´ych instance metody, vyvol´avat statick´emetody tˇr´ıdy apod. V pˇr´ıpadˇechybn´eho z´apisu je pouze zobrazeno varovn´ehl´aˇsen´ıa lze d´ale pokraˇcovat v z´apisu. Pˇr´ıklad pouˇzit´ıpˇr´ıkazov´eˇr´adky ukazuje Obr´azek 5.24. Ve standardn´ım nastaven´ınen´ı pˇr´ıkazov´aˇr´adka zobrazena, ale to je moˇzn´ezmˇenit v nastaven´ıprostˇred´ı.

Obr´azek 5.24: BlueJ: pouˇzit´ıpˇr´ıkazov´eˇr´adky

5.3.8 Ladˇen´ıa testov´an´ı

V prostˇred´ıpochopitelnˇenechyb´ıdebugger pro ladˇen´ıprogram˚u. Ten umoˇz- ˇnuje jednoduˇse krokovat program a pˇritom sledovat hodnoty lok´aln´ıch pro- mˇenn´ych, atribut˚utˇr´ıdy ˇciatribut˚uinstance (viz Obr´azek 5.25). Pˇrid´ana je i podpora pro vytv´aˇren´ıa spouˇstˇen´ıJUnit test˚u(viz Obr´azek 5.26). Otes- tovat lze bud’ konkr´etn´ımetoda ˇcitˇr´ıda, pˇr´ıpadnˇelze spustit veˇsker´etesty obsaˇzen´ev projektu najednou.

42 Popis porovn´avan´ychprostˇred´ı BlueJ

Obr´azek 5.25: BlueJ: ladˇen´ıprogram˚u

Obr´azek 5.26: BlueJ: v´ysledky JUnit testov´an´ı

5.3.9 Dalˇs´ımoˇznosti

BlueJ umoˇzˇnuje i v´yvoj Java ME aplikac´ı. K tomu je ovˇsemzapotˇreb´ıdo- instalov´an´ıpotˇrebn´ych n´astroj˚u. Jak BlueJ rozˇs´ıˇrit o tuto technologii a n´a- slednˇeji vyuˇz´ıvat podrobnˇepopisuje tutori´al obsaˇzen´yv dokumentaci pro BlueJ [58].

Obsaˇzena je i moˇznost sd´ılen´ıt´ymov´ych projekt˚uvyuˇzit´ım centralizovan´ych syst´emu CVS a Subversion. N´astroje pro t´ymovou pr´aci nejsou ve standard- n´ım nastaven´ızobrazeny, to je ovˇsemmoˇzn´ezmˇenit v nastaven´ıprostˇred´ı.

Mezi dalˇs´ı moˇznosti tohoto prostˇred´ı patˇr´ı napˇr´ıklad moˇznost importovat

43 Popis porovn´avan´ychprostˇred´ı BlueJ do projektu jiˇzexistuj´ıc´ıtˇr´ıdy, generov´an´ıdokumentace ˇcivytv´aˇren´ıspusti- teln´ych .jar soubor˚u.

5.3.10 Moˇznosti rozˇs´ıˇren´ı

I BlueJ je moˇzn´erozˇs´ıˇrit o nˇekter´efunkcionality. V souˇcasnosti (20. 3. 2016) je moˇzn´evyb´ırat z 23 rozˇs´ıˇren´ı. Rozˇs´ıˇren´ıse stahuj´ız webov´eho prohl´ıˇzeˇceve formˇe .jar soubor˚u, kter´ese um´ıst´ıdo sloˇzky extensions. Pro tuto sloˇzku existuj´ıtˇrir˚uzn´elokace, kter´edefinuj´ımoˇznosti pouˇz´ıv´an´ıdan´eho rozˇs´ıˇren´ı. Ve struˇcnosti m˚uˇzeb´yt um´ıstˇen´ım sloˇzky extensions:

• instalaˇcn´ı sloˇzka BlueJ — rozˇs´ıˇren´ı dostupn´epro vˇsechny uˇzivatele a vˇsechny projekty,

• domovsk´asloˇzka uˇzivatele — rozˇs´ıˇren´ıdostupn´epro vˇsechny projekty konkr´etn´ıho uˇzivatele,

• sloˇzka projektu — rozˇs´ıˇren´ıdostupn´epro konkr´etn´ıprojekt.

Pˇresn´elokace jsou z´avisl´ena operaˇcn´ım syst´emu poˇc´ıtaˇce.Podrobn´einfor- mace lze nal´eztna webov´ych str´ank´ach t´ykaj´ıc´ıch se rozˇs´ıˇren´ıprostˇred´ıBlueJ [59].

5.3.11 Dokumentace

Dokumentace k prostˇred´ıje dostupn´apouze online, a to prostˇrednictv´ım od- kazu obsaˇzen´ymv prostˇred´ı. Rozdˇelena je do podrobn´ych tutori´al˚u, kter´e popisuj´ız´akladn´ıpr´aci s prostˇred´ım, d´ale testov´an´ıˇcit´ymovou pr´aci. K dis- pozici jsou i n´avody pˇreloˇzen´edo dalˇs´ıch jazyk˚u. Ty ovˇsem nejsou aktu´aln´ı (napˇr´ıklad ˇcesk´yn´avod se vztahuje k verzi 1.2.x a naposled byl aktualizov´an roku 2002) [58].

Jako kvalitn´ızdroj informac´ılze vyuˇz´ıt i knihu vydanou pˇr´ımo autory pro- stˇred´ı[60].

44 Popis porovn´avan´ychprostˇred´ı Greenfoot

5.4 Greenfoot

V´yvojov´eprostˇred´ı Greenfoot je vyv´ıjeno t´ymem v´yvoj´aˇr˚upracuj´ıc´ıch na univerzitˇeKent v Canterbury ve Velk´eBrit´anii, tedy stejn´ym t´ymem, kter´y vyv´ıj´ıv´ıce zn´am´eIDE BlueJ. Z toho je patrn´e,ˇzeobˇeprostˇred´ıbudou m´ıt mnoho spoleˇcn´eho. Greenfoot se vˇsak zamˇeˇruje pˇredevˇs´ım na tvorbu vizu´al- n´ıch 2D aplikac´ı, jejichˇzv´yvoj je nejen snadn´y,ale i z´abavn´y, d´ıky ˇcemuˇzlze l´epe proniknout do objektov´eho programov´an´ı[36].

5.4.1 Instalace

Asi nikoho nepˇrekvap´ı, ˇzeinstalaˇcn´ıbal´ıky jsou stejn´e,jako je tomu u pro- stˇred´ıBlueJ. D´ıky implementaci v Javˇelze Greenfoot vyuˇz´ıvat na jak´emkoliv operaˇcn´ım syst´emu. Nechyb´ıani moˇznost staˇzen´ıpˇrenosn´everze s vlastn´ım JDK, kterou lze spouˇstˇet z pˇrenosn´ych m´edi´ı. Souˇc´ast´ıinstalaˇcn´ıch bal´ık˚u jsou i uk´azkov´eprojekty, kter´elze pro zaˇc´atek modifikovat pro ujasnˇen´ıpr´ace s prostˇred´ım.

Posledn´ıverz´ı, kterou lze nainstalovat, je Greenfoot 3.0.2 (vyd´ana 23. 12. 2015), kter´aje v t´eto pr´aci rovnˇeˇzpopisov´ana.

5.4.2 Spuˇstˇen´ıa konfigurace

Start prostˇred´ıje o nˇekolik m´alo vteˇrin pomalejˇs´ıneˇzje tomu u IDE BlueJ. Jedno okno aplikace m˚uˇzeobsahovat pouze jeden projekt. V projektech se rovnˇeˇz m´ıchaj´ı“ jednotliv´etypy soubor˚ua nen´ıpro nˇestanovena adres´aˇrov´a ” struktura. Adres´aˇre jsou pouˇzity pouze pro obr´azky a zvuky pˇridan´edo pro- jektu.

V konfiguraci prostˇred´ıtoho nen´ıpˇr´ıliˇsmnoho co nastavovat kromˇez´aklad- n´ıch nastaven´ı editoru ˇcikl´avesov´ych zkratek. D˚uleˇzit´aje ovˇsemmoˇznost volby pouˇzit´eho jazyka v prostˇred´ı, kdy je moˇzn´evyb´ırat z 18 jazyk˚uvˇcetnˇe ˇceˇstiny.

45 Popis porovn´avan´ychprostˇred´ı Greenfoot

5.4.3 Popis prostˇred´ı

Greenfoot se zamˇeˇruje pˇredevˇs´ım na vizu´aln´ıa interaktivn´ıpr´aci s objekty. Proto je prostˇred´ızaloˇzen´ena Greenfoot API, tedy vlastn´ıch tˇr´ıd´ach, kter´e nejsou ve standardn´ıch knihovn´ach Javy obsaˇzeny. Jedn´ase o nˇekolik tˇr´ıd, kter´eumoˇzˇnuj´ısnadno a rychle vytv´aˇret jednoduch´ehry ˇcisimulace i ´upln´ym zaˇc´ateˇcn´ık˚um s objektov´ym programov´an´ım. Pr´acis prostˇred´ım lze rozdˇelit do nˇekolika sekc´ı, kter´ejsou pops´any n´ıˇze.

5.4.4 Diagram tˇr´ıd

Pr´aces prostˇred´ım se odv´ıj´ıod dvou hlavn´ıch tˇr´ıd. Prvn´ız nich je tˇr´ıda World (Svˇet), kter´areprezentuje grafick´epl´atno. Druh´atˇr´ıda, tˇr´ıda Actor (Akt´er), reprezentuje objekty objevuj´ıc´ıse ve svˇetˇe,tedy objekty pˇrid´avan´ena pl´atno. Ty maj´ıtypicky sv´evlastnosti a chov´an´ı. Obˇetyto tˇr´ıdy jsou souˇc´ast´ıdia- gramu tˇr´ıd v prostˇred´ı a dvojklikem lze zobrazit jejich dokumentaci. Jak ukazuje Obr´azek 5.27, tˇr´ıdy vytv´aˇren´eprogram´atorem jsou potomci pr´avˇe tˇechto dvou tˇr´ıd. Moˇzn´eje i importovat do projektu nˇekolik jiˇzvytvoˇren´ych tˇr´ıd, kter´ejsou souˇc´ast´ıinstalaˇcn´ıho bal´ıku.

Obr´azek 5.27: Greenfoot: hlavn´ıokno aplikace

46 Popis porovn´avan´ychprostˇred´ı Greenfoot

5.4.5 Implementace k´odu

Pˇri vytv´aˇren´ıaplikac´ınelze generovat ˇz´adn´yk´od, vˇseje tedy nutn´eimple- mentovat pˇr´ımo v editoru. Ten se na prvn´ıpohled nijak neliˇs´ıod editoru v prostˇred´ıBlueJ. Ve tˇrech stˇeˇzejn´ıch vˇecech se ovˇsem odliˇsuje. Prvn´ız nich je moˇznost otevˇr´ıt v´ıce tˇr´ıd v jednom editoru. D´ıky tomu odpad´anepˇr´ı- jemnost v podobˇenˇekolika otevˇren´ych oken aplikace a pˇrep´ın´an´ımezi nimi. Druh´ym rozd´ılem je kompilace k´odu, jelikoˇzje k´od kompilov´anautomaticky jiˇzbˇehem jeho editace. S t´ım souvis´ıi posledn´ırozd´ıl a t´ım je zobrazov´an´ı nalezen´ych chyb. Greenfoot dok´aˇzenaj´ıt vˇsechny chyby v k´odu a ne tedy jen prvn´ıjako IDE BlueJ. Tyto rozd´ıly je moˇzn´espatˇrit na Obr´azku 5.28.

Obr´azek 5.28: Greenfoot: editor

5.4.6 Pr´ace s objekty

Pˇri vytv´aˇren´ınov´ych tˇr´ıd je moˇzn´ek nim rovnou pˇriˇradit obr´azek. Moˇzn´eje vyb´ırat z cel´eˇrady obr´azk˚uknihovny Greenfoot nebo importovat vlastn´ı. Pro tˇr´ıdy svˇet˚use implementuj´ıpˇredevˇs´ım konstruktory, kter´edefinuj´ıvelikost svˇeta a rozvrˇzen´ı objekt˚uve svˇetˇe.Mohou pochopitelnˇeobsahovat i me- tody instance, ovˇsemˇradu metod (napˇr´ıklad pro pˇrid´an´ı/odebr´an´ıobjektu ze svˇeta) jiˇzdˇed´ıod nadˇrazen´etˇr´ıdy World.

Pro objekty, nebo-li akt´ery ve svˇetˇeje nejpodstatnˇejˇs´ımetoda act(), kter´a definuje chov´an´ıobjektu ve svˇetˇe.Tato metoda je zdˇedˇena z tˇr´ıdy Actor, ale

47 Popis porovn´avan´ychprostˇred´ı Greenfoot sama o sobˇenic nedˇel´a. Aˇzjej´ıpˇrekryt´ıv tˇr´ıdˇepotomka a implementov´an´ı jej´ıho tˇela umoˇzˇnuje vykazovat objektu urˇcit´echov´an´ıjako napˇr´ıklad pohyb.

Z´akladem spuˇstˇen´ınˇekter´esimulace je vytvoˇren´ıinstance konkr´etn´ıho svˇeta. Pot´eje moˇzn´esvˇetovl´adat tlaˇc´ıtky, kter´elze vidˇetna Obr´azku 5.27. Tlaˇc´ıtko Krok vyvol´aspuˇstˇen´ımetody Act() u kaˇzd´eho objektu obsaˇzen´emve svˇetˇe. Tlaˇc´ıtko Spustit spust´ısimulaci svˇeta a to t´ım, ˇzeopakovanˇevol´ametody Act() jednotliv´ych akt´er˚u, pˇriˇcemˇzlze i nastavovat rychlost simulace, tedy prodlevu mezi opakovan´ym vol´an´ım t´eto metody. Bˇehem bˇehu simulace je moˇzn´eji stejn´ym tlaˇc´ıtkem i pozastavit. Tlaˇc´ıtko Reset slouˇz´ıpro obnoven´ı svˇeta do z´akladn´ıho stavu.

Pokud je simulace pozastavena, je moˇzn´es objekty jednoduˇsemanipulovat myˇs´ı. To plat´ıi pro pˇrid´av´an´ıdalˇs´ıch objekt˚udo svˇeta, kdy staˇc´ıkliknout na danou tˇr´ıdu, podrˇzet kl´avesu Shift a jednoduˇsepˇrid´avat dalˇs´ıakt´ery do svˇeta. Rovnˇeˇzje moˇzn´einteraktivnˇevolat metody instance jednotliv´ych objekt˚u, ˇci prohl´ıˇzetjejich atributy, coˇzukazuje Obr´azek 5.29.

Obr´azek 5.29: Greenfoot: interaktivn´ıpr´ace s objekty

5.4.7 Ladˇen´ı

V prostˇred´ınechyb´ıdebugger pro ladˇen´ıprogram˚u. Greenfoot vyuˇz´ıv´astejn´y debugger jako je obsaˇzen´yv IDE BlueJ. Ten je moˇzn´evidˇet na Obr´azku 5.25.

48 Popis porovn´avan´ychprostˇred´ı Greenfoot

5.4.8 Dalˇs´ımoˇznosti

Jelikoˇzje moˇzn´epˇrid´avat k simulac´ım zvukov´eefekty, je zde obsaˇzena i moˇz- nost zaznamenat zvukov´yv´ystup simulace. Cel´yz´aznam, pˇr´ıpadnˇepouze jeho vybranou ˇc´ast, lze pot´euloˇzit do souboru .wav.

Vytvoˇrenou aplikaci lze exportovat do spustiteln´eho .jar souboru, pˇriˇcemˇz lze nastavit, zda bude moˇzn´esimulaci ovl´adat tlaˇc´ıtky jako je tomu v pro- stˇred´ıˇci nikoli (viz Obr´azek 5.30). Pˇrid´ana je i moˇznost vytvoˇren´ıwebov´e str´anky s appletem ˇcipublikov´an´ısimulace v galerii sc´en´aˇr˚uorganizace Gre- enfoot.

Obr´azek 5.30: Greenfoot: export aplikace

V prostˇred´ıje moˇzn´evytv´aˇret i jin´etˇr´ıdy, neˇzpouze potomky tˇr´ıd World a Actor. Lze tedy implementovat programy vyuˇz´ıvaj´ıc´ıtermin´al, jednoduch´e GUI formul´aˇre apod. U nˇekter´ych aplikac´ıvˇsak doch´azelo po jejich ukonˇcen´ı k restartov´an´ıhlavn´ıho okna prostˇred´ı, coˇzje dosti nepˇr´ıjemn´e.To znaˇc´ı, ˇze i kdyˇzGreenfoot umoˇzˇnuje vytv´aˇret i jin´eaplikace, prim´arnˇeje urˇcenpr´avˇe pro 2D hry a simulace.

5.4.9 Dokumentace

Dokumentace k prostˇred´ıje dostupn´apouze online, a to prostˇrednictv´ım od- kazu obsaˇzen´ymv aplikaci. Zde je moˇzn´enaj´ıt nˇekolik tutori´al˚uˇcivide´ı, kter´epodrobnˇepopisuj´ıpr´aci s prostˇred´ım. Na domovsk´ych str´ank´ach Gre- enfoot lze rovnˇeˇznaj´ıt diskuzn´ıf´orum pro registrovan´euˇzivatele ˇcigalerii uˇzivatelsk´ych sc´en´aˇr˚u(projekt˚u), kter´elze st´ahnout a vyuˇz´ıt jako inspiraci pro vlastn´ıaplikace. Pˇr´ımo v prostˇred´ıje obsaˇzena pouze dokumentace tˇr´ıd

49 Popis porovn´avan´ychprostˇred´ı Greenfoot

Greenfoot API [61].

K dispozici je i ofici´aln´ıkniha, vydan´apˇr´ımo autorem prostˇred´ı, kterou mo- hou vyuˇz´ıt uˇcitel´ei studenti [62].

50 6 Porovn´an´ıprostˇred´ı

V´yˇsepopsan´eaplikace se zamˇeˇruj´ına dvˇer˚uzn´eoblasti — v´yvoj a v´yuku. Proto i krit´eria, podle kter´ych se budou aplikace hodnotit, mus´ıb´yt odliˇsn´e vzhledem k oblasti jejich zamˇeˇren´ı. Pro porovn´avan´aprostˇred´ıbudou nej- prve vymezena krit´eria hodnocen´ı, jeˇzbudou n´aslednˇeslovnˇeokomentov´ana. Na z´avˇer bude pˇrid´ana tabulka s bodov´ymohodnocen´ım zvolen´ych krit´eri´ı (0-5 bod˚u), ze kter´ebudou patrn´epˇrednosti a nedostatky jednotliv´ych apli- kac´ı.

Velkou roli pˇri v´ybˇeru spr´avn´eho IDE hraje dojem samotn´eho uˇzivatele, proto je k profesion´aln´ım prostˇred´ım pˇripojeno i dotazn´ıkov´eˇsetˇren´ı(viz pˇr´ıloha A). Odpovˇedi respondent˚ubudou shrnuty v sekci 6.2.14. Pro v´yukov´apro- stˇred´ıdotazn´ık pˇripojen nen´ı, vzhledem k obt´ıˇznosti samostatn´eho sezn´amen´ı zaˇc´ateˇcn´ık˚us moˇznostmi dan´ych aplikac´ı.

6.1 V´yukov´aprostˇred´ı

Hodnotit v´yukov´aprostˇred´ıje mnohem jednoduˇsˇs´ıneˇzhodnotit ty profesio- n´aln´ı. Vzhledem k tomu, ˇze obˇepopsan´eaplikace pˇristupuj´ık v´yuce jin´ym zp˚usobem lze snadno zhodnotit, kter´ypˇr´ıstup je lepˇs´ı. Pro v´yukov´aprostˇred´ı jsem zvolil n´asleduj´ıc´ıkrit´eria hodnocen´ı:

• jednoduchost prostˇred´ı,

• uk´azkov´eprojekty,

• diagram tˇr´ıd,

• editor,

• vizualizace a pr´ace s objekty,

• ladˇen´ıa testov´an´ı,

• dostupn´emateri´aly,

• dalˇs´ımoˇznosti.

51 Porovn´an´ıprostˇred´ı V´yukov´aprostˇred´ı

6.1.1 Jednoduchost prostˇred´ı

Jelikoˇzjsou obˇeprostˇred´ızaloˇzena na stejn´emkonceptu, tak jejich rozhran´ı jsou t´emˇeˇrstejn´a. Obˇeaplikace p˚usob´ıvelmi pˇr´ıvˇetivˇea nenab´ız´ıˇz´adn´eslo- ˇzit´efunkcionality, kter´eby zaˇc´ateˇcn´ık nevyuˇzil. Pro sezn´amen´ıs prostˇred´ımi postaˇc´ı velmi kr´atk´yˇcasa je tedy moˇzn´eprakticky ihned zaˇc´ıt vytv´aˇret prvn´ıprojekty. Obˇeaplikace rovnˇeˇznab´ız´ılokalizaci nˇekolika svˇetov´ych ja- zyk˚uvˇcetnˇeˇceˇstiny.

6.1.2 Uk´azkov´eprojekty

Instalaˇcn´ıbal´ıky obou aplikac´ıobsahuj´ıi nˇekolik uk´azkov´ych projekt˚u. Gre- enfoot m´avˇsak navrch v tom, ˇzena sv´ych str´ank´ach udrˇzuje galerii uˇzivatel- sk´ych projekt˚u, kter´eje moˇzn´est´ahnout a vyuˇz´ıt jako inspiraci pro vlastn´ı aplikace.

6.1.3 Diagram tˇr´ıd

Diagram v IDE Greenfoot zobrazuje pouze hierarchii tˇr´ıd, jeˇzjsou potomci tˇr´ıd World a Actor. Pokud projekt obsahuje i jin´etˇr´ıdy, nejsou u nich zobra- zeny vazby na jejich okol´ı. BlueJ naopak obsahuje velmi podrobn´ydiagram tˇr´ıd, kter´yzobrazuje veˇsker´evazby v dan´emprojektu.

6.1.4 Editor

Editory obou aplikac´ına prvn´ıpohled vypadaj´ıshodnˇe,ovˇsemvelmi se liˇs´ı. Greenfoot na rozd´ıl od sv´eho protˇejˇsku umoˇzˇnuje editovat v´ıce tˇr´ıd v jednom oknˇeeditoru. Nav´ıc je pˇrid´ana funkce automatick´eho pˇrekladu k´odu, kter´a odhal´ıvˇsechny st´avaj´ıc´ıchyby. BlueJ v tomto smˇeru velmi pokulh´av´a, jelikoˇz je nutn´ek´od pˇrekl´adat ruˇcnˇea oznaˇc´ıse vˇzdy jen prvn´ınalezen´achyba.

52 Porovn´an´ıprostˇred´ı V´yukov´aprostˇred´ı

6.1.5 Vizualizace a pr´ace s objekty

V´yhodou IDE Greenfoot je moˇznost pˇrid´avat k objekt˚um jednoduˇseobr´azky a simulovat jejich ˇcinnost, coˇzˇcin´ıpr´aci z´abavnou. Objekty je nav´ıc moˇzn´e do simulace pˇrid´avat i zp˚usobem Drag and drop. U objekt˚uv simulaci je moˇzn´eprohl´ıˇzetjejich atributy ˇcivolat vˇsechny jejich metody. Cel´ydojem ovˇsemkaz´ıskuteˇcnost, ˇzeu objekt˚umimo simulaci nelze volat jejich metody instance a je tedy nutn´epouˇz´ıt metodu main() ˇcinaj´ıt jin´yzp˚usob. BlueJ umoˇzˇnuje snadno pracovat s objekty pˇres jejich grafickou reprezentaci, tzn. prohl´ıˇzetjejich atributy a volat jejich metody. Pracovat s nimi lze i vyuˇzit´ım pˇr´ıkazov´eˇr´adky obsaˇzen´ev prostˇred´ı.

6.1.6 Ladˇen´ıa testov´an´ı

Ladˇen´ıaplikac´ıumoˇzˇnuj´ıobˇeprostˇred´ıvyuˇzit´ım stejn´eho debuggeru. BlueJ vˇsak oproti sv´emu protˇejˇsku obsahuje i podporu JUnit testov´an´ı, coˇzje ne- zbytn´aˇcinnost budouc´ıch program´ator˚u.

6.1.7 Dostupn´emateri´aly

K obˇema prostˇred´ım je k dispozici ofici´aln´ıkniha a ˇrada manu´al˚u. Organizace Greenfoot nav´ıc spravuje vlastn´ıkan´al Youtube, kter´yobsahuje t´emˇeˇrsedm des´ıtek vide´ı.

6.1.8 Dalˇs´ımoˇznosti

Greenfoot je zamˇeˇren pˇredevˇs´ım na tvorbu simulac´ı, proto dalˇs´ımoˇznosti ne- obsahuje. BlueJ je oproti tomu mnohem v´ıce univerz´alnˇejˇs´ı. Lze jej doplnit o ˇradu rozˇs´ıˇren´ıjako je napˇr´ıklad jednoduch´yGUI builder. Moˇzn´eje doplnit i podporu pro tvorbu Java ME aplikac´ı. Nav´ıc je jiˇzv prostˇred´ıobsaˇzena podpora pro t´ymovou pr´aci na projektech vyuˇzit´ım syst´em˚uCVS a Subver- sion. Z toho plyne, ˇze i kdyˇzje BlueJ v´yukov´eprostˇred´ı, lze v nˇemteoreticky vytvoˇrit jakoukoliv aplikaci.

53 Porovn´an´ıprostˇred´ı V´yukov´aprostˇred´ı

6.1.9 Bodov´ehodnocen´ı

Protoˇzese aplikace porovn´avaj´ımezi sebou, obdrˇz´ıvˇzdy jedna z nich v dan´e kategorii maxim´aln´ı poˇcet bod˚u. Druh´apotom obdrˇz´ı odpov´ıdaj´ıc´ı pod´ıl bod˚uvzhledem k tomu, jak moc za sv´ymprotˇejˇskem v dan´ekategorii za- ost´av´a.

Tabulka 6.1: Porovn´an´ıv´yukov´ych prostˇred´ı

Krit´erium BlueJ Greenfoot Jednoduchost prostˇred´ı 5 5 Uk´azkov´eprojekty 3 5 Diagram tˇr´ıd 5 2 Editor 2 5 Vizualizace a pr´ace s objekty 5 4 Ladˇen´ıa testov´an´ı 5 3 Dostupn´emateri´aly 3 5 Dalˇs´ımoˇznosti 5 0 Pr˚umˇer 4,13 3,63

6.1.10 Shrnut´ı

Jak ukazuje Tabulka 6.1, l´epe z proveden´eho porovn´an´ıdopadl BlueJ. To pˇrikl´ad´am pˇredevˇs´ım jeho univerz´alnosti. Aplikaci Greenfoot lze doporuˇcit jako n´astroj, jeˇzzaujme mlad´estudenty a umoˇzn´ıjim uˇcit se OOP z´abavnou formou. Vyuˇz´ıt jej lze na z´akladn´ıch ˇskol´ach ˇciv prvn´ım roˇcn´ıku stˇredn´ıch ˇskol. Pr´ace s IDE BlueJ sice nen´ıtak jednoduch´a, ovˇsemnut´ıstudenty od sa- m´eho zaˇc´atku vyuˇz´ıvat standardn´ıtˇr´ıdy rozhran´ıAPI, coˇzje pˇrinut´ımnohem v´ıce nad sv´ymk´odem pˇrem´yˇslet. Nav´ıc d´ıky moˇznostem testov´an´ıa rozˇs´ıˇren´ı o dalˇs´ıfunkcionality BlueJ poskytuje v´ıce moˇznost´ıpro pr´aci s prostˇred´ım, d´ıky ˇcemuˇzlze pozdˇejisn´aze pˇrej´ıt na profesion´aln´ıIDE. Vyuˇzit´ılze dopo- ruˇcit na stˇredn´ıch ˇskol´ach ˇcipˇr´ıpadnˇev prvn´ım roˇcn´ıku vysok´ych ˇskol.

54 Porovn´an´ıprostˇred´ı Profesion´aln´ıprostˇred´ı

6.2 Profesion´aln´ıprostˇred´ı

Hodnotit profesion´aln´ıv´yvojov´aprostˇred´ınen´ı´uplnˇejednoduch´e, jelikoˇzje- jich funkcionalitu lze neust´ale rozˇsiˇrovat dalˇs´ımi pluginy. Proto bude porov- n´ano, co obˇeprostˇred´ınab´ız´ıve sv´e z´akladn´ıverzi“, tedy bez jak´ehokoliv ” rozˇs´ıˇren´ı. Pro v´yvojov´aprostˇred´ıjsem zvolil n´asleduj´ıc´ıkrit´eria hodnocen´ı:

• podpora Java technologi´ı,

• reakce prostˇred´ı,

• moˇznosti pˇrizp˚usoben´ı,

• generov´an´ık´odu,

• kontextov´anab´ıdka,

• refaktoring,

• testov´an´ı,

• ladˇen´ı,

• verzov´an´ı,

• n´apovˇeda v prostˇred´ı,

• dostupn´emateri´aly,

• moˇznosti rozˇs´ıˇren´ı.

6.2.1 Podpora Java technologi´ı

U obou prostˇred´ılze vyb´ırat z nˇekolika instalaˇcn´ıch bal´ık˚u. Java v´yvoj´aˇre budou zaj´ımat pˇredevˇs´ım bal´ıky Java SE a Java EE, kter´enab´ızej´ıobˇepro- stˇred´ı. Netbeans, jako ofici´aln´ıprostˇred´ıOraclu, nab´ız´ınav´ıc bal´ık All, kter´y obsahuje podporu i pro technologie Java FX a Java ME.

55 Porovn´an´ıprostˇred´ı Profesion´aln´ıprostˇred´ı

6.2.2 Reakce prostˇred´ı

Start prostˇred´ıje z´avisl´yna poˇctu naˇc´ıtan´ych modul˚u, proto jej nelze br´at jako smˇerodatn´yfaktor. D˚uleˇzitˇejˇs´ıje doba reakce prostˇred´ına r˚uzn´eˇcinnosti a v tomto ohledu p˚usob´ıEclipse mnohem sviˇznˇeji.

6.2.3 Moˇznosti pˇrizp˚usoben´ı

V pˇr´ıpadˇepˇrizp˚usoben´ıprostˇred´ızach´az´ıEclipse do vˇetˇs´ıch detail˚uneˇzjeho protˇejˇsek. Nav´ıc umoˇzˇnuje pˇrep´ınat mezi r˚uzn´ymi perspektivami, kter´ezob- razuj´ır˚uzn´erozloˇzen´ıpohled˚uvzhledem k prov´adˇen´eˇcinnosti.

6.2.4 Generov´an´ık´odu

Moˇznosti generov´an´ık´odu se zdaj´ına prvn´ıpohled stejn´e.V´yhoda Netbeans se vˇsak s kr´yv´ave spr´avci ˇsablon, kter´elze vyuˇz´ıt pˇri vytv´aˇren´ınov´ych tˇr´ıd. V prostˇred´ıje jiˇzdefinov´ana cel´eˇrada ˇsablon pro r˚uzn´etˇr´ıdy, kter´eje nav´ıc moˇzn´eeditovat ˇci vytvoˇrit pˇr´ımo vlastn´ı. Dalˇs´ıv´yhodou je integrovan´yGUI builder pro interaktivn´ıvytv´aˇren´ıGUI aplikac´ı.

6.2.5 Kontextov´an´apovˇeda

Kontextov´en´apovˇedy obou prostˇred´ıse zobraz´ıprakticky okamˇzitˇe.Eclipse umoˇzˇnuje nastavit si zpoˇzdˇen´ızobrazen´ın´apovˇedy, ovˇsem nepˇredpokl´ad´am, ˇzeby to nˇekdo vyuˇzil. Co je uˇziteˇcn´e,je moˇznost omezovat n´avrhy n´apovˇedy dle urˇcit´ych kategori´ı, coˇzNetbeans nenab´ız´ı. I d´ıky tomu p˚usob´ıkontextov´a n´apovˇeda Eclipsu mnohem pˇrehlednˇeji.

6.2.6 Refaktoring

Moˇznosti refaktoringu jsou u obou prostˇred´ıprakticky stejn´e.Eclipse si nav´ıc udrˇzuje historii refaktoringu jednotliv´ych projekt˚uve workspace.

56 Porovn´an´ıprostˇred´ı Profesion´aln´ıprostˇred´ı

6.2.7 Ladˇen´ı

Obˇeprostˇred´ı umoˇzˇnuj´ı standardn´ı pr´aci s debuggerem jako je krokov´an´ı programu, sledov´an´ıpromˇenn´ych ˇcipˇrid´av´an´ıpodm´ınek. Netbeans nav´ıc ob- sahuje i moˇznost poˇrizovat pˇri ladˇen´ısn´ımky GUI aplikac´ıa zobrazovat in- formace o jednotliv´ych komponent´ach na sn´ımku.

6.2.8 Testov´an´ı

Podpora jednotkov´eho testov´an´ıje standardem vˇetˇsiny profesion´aln´ıch pro- stˇred´ı. Vyuˇz´ıvaj´ıse k tomu frameworky JUnit a TestNG, Eclipse vˇsak ob- sahuje pouze prvn´ızmiˇnovan´y. D´ale se k testov´an´ıvyuˇz´ıvaj´ın´astroje pro v´ykonov´etesty ˇci pro statickou anal´yzu k´odu, jeˇzjsou oba integrovan´ev pro- stˇred´ıNetbeans. Eclipse umoˇzˇnuje prov´adˇetpouze velmi omezenou statickou anal´yzu k´odu.

6.2.9 Verzov´an´ı

Kromˇelok´aln´ıhistorie soubor˚u, kterou si udrˇzuj´ıobˇeprostˇred´ı, jsou stan- dardn´ım vybaven´ım profesion´aln´ıch IDE i n´astroje pro pr´aci s verzovac´ımi syst´emy. Souˇc´ast´ıEclipsu je pouze Git. Netbeans obsahuje i podporu pro verzovac´ısyst´emy Mercurial a Subversion.

6.2.10 N´apovˇedav prostˇred´ı

Eclipse disponuje velmi podrobnou a pˇrehlednou n´apovˇedou integrovanou v prostˇred´ı. V porovn´an´ıs n´ıp˚usob´ın´apovˇeda v prostˇred´ıNetbeans velmi stroze. Netbeans totiˇzudrˇzuje podrobn´etutori´aly, na kter´en´apovˇeda od- kazuje pouze online, coˇzje velk´anev´yhoda pˇri nedostupnosti internetov´eho pˇripojen´ı.

57 Porovn´an´ıprostˇred´ı Profesion´aln´ıprostˇred´ı

6.2.11 Zdroje informac´ı

Veˇsker´einformace lze nal´ezt na webov´ych str´ank´ach samotn´ych organizac´ı, pˇriˇcemˇzponˇekud lepˇs´ıorientace v datech je na str´ank´ach Netbeans. K obˇema prostˇred´ım se v´aˇzei ˇrada kniˇzn´ıch publikac´ı.

6.2.12 Moˇznosti rozˇs´ıˇren´ı

Pro obˇeprostˇred´ıje k dispozici obrovsk´emnoˇzstv´ıplugin˚u, o kter´ejdou roz- ˇs´ıˇrit. Eclipse vˇsak v tomto smˇeru Netbeans v´yraznˇepˇrevyˇsuje. V porovn´an´ı je to zhruba 1600:1000 plugin˚um. Jedin´av´yhoda Netbeans je pouze moˇz- nost omezovat se pˇrihled´an´ırozˇs´ıˇren´ına konkr´etn´ıverzi IDE, coˇzEclipse neumoˇzˇnuje.

6.2.13 Bodov´ehodnocen´ı

Protoˇzese aplikace porovn´avaj´ımezi sebou, obdrˇz´ıvˇzdy jedna z nich v dan´e kategorii maxim´aln´ı poˇcet bod˚u. Druh´apotom obdrˇz´ı odpov´ıdaj´ıc´ı pod´ıl bod˚uvzhledem k tomu, jak moc za sv´ymprotˇejˇskem v dan´ekategorii za- ost´av´a. Jde tedy o stejn´yzp˚usob hodnocen´ıjako u v´yukov´ych prostˇred´ı.

Tabulka 6.2: Porovn´an´ıv´yvojov´ych prostˇred´ı

Krit´erium Eclipse Netbeans Podpora Java technologi´ı 3 5 Reakce prostˇred´ı 5 3 Moˇznosti pˇrizp˚usoben´ı 5 3 Generov´an´ık´odu 2 5 Kontextov´an´apovˇeda 5 3 Refaktoring 5 4 Ladˇen´ı 3 5 Testov´an´ı 2 5 Verzov´an´ı 2 5 N´apovˇeda v prostˇred´ı 5 2 Zdroje informac´ı 4 5 Moˇznosti rozˇs´ıˇren´ı 5 3 Celkem 3,83 4,0

58 Porovn´an´ıprostˇred´ı Profesion´aln´ıprostˇred´ı

6.2.14 Dotazn´ıkov´eˇsetˇren´ı

Pro sbˇerdat byla oslovena skupina 10 respondent˚u, kteˇr´ımaj´ızkuˇsenosti s pouˇz´ıv´an´ım profesion´aln´ıch v´yvojov´ych prostˇred´ı. Vzhledem k anonymitˇe jsou jednotliv´ırespondenti oznaˇceni v tabulk´ach pouze p´ısmenem. Tabulky obsahuj´ıpouze odpovˇedi respondent˚u(1 — nejhorˇs´ı, 5 — nejlepˇs´ı) na dan´a tvrzen´ı. Dotazn´ık byl inspirov´an semestr´aln´ıprac´ına t´ema kvantitativn´ıtes- tov´an´ıdvou v´yvojov´ych prostˇred´ı[63]. Kompletn´ıznˇen´ıdotazn´ıku je moˇzn´e naj´ıt v pˇr´ıloze A.

Tabulka 6.3: Eclipse: v´ysledek dotazn´ıku

Tvrzen´ı/Respondent A B C D E F G H I J Pr˚umˇer T1 4 3 4 4 4 4 4 4 2 4 3,7 T2 4 2 4 5 4 4 5 4 2 4 3,8 T3 3 4 3 4 4 2 4 4 3 5 3,6 T4 2 2 4 4 4 4 4 4 4 5 3,7 T5 5 4 4 4 4 4 4 4 4 4 4,1 T6 5 2 5 4 2 4 3 5 1 5 3,6 T7 3 2 3 4 3 4 4 4 2 5 3,4 T8 2 4 4 5 4 2 4 4 4 5 3,8 T9 5 3 5 5 4 4 4 5 1 5 4,1 Celkov´ypr˚umˇer 3,76

Tabulka 6.4: Netbeans: v´ysledek dotazn´ıku

Tvrzen´ı/Respondent A B C D E F G H I J Pr˚umˇer T1 3 4 2 3 4 5 3 2 4 3 3,3 T2 3 4 3 4 4 5 3 3 4 2 3,5 T3 2 2 2 4 4 5 5 2 2 5 3,3 T4 2 2 4 3 2 4 4 3 4 2 3,0 T5 5 4 4 4 4 4 4 4 4 2 3,9 T6 5 2 4 4 4 4 4 4 1 5 3,7 T7 3 2 2 3 3 3 4 2 2 5 2,9 T8 2 4 3 4 3 4 4 3 4 4 3,5 T9 4 4 3 4 4 5 4 2 1 1 3,2 Celkov´ypr˚umˇer 3,37

59 Porovn´an´ıprostˇred´ı Profesion´aln´ıprostˇred´ı

6.2.15 Shrnut´ı

Jak ukazuje Tabulka 6.2, o nˇeco l´epe z proveden´eho porovn´an´ıdopadl Netbe- ans, a to pˇredevˇs´ım d´ıky mnoˇzstv´ıfunkcionalit, jeˇzintegruje. Eclipse mˇel na- vrch v oblasti intuitivnosti, jelikoˇzp˚usobil propracovanˇejˇs´ım dojmem (vzhled, moˇznosti pˇrizp˚usoben´ı, reakce prostˇred´ı). To se ostatnˇeprojevilo i v dotaz- n´ıkov´em ˇsetˇren´ı, kde dopadl l´epe pr´avˇeEclipse.

Oznaˇcit jedno prostˇred´ıjako lepˇs´ıprakticky nen´ımoˇzn´e.Z´avis´ıpˇredevˇs´ım na dojmu samotn´eho uˇzivatele. Nav´ıc d´ıky mnoˇzstv´ıplugin˚u, kter´epro obˇe prostˇred´ıexistuj´ı, mohou disponovat prakticky totoˇzn´ymi moˇznostmi. Obˇe prostˇred´ıjsou zdarma, proto doporuˇcuji si obˇest´ahnout, vyzkouˇset na men- ˇs´ıch projektech a rozhodnout se dle vlastn´ıho n´azoru. Obdobn´esrovn´an´ı, jako bylo provedeno v t´eto pr´aci, lze pochopitelnˇeprov´est i u dalˇs´ıch prostˇred´ıdo- stupn´ych na trhu.

60 7 Z´avˇer

C´ılem t´eto pr´acebylo objevit seznam existuj´ıc´ıch v´yvojov´ych prostˇred´ıpro jazyk Java, at’ jiˇzzam´yˇslen´ych pro v´yvoj ˇciv´yuku, a n´asledn´eporovn´an´ı vhodn´ych dvojic z oblasti v´yuky a v´yvoje.

Z oblasti v´yuky byla zvolena prostˇred´ıBlueJ a Greenfoot, z oblasti v´yvoje potom prostˇred´ıEclipse a Netbeans. Vˇsechna zvolen´aprostˇred´ıbyla nejprve podrobnˇepops´ana a n´aslednˇeporovn´ana se sv´ym protˇejˇskem dle definova- n´ych krit´eri´ı. U v´yvojov´ych (profesion´aln´ıch) prostˇred´ıje kromˇevlastn´ıho porovn´an´ıpˇripojeno i dotazn´ıkov´eˇsetˇren´ı, kter´emapuje n´azory uˇzivatel˚una tyto aplikace.

Pˇr´ınosem pr´ace je pˇredevˇs´ım popis moˇznost´ıjednotliv´ych aplikac´ıa defino- v´an´ıbod˚u, ve kter´ych jsou aplikace porovn´any se sv´ym konkurentem. D´ıky tomu si m˚uˇzeˇcten´aˇrujasnit, v ˇcemjsou siln´ea slab´estr´anky konkr´etn´ıch aplikac´ı. Dalˇs´ım pˇr´ınosem pr´ace je uveden´yseznam r˚uzn´ych prostˇred´ıpro ja- zyk Java, jelikoˇzjsem ˇz´adn´ykompletn´ıseznam nenalezl. Seznam v t´eto pr´aci ˇc´ıt´at´emˇeˇrdvˇedes´ıtky aplikac´ı, nen´ıovˇsemvylouˇcen´e,ˇzeexistuj´ıdalˇs´ı.

Pro obdobn´epr´ace bych doporuˇcil omezit se pouze na jednu oblast zamˇeˇren´ı aplikac´ı, tedy pouze na v´yvoj ˇciv´yuku. To by umoˇznilo hloubˇeji prozkoumat jednotliv´eaplikace ˇci je porovnat s v´ıce konkurenty z dan´eoblasti. Rovnˇeˇz by bylo moˇzn´evytvoˇrit v dotazn´ıc´ıch konkr´etn´ısc´en´aˇrna konkr´etn´ım pro- jektu, kter´yby bylo nutn´esplnit. D´ıky tomu by bylo moˇzn´emˇeˇrit i dobu vykon´av´an´ı´ukol˚uv jednotliv´ych aplikac´ıch.

61 Pˇrehled zkratek

API (Application Programming Interface) — rozhran´ı pro programov´an´ı aplikac´ı

IDE (Integrated Development Enviroment) — pojem oznaˇcuj´ıc´ı v´yvojov´e prostˇred´ı

FAQ (Frequently Asked Questions) — ˇcasto kladen´eot´azky

GUI (Graphical User Interface) — grafick´euˇzivatelsk´erozhran´ıaplikac´ı

Java EE (Enterprise Edition) — umoˇzˇnuje v´yvoj podnikov´ych aplikac´ı

Java FX (Effects) — umoˇzˇnuje v´yvoj bohat´ych grafick´ych aplikac´ı

Java ME (Micro Editon) — umoˇzˇnuje v´yvoj mobiln´ıch aplikac´ı

Java SE (Standard Edition) — standardn´ıedice jazyka Java

JDK (Java Development Kit) — n´astroje umoˇzˇnuj´ıc´ıv´yvoj aplikac´ı

JRE (Java Runtime Enviroment) — prostˇred´ı Javy umoˇzˇnuj´ıc´ı bˇehapli- kac´ı

JVM (Java Virtual Machine) — virtu´aln´ıstroj vykon´avaj´ıc´ıbajtk´od

OOP (Object-oriented Programming) — objektovˇeorientovan´eprogramo- v´an´ı

RCP (Rich Client Platform) — sada modul˚u, kter´elze vyuˇz´ıt jako z´aklad klientsk´ych aplikac´ı

62 Seznam obr´azk˚u

3.1 Pˇr´ıklad zv´yraznˇen´ısyntaxe jazyka Java ...... 6

3.2 Kontextov´an´apovˇeda v prostˇred´ıEclipse ...... 6

3.3 Pˇr´ıklad dokumentaˇcn´ıho koment´aˇre v jazyce Java [15] . . . . . 8

3.4 Pˇr´ıklad ladˇen´ıprogramu v Eclipse ...... 9

5.1 Eclipse: nastaven´ıvlastnost´ıprostˇred´ı...... 21

5.2 Eclipse: moˇznosti perspektiv ...... 22

5.3 Eclipse: externalizace ˇretˇezc˚u ...... 23

5.4 Eclipse: omezen´ın´apovˇedy pouze na ˇsablony ...... 24

5.5 Eclipse: k´odˇsablony pro slouˇcen´ıpol´ı ...... 25

5.6 Eclipse: porovn´av´an´ık´odu s lok´aln´ıhistori´ı...... 25

5.7 Eclipse: moˇznosti doinstalov´an´ırozˇs´ıˇren´ı ...... 27

5.8 Eclipse: historie instalovan´ych plugin˚u ...... 28

5.9 Eclipse: n´apovˇeda v prostˇred´ı ...... 29

5.10 Netbeans: instalaˇcn´ıbal´ıky [52] ...... 30

5.11 Netbeans:konfigurace prostˇred´ı...... 31

5.12 Netbeans: moˇznosti doplnˇen´ık´odov´ych blok˚u...... 32

63 SEZNAM OBRAZK´ U˚ SEZNAM OBRAZK´ U˚

5.13 Netbeans: vytvoˇren´ısouboru z vlastn´ıˇsablony ...... 32

5.14 Netbeans: statick´aanal´yza k´odu a refaktoring ...... 33

5.15 Netbeans: integrovan´yGUI builder ...... 34

5.16 Netbeans: integrovan´yprofiler ...... 35

5.17 Netbeans: spr´ava plugin˚uv prostˇred´ı ...... 36

5.18 Netbeans: n´apovˇeda v prostˇred´ı ...... 37

5.19 Netbeans: vyhled´av´an´ıv n´apovˇedˇe ...... 38

5.20 BlueJ: diagram tˇr´ıd ...... 40

5.21 BlueJ: editor obsaˇzen´yv prostˇred´ı...... 41

5.22 BlueJ: vytvoˇren´ıinstance objektu ...... 41

5.23 BlueJ: prohl´ıˇzen´ıpromˇenn´ych instance ...... 42

5.24 BlueJ: pouˇzit´ıpˇr´ıkazov´eˇr´adky ...... 42

5.25 BlueJ: ladˇen´ıprogram˚u...... 43

5.26 BlueJ: v´ysledky JUnit testov´an´ı ...... 43

5.27 Greenfoot: hlavn´ıokno aplikace ...... 46

5.28 Greenfoot: editor ...... 47

5.29 Greenfoot: interaktivn´ıpr´ace s objekty ...... 48

5.30 Greenfoot: export aplikace ...... 49

64 Seznam tabulek

4.1 Licence pro verzi Ultimate Edition [25] ...... 12

4.2 Ceny produkt˚uJCreator [30] ...... 14

4.3 Verze prostˇred´ıJBuilder ...... 15

6.1 Porovn´an´ıv´yukov´ych prostˇred´ı ...... 54

6.2 Porovn´an´ıv´yvojov´ych prostˇred´ı ...... 58

6.3 Eclipse: v´ysledek dotazn´ıku ...... 59

6.4 Netbeans: v´ysledek dotazn´ıku ...... 59

A.1 Tabulka pro uˇzivatelsk´eodpovˇedi ...... 73

65 Literatura

[1] Herout, Pavel. Uˇcebnice jazyka Java. 3., rozˇs.vyd. [i.e. 4. vyd.]. Cesk´eˇ Budˇejovice: Kopp, 2008, 381 s. ISBN 978-80-7232-355-5. [2] Novotn´y, Ludˇek. Historie a v´yvoj Jazyka Java [on- line]. Praha: 2003 [cit. 2015-11-2]. Dostupn´e z: http://www.fi.muni.cz/usr/jkucera/pv109/2003p/xnovotn8.htm. [3] Difference between JDK, JRE and JVM. JavaTpoint [online]. [cit. 2015- 11-5]. Dostupn´ez: http://www.javatpoint.com/difference-between-jdk- jre-and-jvm. [4] Use Notepad and Command Prompt For Java program- ming. Instructables [online]. [cit. 2015-11-5]. Dostupn´e z: http://www.instructables.com/id/Use-Notepad-and-Command- Prompt-For-Java-programmin/?ALLSTEPS. [5] Best Free Programming Editor 2015-03-05 [online]. [cit. 2015-11-5]. Dostupn´ez: http://www.techsupportalert.com/best-free-programming- editor.htm. [6] Integrated development environment (IDE) de- finition [online]. [cit. 2015-11-5]. Dostupn´e z: http://searchsoftwarequality.techtarget.com/definition/integrated- development-environment. [7] What is RCP and why should I care? [online]. Modular Mind [cit. 2016- 03-31]. Dostupn´ez: http://www.modumind.com/what-is-rcp/. [8] Rich Client Platform. Eclipse [online]. 2015-10-14 [cit. 2016-03-31]. Do- stupn´ez: https://wiki.eclipse.org/Rich Client Platform. [9] Adres´aˇrov´astruktura projekt˚uv Javˇe [online]. 2007-04-02 [cit. 2015-11- 5]. Dostupn´ez: http://java.vse.cz/SVN/JavaAdresare.

66 LITERATURA LITERATURA

[10] Java-Packages. Tutorialspoint [online]. [cit. 2015-11-17]. Dostupn´ez: http://www.tutorialspoint.com/java/java packages.htm.

[11] Pˇrehled font˚us pevnou ˇs´ıˇrkou. AbcLinuxu [online]. 2010-8-31 [cit. 2015- 11-17]. Dostupn´e z: http://www.abclinuxu.cz/clanky/prehled-fontu-s- pevnou-sirkou.

[12] Eclipse efektivnˇe– Content Assist [online]. 2009-09-09 [cit. 2015-11-17]. Dostupn´ez: http://www.aspectworks.com/2009/09/eclipse-efektivne-1- content-assist.

[13] FORD, Jerry Lee. Microsoft 2008 express programming for the absolute beginner. Australia: Course Technology, c2009. ISBN 978- 1-59863-900-1.

[14] Common syntax errors in Java [online]. [cit. 2015-11-17]. Dostupn´ez: http://northern.lkdsb.net/Kedwell/ICS4U/Java/intro/Syntax

[15] Javadoc tutorial [online]. [cit. 2015-11-23]. Dostupn´ez: https:// stu- dents.cs.byu.edu/ cs240ta/fall2012/tutorials/javadoctutorial.html.

[16] Debugging Your First Java Application. JetBrains [online]. [cit. 2015-11- 23]. Dostupn´ez: https://www.jetbrains.com/idea/help/debugging-your- first-java-application.html.

[17] KING, Tim. Twelve Benefits of Writing Unit Tests First [online]. [cit. 2015-11-23]. Dostupn´e z: http://sd.jtimothyking.com/2006/07/11/twelve-benefits-of-writing- unit-tests-first/.

[18] N´astroje pro podporu v´yvojena platformˇeJava [online]. [cit. 2015-11-23]. Dostupn´ez: http://www.skoumal.net/cs/nastroje-pro-podporu-vyvoje- na-platforme-java/.

[19] Distribuovan´e verzovac´ı syst´emy – ´uvod (1). AbcLi- nuxu [online]. 2011-1-25 [cit. 2016-03-31]. Dostupn´e z: http://www.abclinuxu.cz/clanky/distribuovane-verzovaci-systemy- uvod-1.

[20] 11 BEST JAVA IDES FOR JAVA . Co- decall [online]. 2014-11-12 [cit. 2015-12-1]. Dostupn´e z: http://codecall.net/2014/11/12/11-best-desktop-web-ides-java- programmers/.

67 LITERATURA LITERATURA

[21] 18 Best Free Java IDE Software. List of Freeware [online]. [cit. 2015- 12-1]. Dostupn´e z: http://listoffreeware.com/list-of-best-free-java-ide- software/.

[22] Nejlepˇs´ı n´astroje na programov´an´ı v Javˇe. Compu- terWorld [online]. 2011-03-14 [cit. 2015-12-1]. Dostupn´e z: http://computerworld.cz/vyvoj/nejlepsi-nastroje-na-programovani- v-jave-42939.

[23] NetBeans IDE - The Smarter and Faster Way to Code. Netbeans [online]. [cit. 2015-12-1]. Dostupn´e z: https://netbeans.org/features/index.html.

[24] IntelliJ IDEA: The Most Intelligent Java IDE. JetBrains [online]. [cit. 2016-02-23]. Dostupn´e z: https://www.jetbrains.com/idea/#chooseYourEdition.

[25] Available Subscription Options. JetBrains Store [online]. [cit. 2016-02-23]. Dostupn´e z: https://www.jetbrains.com/store- /terms/comparison.html#LicenseComparison.

[26] What is the IntelliJ Platform?. JetBra- ins [online]. [cit. 2016-03-02]. Dostupn´e z: http://www.jetbrains.org/pages/viewpage.action?pageId=983889.

[27] About BlueJ. BlueJ [online]. [cit. 2015-12-5]. Dostupn´e z: http://www.bluej.org/about.html.

[28] Android Studio - nov´ev´yvojov´eprostˇred´ı [online]. 2013-11-04 [cit. 2015- 12-5]. Dostupn´e z: https://www.zdrojak.cz/clanky/android-studio- nove-vyvojove-prostredi/.

[29] JEMEROV, Dmitry. IntelliJ IDEA and Android Studio FAQ. In: IntelliJ Idea Blog [online]. 2013 [cit. 2016-02-23]. Dostupn´e z: http://blog.jetbrains.com/idea/2013/05/intellij-idea-and-android- studio-faq/.

[30] JCreator [online]. [cit. 2015-12-10]. Dostupn´e z: http://www.jcreator.com/.

[31] JBuilder R 2008 R2 Product Editions [online]. [cit. 2016-02-26]. Dostupn´ez: http://www.embarcadero.com/products/jbuilder/product- editions.

68 LITERATURA LITERATURA

[32] SnapCode - Building apps is a snap [online]. [cit. 2015-12-10]. Dostupn´e z: http://www.reportmill.com/snap/.

[33] NaviCoder IDE for Java Lite. Softpedia [online]. [cit. 2016-02- 11]. Dostupn´ez: http://www.softpedia.com/get/Programming/Other- Programming-Files/NaviCoder-IDE-for-Java-Lite.shtml.

[34] About jGRASP [online]. [cit. 2016-02-11]. Dostupn´e z: http://www.jgrasp.org/.

[35] About DrJava [online]. [cit. 2016-02-11]. Dostupn´ez: http://drjava.org/.

[36] About Greenfoot Greenfoot [online]. [cit. 2016-02-11]. Dostupn´e z: http://www.greenfoot.org/overview.

[37] SkyIDE. Softpedia [online]. [cit. 2016-02-11]. Dostupn´e z: http://www.softpedia.com/get/Programming/Coding-languages- Compilers/SkyIDE.shtml.

[38] Asterix IDE . Sourceforge [online]. [cit. 2016-02-11]. Dostupn´e z: https://sourceforge.net/projects/asterixide/.

[39] tIDE: have tIDE on your sIDE !. tIDE [online]. [cit. 2016-02-11]. Do- stupn´ez: http://tide.olympe.in/.

[40] Zeus IDE: A powerful, language neutral ’s deve- lopment environment [online]. [cit. 2016-02-11]. Dostupn´e z: http://www.zeusedit.com/index.html.

[41] Jenuity 2.4. Software informer [online]. [cit. 2016-02-11]. Dostupn´ez: http://jenuity.software.informer.com/2.4/.

[42] JotAzul: Object Oriented Java IDE [online]. [cit. 2016-02-11]. Dostupn´e z: http://jotazul.sourceforge.net/.

[43] About the Eclipse Foundation. Eclipse [online]. [cit. 2016-03-19]. Do- stupn´ez: https://eclipse.org/org/.

[44] Commercial Rich client platform (RCP) applicati- ons. Eclipse [online]. [cit. 2016-03-19]. Dostupn´e z: https://eclipse.org/community/rcpcp.php.

[45] Open Source Rich client platform (RCP) applications. Eclipse [online]. [cit. 2016-03-19]. Dostupn´ez: https://eclipse.org/community/rcpos.php.

69 LITERATURA LITERATURA

[46] BURNETTE, Ed. Eclipse IDE: pocket guide. 1st ed. Sebastopol, CA: O’Reilly, c2005. ISBN 05-961-0065-5.

[47] VOGEL, Lars. Eclipse IDE: Java programming, debugging, unit testing, task management and Git version control with Eclipse. 3rd ed. Leipzig: Vogella, 2013. ISBN 39-437-4704-2.

[48] A Brief History of NetBeans. Netbeans [online]. [cit. 2016-03-19]. Do- stupn´ez: https://netbeans.org/about/history.html.

[49] The NetBeans Platform. Netbeans [online]. [cit. 2016-03-19]. Dostupn´e z: https://netbeans.org/features/platform/index.html.

[50] NetBeans Platform Showcase. Netbeans [online]. 2016-03 [cit. 2016-03- 19]. Dostupn´ez: https://platform.netbeans.org/screenshots.html.

[51] NetBeans IDE Dual License Header and License Notice. Netbe- ans [online]. [cit. 2016-03-19]. Dostupn´ez: https://netbeans.org/cddl- gplv2.html.

[52] NetBeans IDE 8.1 Download. Netbeans [online]. [cit. 2016-05-03]. Do- stupn´ez: https://netbeans.org/downloads/.

[53] NetBeans IDE Features: Versioning. Netbeans [online]. [cit. 2016-03-26]. Dostupn´ez: https://netbeans.org/features/ide/versioning.html.

[54] Welcome to the NetBeans Plugin Portal: Plugins cata- logue. Netbeans [online]. [cit. 2016-03-27]. Dostupn´e z: http://plugins.netbeans.org/PluginPortal/.

[55] WIELENGA, Geertjan. Beginning Netbeans IDE: For Java Developers. Apress, 2015. ISBN 978-1-4842-1258-5.

[56] BOCK,¨ Heiko. Platforma NetBeans: podrobn´ypr˚uvodce program´atora. Vyd. 1. Brno: Computer Press, 2010. ISBN 978-80-251-3116-9.

[57] Blue: What is it? [online]. 1999-03-19 [cit. 2016-04-01]. Dostupn´ez: https://www.cs.kent.ac.uk/people/staff/mik/blue/.

[58] BlueJ - The interactive Java environment: BLUEJ DO- CUMENTATION [online]. [cit. 2016-04-04]. Dostupn´e z: http://www.bluej.org/doc/documentation.html.

[59] BlueJ Extensions: Installing extensions. BlueJ [online]. [cit. 2016-04-04]. Dostupn´ez: http://www.bluej.org/extensions/extensions.html.

70 LITERATURA LITERATURA

[60] BARNES, David J a Michael KOLLING.¨ Objects first with Java: a practical introduction using BlueJ. 5th ed. Boston: Pearson, c2012. ISBN 01-324-9266-0.

[61] Greenfoot: Documentation. Greenfoot [online]. [cit. 2016-04-4]. Dostupn´e z: http://www.greenfoot.org/doc.

[62] KOLLING,¨ Michael. Introduction to programming with greenfoot object- oriented programming in java with games and simulations. Second edi- tion. Boston: Pearson, 2016. ISBN 01-340-5429-6.

[63] Kvantitativn´ı testov´an´ı dvou v´yvojov´ych pro- stˇred´ı [online]. [cit. 2016-04-20]. Dostupn´e z: http://hcisemestralky.felk.cvut.cz/system/mems/7629/original/B1.pdf. Semestr´aln´ıpr´ace. Cesk´evysok´euˇcen´ıtechnick´evˇ Praze.

71 A Dotazn´ık

Porovn´an´ı v´yvojov´ych prostˇred´ı Eclipse a Netbeans

N´asleduj´ıc´ıdotazn´ık slouˇz´ıjako podklad pro bakal´aˇrkou pr´aci porovn´avaj´ıc´ı v´yvojov´aprostˇred´ıEclipse a Netbeans. Pˇred vyplnˇen´ım dotazn´ıku je nutn´e vyzkouˇsetsi, at’ jiˇzna vlastn´ıch nebo uk´azkov´ych projektech, nˇekolik z´aklad- n´ıch operac´ıv obou porovn´avan´ych prostˇred´ıch:

• vygenerov´an´ıgetter˚u/setter˚u, vygenerov´an´ımetody toString(),

• vyzkouˇsen´ıkontextov´en´apovˇedy a debuggeru,

• prozkoum´an´ımoˇznost´ırefaktoringu,

• prozkoum´an´ın´apovˇedy v prostˇred´ı,

• doinstalov´an´ılibovoln´eho pluginu.

A d´ale odpovˇedˇetna nˇekolik tvrzen´ı: T1: Prostˇred´ıp˚usob´ıvelmi pˇr´ıvˇetivˇe. T2: S prostˇred´ım se snadno pracuje. T3: Prostˇred´ıreaguje velmi rychle. T4: Potˇrebn´efunkcionality jsem snadno naˇsel. T5: Funkcionality v prostˇred´ıjsou na vysok´e´urovni. T6: Integrovan´efunkcionality mi plnˇedostaˇcuj´ı. T7: N´apovˇeda v prostˇred´ıje dobˇre zpracov´ana. T8: Pro ovl´ad´an´ıprostˇred´ıbych nepotˇreboval pˇr´ıliˇsˇcasu. T9: Dovedu si pˇredstavit pouˇz´ıvat toto prostˇred´ıˇcasto.

Pro odpovˇedi na tato tvrzen´ıvyplˇnte pˇriloˇzenou tabulku a to n´asleduj´ıc´ım bodov´an´ım: 5 — Souhlas´ım 4 — Sp´ıˇsesouhlas´ım 3 — Nev´ım 2 — Sp´ıˇsenesouhlas´ım 1 — Nesouhlas´ım

72 Dotazn´ık

Tabulka A.1: Tabulka pro uˇzivatelsk´eodpovˇedi

IDE/Tvrzen´ı T1 T2 T3 T4 T5 T6 T7 T8 T9 Eclipse Netbeans

73