Избор на вашата Java IDE

Актуализирано: декември 2018 г.

Всеки разработчик на Java се нуждае от редактор за програмиране или IDE, който може да подпомогне по-грубите части на писането на Java и използването на библиотеки и рамки на класове. Решението кой редактор или IDE ще ви подхожда най-много зависи от няколко неща, включително от естеството на проектите в процес на разработка, от вашата роля в организацията, от процеса, използван от екипа за разработка, и от вашето ниво и умения като програмист. Допълнителни съображения са дали екипът е стандартизирал инструментите и вашите лични предпочитания.

Трите IDE, които най-често се избират за разработка на Java от сървъра, са IntelliJ IDEA, Eclipse и NetBeans. Това не са единствените възможности за избор и този преглед ще включва и някои леки IDE.

За този обзор направих нови инсталации на IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018‑09 за разработчици на Java EE и Apache NetBeans (инкубиране) IDE 9 на Mac. Също така проверих няколко Java проекта с отворен код, за да мога да тествам всички IDE на същите проекти.

Относно тази актуализация

Този преглед на IDE е публикуван за първи път през септември 2016 г. и е актуализиран през декември 2018 г. През тези години Java езикът, API, JVM екосистемата и някои рамки са се развили значително. Java EE 8 представи или актуализира много технически спецификации на Java, включително JSON-B (Обвързване на нотация на обект на JavaScript), Java EE Security, Servlet 4.0 и JSF (JavaServer Faces) 2.3 за изграждане на потребителски интерфейси от страна на сървъра. Java EE 8 беше и окончателното издание на Java за предприятие от Oracle: Фондацията Eclipse пое отговорността за управлението на технологията, която преквалифицира в Джакарта EE. Междувременно JUnit напредна до версия 5, нарушавайки интеграциите; И IDEA, и Eclipse имат вградена поддръжка за JUnit 5, но към настоящия момент NetBeans няма.

Всички тези промени трябва да бъдат част от вашата оценка на IDE, независимо дали за общо ползване или за определен проект.

NetBeans 10 добавя поддръжка за JUnit 5 и JDK 11

Издаден през януари 2019 г., NetBeans 10 добавя поддръжка за JDK 11 и JUnit 5.

Основи: Какво ви трябва от Java IDE

Най-малко бихте се надявали, че вашата IDE поддържа Java 8 и / или 11 (версиите на LTS), Scala, Groovy, Kotlin и всички други JVM езици, които редовно използвате. Бихте искали също така да поддържа основните сървъри за приложения и най-популярните уеб рамки, включително Spring MVC, JSF, Struts, GWT, Play, Grails и Vaadin. Вашата IDE трябва да е съвместима с каквито и системи за изграждане и контрол на версиите да използва вашият екип за разработка; примери включват Apache Ant с Ivy, Maven и Gradle, заедно с Git, SVN, CVS, Mercurial и Bazaar. За допълнителен кредит вашата IDE трябва да може да обработва клиентските и базата данни на вашия стек, поддържайки вградени JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate и Java Persistence API.

И накрая, бихте се надявали, че вашата Java IDE ви позволява да редактирате, изграждате, отстранявате грешки и тествате вашите системи с лекота и изящество. В идеалния случай ще имате не само интелигентно попълване на код, но и рефакторинг и показатели на кода. Ако сте в магазин, който се занимава с тестови разработки, искате поддръжка за вашите тестови рамки и засичане. Ако вашата група използва билетна система и CI / CD, най-добре е вашата IDE да се свърже с тях. Ако трябва да внедрите и отстраните грешки в контейнери и облаци, вашата IDE трябва да ви помогне да го направите.

Имайки предвид тази основа, нека разгледаме претендентите.

IntelliJ IDEA

IntelliJ IDEA, водещата Java IDE както по отношение на характеристиките, така и по цена, се предлага в две издания: безплатното издание на Общността и платеното издание Ultimate, което има допълнителни функции.

Изданието на Общността е предназначено за разработка на JVM и Android. Той поддържа Java, Kotlin, Groovy и Scala; Android; Maven, Gradle и SBT; и Git, SVN, Mercurial, CVS и TFS.

Изданието Ultimate, предназначено за уеб и корпоративно развитие, поддържа Perforce в допълнение към другите системи за контрол на версиите; поддържа JavaScript и TypeScript; поддържа Java EE, Spring, GWT, Vaadin, Play, Grails и други рамки; и включва инструменти за бази данни и поддръжка на SQL.

