Välja din Java IDE

Uppdaterad: december 2018 .

Varje Java-utvecklare behöver en programmeringsredigerare eller IDE som kan hjälpa till med de grungierna delarna av att skriva Java och använda klassbibliotek och ramar. Att bestämma vilken redaktör eller IDE som passar dig bäst beror på flera saker, inklusive arten av projekten under utveckling, din roll i organisationen, processen som används av utvecklingsteamet och din nivå och färdigheter som programmerare. Ytterligare överväganden är om teamet har standardiserat verktyg och dina personliga preferenser.

De tre IDE som oftast väljs för Java-utveckling på serversidan är IntelliJ IDEA, Eclipse och NetBeans. Det här är dock inte de enda alternativen, och den här översynen kommer också att innehålla några lätta IDE.

För den här sammanställningen gjorde jag nya installationer av IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018‑09 för Java EE-utvecklare och Apache NetBeans (inkubering) IDE 9 på en Mac. Jag kollade också på flera Java-projekt med öppen källkod så att jag kunde testa alla IDE: er på samma projekt.

Om den här uppdateringen

Denna IDE-recension publicerades först i september 2016 och har uppdaterats i december 2018. Under de mellanliggande åren har Java-språket, API: er, JVM-ekosystemet och vissa ramar utvecklats avsevärt. Java EE 8 introducerade eller uppdaterade många Java-teknologispecifikationer, inklusive JSON-B (JavaScript Object Notation Binding), Java EE Security, Servlet 4.0 och JSF (JavaServer Faces) 2.3 för att bygga användargränssnitt på serversidan. Java EE 8 var också den sista versionen av Java-företaget från Oracle: Eclipse Foundation har tagit ansvaret för att förvalta tekniken, som den har ombetalt till Jakarta EE. Under tiden har JUnit avancerat till version 5 och bryter integrationer; IDEA och Eclipse har båda inbyggt stöd för JUnit 5, men i skrivande stund gör inte NetBeans det.

Alla dessa ändringar bör vara en del av din utvärdering av en IDE, vare sig för allmän användning eller för ett visst projekt.

NetBeans 10 lägger till stöd för JUnit 5 och JDK 11

Släpptes i januari 2019, NetBeans 10 lägger till stöd för JDK 11 och JUnit 5.

Grunder: Vad du behöver från en Java IDE

Du hoppas åtminstone att din IDE stöder Java 8 och / eller 11 (LTS-versionerna), Scala, Groovy, Kotlin och andra JVM-språk som du använder regelbundet. Du vill också att den ska stödja de stora applikationsservrarna och de mest populära webbramarna, inklusive Spring MVC, JSF, Struts, GWT, Play, Grails och Vaadin. Din IDE bör vara kompatibel med alla bygg- och versionskontrollsystem som ditt utvecklingsteam använder; exempel inkluderar Apache Ant med Ivy, Maven och Gradle, tillsammans med Git, SVN, CVS, Mercurial och Bazaar. För extra kredit bör din IDE kunna hantera klient- och databaslagren i din stack, med stöd för inbäddad JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate och Java Persistence API.

Slutligen hoppas du att din Java IDE låter dig redigera, bygga, felsöka och testa dina system med lätthet och nåd. Helst skulle du inte bara ha intelligent kodavslutning utan refactoring och kodvärden. Om du är i en butik som gör testdriven utveckling vill du ha stöd för dina testramar och stubbning. Om din grupp använder ett biljettsystem och CI / CD är det bäst om din IDE kan ansluta till dem. Om du behöver distribuera till och felsöka behållare och moln bör din IDE hjälpa dig att göra det.

Med den grunden i åtanke, låt oss överväga utmanarna.

IntelliJ IDEA

IntelliJ IDEA, den främsta Java IDE när det gäller både funktioner och pris, finns i två utgåvor: den kostnadsfria community-upplagan och den betalda Ultimate-upplagan, som har ytterligare funktioner.

Community-utgåvan är avsedd för utveckling av JVM och Android. Den stöder Java, Kotlin, Groovy och Scala; Android; Maven, Gradle och SBT; och Git, SVN, Mercurial, CVS och TFS.

Ultimate-utgåvan, avsedd för webb- och företagsutveckling, stöder Perforce förutom andra versionskontrollsystem; stöder JavaScript och TypeScript; stöder Java EE, Spring, GWT, Vaadin, Play, Grails och andra ramar; och innehåller databasverktyg och SQL-stöd.

