Programování

Výběr prostředí Java IDE

Aktualizováno: prosinec 2018.

Každý vývojář v Javě potřebuje programovací editor nebo IDE, které mohou pomáhat s výstižnějšími částmi psaní Javy a pomocí třídních knihoven a frameworků. Rozhodnutí, který editor nebo IDE vám bude nejlépe vyhovovat, závisí na několika věcech, včetně povahy vyvíjených projektů, vaší role v organizaci, procesu používaného vývojovým týmem a vaší úrovně a dovedností programátora. Další úvahy jsou, zda tým standardizoval nástroje, a vaše osobní preference.

Tři IDE nejčastěji vybrané pro vývoj prostředí Java na straně serveru jsou IntelliJ IDEA, Eclipse a NetBeans. Nejedná se však o jedinou možnost a tato recenze bude obsahovat i několik lehkých IDE.

Pro toto shrnutí jsem provedl nové instalace IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018-09 pro vývojáře Java EE a Apache NetBeans (inkubující) IDE 9 na počítači Mac. Zkontroloval jsem také několik projektů Java s otevřeným zdrojovým kódem, abych mohl otestovat všechny IDE na stejných projektech.

O této aktualizaci

Tato recenze IDE byla poprvé publikována v září 2016 a byla aktualizována v prosinci 2018. V těchto uplynulých letech se jazyk Java, API, ekosystém JVM a některé rámce významně vyvinuly. Java EE 8 představil nebo aktualizoval mnoho specifikací technologie Java, včetně JSON-B (JavaScript Object Notation Binding), Java EE Security, Servlet 4.0 a JSF (JavaServer Faces) 2.3 pro vytváření uživatelských rozhraní na straně serveru. Java EE 8 byla také finální verzí Java pro podniky od společnosti Oracle: Nadace Eclipse převzala správu technologie, kterou rebrandovala na Jakarta EE. Mezitím JUnit postoupil do verze 5 a prolomil integrace; IDEA a Eclipse mají nativní podporu pro JUnit 5, ale od tohoto psaní NetBeans ne.

Všechny tyto změny by měly být součástí vašeho vyhodnocení IDE, ať už pro obecné použití nebo pro konkrétní projekt.

NetBeans 10 přidává podporu pro JUnit 5 a JDK 11

Vydáno v lednu 2019, NetBeans 10 přidává podporu pro JDK 11 a JUnit 5.

Základy: Co potřebujete od prostředí Java IDE

Minimálně byste doufali, že vaše IDE podporuje Java 8 a / nebo 11 (verze LTS), Scala, Groovy, Kotlin a další jazyky JVM, které pravidelně používáte. Také byste chtěli, aby podporoval hlavní aplikační servery a nejoblíbenější webové rámce, včetně Spring MVC, JSF, Struts, GWT, Play, Grails a Vaadin. Vaše IDE by mělo být kompatibilní s jakýmikoli systémy pro správu verzí a sestav, které váš vývojový tým používá; příklady zahrnují Apache Ant s Ivy, Maven a Gradle, spolu s Git, SVN, CVS, Mercurial a Bazaar. Pro získání většího kreditu by vaše IDE mělo být schopné zpracovat klientskou a databázovou vrstvu vašeho zásobníku a podporovat vložený JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate a Java Persistence API.

Nakonec byste doufali, že vaše prostředí Java IDE vám umožní snadno a elegantně upravovat, vytvářet, ladit a testovat vaše systémy. V ideálním případě byste měli nejen inteligentní dokončení kódu, ale také refaktoring a metriky kódu. Pokud jste v obchodě, který provádí vývoj založený na testech, potřebujete podporu pro své testovací rámce a stubbing. Pokud vaše skupina používá lístkový systém a CI / CD, je nejlepší, když se k nim může připojit vaše IDE. Pokud potřebujete nasadit a ladit na kontejnerech a cloudech, vaše IDE by vám s tím mělo pomoci.

S ohledem na tento základ uvažujme uchazeče.

IntelliJ IDEA

IntelliJ IDEA, přední Java IDE z hlediska funkcí i ceny, přichází ve dvou edicích: bezplatná edice Community a placená edice Ultimate, která má další funkce.

Komunitní vydání je určeno pro vývoj JVM a Android. Podporuje Java, Kotlin, Groovy a Scala; Android; Maven, Gradle a SBT; a Git, SVN, Mercurial, CVS a TFS.

Edice Ultimate, určená pro vývoj webu a podniků, podporuje kromě jiných systémů pro správu verzí také Perforce; podporuje JavaScript a TypeScript; podporuje rámce Java EE, Spring, GWT, Vaadin, Play, Grails a další; a zahrnuje databázové nástroje a podporu SQL.

