Programmering

Velge Java IDE

Oppdatert: desember 2018.

Hver Java-utvikler trenger en programmeringseditor eller IDE som kan hjelpe deg med de grungier delene av å skrive Java og bruke klassebiblioteker og rammer. Å bestemme hvilken redaktør eller IDE som passer best for deg, avhenger av flere ting, inkludert karakteren til prosjektene under utvikling, din rolle i organisasjonen, prosessen som brukes av utviklingsteamet, og ditt nivå og ferdigheter som programmerer. Ytterligere betraktninger er om teamet har standardisert verktøy og dine personlige preferanser.

De tre IDEene som ofte er valgt for Java-utvikling på serversiden, er IntelliJ IDEA, Eclipse og NetBeans. Dette er imidlertid ikke de eneste valgene, og denne anmeldelsen vil også omfatte noen lette IDEer.

For denne sammendraget gjorde jeg nye installasjoner av IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018‑09 for Java EE Developers og Apache NetBeans (inkubering) IDE 9 på en Mac. Jeg sjekket også ut flere open source Java-prosjekter slik at jeg kunne teste alle IDEene på de samme prosjektene.

Om denne oppdateringen

Denne IDE-gjennomgangen ble først publisert i september 2016, og har blitt oppdatert i desember 2018. I de mellomliggende årene har Java-språket, API-ene, JVM-økosystemet og noen rammer utviklet seg betydelig. Java EE 8 introduserte eller oppdaterte mange Java-teknologispesifikasjoner, inkludert JSON-B (JavaScript Object Notation Binding), Java EE Security, Servlet 4.0 og JSF (JavaServer Faces) 2.3 for å bygge brukergrensesnitt på serversiden. Java EE 8 var også den endelige Java enterprise-utgivelsen fra Oracle: Eclipse Foundation har tatt ansvaret for å forvalte teknologien, som den har omdøpt til Jakarta EE. I mellomtiden har JUnit avansert til versjon 5, og ødelagt integrasjoner; IDEA og Eclipse har begge innfødt støtte for JUnit 5, men i skrivende stund har ikke NetBeans det.

Alle disse endringene bør være en del av evalueringen av en IDE, enten for generell bruk eller for et bestemt prosjekt.

NetBeans 10 legger til støtte for JUnit 5 og JDK 11

NetBeans 10 ble utgitt i januar 2019 og legger til støtte for JDK 11 og JUnit 5.

Grunnleggende: Hva du trenger fra en Java IDE

I det minste håper du at IDE støtter Java 8 og / eller 11 (LTS-versjonene), Scala, Groovy, Kotlin og andre JVM-språk du regelmessig bruker. Du vil også at den skal støtte de største applikasjonsserverne og de mest populære nettrammene, inkludert Spring MVC, JSF, Struts, GWT, Play, Grails og Vaadin. IDE-en din skal være kompatibel med alle bygg- og versjonskontrollsystemer utviklingsgruppen din bruker; eksempler inkluderer Apache Ant med Ivy, Maven og Gradle, sammen med Git, SVN, CVS, Mercurial og Bazaar. For ekstra kreditt bør IDE være i stand til å håndtere klient- og databaselagene i stakken din, og støtter innebygd JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate og Java Persistence API.

Til slutt vil du håpe at Java IDE lar deg redigere, bygge, feilsøke og teste systemene dine med letthet og nåde. Ideelt sett vil du ikke bare ha intelligent kodefullføring, men refactoring og kodemetoder. Hvis du er i en butikk som driver med testdrevet utvikling, vil du ha støtte for testrammer og stubbing. Hvis gruppen din bruker et billettsystem og CI / CD, er det best hvis IDE kan koble til dem. Hvis du trenger å distribuere til og feilsøke containere og skyer, bør IDE hjelpe deg med å gjøre det.

Med dette grunnlaget i bakhodet, la oss vurdere kandidatene.

IntelliJ IDEA

IntelliJ IDEA, den fremste Java IDE når det gjelder både funksjoner og pris, kommer i to utgaver: den gratis Community-utgaven og den betalte Ultimate-utgaven, som har tilleggsfunksjoner.

Community-utgaven er beregnet på utvikling av JVM og Android. Den støtter Java, Kotlin, Groovy og Scala; Android; Maven, Gradle og SBT; og Git, SVN, Mercurial, CVS og TFS.

Ultimate-utgaven, beregnet på nett- og bedriftsutvikling, støtter Perforce i tillegg til de andre versjonskontrollsystemene; støtter JavaScript og TypeScript; støtter Java EE, Spring, GWT, Vaadin, Play, Grails og andre rammer; og inkluderer databaseverktøy og SQL-støtte.

