Programmering

Valg af din Java IDE

Opdateret: december 2018.

Hver Java-udvikler har brug for en programmeringseditor eller IDE, der kan hjælpe med de grungier dele af at skrive Java og bruge klassebiblioteker og rammer. At beslutte, hvilken redaktør eller IDE der passer bedst til dig, afhænger af flere ting, herunder karakteren af ​​projekterne under udvikling, din rolle i organisationen, den proces, som udviklingsholdet bruger, og dit niveau og dine færdigheder som programmør. Yderligere overvejelser er, om teamet har standardiseret værktøjer og dine personlige præferencer.

De tre IDE'er, der oftest vælges til Java-udvikling på serversiden, er IntelliJ IDEA, Eclipse og NetBeans. Dette er dog ikke de eneste valg, og denne anmeldelse vil også omfatte nogle lette IDE'er.

Til denne sammenfatning lavede jeg nye installationer af IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018‑09 til Java EE Developers og Apache NetBeans (inkubering) IDE 9 på en Mac. Jeg tjekkede også adskillige open source Java-projekter ud, så jeg kunne teste alle IDE'erne på de samme projekter.

Om denne opdatering

Denne IDE-gennemgang blev første gang offentliggjort i september 2016 og blev opdateret i december 2018. I de mellemliggende år har Java-sprog, API'er, JVM-økosystem og nogle rammer udviklet sig markant. Java EE 8 introducerede eller opdaterede mange Java-teknologispecifikationer, herunder JSON-B (JavaScript Object Notation Binding), Java EE Security, Servlet 4.0 og JSF (JavaServer Faces) 2.3 til opbygning af servergrænseflader på serversiden. Java EE 8 var også den sidste Java-virksomhedsudgivelse fra Oracle: Eclipse Foundation har overtaget styringen af ​​teknologien, som den har omdøbt til Jakarta EE. I mellemtiden er JUnit avanceret til version 5 og bryder integrationer; IDEA og Eclipse har begge indbygget support til JUnit 5, men i skrivende stund gør NetBeans ikke.

Alle disse ændringer skal være en del af din evaluering af en IDE, hvad enten det er til almindelig brug eller til et bestemt projekt.

NetBeans 10 tilføjer support til JUnit 5 og JDK 11

Udgivet i januar 2019 tilføjer NetBeans 10 support til JDK 11 og JUnit 5.

Grundlæggende: Hvad du har brug for fra en Java IDE

I det mindste håber du, at din IDE understøtter Java 8 og / eller 11 (LTS-versionerne), Scala, Groovy, Kotlin og ethvert andet JVM-sprog, du regelmæssigt bruger. Du vil også have det til at understøtte de store applikationsservere og de mest populære webrammer, herunder Spring MVC, JSF, Struts, GWT, Play, Grails og Vaadin. Din IDE skal være kompatibel med de build- og versionskontrolsystemer, dit udviklingsteam bruger; eksempler inkluderer Apache Ant med Ivy, Maven og Gradle sammen med Git, SVN, CVS, Mercurial og Bazaar. For ekstra kredit skal din IDE være i stand til at håndtere klient- og databaselagene i din stak, der understøtter indlejret JavaScript, TypeScript, HTML, SQL, JavaServer-sider, Dvaletilstand og Java Persistence API.

Endelig vil du håbe, at din Java IDE giver dig mulighed for at redigere, opbygge, fejlfinde og teste dine systemer med lethed og nåde. Ideelt set ville du ikke kun have intelligent kodefuldførelse, men refactoring og kodemetrik. Hvis du er i en butik, der laver testdrevet udvikling, vil du have support til dine testrammer og stubbing. Hvis din gruppe bruger et billetsystem og CI / CD, er det bedst, hvis din IDE kan oprette forbindelse til dem. Hvis du har brug for at implementere til og debugge på containere og skyer, skal din IDE hjælpe dig med at gøre det.

Med dette fundament i tankerne, lad os overveje kandidaterne.

IntelliJ IDEA

IntelliJ IDEA, den førende Java IDE med hensyn til både funktioner og pris, kommer i to udgaver: den gratis Community-udgave og den betalte Ultimate-udgave, som har yderligere funktioner.

Community-udgaven er beregnet til JVM- og Android-udvikling. Det understøtter Java, Kotlin, Groovy og Scala; Android; Maven, Gradle og SBT; og Git, SVN, Mercurial, CVS og TFS.

Den ultimative udgave, der er beregnet til udvikling af web og virksomhed, understøtter Perforce ud over de andre versionskontrolsystemer; understøtter JavaScript og TypeScript; understøtter Java EE, Spring, GWT, Vaadin, Play, Grails og andre rammer; og inkluderer databaseværktøjer og SQL-support.

