Minulý týden spatřilo světlo javovského světa nové
dítě firmy JetBrains, programovací prostředí nejen
pro Javu: IntelliJ IDEA 7.0. V následující recenzi
bych chtěl poukázat na nové vlastnosti, které opět
posouvají tento nástroj o kousek dál před konkurenci.

Z mého pohledu zcela zásadní novinkou je integrace
s Eclipse. IDEA 7 umí importovat i exportovat (!)
projekty pro Eclipse IDE a když k tomu připočtu
novinku minulé verze (podpora Eclipse RCP), pak musím
konstatovat, že IDEA je nejlépe provázaným prostředím
vzhledem k platformě Eclipse (nepočítaje v to
pochopitelně Eclipse IDE, které je pro tuto platformu
přímo vytvořené). Pokud bych se měl ještě zastavit u
integrací, asi nemusím pracně vypisovat, s čím IDEA
plně spolupracuje. Možná snad zmíním Ant, Maven
(nově) a možnost importu projektů z JBuilderu.

idea7-splash.png

Jasnou jedničkou všech novinek verze 7.0 je pro
mne jedna velmi jednoduchá věc – při krokování
programu pomocí funkce step into se na
řádku s více metodami obvykle dostanete do té, kterou
nechcete ladit. Obvykle je nejjednodušší nejprve
skočit do dané metody a použít breakpoint. IDEA 7.0
se nyní při funkci step into již zeptá, do
jakéže metody to vlastně chcete vstoupit. Jednoduché,
geniální.

Do rodiny VCS přibyl nový bratříček: IBM Rational
ClearCase, zařadil se mezi systémy Subversion,
CVS, SourceSafe a jiné. Novinkou je
funkce Shelve Changes – využijete ji v případě, že
máte konflikt, ale přesto potřebujete provést
check-in do repozitáře. Takže si vytvoříte patch,
který můžete aplikovat později. Novou věcí, které si
osobně hodně cením, je možnost konfigurace
automatického obnovování stavu VCS (implicitně 30
minut). Pokud pracujete na hodně živém projektu s
mnoha aktivními vývojáři, jistě vám přijde vhod, když
vás IDE automaticky upozorní na případné změny. Třeba
na změnu na souboru, který se zrovna chystáte
upravit, a tato informace zachrání možný konflikt,
jenž by mohl způsobit, že byste byli ten den bez
oběda.

idea7-update.png

Programování webových aplikací je jednou ze
silných zbraní tohoto vývojářského prostředí. Výborná
editace XML/HTML/XHTML, CSS, JSP,
JavaScript a dalších formátů je samozřejmostí včetně
doplňování kódu a rad (quick-fixes). Přepracována
byla podpora webových služeb, editace WSDL a anotací
pro WS, plně integrována podpora pro generování za
pomocí technologií JAXB, XMLBeans, XML
schémat a WSDL.

Co předchozí verze začala, dotahují nyní vývojáři
o další kroky dále. Na mysli mám podporu Springu a
O/M frameworku Hibernate. U prvně jmenované knihovny
vývojáři zapracovali na AOP, IDEA nyní doplňuje
metadata u AOP, přibylo mnoho rad a vylepšena byla
také podpora editace konfiguračních souborů XML.
Novinkou je také pěkný diagram závislostí komponent,
který je generován na základě dané konfigurace. Co se
týká Hibernate, v této oblasti bylo také zapracováno
na konfiguračních souborech (lepší doplňování,
kontroly a quick-fixy), možnost mapování datových
zdrojů z IDE a hlavně editovatelné ER diagramy. Tyto
je nutné brát spíše přehledově, IDEA není
plnohodnotný designérský nástroj a tomu odpovídá i
omezená práce s diagramy.