Tanken er at den kommersielle (Ultimate) utgaven vil tjene sin plass på en profesjonell desktop, og rettferdiggjøre et betalt abonnement gjennom økt programmererproduktivitet. Hvis du tjener $ 50K - $ 100K per år som Java-utvikler, tar det ikke mye av et produktivitetsløft for å gi deg en rask avkastning på et $ 500 / år-forretningsidea-abonnement. Prisen går ned de påfølgende årene for bedrifter, er mye lavere for oppstart og enkeltpersoner, og er gratis for studenter, lærere, "Java-mestere" og utviklere med åpen kildekode.

IntelliJ viser IDEA for dyp innsikt i koden din, ergonomi for utviklere, innebygde utviklerverktøy og en polyglot-programmeringsopplevelse. La oss se nærmere på hva disse funksjonene betyr, og hvordan de kan hjelpe deg.

Martin Heller

Dyp innsikt i koden din

Syntaksfarging og enkel kodefullføring er gitt for Java-redaktører. IDEA går utover det for å gi "smart komplettering", noe som betyr at den kan vise en liste over de mest relevante symbolene som er gjeldende i den nåværende sammenhengen. Disse er rangert etter din personlige bruksfrekvens. "Kjedefullføring" går dypere og viser en liste over gjeldende symbolertilgjengelig via metoder eller getters i dagens sammenheng. IDEA fullfører også statiske medlemmer eller konstanter, og legger automatisk til nødvendige importuttalelser. I alle kodefullføringer prøver IDEA å gjette kjøretypesymboltypen, avgrense valgene fra det og legge til klassekast etter behov.

Java-kode inneholder ofte andre språk som strenger. IDEA kan injisere fragmenter av SQL, XPath, HTML, CSS og / eller JavaScript-kode i Java String-bokstaver. For den saks skyld kan den omformere kode på flere språk; for eksempel hvis du gir nytt navn til en klasse i en JPA-setning, vil IDEA oppdatere den tilsvarende enhetsklassen og JPA-uttrykkene.

Når du omformulerer et stykke kode, er en av tingene du vanligvis vil gjøre, også omforme alle duplikatene av den koden. IDEA Ultimate kan oppdage duplikater og lignende fragmenter og bruke refactoring på dem også.

IntelliJ IDEA analyserer koden din når den lastes inn, og når du skriver. Den tilbyr inspeksjoner for å påpeke mulige problemer, og hvis du ønsker det, en liste over hurtigreparasjoner på det oppdagede problemet.

Utviklerergonomi

IntelliJ designet IDEA med utviklerens kreative flyt -aka "å være i sonen" - i tankene. Prosjektverktøyvinduet til venstre i figur 1 forsvinner fra visningen med et enkelt museklik, slik at du kan konsentrere deg om kodeditoren. Alt du vil gjøre under redigering har en hurtigtast, inkludert å få opp symboldefinisjoner i et popup-vindu. Mens det tar tid og praksis å lære snarveiene, blir de til slutt den andre naturen. Selv uten å vite snarveiene, kan en utvikler lære å bruke IDEA enkelt og raskt.

Designet til IDEA-feilsøkingsprogrammet er spesielt fint. Variable verdier vises rett i redigeringsvinduet, ved siden av den tilsvarende kildekoden. Når tilstanden til en variabel endres, endres også høydepunktfargen.

Innebygde utviklerverktøy

IntelliJ IDEA gir et enhetlig grensesnitt for de fleste større versjonskontrollsystemer, inkludert Git, SVN, Mercurial, CVS, Perforce og TFS. Du kan gjøre all endringsledelsen din rett i IDE. Da jeg testet IDEA, ønsket jeg at siste endring i en kildekodeblokk ville vises i redigeringsvinduet som en kommentar (som det gjør i Visual Studio). Som det viser seg, er det et plugin for det.

IDEA integrerer også byggeverktøy, testløpere og dekningsverktøy, samt et innebygd terminalvindu. IntelliJ har ikke sin egen profil, men den støtter flere tredjepartsprofilere gjennom plugins. Disse inkluderer YourKit, opprettet av en tidligere IntelliJ-lederutvikler, og VisualVM, som er en ompakket versjon av NetBeans-profilen.

Feilsøking av Java kan være vondt når mystiske ting skjer i klasser du ikke har kildekode for. IDEA leveres med en dekompilator for disse sakene.

Java-serverprogrammering innebærer ofte å jobbe med databaser, så IDEA Ultimate inkluderer SQL- og NoSQL-databaseverktøy. Hvis du trenger mer, er en dedikert SQL IDE (DataGrip) tilgjengelig som en del av et abonnement på alle produkter som bare er litt dyrere enn et IDEA Ultimate-abonnement.

IntelliJ IDEA støtter alle de store JVM-applikasjonsserverne, og kan distribuere til og feilsøke serverne, og fikse et stort smertepunkt for Enterprise Java-utviklere. IDEA støtter også Docker gjennom et plugin som legger til et Docker-verktøyvindu. (Apropos plugins, IntelliJ har mange av dem.)

