Recensione: i 4 grandi IDE Java a confronto

Quando pensi a un IDE Java, indubbiamente immagini un'applicazione grafica in cui scrivi codice sorgente Java, quindi compila, esegui il debug ed esegui. Ovviamente questa è una piccola parte del quadro: se stai creando un'applicazione Java, è probabile che tu stia lavorando con più di Java.

Potrebbe essere coinvolto un database relazionale. Oppure, se stai creando un'applicazione basata sul Web, potresti dover gestire AJAX, e questo significa JavaScript. E HTML. E quell'applicazione verrà eseguita da un server applicazioni come Tomcat, quindi avrai bisogno di strumenti di gestione per il server applicazioni. Non sei solo; stai lavorando con un team di sviluppatori, quindi sarebbe utile se quell'IDE funzionasse con Git o Subversion.

L'elenco potrebbe continuare, ma hai un'idea. Raramente accade che, quando si crea un'applicazione Java, tutto ciò che si fa è creare un'applicazione Java. E un IDE deve fornire strumenti che ti aiutino a lottare per sottomettere tutte le tecnologie correlate in cui il tuo progetto ti coinvolgerà.

In questa recensione, esaminerò lo stato attuale di quattro dei più noti IDE Java attualmente disponibili:

  • Il venerabile Eclipse. Sebbene esistano versioni di Eclipse per lo sviluppo in molti linguaggi oltre a Java (C ++, Python, Fortran, Ruby, persino Cobol, per citarne alcuni), Eclipse è basato su Java ed è meglio conosciuto come IDE Java. Il fatto che possa essere utilizzato per svilupparsi in così tante altre lingue è una testimonianza della sua estensibilità, che è ... ampia.
  • NetBeans. NetBeans può supportare lo sviluppo in linguaggi diversi da Java, anche se non tanti quanto Eclipse. NetBeans è nato come prodotto commerciale alla fine degli anni '90, ma è stato successivamente reso open source da Sun ed è rimasto tale da quando Oracle ha acquistato Sun (e la conseguente acquisizione di NetBeans).
  • JDeveloper. JDeveloper è anche una proprietà Oracle. Tuttavia, mentre NetBeans supporta lo sviluppo in più lingue e in una varietà di ambienti Java, JDeveloper è solidamente Java ed è destinato principalmente allo sviluppo J2EE.
  • IntelliJ IDEA. Come Eclipse e NetBeans, IntelliJ IDEA di JetBrains supporta una varietà di linguaggi e tecnologie Java. IDEA è particolarmente degno di nota per l'incorporazione di miglioramenti della produttività negli editor e negli strumenti dell'IDE. A differenza degli altri IDE, IDEA è disponibile in una Ultimate Edition a pagamento e in una Community Edition più limitata, ma gratuita.

Eclisse

Eclipse è disponibile in più varianti di quante tu possa contare. Non solo fornisce le funzionalità fondamentali di un IDE - gestione del progetto, modifica del codice sorgente, compilazione, debug, controllo della versione - ma la piattaforma Eclipse è stata modificata per essere utilizzata come browser di database (DBeaver), un modellatore di processi aziendali (BPMN2 Modeler), un toolkit per la visualizzazione dei dati e la generazione di report (BIRT, Business Intelligence e Reporting Tools) e altro ancora. Le versioni di Eclipse sono state create per domini applicativi specifici: test, sviluppo automobilistico, sviluppo di sistemi paralleli e così via. Il numero di plug-in disponibili è ugualmente infinito, così come la gamma di linguaggi di programmazione supportati.

Eclipse è anche il carattere di molti progetti importanti. Ad esempio, Eclipse RAP (Remote Application Platform) è un framework per la creazione di un'applicazione aziendale che può essere presentata su dispositivi che vanno dai browser Web ai client di applicazioni desktop ai dispositivi mobili. L'API riutilizzabile basata su SWT di Eclipse RAP ti consente di distribuire a una varietà di destinazioni da una singola base di codice.

In breve, Eclipse non è tanto un IDE quanto una piattaforma IDE.

Eppure Eclipse è sicuramente meglio conosciuto come un IDE Java di prim'ordine. È scritto in Java e può quindi essere eseguito su tutti i sistemi operativi primari. Come ci si potrebbe aspettare con così tante varianti di Eclipse, ci sono molte varianti di quello che potrebbe essere chiamato "Eclipse per Java". Vai al sito Web di Eclipse e troverai quanto segue:

  • Eclipse di base per sviluppatori Java, per la creazione di applicazioni Java SE
  • Eclipse per sviluppatori Java EE, per la creazione di applicazioni basate su Web e server
  • Eclipse per Java e sviluppatori di report, un amalgama di strumenti Java EE e lo strumento di creazione di report BIRT, che facilita la progettazione e la creazione di report, include un motore di creazione di grafici e può essere applicato sia a Java desktop che ad applicazioni Web
  • Eclipse per sviluppatori Java e DSL, incluso il framework Xtext open source che consente di creare DSL (linguaggi specifici del dominio)
  • Eclipse for Testers, che include lo strumento Jubula per la creazione e la gestione di test GUI automatizzati di applicazioni che utilizzano Swing, SWT, HTML e altre tecnologie di interfaccia utente