IDEA byla vždy silná v inspekci a analýze kódu,
verze 7.0 přidává Dependency Structure
Matrix
(DSM) – nástroj, pomocí kterého je možné
přehledně zobrazovat závislosti mezi třídami a
balíčky v rámci projektů (doslova desítkami
projektů). Vynikající nástroj pro rozsáhlé projekty
či společnosti a organizace s mnoha malými projekty
(např. Apache Software Foundation a podobně).

Těm skutečně nejžhavějším novinkám se budu věnovat
až nyní, protože mne jako javovského programátora až
tak nepřitahují, nicméně uznávám, že jsou to skvělé
vlastnosti. Je to podpora skriptovacích jazyků, která
začíná integrací Ruby a Groovy. V pojetí firmy
JetBrains neznamená podpora skriptovacího jazyka jen
zvýraznění syntaxe, možnost spouštění programu z
prostředí či nějaká ta podpora pro debugger. V nové
verzi IDEA 7.0 získáváte kompletní doplňování kódu,
bublinovou nápovědu, plně funkční editor (doplňování
závorek, folding, rady, opravy kódu), navigaci
zdrojovým kódem (skoky na prvky, třídy, zdroje),
šablony/zkratky, refaktoring, unit testing a další
pomocníky (přetěžování metod). Oba jazyky jsou
dostupné jako pluginy, které si můžete snadno do
prostředí doinstalovat.

Firma JetBrains si plně uvědomuje, že platforma
Java bude brzy nabízet mnoho různých programovacích
jazyků (JavaFX, PHP,
Python…) a IntelliJ IDEA by mohla být společným
nástrojem pro všechny. Proto vývojáři obohatili
možnosti rozšiřování, takže podpoře nových
skriptovacích jazyků nic nestojí v cestě. Již nyní
jich můžete najít v seznamu dostupných pluginů dost a
dost.

Ti, co v programu IDE pracují od dřívějších verzí,
zaznamenají další drobné změny, například možnost
přepnutí více akcí na pozadí, přepracované okno pro
nový projekt a dobře řešeným průvodcem knihovnami,
přehlednější dialog pro nastavení projektu, možnost
táhnutí bočních tool windows, nový prvek prostředí
(„lítací“ okno) a další drobné vychytávky. Možná jste
znali skvělý plugin RefactorX určený pro refaktoring
XML dokumentů, ten byl nyní vestavěn
přímo do verze 7.0.

idea7-backgroundtask.png

IntelliJ IDEA vždy patřila k těm nejrychlejším
javovským IDE a ani verze 7.0 nebude výjimkou, i když
autoři hlásají, že výrazně zrychlili start programu a
otevírání projektů. Rychlejší start nemohu posoudit
(nestopoval jsem to), ale projekty se otevírají
zřetelně rychleji. Naštěstí práce v prostředí byla
vždy svižná a vysoce efektivní. Tato nejnovější verze
pracuje v běhovém prostředí Javy 6.0, která je patrně
zatím nejrychlejší ze všech verzí.

Nedávno jsem předváděl studentům něco v tomto
nástroji, používal jsem mnoho klávesových zkratek,
doplňování a refaktoring. Viděl jsem na nich, že se
jim líbilo, jak se mi kód přetváří pod rukama. Jak
minimální úsilí musím vynaložit na to, abych vytvořil
konstruktory, přístupové metody, přetížil metody,
implementoval anonymní třídy či delegoval volání
metody na jinou třídu. Po hodině se mě jeden student
zeptal, jak je možné, že při psaní kódu name.equals( user.getName() ) IDEA při použití
funkce inteligentního doplnění přesně odhadla, že
chci volat metodu getName. Odpověděl jsem,
že nevím. A nezajímá mě to. Co vím, že to prostě
obvykle uhádne, takže mohu ihned zmáčknout klávesu
Enter. Jaká magie za tím stojí (kontrola typů,
podobnost názvů, statistiky používání metod, fuzzy
porovnávání), nevím, motto firmy JetBrains ve své
podstatě však nelže. IDEA je asi nejinteligentnějším programovacím prostředím pro
Javu
.