Scegliere il tuo IDE Java

Aggiornato: dicembre 2018 .

Ogni sviluppatore Java ha bisogno di un editor di programmazione o IDE che possa aiutare con le parti più grungenti della scrittura di Java e l'utilizzo di librerie di classi e framework. Decidere quale editor o IDE si adatta meglio a te dipende da diversi fattori, tra cui la natura dei progetti in fase di sviluppo, il tuo ruolo nell'organizzazione, il processo utilizzato dal team di sviluppo e il tuo livello e le tue capacità di programmatore. Ulteriori considerazioni sono se il team ha standardizzato gli strumenti e le tue preferenze personali.

I tre IDE più spesso scelti per lo sviluppo Java lato server sono IntelliJ IDEA, Eclipse e NetBeans. Queste non sono le uniche scelte, tuttavia, e questa recensione includerà anche alcuni IDE leggeri.

Per questo riepilogo, ho eseguito nuove installazioni di IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018‑09 per sviluppatori Java EE e Apache NetBeans (incubazione) IDE 9 su Mac. Ho anche verificato diversi progetti Java open source in modo da poter testare tutti gli IDE sugli stessi progetti.

A proposito di questo aggiornamento

Questa recensione IDE è stata pubblicata per la prima volta a settembre 2016 ed è stata aggiornata a dicembre 2018. Negli anni successivi il linguaggio Java, le API, l'ecosistema JVM e alcuni framework si sono evoluti in modo significativo. Java EE 8 ha introdotto o aggiornato molte specifiche della tecnologia Java, tra cui JSON-B (JavaScript Object Notation Binding), Java EE Security, Servlet 4.0 e JSF (JavaServer Faces) 2.3 per la creazione di interfacce utente lato server. Java EE 8 è stata anche l'ultima versione aziendale di Java di Oracle: la Eclipse Foundation si è occupata della gestione della tecnologia, che ha rinominato Jakarta EE. Nel frattempo, JUnit è avanzato alla versione 5, interrompendo le integrazioni; IDEA ed Eclipse hanno entrambi il supporto nativo per JUnit 5, ma al momento della stesura di questo documento NetBeans no.

Tutte queste modifiche dovrebbero far parte della valutazione di un IDE, sia per uso generale che per un particolare progetto.

NetBeans 10 aggiunge il supporto per JUnit 5 e JDK 11

Rilasciato a gennaio 2019, NetBeans 10 aggiunge il supporto per JDK 11 e JUnit 5.

Nozioni di base: cosa ti serve da un IDE Java

Come minimo, speri che il tuo IDE supporti Java 8 e / o 11 (le versioni LTS), Scala, Groovy, Kotlin e qualsiasi altro linguaggio JVM che usi regolarmente. Vorresti anche che supportasse i principali server di applicazioni e i framework web più popolari, inclusi Spring MVC, JSF, Struts, GWT, Play, Grails e Vaadin. Il tuo IDE dovrebbe essere compatibile con qualsiasi build e sistema di controllo della versione utilizzato dal tuo team di sviluppo; esempi includono Apache Ant con Ivy, Maven e Gradle, insieme a Git, SVN, CVS, Mercurial e Bazaar. Per un credito extra, il tuo IDE dovrebbe essere in grado di gestire i livelli client e database del tuo stack, supportando JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate e Java Persistence API incorporati.

Infine, speri che il tuo IDE Java ti consenta di modificare, costruire, eseguire il debug e testare i tuoi sistemi con facilità e grazia. Idealmente, non avresti solo il completamento del codice intelligente, ma anche il refactoring e le metriche del codice. Se ti trovi in ​​un negozio che fa sviluppo basato sui test, desideri supporto per i framework di test e lo stubbing. Se il tuo gruppo utilizza un sistema di ticket e CI / CD, è meglio se il tuo IDE può connettersi a loro. Se devi eseguire la distribuzione e il debug su container e cloud, il tuo IDE dovrebbe aiutarti a farlo.

Con queste basi in mente, consideriamo i contendenti.

IntelliJ IDEA

IntelliJ IDEA, il principale IDE Java in termini di funzionalità e prezzo, è disponibile in due edizioni: l'edizione Community gratuita e l'edizione Ultimate a pagamento, che ha funzionalità aggiuntive.

L'edizione Community è destinata allo sviluppo JVM e Android. Supporta Java, Kotlin, Groovy e Scala; Android; Maven, Gradle e SBT; e Git, SVN, Mercurial, CVS e TFS.

L'edizione Ultimate, destinata allo sviluppo web e aziendale, supporta Perforce oltre agli altri sistemi di controllo delle versioni; supporta JavaScript e TypeScript; supporta Java EE, Spring, GWT, Vaadin, Play, Grails e altri framework; e include strumenti di database e supporto SQL.

