Rok se s rokem sešel a přede mnou sena monitoru usmívá nová uvítací obrazovka programovacího prostředí IntelliJ IDEA firmy JetBrains. A že se povedla! Uvítací obrazovka i verze samotná. Průvodcem žhavými novinkami v komplexním vývojovém nástroji, který udává trendy, bude opět Lukáš Zapletal.

idea8-about.png

Už při testování první veřejné betaverze jsem si nemohl nevzpomenout na Paula Newmana a jehooskarový (1987) debut Barva peněz, ve kterém po boku Toma Cruise potápí jednu kouli za druhou. Ve filmu hrají poolovou hru – tzv. osmičku, u které je důležitý postřeh, intuice i štěstí. Středem pozornosti celé hry je černá koule nesoucí číslo 8. A také IntelliJ IDEA 8 bude středem zájmu tohoto článku, ovšem nebudu se ji snažit během psaní potopit. Paul Newman zemřel v září tohoto roku.

Hlavní síla programovacího prostředí nejen pro Javu s názvem IntelliJ IDEA (dále jen IDEA) není ani tak v široké škále nabízených jazyků a frameworků (která se v nové verzi ještě více rozšířila), ale především v ucelené koncepci práce, důmyslně vytvořených klávesových zkratkách a podpůrných mechanismech, které pomáhají programátorovi soustředit se na problém a kódovat efektivně. Jeden příklad za všechny - často nabádám členy týmu, aby prováděli commit práce vícekrát denně. V prostředí IDEA stačí kombinace Ctrl+K, Enter - do komentáře se předvyplní poslední. Často pracuji i v jiných prostředích, v jednom například nelze vůbec provést commit ve standardním nastavení klávesnicí. A takových drobností je mnoho, v následujících odstavcích se podíváme na nové „drobnosti“ tohoto typu.

 

test

 

Podpora refaktoringu byla vždy silnou zbraní tohoto produktu a v osmičce byla dále rozšířena. Nejvíc mne zaujaly nové možnosti Introduce Parametr Object, která obalí parametry metody do holder objektu, a Wrap Return Value, která podobně obaluje návratovou hodnotu. Zcela novou možností je pak Type Migration, která předvádí doslova kouzla při konverzi typů například mezi Integer a int, Collection<Typ> a Typ[] - nejedná se tedy o obyčejné přejmenování, ale kompletní „předělávka“ omáčky okolo.

Už dříve padlo rozhodnutí, že JBoss Seam bude jednou z novinek verze 8. Dočkali jsme se. IDEA umí nyní asistovat při editaci views, napovídat u anotací, graficky zobrazovat navigaci nebo také find usages, což je funkce, které nenechám u své instalace na chvíli vydechnout. Zlepšení se také dočkal Struts, konkrétně byla podpora povýšena na verzi 2.

Ani Spring 2.5 neunikl ze zaměřovačů vývojářů firmy JetBrains, světlo světa spatřil nový floweditor pro Spring Web. Za zmínku stojí také Spring Dynamic Modules- doplňování, code inspections a higlighting.

Vytváření automatických testů jednotek nikdy nebylo tak snadné - s verzí 8 můžete použít na třídě dobře známou magickou klávesu Alt+Enter a nechat si vygenerovat test pro JUnit 3, 4 a také pro TestNG. Upraveno bylo také ladící okno, které nově nabízí také Thread dumpanalyzer, což ocení ti, kteří programují ve více vláknech. Tedy všichni.

 

idea8-jsdebug-nahled

 

Už minulá verze nabízela jednoduchý UML nástroj, který byl nyní vylepšen o vytváření nových elementů (tříd, metod), dědičnost a plnou podporu refaktoringu. Mít v programovacím prostředí byť zjednodušený editor na UML diagramy je skvělý nápad, se kterým se ztotožňuji. Kroměround-trip engineeringu musím vyzdvihnout také propracované layout diagramy. Určitě nebude od věci v této oblasti produkt dále rozšiřovat.

Pokud často pracujete s relačními databázemi, ať už přímo, nebo přes další rozhraní (např. Hibernate), jistě oceníte zcela novou JDBC konzoli. Přes okno Database se nyní totiž dostanete k jakémusi SQL „scratchpadu“(editoru), do kterého můžete psát SQL příkazy. Vyhodnocení se provede stiskem Ctrl+Enter a IDEA automaticky celý SQL skript označí, což usnadňuje následné vkládání dalšího SQL příkazu přepsáním. Výsledky jsou prezentovány na spodní straně v JDBC konzoli a IDEA 8 nyní nově doplňuje SQL kód nejen v ní, ale také při psaní jakéhokoli kódu (a to až na úroveň tabulek a jejich jednotlivých sloupců). Tato podpora se týká také dalších databázových rozhraní, jako je například Hibernate. Dodatečně je možné pracovat s doplňováním kódu i když nemáte aktuálně přístup k databázi! IDEA totiž dokáže načíst uložené DDL skripty, ze kterých si vytáhne potřebné informace. Jednička s hvězdičkou.