Ideen er, at den kommercielle (Ultimate) udgave vil tjene sin plads på en professionel desktop, hvilket retfærdiggør et betalt abonnement gennem øget programmørproduktivitet. Hvis du tjener $ 50K - $ 100K om året som Java-udvikler, skal der ikke meget til en produktivitetsforøgelse for at give dig en hurtig ROI på et $ 500 / år forretnings-IDEA-abonnement. Prisen går ned i de efterfølgende år for virksomheder, er meget lavere for startups og enkeltpersoner og er gratis for studerende, lærere, "Java-mestere" og open source-udviklere.

IntelliJ viser IDEA for dyb indsigt i din kode, udviklerergonomi, indbyggede udviklerværktøjer og en polyglot-programmeringsoplevelse. Lad os se nærmere på, hvad disse funktioner betyder, og hvordan de kan hjælpe dig.

Martin Heller

Dyb indsigt i din kode

Syntaksfarvning og simpel kodefuldførelse er givet for Java-redaktører. IDEA går ud over det for at give "smart komplettering", hvilket betyder, at det kan poppe op en liste over de mest relevante symboler, der gælder i den aktuelle sammenhæng. Disse rangeres efter din personlige brugsfrekvens. "Kædefuldførelse" går dybere og viser en liste over anvendelige symbolertilgængelig via metoder eller getters i den nuværende sammenhæng. IDEA udfylder også statiske medlemmer eller konstanter og tilføjer automatisk alle nødvendige importopgørelser. I alle kodefuldførelser forsøger IDEA at gætte runtime-symboltypen, forfine sine valg ud fra det og tilføje klassekast efter behov.

Java-kode indeholder ofte andre sprog som strenge. IDEA kan injicere fragmenter af SQL, XPath, HTML, CSS og / eller JavaScript-kode i Java String-bogstaver. For den sags skyld kan den omlægge kode på tværs af flere sprog; for eksempel, hvis du omdøber en klasse i en JPA-sætning, opdaterer IDEA den tilsvarende enhedsklasse og JPA-udtryk.

Når du omformulerer et stykke kode, er en af ​​de ting, du typisk vil gøre, også at omforme alle duplikaterne af den kode. IDEA Ultimate kan registrere dubletter og lignende fragmenter og anvende refactoring på dem også.

IntelliJ IDEA analyserer din kode, når den indlæses, og når du skriver. Det tilbyder inspektioner for at påpege mulige problemer og, hvis du ønsker det, en liste over hurtige rettelser til det opdagede problem.

Udviklerergonomi

IntelliJ designet IDEA med udviklerens kreative flow -aka "at være i zonen" - i tankerne. Projektværktøjsvinduet til venstre i figur 1 forsvinder fra visning med et enkelt museklik, så du kan koncentrere dig om kodeditoren. Alt, hvad du vil gøre under redigering, har en tastaturgenvej, herunder hentning af symboldefinitioner i et pop op-vindue. Mens det at lære genveje tager tid og praksis, bliver de til sidst anden natur. Selv uden at kende genveje, kan en udvikler lære at bruge IDEA nemt og hurtigt.

Designet af IDEA debugger er især pænt. Variable værdier vises lige i editorvinduet ved siden af ​​den tilsvarende kildekode. Når tilstanden for en variabel ændres, ændres dens højdepunktfarve også.

Indbyggede udviklerværktøjer

IntelliJ IDEA leverer en samlet grænseflade til de fleste større versionskontrolsystemer, herunder Git, SVN, Mercurial, CVS, Perforce og TFS. Du kan udføre al din ændringsstyring lige i IDE. Da jeg testede IDEA, ville jeg ønske, at sidste ændring i en kildekodeblok ville vises i editorvinduet som en kommentar (som det gør i Visual Studio). Som det viser sig, er der et plugin til det.

IDEA integrerer også byggeværktøjer, testløbere og dækningsværktøjer samt et indbygget terminalvindue. IntelliJ har ikke sin egen profil, men den understøtter flere tredjepartsprofiler gennem plugins. Disse inkluderer YourKit, oprettet af en tidligere IntelliJ-leadudvikler, og VisualVM, som er en ompakket version af NetBeans-profilen.

Fejlfinding af Java kan være en smerte, når mystiske ting sker i klasser, som du ikke har nogen kildekode for. IDEA leveres med en dekompiler til disse sager.

Java-serverprogrammering involverer ofte arbejde med databaser, så IDEA Ultimate inkluderer SQL- og NoSQL-databaseværktøjer. Hvis du har brug for mere, er en dedikeret SQL IDE (DataGrip) tilgængelig som en del af et abonnement på alle produkter, der kun er lidt dyrere end et IDEA Ultimate-abonnement.

IntelliJ IDEA understøtter alle de store JVM-applikationsservere og kan implementere til og debugge på serverne, hvilket løser et stort smertepunkt for Enterprise Java-udviklere. IDEA understøtter også Docker gennem et plugin, der tilføjer et Docker-værktøjsvindue. (Apropos plugins, IntelliJ har mange af dem.)