L'idea è che l'edizione commerciale (Ultimate) guadagnerà il suo posto sul desktop di un professionista, giustificando un abbonamento a pagamento attraverso una maggiore produttività del programmatore. Se stai guadagnando $ 50K- $ 100K all'anno come sviluppatore Java, non ci vuole molto di un aumento della produttività per darti un rapido ROI su un abbonamento IDEA aziendale da $ 500 / anno. Il prezzo scende negli anni successivi per le imprese, è molto più basso per le startup e i singoli ed è gratuito per studenti, insegnanti, "campioni Java" e sviluppatori open source.

IntelliJ promuove IDEA per una visione approfondita del codice, dell'ergonomia dello sviluppatore, degli strumenti di sviluppo integrati e di un'esperienza di programmazione poliglotta. Analizziamo e vediamo cosa significano queste funzionalità e come possono aiutarti.

Martin Heller

Informazioni approfondite sul tuo codice

La colorazione della sintassi e il semplice completamento del codice sono un dato di fatto per gli editor Java. IDEA va oltre per fornire "completamento intelligente", nel senso che può far apparire un elenco dei simboli più rilevanti applicabili nel contesto corrente. Questi sono classificati in base alla frequenza di utilizzo personale. "Completamento catena" va più in profondità e visualizza un elenco di simboli applicabili  accessibili tramite metodi o getter  nel contesto corrente. IDEA completa anche i membri statici o le costanti, aggiungendo automaticamente tutte le istruzioni di importazione necessarie. In tutti i completamenti del codice, IDEA cerca di indovinare il tipo di simbolo di runtime, perfezionare le sue scelte da quello e aggiungere cast di classe secondo necessità.

Il codice Java spesso contiene altri linguaggi come stringhe. IDEA può iniettare frammenti di codice SQL, XPath, HTML, CSS e / o JavaScript in letterali Java String. Del resto, può eseguire il refactoring del codice in più lingue; ad esempio, se rinomini una classe in un'istruzione JPA, IDEA aggiornerà la classe di entità corrispondente e le espressioni JPA.

Quando esegui il refactoring di un pezzo di codice, una delle cose che in genere vuoi fare è anche il refactoring di tutti i duplicati di quel codice. IDEA Ultimate può rilevare duplicati e frammenti simili e applicare il refactoring anche a loro.

IntelliJ IDEA analizza il codice quando viene caricato e durante la digitazione. Offre ispezioni per evidenziare possibili problemi e, se lo si desidera, un elenco di soluzioni rapide al problema rilevato.

Ergonomia dello sviluppatore

IntelliJ ha progettato IDEA tenendo a mente il flusso creativo dello sviluppatore, noto anche come  "essere nella zona". La finestra dello strumento Progetto mostrata a sinistra nella Figura 1 scompare dalla visualizzazione con un semplice clic del mouse, in modo da potersi concentrare sull'editor del codice. Tutto ciò che vuoi fare durante la modifica ha una scorciatoia da tastiera, inclusa la visualizzazione delle definizioni dei simboli in una finestra a comparsa. Mentre l'apprendimento delle scorciatoie richiede tempo e pratica, alla fine diventano una seconda natura. Anche senza conoscere le scorciatoie, uno sviluppatore può imparare a utilizzare IDEA facilmente e rapidamente.

Il design del debugger IDEA è particolarmente piacevole. I valori delle variabili vengono visualizzati direttamente nella finestra dell'editor, accanto al codice sorgente corrispondente. Quando lo stato di una variabile cambia, cambia anche il suo colore di evidenziazione.

Strumenti per sviluppatori integrati

IntelliJ IDEA fornisce un'interfaccia unificata per la maggior parte dei principali sistemi di controllo delle versioni, inclusi Git, SVN, Mercurial, CVS, Perforce e TFS. Puoi eseguire tutta la gestione delle modifiche direttamente nell'IDE. Mentre provavo IDEA, desideravo che l' ultima modifica in un blocco di codice sorgente venisse visualizzata nella finestra dell'editor come annotazione (come in Visual Studio). A quanto pare, c'è un plugin per questo.

IDEA integra anche strumenti di creazione, test runner e strumenti di copertura, oltre a una finestra di terminale incorporata. IntelliJ non dispone di un proprio profiler, ma supporta diversi profiler di terze parti tramite plug-in. Questi includono YourKit, creato da un ex sviluppatore principale di IntelliJ, e VisualVM, che è una versione riconfezionata del profiler NetBeans.

Il debug di Java può essere un problema quando accadono cose misteriose in classi per le quali non hai codice sorgente. IDEA viene fornito con un decompilatore per questi casi.

La programmazione di server Java spesso implica l'utilizzo di database, quindi IDEA Ultimate include strumenti di database SQL e NoSQL. Se hai bisogno di più, un IDE SQL dedicato (DataGrip) è disponibile come parte di un abbonamento a tutti i prodotti che è solo leggermente più costoso di un abbonamento IDEA Ultimate.

IntelliJ IDEA supporta tutti i principali server di applicazioni JVM e può distribuire ed eseguire il debug nei server, risolvendo un punto critico importante per gli sviluppatori Java Enterprise. IDEA supporta anche Docker tramite un plug-in che aggiunge una finestra dello strumento Docker. (Parlando di plugin, IntelliJ ne ha molti.)

