Programiranje

Izbira Java IDE

Posodobljeno: december 2018.

Vsak razvijalec Jave potrebuje programski urejevalnik ali IDE, ki lahko pomaga pri grobjih delih pisanja Jave in uporabi knjižnic razredov in ogrodja. Odločitev, kateri urejevalnik ali IDE vam bo najbolj ustrezal, je odvisna od več stvari, vključno z naravo projektov v razvoju, vašo vlogo v organizaciji, procesom, ki ga uporablja razvojna skupina, ter vašo stopnjo in spretnosti programerja. Dodatna vprašanja so, ali je ekipa standardizirala orodja in vaše osebne želje.

Trije IDE-ji, ki so najpogosteje izbrani za razvoj Java na strani strežnika, so IntelliJ IDEA, Eclipse in NetBeans. Vendar to niso edine možnosti, ta pregled pa bo vključeval tudi nekaj lahkih IDE-jev.

Za ta pregled sem naredil sveže namestitve IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018‑09 za razvijalce Java EE in Apache NetBeans (inkubiranje) IDE 9 na Macu. Preveril sem tudi več odprtokodnih projektov Java, da sem lahko preizkusil vse IDE-je na istih projektih.

O tej posodobitvi

Ta pregled IDE je bil prvič objavljen septembra 2016, posodobljen pa je bil decembra 2018. V teh letih so se jezik Java, API-ji, ekosistem JVM in nekateri okviri bistveno razvili. Java EE 8 je predstavil ali posodobil številne tehnične specifikacije Java, vključno z JSON-B (vezava notacij objektov JavaScript), Java EE Security, Servlet 4.0 in JSF (JavaServer Faces) 2.3 za gradnjo uporabniških vmesnikov na strani strežnika. Java EE 8 je bila tudi zadnja izdaja podjetja Java za podjetje Oracle: fundacija Eclipse je prevzela skrbništvo nad tehnologijo, ki jo je preimenovala v Jakarta EE. Medtem je JUnit napredoval do različice 5, prekinila integracije; IDEA in Eclipse imata izvorno podporo za JUnit 5, toda NetBeans od tega pisanja ne.

Vse te spremembe bi morale biti del ocene IDE, bodisi za splošno uporabo bodisi za določen projekt.

NetBeans 10 dodaja podporo za JUnit 5 in JDK 11

Izšel januarja 2019, NetBeans 10 dodaja podporo za JDK 11 in JUnit 5.

Osnove: Kaj potrebujete od Java IDE

Upali bi vsaj, da vaš IDE podpira Javo 8 in / ali 11 (različici LTS), Scala, Groovy, Kotlin in katere koli druge jezike JVM, ki jih redno uporabljate. Želeli bi tudi, da podpira glavne strežnike aplikacij in najbolj priljubljene spletne okvire, vključno z Spring MVC, JSF, Struts, GWT, Play, Grails in Vaadin. Vaš IDE mora biti združljiv z vsemi sistemi za nadgradnjo in nadzor nad različicami, ki jih uporablja vaša razvojna skupina; primeri vključujejo Apache Ant z Ivy, Maven in Gradle, skupaj z Git, SVN, CVS, Mercurial in Bazaar. Za dodatno kreditno sposobnost bi moral vaš IDE obvladovati odjemalske in baze podatkov vašega sklada, ki podpirajo vdelane JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate in Java Persistence API.

Na koncu bi upali, da vam Java IDE omogoča enostavno urejanje, gradnjo, odpravljanje napak in preizkušanje vaših sistemov. V idealnem primeru ne bi imeli samo inteligentnega dokončanja kode, temveč tudi refaktoring in meritve kode. Če ste v trgovini, ki se ukvarja s preskusnim razvojem, potrebujete podporo za svoje testne okvire in stubbing. Če vaša skupina uporablja sistem vozovnic in CI / CD, je najbolje, če se vaš IDE lahko poveže z njimi. Če morate razporediti vsebnike in oblake v naloge in jih odpraviti, vam mora pri tem pomagati IDE.

Z mislijo na te temelje razmislimo o kandidatih.

IntelliJ IDEA

IntelliJ IDEA, prvi Java IDE tako po lastnostih kot po ceni, je na voljo v dveh izdajah: brezplačni izdaji Skupnosti in plačani izdaji Ultimate, ki ima dodatne funkcije.

Izdaja Skupnosti je namenjena razvoju JVM in Android. Podpira Java, Kotlin, Groovy in Scala; Android; Maven, Gradle in SBT; in Git, SVN, Mercurial, CVS in TFS.

Izdaja Ultimate, namenjena razvoju spleta in podjetij, poleg drugih sistemov za nadzor različic podpira Perforce; podpira JavaScript in TypeScript; podpira Java EE, Spring, GWT, Vaadin, Play, Grails in druge okvire; in vključuje orodja za baze podatkov in podporo za SQL.