Novinek se dočkaly HTML/XHTML/XML/CSS/JSP editory, jako praktické považuji náhledy na barvy v CSS nebo vylepšený CSS refaktoring. Podpora editace XML byla již ve dřívějších verzích výborná a IDEA se může bez problémů měřit s profesionálními XML editory, a to vůbec nemám prostor pro bližší popis novinek týkajících se editace XSLT a Xpath výrazů. Že IDEA umí technologii Google Web Toolkit, kterou verze 8 vylepšuje, jste si asi již stačili všimnout u minulých verzí. Co však považuji za tahák verze s černou koulí ve spleshscreenuje možnost ladění JavaScriptu a Adobe Flexu.

U první jmenované technologie IDEA umí automaticky stáhnout komponentu od Mozilly, která toto umožňuje. Debugger je plně integrován do prostředí se všemi obvyklými věcmi, na které je programátor zvyklý. Škoda jen, že IDEA nedovoluje spouštět (Run) JavaScript soubory přímo (bez HTML), avšak JavaScript se používá téměř výhradně naprogramování ve web browseru. V případě technologie Adobe FlexIDEA představuje patrně jednu z prvních plně vybavených vývojových platforem, když pomineme originální software od firmy Adobe. Funguje generování kódu, refaktoring, nápověda, optimize imports a další vlastnosti, na které jsou zvyklí programátoři v Javě.

Kdykoli potřebuji ve svém projektu generovat nějaký obsah (například vzorové konfigurační soubory), využiji služeb knihovny Freemaker. Doplňování kódu a plná podpora zvýrazňování syntaxe - to byl vždy trošku problém a není na trhu příliš mnoho nástrojů, které to zvládají. Nová verze umí Freemaker i Velocity, dva hlavní hráče na poli šablonových knihoven. Kromě syntaxe je to také zvýrazňování chyb, parameter info, quick documentation a další.

Jako uživatel Mavenu jsem zajásal nad novým pomocníkem pro vytvoření nového projektu a také u lépe propracovaným editorem pom.xml souborů, například doplňování kódu. Stejné to bylo u vylepšení podpory u Subversionu, kde je nyní možné lépe pracovat se slučováním revizí.

 

idea8-sql-nahled

 

Na možnost efektivně pracovat s knihovnou Jersey (implementace RESTu a JSR-311) jsem se těšil,protože jsem s touto technologií ještě nikdy nepracoval. Neměl jsem možnost, webové služby jsou stále hodně populární (a řekl bych že popularita s integračním boomem roste - alespoň v enterprise sféře). S verzí 8 je testování této technologie snazší - zvýrazňování, doplňování anotací, quick fixes, generování WADLů a také speciální REST klient. Teď už snad chybí jen REST unit testy.

Není sporu o tom, že lepší editor na hity poslední sezony - jazyk Groovy a webový framework Grails - momentálně neexistuje. Není třeba závidět programátorům skriptovacích jazyků, jako je například Ruby, vysokou produktivitu práce. S novou verzí prostředí IDEA je převálcujete,protože možnosti dvojice Groovy - Grails jsou podobné, ovšem míra podpory v prostředí IDEA a počet podpůrných nástrojů hraje ve váš prospěch. Mimochodem Ruby/JRuby/Rails zvládne IDEA už zdřívější verze.

Novinkou je statická analýza toku volání metod, kdy na výběr z kontextového menu Analyze - Dataflowto this na parametru metody IDEA zanalyzuje všechny možnosti, za kterých je metoda volána (a s jakou hodnotou parametru), přičemž se prostředí snaží vyhodnotit všechny výrazy, pokud je to možné.

Co dodat? V minulé recenzi jsem se také hodně věnoval stávající funkčnosti starších verzí, u osmičky to nebylo možné. Je zde tolik novinek, že na to prostě nezbývá místo, tak snad jen telegraficky. Kromě jiného IDEA nabízí anotace kontraktů, detekce duplicit kódu, statickou analýzu kódu, code inspector, analýzu závislostí, code coverage tool, lokální historii s diffem, Ant/Maven, aplikační servery, integrace s continious integračním nástrojem TeamCity, sdílení projekt konfigurací, IDETalk a mnoho dalšího. A i s novou verzí 8stále platí, že asistence při psaní kódu je tak nějak lepší než u jiných nástrojů. To se těžko popisuje, musíte si to zkusit na vlastní kůži.

 

Odkazy: