Jaroslav Kavalec
14.12.2011

IntelliJ Idea pro vývoj v Javě



Většina lidí si vývoj v Javě spojí s jedním ze dvou nejpoužívanějších IDE – Eclipse a Netbeans. Třetí, donedávna čistě komerční IDE je často neprávem přehlíženo. Před pár dny byla uvolněna nová verze IDE IntelliJ Idea s číslem 11. IntelliJ Idea (dále jen Idea), je vyvíjena firmou Jet Brains, která se zaměřuje na vývoj špičkových vývojových nástrojů pro různé programovací jazyky, mimo jiné IDE pro Ruby, Python nebo Objective C. V článku se budu snažit shrnout věci, které jsem si oblíbil a chybí nebo jsou v horším provedení u konkurence (především Eclipse).

Idea je dodávána ve dvou edicích – Ultimate a Comunity, která je k dispozici zdarma. Comunity edici chybí pluginy na vývoj Java enterprise aplikací postavených na Springu, Hibernate, JPA, EJB, GWT a další a proto se v článku budu zabývat Ultimate edicí.

Enterprise vývoj

Idea má ve své Ultimate edici bohatou sadu pluginů podporujíchích vývoj enterprise aplikací běžících na široké škále aplikačních serverů, využívajících mnoho frameworků. Pojďme si tedy pžiblížit nějaké nástroje, kterí nám dá IDE k dispozici.

Spring a Hibernate

Idea si velmi dobře rozumí se Springem. Dokáže si sestavit model celé aplikace, vygenerovat diagram závislostí jednotlivých beanů, a jednotlive chyby, které se třeba v Eclipse zjistí až v runtime, se projeví okamžitě při psaní chybného kódu. Toto funguje jak s autowiringem, tak se Spring AOP. Dále je k dispozici mnoho dalších pomůcek jako generování kódu, podpora pro snadnou editaci xml konfuguračních souborů nebo snadný import beanů přímo do testů, nebo vygenerování diagramu který přehledně zobrazí závislosti jednotlivých beanů nakonfigurovaných Spring kontejnerem.

Třída je na outline editoru oanotována ikonkou značící, že se jedná o komponentu, při kliku na ikonu je možné se přesunout do konfiguračního xml souboru s deklarací komponenty. Další anotace značí komponenty, které jsou autowirovány Spring kontejnerem do komponenty. U komponenty TwitterServiceImpl byla odebrána anotace @Service, takže není registrována v kontejneru a je na první pohled vidět že něco není v pořádku, jelikož chybí ikona. Podpora Hibernate a JPA je také na velmi vysoké úrovni. Idea opět sestaví model doménových tříd v aplikaci, dokáže z něj vygenerovat i ER diagram, s modelem jde dále pracovat. Velmi užitečné je, že má Idea podporu pro editaci Hibernate i JPA dotazů přímo v Java kódu, takže se jakákoli chyba v dotazech projevuje okamžitě a také je možné využít autocompletition jak pro jednotlivé entity tak pro různé funkce dotazovacího jazyka.

Properties a lokalizace

Velmi příjemná je práce s lokalizavanými zprávami a properties soubory obecně. Lokalizované zprávy mají speciální editor, v němž se všechny zprávy zobrazí pro editaci současně, v případě že zapomenete překlad tak je položka s chybějícím textem zvýrazněna. Idea dokonce vyznačí varování v případě, že nějakou property nelze najít v property souborech aplikace, takže není nutné čekat než se taková chyba projeví v runtime. Velmi dobrá věc kterou je možné využít je propisování properties přímo do Java kódu.

 

Pohled na nastavení IDE – panel s inspekcemi

 

Vývoj webu

IntelliJ si velmi dobře dokáže poradit s HTML a CSS, a také velmi dobře si rozumí s JavaScriptem a mnoha JS knihovnami. Výborná je například podpora jQuery, různých technologií z rodiny HTML5 či pokročilých možností CSS3 a to včetně vendor prefixů. Pro příznivce CSS pre-procesorů je tu v základu podpora LESS, SASS a SCSS. Dokonce se prodává i samostatná verze, určená jen pro vývoj webu, bez podpory Javy, což svědčí o tom, že tato funkčnost není jen navíc ale, že dokáže stát i sama o sobě. K dispozici je i velmi dobrý JavaScript debugger. Java programátoři jistě ocení pohodlnou práci s JSP stránkami.

Editace textu