Tanken är att den kommersiella (Ultimate) utgåvan kommer att förtjäna sin plats på en proffs skrivbord, vilket motiverar ett betalt abonnemang genom ökad produktivitet för programmerare. Om du tjänar $ 50K- $ 100K per år som Java-utvecklare tar det inte mycket av en produktivitetsökning för att ge dig en snabb avkastning på ett IDEA-abonnemang på $ 500 / år. Priset sjunker de närmaste åren för företag, är mycket lägre för nystartade företag och privatpersoner och är gratis för studenter, lärare, "Java-mästare" och utvecklare med öppen källkod.

IntelliJ visar IDEA för djup insikt i din kod, ergonomi för utvecklare, inbyggda utvecklarverktyg och en polyglot-programmeringsupplevelse. Låt oss granska och se vad dessa funktioner betyder och hur de kan hjälpa dig.

Martin Heller

Djup insikt i din kod

Syntaxfärgning och enkel kodkomplettering är givet för Java-redaktörer. IDEA går utöver det för att tillhandahålla "smart komplettering", vilket innebär att den kan dyka upp en lista över de mest relevanta symbolerna som är tillämpliga i det aktuella sammanhanget. Dessa rankas efter din personliga användningsfrekvens. "Chain complete" går djupare och visar en lista över tillämpliga symboler som är  tillgängliga via metoder eller getters  i det aktuella sammanhanget. IDEA kompletterar också statiska medlemmar eller konstanter och lägger automatiskt till alla nödvändiga importuttalanden. I alla kodkompletteringar försöker IDEA gissa runtime-symboltypen, förfina dess val från det och lägga till klassavkastningar efter behov.

Java-kod innehåller ofta andra språk som strängar. IDEA kan injicera fragment av SQL, XPath, HTML, CSS och / eller JavaScript-kod i Java String-bokstäver. För den delen kan den omforma koden på flera språk; till exempel, om du byter namn på en klass i ett JPA-uttalande kommer IDEA att uppdatera motsvarande entitetsklass och JPA-uttryck.

När du omformulerar en bit kod är en av de saker du vanligtvis vill göra också att omforma alla dubbletter av den koden. IDEA Ultimate kan upptäcka dubbletter och liknande fragment och tillämpa refactoring på dem också.

IntelliJ IDEA analyserar din kod när den laddas och när du skriver. Det erbjuder inspektioner för att påpeka möjliga problem och, om du vill, en lista med snabbkorrigeringar till det upptäckta problemet.

Utvecklare ergonomi

IntelliJ designade IDEA med utvecklarens kreativa flöde - aka  "att vara i zonen" - i åtanke. Projektverktygsfönstret som visas till vänster i figur 1 försvinner från vyn med ett enkelt musklick så att du kan koncentrera dig på kodredigeraren. Allt du vill göra när du redigerar har en kortkommando, inklusive att ta fram symboldefinitioner i ett popup-fönster. Samtidigt som det tar tid och övar att lära sig genvägarna så småningom blir de andra. Även utan att känna till genvägarna kan en utvecklare lära sig att använda IDEA enkelt och snabbt.

Designen på IDEA-felsökaren är särskilt trevlig. Variabla värden visas direkt i redigeringsfönstret, bredvid motsvarande källkod. När tillståndet för en variabel ändras ändras dess höjdfärg också.

Inbyggda utvecklarverktyg

IntelliJ IDEA tillhandahåller ett enhetligt gränssnitt för de flesta större versionskontrollsystem, inklusive Git, SVN, Mercurial, CVS, Perforce och TFS. Du kan göra all din förändringshantering direkt i IDE. När jag testade IDEA önskade jag att den senaste ändringen i ett källkodsblock skulle visas i redigeringsfönstret som en kommentar (som det gör i Visual Studio). Som det visar sig finns det ett plugin för det.

IDEA integrerar också byggverktyg, testlöpare och täckningsverktyg samt ett inbyggt terminalfönster. IntelliJ har inte sin egen profil, men den stöder flera tredjepartsprofiler genom plugins. Dessa inkluderar YourKit, skapad av en tidigare IntelliJ-leadutvecklare och VisualVM, som är en ompackad version av NetBeans-profilen.

Felsökning av Java kan vara svårt när mystiska saker händer i klasser som du inte har någon källkod för. IDEA levereras med en dekompilator för dessa fall.

Java-serverprogrammering innebär ofta att man arbetar med databaser, så IDEA Ultimate innehåller SQL- och NoSQL-databasverktyg. Om du behöver mer finns en dedikerad SQL IDE (DataGrip) tillgänglig som en del av en prenumeration på alla produkter som bara är lite dyrare än en IDEA Ultimate-prenumeration.

IntelliJ IDEA stöder alla större JVM-applikationsservrar och kan distribuera till och felsöka i servrarna, vilket fixar en viktig smärtpunkt för Enterprise Java-utvecklare. IDEA stöder också Docker via ett plugin som lägger till ett Docker-verktygsfönster. (På tal om plugins har IntelliJ många av dem.)

