IntelliJ Idea X - na co se můžeme těšit?

Ode dneška (1. listopadu 2010) bude pro zakoupené licence IntelliJ Idey 9 k dispozici upgrade na verzi 10 zdarma. Stejně tak pokud nyní upgradujete své starší verze Idey (6, 7, 8) na devítku, dostanete upgrade na 10 také zadarmo. To značí jedinou věc - vývoj IntelliJ Idea X se blíží ke svému konci a během měsíce nebo dvou bychom se mohli dočkat finální verze. A v této verzi nás čekají skutečně zajímavé libůstky.

V tomto příspěvku jsem se pokusil shrnout pár nejvýznamnějších změn, které můžeme v nové verzi očekávat. Jedná se o můj subjektivní výběr, každopádně si myslím, že je to jedna z verzí, na kterou se vyplatí upgradovat. JetBrains zase o kousek posunují hranice produktivity.

Autocomplete on the fly

Tohle je asi ta nejzásadnější změna, která jde průřezově celým IDE. Po několika dnech používání musím říct, že je to bomba. Jedná se o to, že Idea vám napovídá možné varianty kódu již ve chvíli, kdy píšete. Tedy není nutné mačkat klávesovou kombinaci pro autocomplete (Ctrl+Space), ale pokud se ocitne správná položka jako první, stačí jen uhodit na Enter/Tab (popř. šipkami vybrat jinou nabídku a odentrovat). Jedno video za tisíc slov:

Nejdřív jsem se obával, že by mohlo toto napovídání působit rušivě a odpoutávat moji pozornost. Jenže to tak vůbec není - jediným efektem je to, že píšete skoro minimálně. Zní to hodně divně, ale jsou chvíle, kdy mačkám víc Enter než ostatní klávesy a kód tak přibývá raketovou rychlostí. Navíc Idea je opravdu dobrá v tom, jak seřadit nabídku v autocomplete menu - s vysokou pravděpodobností vám jako první nabídne skutečně to, co potřebujete.

Instant autocomplete je samozřejmě i v jiných jazycích než je Java (XML, HTML, JavaScript ...).

Však si to vyzkoušejte sami na vlastní kůži - funkce je dostupná již v aktuálním EAP.

AspectJ compiler (Spring Roo) support

Po nativní podpoře AspectJ kompilátoru byla velká poptávka. Aktuálně je dostupný AspectJ Support plugin (tj. již pro verzi 9), který umožňuje na pozadí spouštět AspectJ kompilátor a využívat autocomplete i pro kód, který vzniká až teprve po aplikaci aspektů na originální kód. Podrobnější informace o jeho fungování jsou k dispozici na homepage pluginu. Tento plugin by měl být ve verzi 10 snad již standardní součástí.

S fungováním pluginu nemám osobní zkušenosti, takže pokud někdo takové má, podělte se o ně s ostatními v komentářích k článku.

Editor fragmentů v jiném jazyce

Již ve verzi 9 byla k dispozici funkcionalita pro označování fragmentů kódu, který je v jiném jazyce než je jazyk aktuálně editovaného souboru (SQL query v Java souboru, HQL query, HTML, CSS v Javě, Groovy ...). Idea vám pak hezky napovídala pomocí autocomplete to, co v daném jazyce očekáváte (ve SQL názvy tabulek, v HTML názvy tagů atd.). I přes tuto podporu bylo trošku nešikovné to, že pokud byly dané řetězce příliš dlouhé nebo byly naopak rozděleny rozděleny na několik řádků, nebyla editace příjemná. V nové Idee můžete pomocí intention (Alt+Enter) otevřít extra editor, ve kterém se vám přehledně zobrazí jen daný fragment v koncovém formátu, kde svoji editaci provedete a která se vám promítne do původního kódu. Detaily (obrázky) v článku na blogu JetBrains.

Android development support (součástí Community edition)

Pro vývojáře Androidích aplikací (což já bohužel dosud nejsem ;-) ), je tu poměrně zajímavá zpráva. IntelliJ Idea má od verze 10 podporu pro vývoj aplikací pro tuto "mobilní" platformu. Konkrétní detaily v článcích:

Nejzajímavější zpráva pro mě je oznámení o zpřístupnění Android podpory v Community edition IntelliJ Idey - tedy ve verzi zadarmo.