Ideja je, da si bo komercialna (Ultimate) izdaja prislužila mesto na profesionalnem namizju, kar bo upravičilo plačljivo naročnino s povečano produktivnostjo programerjev. Če letno zaslužite od 50 do 100 tisoč dolarjev kot razvijalec Jave, vam ne bo treba povečati produktivnosti, da boste lahko hitro povrnili donosnost naložbe v poslovno IDEA na 500 dolarjev na leto. Cena se v naslednjih letih znižuje za podjetja, precej nižja je za zagonska podjetja in posameznike ter je brezplačna za študente, učitelje, "Java prvake" in razvijalce odprtokodnih programov.

IntelliJ spodbuja IDEA za globok vpogled v vašo kodo, ergonomijo razvijalcev, vgrajena orodja za razvijalce in izkušnjo poliglotskega programiranja. Podrobneje si oglejmo, kaj pomenijo te funkcije in kako vam lahko pomagajo.

Martin Heller

Globok vpogled v kodo

Sintaksno obarvanje in preprosto dokončanje kode sta dana urejevalnikom Java. IDEA presega to in zagotavlja "pametno dokončanje", kar pomeni, da lahko prikaže seznam najpomembnejših simbolov, ki veljajo v trenutnem kontekstu. Ti so razvrščeni glede na vašo pogostost uporabe. "Dokončanje verige" se poglobi in prikaže seznam ustreznih simbolovdostopna prek metod ali geterjev v trenutnem kontekstu. IDEA dopolnjuje tudi statične člane ali konstante in samodejno dodaja vse potrebne izjave o uvozu. V vseh dokončanjih kode IDEA poskuša uganiti vrsto izvajalnega simbola, natančneje določiti njegove izbire in po potrebi dodati odlitke razredov.

Koda Java pogosto vsebuje druge jezike kot nize. IDEA lahko v literal Java String vbrizga fragmente SQL, XPath, HTML, CSS in / ali JavaScript. Glede tega lahko preoblikuje kodo v več jezikih; če na primer preimenujete razred v stavku JPA, bo IDEA posodobil ustrezni razred entitete in izraze JPA.

Ko preoblikujete del kode, je ena od stvari, ki jo običajno želite narediti, tudi refaktor vseh dvojnikov te kode. IDEA Ultimate lahko zazna dvojnike in podobne fragmente ter tudi na njih uporabi preoblikovanje.

IntelliJ IDEA analizira vašo kodo, ko se naloži in ko vnesete. Ponuja inšpekcijske preglede, da opozori na morebitne težave in, če želite, seznam hitrih popravkov odkrite težave.

Ergonomija razvijalca

IntelliJ je zasnoval IDEA z ustvarjalnim tokom razvijalca -aka "biti v coni" - v mislih. Okno orodja Project, prikazano levo na sliki 1, s preprostim klikom miške izgine iz pogleda, tako da se lahko osredotočite na urejevalnik kode. Vse, kar želite narediti med urejanjem, ima bližnjico na tipkovnici, vključno s prikazom definicij simbolov v pojavnem oknu. Medtem ko učenje bližnjic sicer traja in vadi, sčasoma postanejo druga narava. Tudi brez poznavanja bližnjic se lahko razvijalec nauči uporabljati IDEA enostavno in hitro.

Zasnova razhroščevalnika IDEA je še posebej lepa. Vrednosti spremenljivk so prikazane neposredno v oknu urejevalnika, poleg ustrezne izvorne kode. Ko se stanje spremenljivke spremeni, se spremeni tudi njena barva poudarka.

Vgrajena orodja za razvijalce

IntelliJ IDEA ponuja poenoten vmesnik za večino glavnih sistemov za nadzor različic, vključno z Git, SVN, Mercurial, CVS, Perforce in TFS. Vse svoje spremembe sprememb lahko opravite kar v IDE. Ko sem preizkušal IDEA, sem si zaželel, da bi zadnja sprememba v bloku izvorne kode se v oknu urejevalnika prikaže kot pripis (tako kot v Visual Studio). Kot kaže, za to obstaja vtičnik.

IDEA vključuje tudi gradbena orodja, testne tekače in orodja za pokrivanje ter vgrajeno okno terminala. IntelliJ nima lastnega profilatorja, podpira pa več drugih profilov prek vtičnikov. Sem spadajo YourKit, ki ga je ustvaril nekdanji vodilni razvijalec IntelliJ, in VisualVM, ki je prepakirana različica profila NetBeans.

Odpravljanje napak Java je lahko bolečina, ko se v razredih, za katere nimate izvorne kode, zgodijo skrivnostne stvari. IDEA ima za te primere dekompilator.

Programiranje strežnikov Java pogosto vključuje delo z bazami podatkov, zato IDEA Ultimate vključuje orodja za baze podatkov SQL in NoSQL. Če potrebujete več, je na voljo namenski IDE za SQL (DataGrip) kot del naročnine na vse izdelke, ki je le malo dražja od naročnine IDEA Ultimate.

IntelliJ IDEA podpira vse glavne strežnike aplikacij JVM in se lahko namesti na strežnike in odpravlja napake v njih, s čimer odpravi glavno bolečino za razvijalce Enterprise Java. IDEA podpira tudi Docker prek vtičnika, ki doda okno orodja Docker. (Ko že govorimo o vtičnikih, jih ima IntelliJ veliko.)