Myšlenka je, že komerční edice (Ultimate) si získá místo na profesionálním počítači, což odůvodňuje placené předplatné zvýšením produktivity programátora. Pokud vyděláváte 50 000–100 000 $ ročně jako vývojář v prostředí Java, nevyžaduje to moc zvýšení produktivity, abyste získali rychlou návratnost investic při předplatném IDEA na 500 $ ročně. Cena klesá v následujících letech pro podniky, je mnohem nižší pro začínající a fyzické osoby a je zdarma pro studenty, učitele, „šampiony Java“ a vývojáře open source.

IntelliJ propaguje IDEA pro hluboký vhled do vašeho kódu, ergonomii pro vývojáře, vestavěné vývojářské nástroje a zkušenosti s programováním polyglotů. Pojďme se podívat na to, co tyto funkce znamenají a jak vám mohou pomoci.

Martin Heller

Hluboký vhled do vašeho kódu

Pro editory jazyka Java je vybarvení syntaxe a jednoduché doplnění kódu samozřejmostí. IDEA jde nad rámec toho, aby poskytla „inteligentní dokončení“, což znamená, že může zobrazit seznam nejdůležitějších symbolů použitelných v aktuálním kontextu. Ty jsou seřazeny podle vaší osobní frekvence používání. „Dokončení řetězce“ jde hlouběji a zobrazuje seznam příslušných symbolůpřístupné metodami nebo getry v aktuálním kontextu. IDEA také dokončuje statické členy nebo konstanty a automaticky přidává všechny potřebné příkazy pro import. Ve všech dokončeních kódu se IDEA pokusí uhodnout typ symbolu běhového modulu, z toho upřesnit své volby a podle potřeby přidat obsazení třídy.

Kód Java často obsahuje jiné jazyky jako řetězce. IDEA může vkládat fragmenty kódu SQL, XPath, HTML, CSS nebo JavaScript do literálů Java String. Ostatně může refaktorovat kód ve více jazycích; například pokud přejmenujete třídu v příkazu JPA, IDEA aktualizuje odpovídající třídu entit a výrazy JPA.

Když refaktorujete část kódu, jednou z věcí, které obvykle chcete udělat, je také refaktorovat všechny duplikáty tohoto kódu. IDEA Ultimate dokáže detekovat duplikáty a podobné fragmenty a použít refaktoring také na ně.

IntelliJ IDEA analyzuje váš kód při načtení a při psaní. Nabízí kontroly, které upozorní na možné problémy, a pokud si přejete, seznam rychlých oprav zjištěného problému.

Ergonomie vývojáře

IntelliJ navrhl IDEA s kreativním tokem vývojáře -aka „být v zóně“ - na mysli. Okno nástroje Project zobrazené vlevo na obrázku 1 zmizí z pohledu jednoduchým kliknutím myši, abyste se mohli soustředit na editor kódu. Vše, co chcete při úpravách dělat, má klávesovou zkratku, včetně vyvolání definic symbolů ve vyskakovacím okně. Zatímco učení se zkratkám vyžaduje čas a cvičení, nakonec se staly druhou přirozeností. I bez znalosti zkratek se vývojář může snadno a rychle naučit používat IDEA.

Design ladicího programu IDEA je obzvláště pěkný. Proměnné hodnoty se zobrazují přímo v okně editoru, vedle příslušného zdrojového kódu. Když se stav proměnné změní, změní se také její barva zvýraznění.

Integrované vývojářské nástroje

IntelliJ IDEA poskytuje jednotné rozhraní pro většinu hlavních systémů pro správu verzí, včetně Git, SVN, Mercurial, CVS, Perforce a TFS. Veškerou správu změn můžete provádět přímo v IDE. Když jsem testoval IDEA, přál jsem si, aby poslední změna v bloku zdrojového kódu se zobrazí v okně editoru jako anotace (jako je tomu v Visual Studio). Jak se ukázalo, k tomu existuje plugin.

IDEA také integruje nástroje pro sestavení, testovací běžce a nástroje pro pokrytí, stejně jako integrované okno terminálu. IntelliJ nemá svůj vlastní profiler, ale podporuje několik profilerů třetích stran prostřednictvím pluginů. Patří mezi ně YourKit, vytvořený bývalým vedoucím vývojářem IntelliJ, a VisualVM, což je přebalená verze profileru NetBeans.

Ladění Javy může být bolestí, když se ve třídách, pro které nemáte zdrojový kód, stávají záhadné věci. IDEA pro tyto případy přichází s dekompilátorem.

Programování serverů Java často zahrnuje práci s databázemi, takže IDEA Ultimate zahrnuje databázové nástroje SQL a NoSQL. Pokud potřebujete více, je k dispozici vyhrazené prostředí SQL IDE (DataGrip) jako součást předplatného všech produktů, které je jen o něco dražší než předplatné IDEA Ultimate.

IntelliJ IDEA podporuje všechny hlavní aplikační servery JVM a lze je nasadit a ladit na serverech, což opravuje hlavní problém pro vývojáře Enterprise Java. IDEA také podporuje Dockera prostřednictvím pluginu, který přidává okno nástroje Dockeru. (Když už mluvíme o pluginech, IntelliJ jich má spoustu.)