Toto je oblast v které Idea vyniká. Idea nabízí mnoho detailů které když se sečtou, tak vytvoří velmi silný nástroj na editaci textu: – Autocompletition – jedna z důležitých vlastností moderních IDE, Idea má velmi mnoho možností jak doplňovat text i podle částí slov, podle prvních písmen camel-case identifikátorů, a také jsou možnosti nabízeny podle kontextu, v němž se nachází právě editovaný kód, takže většinou je nejvhodnější možnost jako první. – Navigace – ve větších projektech je určitě důležité se velmi rychle navigovat v textu i mezi soubory. Idea má nepřeberné množství různých metod navigace jako je hledaní souborů, tříd, nebo symbolů. přecházení mezi třídou a testem k ní náležícímu, mezi rozhraními a implementacemi, navigace v hierarchii… – Oblíbené položky a skupiny oblíbených položek – Inkrementální výběr textu kdy se s každým výběrem rozšíří vybraný text obecně ve formátu slovo->camelCase->identifikátor->výraz->blok kódu->metoda – Rozeznání camel case – Obalení vybraného textu párovým symbolem – Velmi dobře zpracované šablony na vkládání často používaných výrazů (opravdu značné vylepšení proti Eclipse, podrobnějčí popis je nad rámec článku) – XML editace – velmi dobře funguje a editování xml už není utrpení (tady srovnávám s Eclipsem), navíc je možné použít různé transformace dokumentu, a využít vylepšenou podporu pro editaci specifických XML jako například Spring konfigurace – Kontrola slov slovníkem – v praxi velmi užitečná věc, okamžitě se tak odhalí překlepy jak v kódu, tak v komentářích, čímž se předejde zbytečným opravám v budoucnu – Zalamování řádků, na první pohled nevýznamná ale v praxi velmi užitečná funkčnost, zalamovat je možné jak v editoru tak i v konzoli (konzole nabízí navíc folding a filtrování textu) – navigace v souborech v kódu – Idea ví o všech souborech v projektu, když se třeba v kódu odkazujete na soubor, který neexistuje tak vás na to upozorní.

Analýza kódu

IDE obsahuje velmi kvalitní nástroj na analýzu kódu – k dispozici je velmi rozsáhlá knihovna inspekcí, které je možno vypnout a zapnout, dle potřeby týmu. IDE pak vyznačí podezřelý kód v outline editoru. Je tak možné být varován před kódem, který povede ke špatnému výkonu, mrtvým kódem, místům, která mají potenciál způsobit NullPointerException a mnoho dalších problémů.

JavaDoc

Idea si velmi dobře vede i v práci s JavaDocem, dokáže generovat kostry JavaDoců, hledat chyby v pravopisu, ale hlavně upozorní na chyby, které vzniknou obvykle když programátor změní kód, ale zapomene provést náležité změny i v JavaDocu. Je to velmi pohodlné, a hlavně kód vypadá mnohem profesionálněji.

Refaktoring a transformace kódu

Idea má k dispozici mnoho různých refaktoringů, které pomohou zvýšit kvalitu kódu, bez zbytečných komplikací. Velmi zajímavou vlastností jsou tzv Intention actions. Jedná se o akce, které je možné spustit v určitém kontextu, na určitém kódu. Díky tomu lze například v testech transformovat boolean výrazy do asercí, optimalizovat logické výrazy, nahradit kontrolní struktury za jiné, přesunout inicializátor stojící mimo konstruktor do konstruktoru, uzavřít nejbližší výraz po !if! do závorek a velmi velké množství dalších věcí. Navíc v případě, že je možné na kódu nějakou akci vykonat, tak Idea zobrazí náležitou ikonu.

 

Vyznačení inspekcí, chyb v JavaDocu, také taby jsou značeny dle toho jedná-li se o test, nový či změněný soubor atd. V pravém panelu je naznačeno použití intention akce.

 

Verzovací systémy a Maven

Idea má konzistentní systém pro práci s různými verzovacími systémy, takže přecházet například mezi SVN a Gitem není žádný problém. Změny, které se provádějí jsou strukturovány do change setů, které je možné v případě potřeby schovat (shelve changes). Celkově je práce verzovacími systémy velmi pohodlná a komfortní, velmi dobře je řešeno i mergování souborů s  pěkně vyřešenou grafickou navigací. Velmi pěkně je řešeno načení změn přímo v outline editoru, včetně snadného vyvolání předchozích verzí. IDE má velmi dobrou podporu Mavenu, rozjet nový projekt z pomu je hračka. Z Maven panelu lze spouštět jednotlivé Maven goals, prohlížet závislosti a pluginy. Je možné jednoduše přepnout spouštění testu toggle tlačítkem. Groovy – nemám zkušenost, ale kolegové si chváli velmi dobrou podporu Groovy.

Nevýhody

Kromě ceny je snad jediná částečná nevýhoda oproti Eclipsu menší množství dostupných pluginů. Na druhou stranu, v základním balíku IntelliJ je jich obrovské množství a jsou bezproblémové – fungují tak jak mají, takže tato nevýhoda není tak vážná. Mezi nejzajímavější pluginy patří: – IdeaVim – přidává editoru mnoho funkcí velmi efektivního Vim editoru – Scala plugin – jednoznačně nejlepší IDE pro Scalu – Clojure plugin – platí to stejné co u Scala pluginu Celkově je velmi těžké hledat na tomto IDE nějaké nevýhody. Tým JetBrains jde velmi tvrdě za vývojem nejlepších vývojových nástrojů, a i když Ultimate verze jejich Java IDE není zdarma jako ostatní velká Java IDE, určitě stojí za zamyšlení, je možné vyzkoušet Comunity edition, která je open-source a zdarma, a nebo Ultimate, u které je trial verze na 30 dní. Neznám nikoho kdo zkusil IntelliJ Ideu a poté se dobrovolně vrátil k Eclipse, je tu hromada malých detailů, které však dohromady přispívají k mnohem příjemnější práci, hlavě dokáže odhalit mnoho chyb, které se při práci s jinými nástroji projeví až při spuštění aplikace. Do článku se všechny možnosti, které Idea přináší nevlezou, k dalšímu studování doporučuji navštívit stránky JetBrains, k dispozici je kompletní seznam vlastností, mapy klávesových zkratek, množství video tutoriálů a dalších informací.