Polyglot programmering

IDEA har utvidet kodningshjelp for Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS og andre rammer. Ikke alle disse er Java-rammer. I tillegg til Java forstår IDEA mange andre språk ut av esken, inkludert Groovy, Kotlin, Scala, JavaScript, TypeScript og SQL. Hvis du trenger mer, er det for tiden hundrevis av IntelliJ språk plugins, inkludert plugins for R, Elm, Go, Rust og D.

Formørkelse IDE

Eclipse, lenge den mest populære Java IDE, er gratis og åpen kildekode og er skrevet hovedsakelig på Java, selv om plugin-arkitekturen gjør at Eclipse kan utvides på andre språk. Eclipse stammer fra 2001 som et IBM-prosjekt for å erstatte den Smalltalk-baserte IBM Visual Age-familien av IDEer med en bærbar Java-basert IDE. Et mål med prosjektet var å formørke Microsoft Visual Studio, derav navnet.

Java's bærbarhet hjelper Eclipse til å være plattform: Eclipse kjører på Linux, Mac OS X, Solaris og Windows. Java Standard Widget Toolkit (SWT) er i det minste delvis ansvarlig for Eclipses utseende, for godt eller vondt. På samme måte skylder Eclipse sin ytelse (eller, noen sier, mangel på det) til JVM. Eclipse har et rykte for å kjøre sakte, noe som går tilbake til eldre maskinvare og eldre JVM-er. Selv i dag kan det føles tregt, spesielt når det oppdateres i bakgrunnen med mange plugins installert.

En del av kostnadene som skjer i Eclipse er den innebygde inkrementelle kompilatoren, som kjører når den laster inn en fil og når du oppdaterer koden. Dette er i balanse en veldig god ting, og gir feilindikatorer mens du skriver.

Uavhengig av byggesystemet vedlikeholder et Eclipse Java-prosjekt også en modell av innholdet, som inkluderer informasjon om typehierarkiet, referanser og erklæringer om Java-elementer. Dette er også en god ting, og muliggjør flere redigerings- og navigasjonsassistenter samt oversiktsvisningen.

Den nåværende versjonen av Eclipse er 2018‑09. Jeg installerte Eclipse IDE for Java EE Developers, men det er mange andre installasjonspakker, inkludert muligheten til å installere minimal Eclipse SDK og bare legge til plugins etter behov. Det siste alternativet er ikke for svak av hjertet, men det er ikke vanskelig å innføre konflikter mellom plugins som faktisk ikke gjorde detsi de var uforenlige.

Martin Heller

Støtte for utvidbare verktøy

Plugin-økosystemet er en av Eclipses styrker, i tillegg til å være en kilde til sporadisk frustrasjon. Eclipse-markedet inneholder for øyeblikket over 1600 løsninger, og programtilskuddsbaserte programtillegg kan eller ikke fungerer som annonsert. Likevel inkluderer Eclipse-plugins støtte for over 100 programmeringsspråk og nesten 200 applikasjonsutviklingsrammer.

De fleste Java-servere støttes også: Hvis du definerer en ny serverforbindelse fra Eclipse, vil du komme til en liste over leverandørmapper, der du finner omtrent 30 applikasjonsservere, inkludert ni versjoner av Apache Tomcat. De kommersielle leverandørene har en tendens til å samle sine tilbud sammen: for eksempel er det bare en vare under Red Hat JBoss Middleware, som inkluderer WildFly og EAP Server Tools, samt JBoss AS.

Redigering, surfing, refactoring og feilsøking

En utviklers første erfaring med Eclipse kan være foruroligende, til og med forvirrende. Dette er fordi din første oppgave er å tilpasse seg Eclipses konseptuelle arkitektur av arbeidsområder, perspektiver og visninger, hvis funksjoner bestemmes av hvilke plugins du har installert. For utvikling av Java-server, for eksempel, vil du sannsynligvis bruke perspektivene Java, Java EE og Java; pakkeutforskervisningen; feilsøkingsperspektivet; et synkroniseringsperspektiv for teamet; nettverktøy; et databaseutviklingsperspektiv; og et feilsøkingsperspektiv for databaser. I praksis vil alle disse være fornuftige når du åpner visningene du trenger.

Det er ofte mer enn en måte å utføre en gitt oppgave på i formørkelse. For eksempel kan du bla gjennom koden med prosjektutforskeren og / eller Java-surfeperspektivet; som du velger er et spørsmål om smak og erfaring.

Med Java-søkestøtte kan du finne erklæringer, referanser og forekomster av Java-pakker, typer, metoder og felt. Du kan også bruke Hurtig tilgang til å søke, og bruke hurtigvisninger til å dukke opp ting som klasseskiss.

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