Идеята е, че търговското (Ultimate) издание ще спечели своето място на работния плот на професионалист, оправдавайки платен абонамент чрез повишена производителност на програмистите. Ако печелите $ 50 000 - $ 100 000 годишно като разработчик на Java, не е необходимо много повишаване на производителността, за да ви осигури бърза възвръщаемост на инвестицията за бизнес IDEA от $ 500 / година. Цената намалява през следващите години за бизнеса, много по-ниска е за стартиращи фирми и физически лица и е безплатна за студенти, преподаватели, "Java шампиони" и разработчици с отворен код.

IntelliJ рекламира IDEA за задълбочена представа за вашия код, ергономичност на разработчиците, вградени инструменти за разработчици и опит за програмиране с полиглот. Нека да разгледаме подробно и да видим какво означават тези функции и как те могат да ви помогнат.

Мартин Хелър

Дълбоко вникване в кода ви

Оцветяването на синтаксиса и простото попълване на кода са дадени за редакторите на Java. IDEA надхвърля това, за да осигури „интелигентно завършване“, което означава, че може да изведе списък с най-подходящите символи, приложими в текущия контекст. Те се класират според вашата лична честота на използване. „Завършване на веригата“ се задълбочава и показва списък с приложими символи,  достъпни чрез методи или гетери  в текущия контекст. IDEA също така допълва статични членове или константи, като автоматично добавя всички необходими оператори за импортиране. Във всички завършвания на код IDEA се опитва да отгатне типа символ на изпълнение, да прецизира избора си от това и да добави отливки на класове, ако е необходимо.

Java кодът често съдържа други езици като низове. IDEA може да инжектира фрагменти от SQL, XPath, HTML, CSS и / или JavaScript код в Java String литерали. По този въпрос той може да рефакторира код на множество езици; например, ако преименувате клас в JPA израз, IDEA ще актуализира съответния клас на обект и JPA изрази.

Когато рефакторирате парче код, едно от нещата, които обикновено искате да направите, е също да рефакторирате всички дубликати на този код. IDEA Ultimate може да открие дубликати и подобни фрагменти и да приложи рефакторинга и към тях.

IntelliJ IDEA анализира вашия код, когато се зарежда и когато пишете. Той предлага инспекции, за да посочи възможни проблеми и, ако желаете, списък с бързи корекции на открития проблем.

Ергономичност на разработчика

IntelliJ проектира IDEA с оглед на творческия поток на разработчика, известен още като  "да бъдеш в зоната". Прозорецът на инструмента за проекти, показан вляво на Фигура 1, изчезва от погледа с просто щракване с мишката, така че да можете да се концентрирате върху редактора на кода. Всичко, което искате да направите, докато редактирате, има клавишна комбинация, включително извеждане на дефиниции на символи в изскачащ прозорец. Докато изучаването на преките пътища отнема време и практика, в крайна сметка те стават втора природа. Дори без да знае преките пътища, разработчикът може да се научи да използва IDEA лесно и бързо.

Дизайнът на дебъгера на IDEA е особено приятен. Стойностите на променливите се показват точно в прозореца на редактора, до съответния изходен код. Когато състоянието на променливата се промени, се променя и нейният подчертан цвят.

Вградени инструменти за разработчици

IntelliJ IDEA предоставя унифициран интерфейс за повечето основни системи за контрол на версиите, включително Git, SVN, Mercurial, CVS, Perforce и TFS. Можете да правите цялото си управление на промените направо в IDE. Докато тествах IDEA, пожелах последната промяна в блока на изходния код да се покаже в прозореца на редактора като анотация (както в Visual Studio). Както се оказва, има приставка за това.

IDEA също така интегрира инструменти за изграждане, тестови програми и инструменти за покритие, както и вграден терминален прозорец. IntelliJ няма собствен профилир, но поддържа няколко профили на трети страни чрез приставки. Те включват YourKit, създаден от бивш водещ разработчик на IntelliJ, и VisualVM, която е преопакована версия на NetBeans профила.

Отстраняването на грешки в Java може да бъде мъка, когато се случват мистериозни неща в класове, за които нямате изходен код. IDEA се предлага с декомпилатор за тези случаи.

Програмирането на Java сървъри често включва работа с бази данни, така че IDEA Ultimate включва инструменти за бази данни на SQL и NoSQL. Ако имате нужда от повече, специален SQL IDE (DataGrip) се предлага като част от абонамент за всички продукти, който е само малко по-скъп от абонамента за IDEA Ultimate.