Queste edizioni sono raccolte più o meno specifiche di plug-in di Eclipse. La flessibilità dell'architettura plug-in di Eclipse significa che puoi equipaggiare la tua particolare installazione di Eclipse con una combinazione virtualmente illimitata di funzionalità. Per questa recensione, tuttavia, ho installato la versione Java EE di Eclipse, un IDE attrezzato per creare applicazioni Java Web, server e desktop, oltre a Enterprise JavaBeans, connettori e altro. Poiché utilizzo Groovy per scrivere script di test, ho aggiunto il plug-in Groovy da Codehaus.

L'ultima versione (al momento della stesura di questo documento) è Eclipse Luna, che supporta completamente Java 8, inclusa la capacità dell'analizzatore di memoria Eclipse di accettare dump di heap Java 8. Luna supporta anche Paho, un sistema di messaggistica M2M (machine to machine) che impiega MQTT (Message Queuing Telemetry Transport), un protocollo di messaggistica di pubblicazione e sottoscrizione leggero.

Lavorare con Eclipse

Quando apri Eclipse, il tuo spazio di lavoro è composto da numerose finestre a schede, note anche come visualizzazioni. Una vista fornisce la gestione di una data risorsa. Un editor è un tipo di visualizzazione; l'esploratore di pacchetti, che mostra la disposizione di pacchetti, classi e librerie in un'applicazione Java, è un altro tipo di visualizzazione; la finestra del debugger è una vista; e così via.

Una "prospettiva" - un concetto centrale nell'interfaccia utente di Eclipse - è una combinazione di viste orientate a un'attività specifica. Durante la scrittura effettiva del codice Java, utilizzerai la prospettiva Java, con le sue viste struttura e editor. Quando è il momento di eseguire il debug dell'applicazione, passerai alla prospettiva Debug con le sue visualizzazioni di debug e thread attivi. Per il lavoro sul database, aprire la prospettiva Sviluppo database, con la vista Esplora origine dati e la vista Esecuzione SQL. Il numero di prospettive disponibili in una determinata sessione di Eclipse dipende generalmente dai plug-in installati.

Per quanto complesso possa sembrare - sembrerà certamente complesso a chiunque sia nuovo in Eclipse - la topologia dell'area di lavoro di Eclipse sarà familiare a chiunque abbia utilizzato un IDE. Le visualizzazioni di navigazione si trovano a sinistra, la modifica del contenuto al centro, le visualizzazioni della gerarchia dei componenti a destra e l'output e lo stato nella parte inferiore. Naturalmente, la disposizione di questi elementi visivi è completamente personalizzabile e puoi aggiungere viste a una prospettiva o rimuoverle a piacimento.

Eclipse è pieno fino all'orlo di ogni tipo di editor che puoi immaginare: editor per risorse Java, CSS, HTML, SQL, JavaScript, file Maven POM (Project Object Model) e - oh, sì - file sorgente Java. In effetti, pensa a un tipo di file modificabile dall'utente che un'applicazione Java potrebbe presumibilmente impiegare, ed Eclipse ha un editor per esso. Anche se scopri un file per il quale Eclipse non fornisce un editor, l'IDE può essere configurato per aprire un editor esterno. Ovviamente, gli editor di Eclipse sono consapevoli del contenuto. Apri un file Java e ottieni l'editor dei sorgenti Java. Apri un file XML e ottieni l'editor XML.

Durante la codifica, Eclipse è pronto con una varietà di assist: completamento automatico, risoluzione delle dipendenze (usa una classe che non hai ancora importato ed Eclipse ti offrirà di aggiungere l'istruzione di importazione), un sacco di codice boilerplate modelli - costruttori, getter e setter, il toString()metodo - e altro ancora. Il suo repertorio di refactoring include rinominare, spostare (trasferire un metodo da una classe a un'altra e aggiornare automaticamente i riferimenti in tutto il codice), estrarre un'interfaccia da una classe e trucchi extra utili. Eclipse ti aiuta anche a navigare attraverso i riferimenti e le dichiarazioni di un metodo o di una variabile.

Anche con tutta questa assistenza, se sbagli, Eclipse terrà traccia delle tue modifiche e la sua funzione di cronologia locale ti consente di tornare indietro nel tempo e visualizzare le tue modifiche. È possibile visualizzare le versioni precedenti del file ed Eclipse fornisce una visualizzazione grafica delle differenze in modo da poter esaminare i delta tra le versioni.

Per la creazione di un progetto, il supporto di Eclipse per Ant è integrato. Il supporto Maven viene fornito tramite il plug-in del progetto M2Eclipse. Se preferisci Gradle, c'è un plug-in, anche se le sue capacità variano a seconda del supporto linguistico che hai aggiunto a Eclipse. Il plug-in può gestire Java, Groovy e Scala e può gestire la produzione di WAR (archivi Web) e EAR (archivi aziendali). Parlando di Scala, se vuoi usare quel linguaggio JVM in Eclipse, c'è un plug-in per lo strumento di compilazione, SBT, così come un progetto IDE Scala in piena regola basato su Eclipse.