Z celého usuzuji, že se jedná o útok JetBrains na pozici Eclipse, který je teď uváděn jako primární podporovaná vývojová platforma ze strany Google. Uvidíme, jestli tento krok přinese nějaký obrat.

Další vylepšení pro Maven

Velmi hezky udělané je nově generování dependencí do stávajícího pom.xml - přes Alt-Insert se vám objeví dialog, kde si můžete ve svém repository najít artifact, který potřebujete a jednoduše ho do POMu doplnit. Kromě lokálních repository je možné nastavit i indexování remote repository (například vaší firemní proxy). Artefakty, které vám lokálně chybí Idea sama do repository stáhne a zaindexuje.

Vylepšený je i dependency diagram, jehož výstup by měl být nyní pro člověka daleko přehlednější. Názorně je to ukázáno v tomto postu na JetBrains blogu.

Version control

Nově v desítce uvidíme podporu distribuovaného VCS Mercurial a také vylepšení podpory GITu. V souvislosti s GITem je zajímavá především rozšířená podpora pro nejznámější GIT hosting GitHub. Mezi standardní use-case patří samozřejmě checkout z vaší stávající repository na GitHubu, vytvoření nové repository a push zdrojáků z aktuálního projektu.

Drobnosti, které mě potěšily

Subjektivně se mi zdá, že Idea o něco zrychlila - prozatím ale není žádná oficiální zpráva, že skutečně nějaká rychlostní optimalizace proběhla. Jen se zkraje vývoje mluvilo o tom, že 10ka bude především o optimalizaci a tuningu rychlosti spíš než o velkém množství nově podporovaných technologií. Prozatím těžko soudit, uvidíme jaká bude finální verze. Bohužel toto je vnímáno asi jako největší problém Idey jako takové (třeba se ale vyřeší sám s nástupem SSD disků ;-) ).

V editoru se nově obarvují záložky a názvy tříd ve vyhledávacím dialogu. Seznam se tak zpřehledňuje - na první pohled víte, v kterých záložkách máte testy a v kterých produkční kód. Barvy je možné si customizovat, je možné vytvářet nové "scope" a přiřazovat jim vlastní barvy. Můžete si tak definovat barvy např. podle příslušnosti do odlišných vrstev aplikace podle packagí atd.. Ve velkých projektech jistě zajímavá možnost.

V editoru se také změnšily scrollbary. Chvilku mi trvalo než jsem si zvyknul, trefit se na uzší scrollbar, ale po chvíli mi přišlo nové řešení lepší - nezabírají tolik prostoru v zobrazovací části (člověk chce vidět hlavně kód). Navíc po chvíli zblednou, takže nepůsobí tak výrazně v editačním prostředí. Možná je to drobnost, ale člověk ji používá každý den, takže svoji roli rozhodně hraje.

Opět přibylo pár inspekcí. Příjemně mě například překvapilo nové upozornění na redundantní IF statementy, které se dají dále zjednodušit. Jsou prostě věci, které ve své kódu nevidíte :-).

Zajímavé urychlení také představuje bezdialogový refactoring inline variable. Typicky jste totiž ve starších verzích Idey jen odklepli dialog s názvem proměnné, což zbytečně zdržovalo. Teď se vše odehraje poměrně rychle v rámci editoru. Jméno proměnné můžete samozřejmě ihned v rámci vysvícené oblasti upravit, ale ve většině případů stačí jen Enter.

Moje drobnost, která mě ale dlouho neuvěřitelně točila - serialUID se konečně generuje na vrchu fieldů dané classy. Konec neustálého přemisťování tohoto fieldu. Generované fieldy se tedy konečně začaly řadit podle logické posloupnosti.

V SQL editoru půjde nyní přímo upravovat hodnoty ve sloupcích tabulky, přidávat a odstraňovat sloupce.

Jak vidíte, je na co se těšit. Bohužel nikde není dosud zveřejněna kompletní roadmap - její část je k dispozici na DZone. Takže vesele upgradujte - nákupy se vám budou vztahovat už na desítkovou verzi Idey.

Update 2. 11. 2010: Na stránkách Jetbrains vyšel oficiální feature sheet pro novou verzi Idey.