IntelliJ IDEA поддържа всички основни сървъри за приложения на JVM и може да се разгръща и отстранява грешки в сървърите, като поправя основна болка за разработчиците на Enterprise Java. IDEA също така поддържа Docker чрез приставка, която добавя прозорец на инструмента на Docker. (Говорейки за приставки, IntelliJ има много от тях.)

Програмиране на полиглот

IDEA разшири помощта за кодиране за Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS и други рамки. Не всички от тях са Java рамки. В допълнение към Java, IDEA разбира много други езици, включително Groovy, Kotlin, Scala, JavaScript, TypeScript и SQL. Ако имате нужда от повече, в момента има стотици приставки на езика IntelliJ, включително приставки за R, Elm, Go, Rust и D.

Eclipse IDE

Eclipse, отдавна най-популярната Java IDE, е безплатна и с отворен код и е написана предимно на Java, въпреки че нейната архитектура на приставките позволява Eclipse да бъде разширена на други езици. Eclipse възниква през 2001 г. като проект на IBM за замяна на семейството на IDE на IBM Visual Age, базирано на Smalltalk, с преносим IDE, базиран на Java. Целта на проекта беше да затъмни Microsoft Visual Studio, откъдето идва и името.

Преносимостта на Java помага на Eclipse да бъде междуплатформена: Eclipse работи на Linux, Mac OS X, Solaris и Windows. Java Standard Widget Toolkit (SWT) е поне частично отговорен за външния вид и усещането на Eclipse, добро или лошо. По същия начин Eclipse дължи изпълнението си (или, казват някои, липсата му) на JVM. Eclipse има репутацията да работи бавно, което връща към по-стария хардуер и по-старите JVM. Дори и днес може да се чувства бавно, особено когато се актуализира във фонов режим с инсталирани много приставки.

Част от режийните разходи, случващи се в Eclipse, е вграденият инкрементален компилатор, който се изпълнява винаги, когато зарежда файл и всеки път, когато актуализирате кода си. Това е много добро нещо и осигурява индикатори за грешки, докато пишете.

Независимо от системата за изграждане, проектът на Eclipse Java също поддържа модел на неговото съдържание, който включва информация за йерархията на типа, препратки и декларации на Java елементи. Това също е баланс, нещо добро и позволява няколко помощника за редактиране и навигация, както и контурния изглед.

Текущата версия на Eclipse е 2018‑09. Инсталирах Eclipse IDE за Java EE Developers, но има много други инсталационни пакети, включително опцията за инсталиране на минималния Eclipse SDK и добавяне на приставки само при необходимост. Последната опция не е за хора със слаби сърца: не е трудно да се въведат конфликти между плъгини, които всъщност не  казват,  че са несъвместими.

Мартин Хелър

Разширяема поддръжка на инструменти

Екосистемата на приставките е една от силните страни на Eclipse, както и източник на случайни смущения. Понастоящем пазарът на Eclipse съдържа над 1600 решения, а добавките, предоставени от общността, могат или не могат да работят както са рекламирани. И все пак приставките Eclipse включват поддръжка за над 100 езика за програмиране и почти 200 рамки за разработка на приложения.

Поддържат се и повечето Java сървъри: ако дефинирате нова сървърна връзка от Eclipse, ще стигнете до списък с папки на доставчици, под който ще намерите около 30 сървъра за приложения, включително девет версии на Apache Tomcat. Търговските доставчици са склонни да обединяват своите предложения: например, има само един артикул под Red Hat JBoss Middleware, който включва WildFly и EAP Server Tools, както и JBoss AS.

Редактиране, сърфиране, рефакторинг и отстраняване на грешки

Първият опит на разработчика с Eclipse може да смущава, дори да обърква. Това е така, защото първата ви задача е да се адаптирате към концептуалната архитектура на Eclipse на работни пространства, перспективи и изгледи, чиито функции се определят от инсталираните от вас приставки. Например за разработката на Java сървър вероятно ще използвате перспективите за сърфиране Java, Java EE и Java; изглед на изследователя на пакети; перспективата за отстраняване на грешки; перспектива за синхронизиране на екип; уеб инструменти; перспектива за развитие на база данни; и перспектива за отстраняване на грешки в базата данни. На практика всички те ще започнат да имат смисъл, след като отворите нужните гледни точки.

Често има повече от един начин за изпълнение на дадена задача в Eclipse. Например, можете да разглеждате код с проекта Explorer и / или перспективата за сърфиране в Java; което ще изберете е въпрос на вкус и опит.

Поддръжката за търсене на Java ви позволява да намерите декларации, референции и поява на Java пакети, типове, методи и полета. Можете също да използвате бърз достъп за търсене и да използвате бързи изгледи, за да изскачате неща като контури на класа.