Per il controllo della versione, Eclipse viene fornito con il supporto per CVS (include un client integrato). L'edizione Java EE di Eclipse copre anche EGit, che fornisce l'integrazione con Git. Sono disponibili plug-in per Subversion, Visual SourceSafe, Perforce e Mercurial. In effetti, sarebbe sorprendente trovare un prodotto software di controllo della versione per il quale non esiste un plug-in Eclipse gratuito.

Guida e documentazione di Eclipse

C'è più materiale nella documentazione in linea di Eclipse di quanto tu possa immaginare, e poiché Eclipse è in circolazione da così tanto tempo, alcuni possono tornare indietro di molto. Ad esempio, nel Wiki di Eclipse troverai un puntatore a un articolo "Panoramica tecnica della piattaforma Eclipse" in due parti. La versione originale della prima parte è stata scritta nel 2001; la sua revisione più recente è stata il 2006. La guida per l'utente del workbench online per la versione Luna è anche online qui. Va avanti per chilometri, poiché include la documentazione per tutti i componenti Luna: C / C ++, Fortran, BIRT, EGit, JavaScript, sviluppo di elaborazione parallela e così via.

La guida in linea di runtime di Eclipse include la funzione Guida dinamica. Si apre una barra laterale: una finestra mobile che può essere ancorata ovunque si desideri nella GUI. Fai clic su qualsiasi vista nella tua sessione Eclipse e il contenuto della barra laterale cambia per riflettere la tua scelta. Ad esempio, se stai modificando una classe Java e fai clic sulla finestra dell'editor, il contenuto della barra laterale della guida potrebbe essere costituito da voci come "Concetti dell'editor Java", "Utilizzo di modelli di codice" e "Riferimento all'editor Java". 

Eclipse può gestire quasi tutte le attività che potrebbero sorgere nel processo di sviluppo Java. Può anche essere dotato di tutti gli strumenti necessari per le faccende ausiliarie: occuparsi dei servizi Web, gestire database, eseguire il debug di un application server remoto. Il suo grande punto di forza è il numero apparentemente illimitato e la varietà di plug-in. In effetti, non è irragionevole dire che, quando avvii Eclipse, stai attivando una colonia di plug-in. L'unico vero compito che dovrai affrontare durante la gestione del tuo progetto di sviluppo con Eclipse è gestire Eclipse stesso, poiché è facile creare un'anarchia IDE.

NetBeans

Un consolidato IDE Java, il progetto NetBeans è attualmente gestito da Oracle. L'IDE è stato reso open source da Sun Microsystems alla fine degli anni '90. Puoi utilizzare NetBeans per sviluppare applicazioni non solo in Java, ma anche in Groovy, JavaScript, PHP e C / C ++. I plug-in supportati dalla community sono disponibili per Python, Ruby e Scala.

L'attuale versione di NetBeans è la versione 8.0.2, e qui 8 è il numero magico. Perché questa versione aggiunge il supporto per Java 8, incluso il supporto per il debug del codice nel motore JavaScript Nashorn di JDK 8. Questa versione supporta anche il framework PrimeFaces, oltre a un funzionamento migliorato per Maven. (PrimeFaces è un framework di interfaccia utente che combina Java Server Faces e componenti AJAX. Può essere utilizzato sia per applicazioni desktop che mobili.) La versione 8 di NetBeans ha potenziato il supporto per le librerie JavaScript come AngularJS e JQuery e aggiunto il supporto per RequireJS, una libreria che gestisce le dipendenze JavaScript e il caricamento dei moduli.

Questa ultima versione di NetBeans gestisce i server di applicazioni Tomcat 8 e Java EE, oltre a WildFly (ex JBoss) e GlassFish. Tomcat e GlassFish sono forniti in bundle con l'IDE.

NetBeans è disponibile in diverse edizioni. Per lo sviluppo Java di base, vai con l'edizione Java SE. Scegli l'edizione EE per lo sviluppo aziendale. Aggiunge il supporto Java EE, oltre al supporto per i server delle applicazioni menzionati sopra. Se si lavora con il server delle applicazioni WebLogic, NetBeans può gestirlo, ma è necessario scaricare il server WebLogic separatamente e registrarlo con l'IDE.

Esistono edizioni NetBeans per lo sviluppo C / C ++, insieme allo sviluppo PHP e HTML5. Se vuoi tutto, c'è anche un'edizione per quello.

Scorecard Facilità di utilizzo (20%) Strumenti (20%) Componenti aggiuntivi (20%) Supporto cross-tecnologico (20%) Documentazione (10%) Valore (10%) Capacità (30%) Facilità di sviluppo (20%) Prestazioni (30%) Punteggio totale
IntelliJ IDEA 14 9 9 8 9 8 7 0 0 0 8.5
JDeveloper 12c 7 8 7 8 7 8 0 0 0 7.5
NetBeans IDE 8.0.2 9 8 8 8 8 8 0 0 0 8.2
Eclipse 4.4.1 (Luna) 7 9 9 8 8 8 0 0 0 8.2