Polyglotové programování

IDEA rozšířila pomoc při kódování pro Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS a další rámce. Ne všechny z nich jsou rámce Java. Kromě Javy rozumí IDEA hned po vybalení mnoha dalším jazykům, včetně Groovy, Kotlin, Scala, JavaScript, TypeScript a SQL. Pokud potřebujete více, v současné době existují stovky jazykových pluginů IntelliJ, včetně pluginů pro R, Elm, Go, Rust a D.

Zatmění IDE

Eclipse, dlouho nejpopulárnější prostředí Java IDE, je zdarma a open source a je napsáno většinou v jazyce Java, ačkoli jeho architektura doplňků umožňuje rozšíření Eclipse v jiných jazycích. Eclipse vznikl v roce 2001 jako projekt IBM, který měl nahradit rodinu IDE založenou na Smalltalku IBM Visual Age přenosným IDE založeným na Javě. Cílem projektu bylo zatmění Microsoft Visual Studio, odtud název.

Přenositelnost prostředí Java pomáhá Eclipse být multiplatformní: Eclipse běží na Linuxu, Mac OS X, Solaris a Windows. Java Standard Widget Toolkit (SWT) je alespoň částečně zodpovědný za vzhled a chování Eclipse, ať už je to dobré nebo špatné. Podobně Eclipse vděčí za svůj výkon (nebo někteří říkají jeho nedostatek) JVM. Eclipse má pověst pomalého běhu, což se vrací zpět ke staršímu hardwaru a starším JVM. I dnes se však může cítit pomalý, zvláště když se aktualizuje na pozadí s mnoha nainstalovanými doplňky.

Součástí režie probíhající v Eclipse je jeho vestavěný přírůstkový kompilátor, který běží vždy, když načte soubor a kdykoli aktualizujete svůj kód. To je na váze velmi dobrá věc a poskytuje indikátory chyb při psaní.

Nezávisle na systému sestavení udržuje projekt Eclipse Java také model svého obsahu, který obsahuje informace o hierarchii typů, odkazy a deklarace prvků Java. To je také v rovnováze, dobrá věc, a umožňuje několik asistentů pro úpravy a navigaci, stejně jako obrysový pohled.

Aktuální verze Eclipse je 2018-09. Nainstaloval jsem Eclipse IDE pro vývojáře Java EE, ale existuje mnoho dalších instalačních balíčků, včetně možnosti instalace minimální sady Eclipse SDK a přidávání pluginů pouze podle potřeby. Poslední možnost však není pro slabé povahy: není těžké zavést konflikty mezi pluginy, které ve skutečnosti nebylyříci byly neslučitelné.

Martin Heller

Podpora rozšiřitelných nástrojů

Ekosystém pluginů je jednou ze silných stránek Eclipse a je zdrojem občasné frustrace. Trh Eclipse v současné době obsahuje více než 1 600 řešení a doplňky od komunity mohou nebo nemusí fungovat tak, jak jsou inzerovány. Přesto doplňky Eclipse zahrnují podporu pro více než 100 programovacích jazyků a téměř 200 rámců pro vývoj aplikací.

Většina serverů Java je také podporována: pokud definujete nové připojení k serveru od Eclipse, dostanete se k seznamu složek dodavatelů, pod kterými najdete asi 30 aplikačních serverů, včetně devíti verzí Apache Tomcat. Komerční prodejci mají tendenci shromažďovat své nabídky společně: například v Red Hat JBoss Middleware je pouze jedna položka, která zahrnuje nástroje WildFly a EAP Server Tools a JBoss AS.

Úpravy, procházení, refaktoring a ladění

První zkušenost vývojáře s Eclipse může být znepokojující, dokonce matoucí. Je to proto, že vaším prvním úkolem je přizpůsobit se koncepční architektuře pracovních prostorů, perspektiv a pohledů Eclipse, jejichž funkce jsou určeny podle toho, jaké doplňky jste nainstalovali. Například pro vývoj serverů Java budete pravděpodobně používat perspektivy procházení Java, Java EE a Java; pohled průzkumníka balíčků; perspektiva ladění; perspektiva synchronizace týmu; webové nástroje; perspektiva vývoje databáze; a perspektiva ladění databáze. V praxi to všechno začne dávat smysl, jakmile otevřete pohledy, které potřebujete.

V Eclipse často existuje více než jeden způsob, jak provést daný úkol. Například můžete procházet kód pomocí průzkumníka projektu a / nebo perspektivy procházení Java; kterou si vyberete, je otázkou vkusu a zkušeností.

Podpora vyhledávání Java vám umožňuje najít deklarace, odkazy a výskyty balíčků Java, typů, metod a polí. Můžete také použít Rychlý přístup k vyhledávání a pomocí rychlých zobrazení vyskakovat věci, jako jsou obrysy třídy.