Programiranje poliglota

IDEA je razširila pomoč pri kodiranju za Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS in druge okvire. Vse to niso ogrodja Java. IDEA poleg Jave razume tudi številne druge jezike, med drugim Groovy, Kotlin, Scala, JavaScript, TypeScript in SQL. Če potrebujete več, je trenutno na stotine jezikovnih vtičnikov IntelliJ, vključno z vtičniki za R, Elm, Go, Rust in D.

Eclipse IDE

Eclipse, dolgo najbolj priljubljen Java IDE, je brezplačen in odprtokoden in je večinoma napisan v Javi, čeprav njegova arhitektura vtičnikov omogoča razširitev Eclipse v druge jezike. Eclipse je nastal leta 2001 kot IBM-ov projekt za zamenjavo družine IDE-jev IBM Visual Age, ki temeljijo na Smalltalku, s prenosnim IDE-jem na osnovi Jave. Cilj projekta je bil zasenčiti Microsoft Visual Studio, od tod tudi ime.

Prenosljivost Jave pomaga Eclipse med različnimi platformami: Eclipse deluje v sistemih Linux, Mac OS X, Solaris in Windows. Java Standard Widget Toolkit (SWT) je vsaj delno odgovoren za videz in počutje Eclipse, dobro ali slabo. Podobno Eclipse svojo uspešnost (ali nekateri pravijo pomanjkanje) dolguje JVM. Eclipse slovi po počasnem delovanju, kar vrača starejšo strojno opremo in starejše JVM-je. Še danes se počuti počasi, še posebej, če se v ozadju posodablja z nameščenimi številnimi vtičniki.

Del režijskih stroškov, ki se dogaja v Eclipse, je vgrajeni inkrementalni prevajalnik, ki se zažene vsakič, ko naloži datoteko in vsakič, ko posodobite kodo. To je v dobrem stanju zelo dobro in zagotavlja indikatorje napak med tipkanjem.

Neodvisno od sistema gradnje projekt Eclipse Java vzdržuje tudi model svoje vsebine, ki vključuje informacije o hierarhiji tipov, sklicih in deklaracijah elementov Java. To je tudi dobro, in omogoča več pomočnikov za urejanje in navigacijo ter oris.

Trenutna različica programa Eclipse je 2018‑09. Namestil sem Eclipse IDE za razvijalce Java EE, vendar obstaja še veliko drugih namestitvenih paketov, vključno z možnostjo namestitve minimalnega SDK Eclipse in dodajanje vtičnikov le po potrebi. Zadnja možnost pa ni za tiste s srcem: kljub temu ni težko uvesti konfliktov med vtičniki, ki se dejansko nisorecimo bili so nezdružljivi.

Martin Heller

Podpora za razširljiva orodja

Ekosistema vtičnikov je ena od prednosti Eclipsea, hkrati pa je vir občasnih težav. Tržnica Eclipse trenutno vsebuje več kot 1600 rešitev, vtičniki, ki jih prispeva skupnost, pa lahko delujejo ali ne, kot so oglaševani. Kljub temu vtičniki Eclipse vključujejo podporo za več kot 100 programskih jezikov in skoraj 200 okvirov za razvoj aplikacij.

Podprtih je tudi večina strežnikov Java: če iz Eclipse določite novo strežniško povezavo, boste prišli do seznama map prodajalcev, pod katerim boste našli približno 30 aplikacijskih strežnikov, vključno z devetimi različicami Apache Tomcat. Komercialni ponudniki ponavadi združujejo svoje ponudbe: na primer, pod Red Hat JBoss Middleware je samo en izdelek, ki vključuje WildFly in EAP Server Tools ter JBoss AS.

Urejanje, brskanje, preoblikovanje in odpravljanje napak

Prva izkušnja razvijalca z Eclipse je lahko moteča, celo zmedena. To je zato, ker je vaša prva naloga prilagoditi se Eclipsejevi konceptualni arhitekturi delovnih prostorov, perspektiv in pogledov, katerih funkcije določajo vtičniki, ki ste jih namestili. Na primer za razvoj Java strežnika boste verjetno uporabili perspektive brskanja Java, Java EE in Java; pogled raziskovalca paketov; perspektiva odpravljanja napak; timska perspektiva sinhronizacije; spletna orodja; perspektiva razvoja baze podatkov; in perspektiva za odpravljanje napak v zbirki podatkov. V praksi bodo vsi ti začeli imeti smisel, ko boste odprli poglede, ki jih potrebujete.

V programu Eclipse je pogosto več načinov za izvedbo določene naloge. Na primer, po brskalniku po brskalniku lahko brskate po projektu in / ali v perspektivi brskanja Java; za katero se odločite, je stvar okusa in izkušenj.

Podpora za iskanje Java omogoča iskanje deklaracij, sklicev in pojavitev paketov, vrst, metod in polj Java. Za iskanje lahko uporabite tudi hitri dostop in uporabite hitre poglede, da se prikažejo stvari, kot so obrisi predavanj.

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