Nová verze se nese ve znamení vyšší produktivity, což je mimo jiné hlavní poznávací znak tohoto vyspělého produktu. Svůj článek začnu jedním detailem. Právě detaily se mi na tomto produktu líbí - IDEA je nevyčerpatelná studnice různých zlepšováků, vychytávek a pomůcek. Kolekce programátoři používají často, konkrétně rozhraní List je snad nejvíce používané (nepočítal jsem to přesně). Jakmile uvedu tuto třídu ve zdrojovém kódu poprvé, IDEA nabídne možnost automatického importu. Až dosud se v nabízeném seznamu vyskytovala kromě třídy java.util.List také o mnoho méně často používaná (řekl bych již téměř nepoužívaná) java.awt.List. Bohužel díky lexikografickému třídění je na prvním místě, takže se člověk často "uklepl" a zavedl import na třídu, kterou nechtěl. Pak se musel vracet a vše opravit. V nové verzi se vám to už nestane. Můžete vyřadit libovolnou třídu (vlastní, knihovní nebo JDK), která vám doslova pila krev, a to pohodlně přes kontextové menu během vteřiny. Žádné velké klikání myší v nastavení - takhle to mají uživatelé prostředí IDEA rádi.
Doplňování kódu dostalo do vínku nový rozšířený režim. Po druhém stisku horké klávesy [Ctrl+mezerník] dostáváte předloženy také metody či členské proměnné v kontextu neviditelné, což je užitečné. Já sám například zapomenu zadat klíčové slovo public a poté se divím, kde že se mi metoda zatoulala. Po druhém stisku [Ctrl+mezerník] ji však již najdu, zapíšu a později opravím. IDEA zobrazuje také další zajímavé členské proměnné nebo metody, které jsou dostupné jinými způsoby.
Že má nová verze další nové inspekce asi nemá cenu rozepisovat. IntelliJ IDEA se svoji statickou analýzou dokáže poradit či nabídnout velké množství návrhů, které se při psaní kódu hodí. Nejsou to jen varování nebo chybová hlášení, ale také zlepšení čitelnosti či bezpečnosti kódu nebo různé optimalizace. Nové obarvování pozadí v seznamech tříd podle typu daného záznamu je užitečnou novinkou, která stojí za zmínku. Snadno tak rozpoznáte, které třídy jsou z vaší aplikace, které z linkované knihovny nebo z JDK.
Příliš často nevidíme situaci, kdy IDEA předloží uživatelům nějakou novinku, kterou již má konkurence implementovanou. Kontrola pravopisu v komentářích a dokumentačních komentářích byla do této verze dostupná pouze jako plugin - nyní je tato funkce dostupná přímo. Co mě však mile překvapilo byla možnost kontroly přímo nad literály v kódu. Někdy si člověk není jist, jestli napsal proměnnou nebo název funkce zcela korektně - zejména pokud se jedná o doménový obor, který neznáme. Nyní není třeba spouštět slovník - IDEA navrhne správný spelling automaticky.
Programátoři J2EE asi zajásají (jupí) nad jemnější možností definování artefaktů (například WAR souborů) při konfiguraci nasazení (deployment). Kromě toho lze definovat závislosti na knihovnách podobně, jako v Mavenu. To v praxi znamená, že lze závislost označit jako compile-only, test-only nebo runtime-only. Plakat rozhodně nikdo nebude také nad podporou nových Type Annotations (@Immutable, @Mutable, @NotNull a podobně), které by podle všeho měly být součástí Javy 7. Já osobně se již snažím podobné anotace používat a starší verze protředí IDEA jistou podmnožinu těchto anotací dokonce uměla i kontrolovat. Nesmím nezmínit novou podporu J2EE 6, a to především EJB 3.1, Servlet 3.0, JSF 2.0, a také preview Glassfishe 3. Co do rychlosti vývoje (například start serveru) je to výborná implementace J2EE aplikačního serveru a firma Oracle potvrdila, že jej bude nadále podporovat především jako referenční implementaci vhodnou (nejen) pro vývoj. Možnost práce s J2EE 6 je hlavním tahákem prostředí IntelliJ IDEA 9.
Široká škála podpory frameworků byla vždy velká síla prostředí IDEA. Nová verze zlepšuje podporu a povyšuje podporované verze. Novinkou je populární komponentový framework Tapestry v nejnovější stabilní verzi. Povýšeny verze Google App Engine (GAE), GWT (2.0) a Spring (3.0). Nová je také podpora vývoje pro Google Android a zdá se, že komunita kolem Androidu přijala IDEU jako druhé oficiální IDE. S novou verzí je bundlován také populární OSGi plugin. Možnosti editace JavaScriptu, XML, (X)HTML, CSS, XSD a dalších veledůležitých internetových a enterprise formátů se opět malinko zlepšily. Stále považuji IntelliJ IDEU za nejlepší JavaScript a XML editor, dokonce ji mám raději než Altnovu, kterou na projektech používáme (což je specializovaný XML editor). Uvítal bych snad jen grafickou podporu editace XSD (XML Schémat), které jsou denním chlebem v EI/SOA - konkurence již má nějaké náznaky v podobě pluginů. Kromě JavaScriptu IDEA zvládá také ActionScript a FLEX, kde najdeme také nějaké novinky. Zmíněné platformy od firmy Adobe však neovládám, a tak nemohu tyto novniky posoudit. Na tomto místě musím uznat, že podpora technologie JavaFX není tak dobrá, jako například u Netbeans. Ale tato technologie má před sebou ještě hodně cesty - myslím že není třeba s podporou příliš spěchat. V poslední době Sun této technologii věnoval značné úsilí a také firma Oracle uvedla, že JavaFX bude nadále podporována, a to dokonce více, než dosud.
Svět vývoje softwaru se v poslední době hodně posouvá k dynamickým jazykům, což zasáhlo také svět Javy. Naštěstí společnost Sun včas zareagovala a do posledních verzí jazyka začala zapracovávat podporu pro další jazyky. Tento směr se bude v budoucnu (Java 7) nadále prohlubovat a častěji a častěji se budeme setkávat s různými jazyky pro JVM. Ke dnešnímu dni se těší velké oblibě zejména jazyky Groovy, Scala, JPython a JRuby. Co se týče podpory jiných jazyků je IDEA na špici - ve verzi 9 byla ještě zlepšena oficiální podpora jazyka Groovy, frameworků Grails a Griffon a buildovacího systému Gradle. Společnost JetBrains také aktivně vyvíjí pluginy pro JPython/Python a JRuby/Ruby, které jsou v současné době v dobře použitelných beta verzích a uživatelé komerční verze je mohou dle libosti používat (finální verze bezplatně). Z těchto pluginů zřejmě budou těžit nové produkty PyCharm a RubyMine. Co se týče populárního jazyka Scala a méně známého Clojure, tak pro oba existují oficiální pluginy vyvíjené přímo firmou JetBrains. Musím také zmínit nový produkt Web IDE, který je určen pro vývoj v PHP/HTML/JavaScript. Uživatelé Ultimate verze vlastně mají všechnu funkčnost programů PyCharm, RubyMine a Web IDE dostupnou v podobě pluginů. Ovšem PyCharm a Web IDE jsou zatím ve fázi beta testování.
Co mně vždy vadilo bylo spouštění více strartovacích profilů pomocí myši. Touto vadou na kráse trpí více programovacích prostředí a pokud pracujete na projektu, ve kterém musíte spouštět více konfigurací (např. jmenný server, stuby, aplikační server, J2EE kontejner), musel vždy člověk používat myš. Přes klávesnici šla vždy spustit jen poslední zvolená konfigurace. Dalo se to řešit různým mapováním klávesnice, Ant skripty nebo i pluginem, ale vývojáři do verze 9 přinesli novinku: [Alt+Shift+F10] (resp. F9). Tato kombinace vyvolá dobře známé kontextové menu, ze kterého můžete konfiguraci pro spuštění vybrat šipkami. Na myš zapomeňte. Když jsme u těch zkratek, zkuste v devítce také [Shift+Ctrl+šipka nahoru a šipka dolů]. Já osobně dost často měním velikost Output Window na úkor Editoru, když zkoumám logy a chybové výpisy. Na myš opět můžu zapomenout.
Dovolil bych si malou poznámku. Na služební cestě jsem nešťastnou náhodou přišel o MP3 přehravač. Prostě chvilka nepozornosti, a byl pryč. Jelikož jsem si nedokázal představit dlouhou zpáteční cestu bez hudby, koupil jsem si nový. Jelikož jsem si v obchodě nevybral žádný pořádný, koupil jsem si dočasně neznačkový s tím, že nový koupím až v ČR (také kvůli záruce a podobně). Ovládání jsem nepochopil ani během pěti minut, ani během několika hodin. Nepochopil jsem ho dodnes (přehravač jsem dal pryč a již objednal normální). Na tom příkladu je vidět, že když někdo vyrábí něco, co pak sám nepoužívá, je to katastrofa. Jsem si jist, že ti, co tuhle hrůzu vymysleli (a napsali pro ni software), sami používají Sony Walkman nebo Apple iPod. Prostě nevěřím, že tohle může někdo používat. A na příkladu prostředí IDEA je to vidět taky - jenže opačně. Programátoři tohoto produktu jej zřejmě opravdu používají v každodenní práci. Ovládá se to prostě "samo".
Nová IDEA používá implicitně také pozměněný formát ukládání projektů - místo známých XML souborů (iml + další soubory) používá adresářovou strukturu (iml soubor + adresář .idea). Je to krok správným směrem. Jestli musíte den co den své změny integrovat do více větví repozitáře zdrojových kódů, jistě uvítáte raději více souborů. Každý obsahuje jen určitou informaci, takže když dojde při integraci ke konfliktu v souboru, kde už podle názvu detekujete nedůležité nastavení (například změnu nastavení inspektora kódu), ihned můžete svoji verzi zahodit, aniž byste blíže zkoumali daný konflikt. Daleko lépe se také vracejí změny (revert changes) - prostě "revertnete" jen dané soubory. Malé a dobře naformátované textové (XML a jiné) soubory - to je můj ideál. Zdůraznil bych "dobře naformátované", protože se ve své praxi setkávám s programy, které serializují projektová nastavení do jednoho řádku XML. Integrace každé změny je pak utrpením. Ale tohle v JetBrains naštěstí dobře vědí. Znovu bych poukázal na paralelu s MP3 přehrávačem.
Za užitečnou vlastnost považuji zobrazování UML diagramů. Tuto funkci používám ke generování diagramů u doménových datových a DTO tříd. Možnosti se v tomto směru opět poněkud rozšířily, ale nepoužívám UML v prostředí IDEA natolik, abych to mohl posuzovat. Pro zájemce doporučuji studium vlastností UML. Několik vylepšení se dočkaly Subversion a Git pluginy, k čemuž bych měl co říct. Konečně se zlepšila použitelnost horké klávesové zkratky [Ctrl+t] (update). Já osobně bych byl také pro oficiální podporu systémů pro správu verzí Bazaar a Mercurial. Hlavně první jmenovaný jsem si velmi oblíbil díky přívětivosti ovládání a širokým možnostem distribuovaného i centralizovaného přístupu (včetně možnosti plynulého přechodu mezi nimi).
Podle mého názoru inženýři odstranili jednu z posledních vad na kráse, kterou prostředí mělo - totiž rychlost startu. Nikdy mi vlastně přiliš nevadilo, že se prostředí spouští pomaleji. Člověk si vždy před začátkem práce musí "podělat" různé jiné věci, jako pootvírat další okna, přečíst co se stalo ve světě a zjistit, co Sun (ehm Oracle) vyřadil nebo zařadil do další verze Javy 7. Nicméně trošku mi bude to pomalejší načítání velkých projektů chybět - vždy jsem jej používal u recenze jako jednu z "výtek na konci". Každá správná recenze by neměla být jen pochvalná. Já budu muset najít něco jiného, protože start je výrazně rychlejší díky načítání a indexování na pozadí. Zrychlení celého prostředí totiž patří mezi hlavní lákadla, proč povýšit na verzi 9. To se totiž netýká jen samotného startu, ale také další práce. Dle changelistu to citelněji pocítíte zejména při používání VCS.
Jedna nová věc, která je vyloženě kosmetického charakteru, musí být v mém článku uvedena. A to je prosím drag-and-drop z operačního systému (např. Exploreru). Pokud například máte hromadu souborů (třeba tisíce XSD souborů v jednom adresáři), je někdy velmi pohodlné soubor přidat do projektu přetáhnutím. Inu když už ho máte "v ruce", nechcete jej znovu hledat v jiném okně. V dřívějších verzích nešlo do prostředí IDEA nic přetáhnout. Nic se nestalo - program na soubor nereagoval. Opravdová drobnost, která ovšem stávajícímu uživateli přinese úsporu času.
Ale můj šéf mi to stejnak nekoupí
A dostáváme se k jádru pudla. Některé věci z tohoto článku, některé skvělé funkce, které má IDEA 9, můžete mít zadarmo! Je to především excelentní editor kódu, podporu XML, Groovy, Scala, Clojure, Ant, Maven, JUnit, TestNG, GUI Swing, CVS, Subversion, Git, OSGi a další funkce dostupné přes rozšiřující pluginy. Nic vás neomezuje, žádné časové limity či překážky v podobě odmítavých hlášek. Snad jedině look and feel (skin) programu je mírně pozměněn - to především z licenčních důvodů (IDEA používá komerční look and feel). Tato novinka představená s verzí 9, tedy Community Edition, funguje zcela bez omezení, jen nebudete mít tolik komfortu (podpora frameworků) jako uživatelé verze Ultimate. Vždy zde ale bude šance najít si nějaký plugin vyvíjený komunitou.
Pokud jste dosud s vyzkoušením IntelliJ IDEA váhali, na nic již nečekejte.