Vaše emailová adresa nebude zveřejněna

Komentáře

Děkujeme za váš komentář
Další
  • chalimartines

    Používáte ideu v aspectworks?

  • Luboš Račanský

    to chalimartines: Preferované IDE je Eclipse, respektive STS. Nadšenci jako já si Ideu koupili ze svého a teď se ji snaží ve firmě propagovat :-) Zatím jsme ve výrazné menšině, ale kdo ví...

  • Anonym

    misto ideaVim doporucuji pouzit external tool (Settings) a moznost editovat soubor ve vimu (mimo Ideau). S tim pluginem jsou dost problemy - ono to funguje i v dialogovych oknech - coz je hruza :-). Co se me osvedcilo jako plugin je Bashsupport a Nativeneighbourhood

  • Vojtěch Krása

    S používání IntelliJ v týmu, kde je standard Eclipse, bývá problém odlišné formátování kódu, takže doporučuji svůj plugin "Eclipse Code Formatter" (zatím řeší pouze formátování java kódu) :-)

  • Dan K.

    Jsem dalek obhajoby Eclipse, ale pokud jde o NetBeans, mam porad problem najit v Idea ty 4.000 Kc... plno nice to have features, to jo. Ale NetBeans 7 je uz velmi solidni IDE, ktere mi pro Javu EE / Spring naprosto vyhovuje. A pokud jde o cenu pro firmy, pak at se na me panove nezlobi, ale trochu to prehnali. Aby firma dala 500 USD za licenci na IDE, kdyz ostatni jsou free, musela by to byt absolutni bomba, bez ktere nelze slusne vyvijet. A to Idea proste a jednoduse neni.

  • Jaroslav Kavalec

    To už záleží na každém, jak se rozhodne. S Netbeans jsem nesrovnával protože je znám spíše okrajově, a vím, že se s každou verzí výrazně zlepšují. Hlavně je to o detailech, IntelliJ je v mnoha maličkostech napřed, a člověk si na ně velmi rychle zvykne.

  • Ladislav Thon

    > musela by to byt absolutni bomba, bez ktere nelze slusne vyvijet. A to Idea proste a jednoduse neni. Troufal bych si nesouhlasit. Kolegové pracují v NetBeans a když jsem to chvíli zkoušel, připadal jsem si jako bezruký a beznohý dohromady :-)

  • Petr Šmíd

    Na Idei je krásné to, že všechno je odladěné a funguje. A že je toho opravdu hodně.

  • boris

    ako je to s integraciou websphere? ide to vobec? zatial ficim na RAD od IBM, ale aj ked je to postavene nad eclipsom, je to strasny hnoj

    1. Jaroslav Kavalec

      S Websphere nemam zkusenosti, kazdopadne, je mezi podporovanymi servery, a prace se vsemi servery je j Idee konzistentni. Po instalaci IDE si uzivatel vybere, ktere serevery chce pouzivat, dale je nastaveni jednotlivych serveru velmi jednoduche.

  • Petr

    Boris: vzdaleny debug aplikace na Websphere neni pro Ideu problem

  • Cyril

    uz dvakrat jsem se pokousel prejit z Eclipse na Ideu, ale oba pokusy byly neuspesne a vzdy po dni jsem se rad vratil k Eclipse. Mozna nekdy zkusim tu 11ku.

    1. Jaroslav Kavalec

      Mozna by to chtelo zamerit se na pokus o prejiti intenzivneji. Pokud uz Eclipse pouzivate dlouho tak se neda zvyseni efektiviti ocekavat ze dne na den. Minimalne tyden az dva to zabere nez clovek pozna nejake realne zvyseni efektivity. Ze zacatku se da spise ocekavat prace pomalejsi, ale tak je to u vseho, Pokud programovani nehodlate za mesic povesit na hrebik urcite IDEA za nauceni stoji.

  • Honza

    Mě k přechodu na Ideu "donutila" lepší a levnější verze IDE pro vývoj v Adobe Flexu. Tím pádem jsem měl dvojí motivaci vyzkoušet Ideu i pro vývoj v Javě místo Eclipsy. Po týdnu jsem pak u ní zůstal úplně. V Eclipse mě stále štvaly problémy s editací XML souborů a podivnej WTP plugin. V idei jsem zatím na nic extra otravného nefungujícího nenarazil. V práci používame napůl Eclipsu a Ideu.

  • radek

    No, ja jsem asi pul roku vyvijel pod IDEou a pak jsem se zase vratil zpatky k Eclipse... Sice to vizualne vypada lip, ale o moc lepsi, nez Eclipsa mi neprisla. Navic mi IDEA bezela o dost pomaleji...