Programmering av polyglot

IDEA har utökat kodningshjälp för Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS och andra ramar. Inte alla dessa är Java-ramar. Förutom Java förstår IDEA många andra språk direkt, inklusive Groovy, Kotlin, Scala, JavaScript, TypeScript och SQL. Om du behöver mer finns det för närvarande hundratals IntelliJ-språkinsticksprogram, inklusive plugins för R, Elm, Go, Rust och D.

Förmörkelse IDE

Eclipse, länge den mest populära Java IDE, är gratis och öppen källkod och skrivs mestadels på Java, även om dess plugin-arkitektur tillåter Eclipse att utökas på andra språk. Eclipse har sitt ursprung 2001 som ett IBM-projekt för att ersätta den Smalltalk-baserade IBM Visual Age-familjen av IDE: er med en bärbar Java-baserad IDE. Ett mål för projektet var att förmörka Microsoft Visual Studio, därav namnet.

Java: s portabilitet hjälper Eclipse att vara plattform: Eclipse körs på Linux, Mac OS X, Solaris och Windows. Java Standard Widget Toolkit (SWT) är åtminstone delvis ansvarig för Eclipses utseende och känsla, för gott eller ont. På samma sätt är Eclipse skyldig JVM: s prestanda (eller, som vissa säger, brist på dem). Eclipse har rykte om att köra långsamt, vilket leder tillbaka till äldre hårdvara och äldre JVM. Även idag kan det kännas långsamt, särskilt när det uppdaterar sig i bakgrunden med många plugins installerade.

En del av kostnaden i Eclipse är dess inbyggda inkrementella kompilator, som körs när den laddar en fil och när du uppdaterar din kod. Detta är i balans mycket bra och ger felindikatorer när du skriver.

Oberoende av byggsystemet håller ett Eclipse Java-projekt också en modell av dess innehåll, som innehåller information om typhierarkin, referenser och deklarationer av Java-element. Detta är också i balans en bra sak, och möjliggör flera redigerings- och navigeringsassistenter samt översiktsvyn.

Den nuvarande versionen av Eclipse är 2018‑09. Jag installerade Eclipse IDE för Java EE-utvecklare, men det finns många andra installationspaket, inklusive möjligheten att installera minimal Eclipse SDK och bara lägga till plugins efter behov. Det sista alternativet är dock inte för svag i hjärtat: det är inte svårt att införa konflikter mellan plugins som faktiskt inte  säger att  de var oförenliga.

Martin Heller

Stöd för utbyggbara verktyg

Plugin-ekosystemet är en av Eclipses styrkor och är en källa till tillfällig frustration. Eclipse-marknaden innehåller för närvarande över 1 600 lösningar, och plugin-program som stöds av samhället fungerar eller kanske inte fungerar som annonserat. Eclipse-plugins innehåller fortfarande stöd för över 100 programmeringsspråk och nästan 200 ramar för applikationsutveckling.

De flesta Java-servrar stöds också: om du definierar en ny serveranslutning från Eclipse kommer du till en lista över leverantörsmappar, under vilken du hittar cirka 30 applikationsservrar, inklusive nio versioner av Apache Tomcat. De kommersiella leverantörerna tenderar att klumpa ihop sina erbjudanden: till exempel finns det bara en artikel under Red Hat JBoss Middleware, som inkluderar WildFly och EAP Server Tools, liksom JBoss AS.

Redigering, surfning, refactoring och felsökning

En utvecklares första erfarenhet av Eclipse kan vara oroväckande, till och med förvirrande. Detta beror på att din första uppgift är att anpassa sig till Eclipses konceptuella arkitektur av arbetsytor, perspektiv och vyer, vars funktioner bestäms av vilka plugins du har installerat. För Java-serverutveckling, till exempel, kommer du troligen att använda Java, Java EE och Java-perspektiv; paketutforskarens vy; felsökningsperspektivet; ett team synkroniseringsperspektiv; webbverktyg; ett databasutvecklingsperspektiv; och ett databasfelsökningsperspektiv. I praktiken kommer alla dessa att bli meningsfulla när du öppnar de synpunkter du behöver.

Det finns ofta mer än ett sätt att göra en viss uppgift i Eclipse. Du kan till exempel bläddra i kod med projektutforskaren och / eller Java-surfningsperspektivet; som du väljer är en fråga om smak och erfarenhet.

Med Java-sökstöd kan du hitta deklarationer, referenser och förekomster av Java-paket, typer, metoder och fält. Du kan också använda snabbåtkomst för att söka och använda snabbvyer för att dyka upp saker som klasskonturer.