Polyglot programmering

IDEA har udvidet kodningshjælp til Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS og andre rammer. Ikke alle disse er Java-rammer. Ud over Java forstår IDEA mange andre sprog ud af boksen, herunder Groovy, Kotlin, Scala, JavaScript, TypeScript og SQL. Hvis du har brug for mere, er der i øjeblikket hundredvis af IntelliJ-sprog plugins, herunder plugins til R, Elm, Go, Rust og D.

Formørkelse IDE

Eclipse, lang den mest populære Java IDE, er gratis og open source og er for det meste skrevet på Java, selvom dens plugin-arkitektur gør det muligt at udvide Eclipse til andre sprog. Eclipse stammer fra 2001 som et IBM-projekt, der skal erstatte den Smalltalk-baserede IBM Visual Age-familie af IDE'er med en bærbar Java-baseret IDE. Et mål for projektet var at formørke Microsoft Visual Studio, deraf navnet.

Java's bærbarhed hjælper Eclipse med at være på tværs af platforme: Eclipse kører på Linux, Mac OS X, Solaris og Windows. Java Standard Widget Toolkit (SWT) er i det mindste delvist ansvarlig for Eclipse's look and feel, for godt eller ondt. Ligeledes skylder Eclipse sin præstation (eller nogle siger mangel på den) til JVM. Eclipse har ry for at køre langsomt, hvilket går tilbage til ældre hardware og ældre JVM'er. Selv i dag kan det dog føles langsomt, især når det opdaterer sig selv i baggrunden med mange plugins installeret.

En del af omkostningerne i Eclipse er dens indbyggede trinvise compiler, der kører, når den indlæser en fil, og når du opdaterer din kode. Dette er i balance en meget god ting og giver fejlindikatorer, mens du skriver.

Uafhængigt af byggesystemet opretholder et Eclipse Java-projekt også en model af dets indhold, der inkluderer information om typehierarkiet, referencer og erklæringer af Java-elementer. Dette er også i balance en god ting og muliggør flere redigerings- og navigationsassistenter såvel som oversigtsvisningen.

Den aktuelle version af Eclipse er 2018‑09. Jeg installerede Eclipse IDE til Java EE-udviklere, men der er mange andre installationspakker, herunder muligheden for at installere den minimale Eclipse SDK og kun tilføje plugins efter behov. Den sidste mulighed er ikke for svag af hjertet, men det er ikke svært at indføre konflikter mellem plugins, der faktisk ikke gjorde detsige de var uforenelige.

Martin Heller

Understøttelse af udvideligt værktøj

Plugin-økosystemet er en af ​​Eclipses styrker såvel som at være en kilde til lejlighedsvis frustration. Eclipse-markedet indeholder i øjeblikket over 1.600 løsninger, og community-bidragede plugins fungerer måske ikke som annonceret. Eclipse-plugins inkluderer stadig understøttelse af over 100 programmeringssprog og næsten 200 applikationsudviklingsrammer.

De fleste Java-servere understøttes også: Hvis du definerer en ny serverforbindelse fra Eclipse, kommer du til en liste over leverandørmapper, hvorunder du finder omkring 30 applikationsservere, inklusive ni versioner af Apache Tomcat. De kommercielle leverandører har tendens til at klumpe deres tilbud sammen: for eksempel er der kun en vare under Red Hat JBoss Middleware, som inkluderer WildFly og EAP Server Tools samt JBoss AS.

Redigering, browsing, refactoring og fejlretning

En udviklers første oplevelse med Eclipse kan være foruroligende, endda forvirrende. Dette skyldes, at din første opgave er at tilpasse sig Eclipses konceptuelle arkitektur af arbejdsområder, perspektiver og visninger, hvis funktioner bestemmes af hvilke plugins, du har installeret. Til Java-serverudvikling bruger du f.eks. Sandsynligvis browsingperspektiverne Java, Java EE og Java; pakkeudforskervisningen; debugging perspektivet et hold synkroniserende perspektiv webværktøjer; et databaseudviklingsperspektiv; og et databasefejlfindingsperspektiv. I praksis vil alle disse begynde at give mening, når du åbner de synspunkter, du har brug for.

Der er ofte mere end én måde at udføre en given opgave på i formørkelse. For eksempel kan du gennemse kode med projektudforskeren og / eller Java-browsingperspektivet; som du vælger er et spørgsmål om smag og oplevelse.

Understøttelse af Java-søgning giver dig mulighed for at finde erklæringer, referencer og forekomster af Java-pakker, typer, metoder og felter. Du kan også bruge Hurtig adgang til at søge og bruge hurtige visninger til at dukke op ting som klasseskitser.

$config[zx-auto] not found$config[zx-overlay] not found