Programmazione poliglotta

IDEA ha esteso l'assistenza alla codifica per Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS e altri framework. Non tutti questi sono framework Java. Oltre a Java, IDEA comprende molti altri linguaggi fuori dagli schemi, inclusi Groovy, Kotlin, Scala, JavaScript, TypeScript e SQL. Se ne hai bisogno di più, attualmente ci sono centinaia di plugin di linguaggio IntelliJ, inclusi plugin per R, Elm, Go, Rust e D.

Eclipse IDE

Eclipse, a lungo l'IDE Java più popolare, è gratuito e open source ed è scritto principalmente in Java, sebbene la sua architettura a plugin consenta di estendere Eclipse ad altri linguaggi. Eclipse è nato nel 2001 come progetto IBM per sostituire la famiglia di IDE IBM Visual Age basata su Smalltalk con un IDE portatile basato su Java. Uno degli obiettivi del progetto era eclissare Microsoft Visual Studio, da cui il nome.

La portabilità di Java aiuta Eclipse a essere multipiattaforma: Eclipse funziona su Linux, Mac OS X, Solaris e Windows. Il Java Standard Widget Toolkit (SWT) è almeno in parte responsabile dell'aspetto di Eclipse, nel bene e nel male. Allo stesso modo, Eclipse deve le sue prestazioni (o, alcuni dicono, la loro mancanza) alla JVM. Eclipse ha la reputazione di funzionare lentamente, il che si rifà a vecchi hardware e JVM meno recenti. Anche oggi può sembrare lento, tuttavia, soprattutto quando si aggiorna in background con molti plugin installati.

Parte dell'overhead che si verifica in Eclipse è il suo compilatore incrementale integrato, che viene eseguito ogni volta che carica un file e ogni volta che si aggiorna il codice. Questo è tutto sommato un'ottima cosa e fornisce indicatori di errore durante la digitazione.

Indipendentemente dal sistema di compilazione, un progetto Java Eclipse mantiene anche un modello del proprio contenuto, che include informazioni sulla gerarchia dei tipi, i riferimenti e le dichiarazioni degli elementi Java. Anche questa è nel complesso una buona cosa e consente diversi assistenti di modifica e navigazione, nonché la visualizzazione struttura.

La versione corrente di Eclipse è 2018-2009. Ho installato l'IDE Eclipse per sviluppatori Java EE, ma ci sono molti altri pacchetti di installazione, inclusa l'opzione per installare l'SDK Eclipse minimo e aggiungere plug-in solo se necessario. L'ultima opzione, tuttavia, non è per i deboli di cuore: non è difficile introdurre conflitti tra plug-in che in realtà non hanno  detto  che erano incompatibili.

Martin Heller

Supporto per strumenti estensibili

L'ecosistema dei plugin è uno dei punti di forza di Eclipse, oltre ad essere una fonte di frustrazione occasionale. Il marketplace di Eclipse contiene attualmente oltre 1.600 soluzioni e i plug-in forniti dalla community possono o non possono funzionare come pubblicizzato. Tuttavia, i plugin Eclipse includono il supporto per oltre 100 linguaggi di programmazione e quasi 200 framework di sviluppo di applicazioni.

Anche la maggior parte dei server Java è supportata: se definisci una nuova connessione al server da Eclipse, verrai a un elenco di cartelle dei fornitori, sotto le quali troverai circa 30 server delle applicazioni, incluse nove versioni di Apache Tomcat. I fornitori commerciali tendono a raggruppare le loro offerte insieme: ad esempio, c'è solo un elemento in Red Hat JBoss Middleware, che include WildFly e EAP Server Tools, oltre a JBoss AS.

Modifica, esplorazione, refactoring e debug

La prima esperienza di uno sviluppatore con Eclipse può essere sconcertante, persino confusa. Questo perché il tuo primo compito è quello di adattarti all'architettura concettuale di Eclipse di spazi di lavoro, prospettive e viste, le cui funzioni sono determinate dai plugin che hai installato. Per lo sviluppo di server Java, ad esempio, è probabile che si utilizzino le prospettive di esplorazione Java, Java EE e Java; la vista Esplora pacchetti; la prospettiva di debugging; una prospettiva di sincronizzazione della squadra; strumenti web; una prospettiva di sviluppo del database; e una prospettiva di debug del database. In pratica, tutti questi inizieranno ad avere senso una volta aperte le visualizzazioni di cui hai bisogno.

C'è spesso più di un modo per eseguire una determinata attività in Eclipse. Ad esempio, è possibile sfogliare il codice con Esplora progetti e / o la prospettiva di navigazione Java; quello che scegli è una questione di gusto ed esperienza.

Il supporto per la ricerca Java consente di trovare dichiarazioni, riferimenti e occorrenze di pacchetti, tipi, metodi e campi Java. Puoi anche utilizzare Accesso rapido per eseguire ricerche e utilizzare visualizzazioni rapide per visualizzare elementi come gli schemi delle lezioni.