Presentiamo alla vostra attenzione un adattamento di un articolo di Martin Heller, programmatore ed editore della risorsa JavaWorld. Probabilmente hai già sentito parlare dei tre IDE più popolari per lo sviluppo Java. Il 90% dei programmatori industriali utilizza Eclipse, NetBeans o IntelliJ IDEA e ciascuno di questi IDE presenta vantaggi e svantaggi. In questo articolo proveremo a descriverli in modo che tu possa capire quale fa al caso tuo. Anche se, ovviamente, è meglio provarli tutti e tre al lavoro e scoprire cosa funziona meglio per te. Nessuna recensione può sostituirlo.
Figura 1. IntelliJ IDEA mostra il numero di avvisi e ipotesi basati sull'analisi statistica del codice Java. Puoi studiare le ipotesi più in dettaglio cliccando su di esse, come mostrato in figura; in molti casi riceverai un elenco con scelte e opzioni di correzione.
Figura 2. Da sinistra a destra, sono presenti quattro barre degli strumenti Eclipse: Package Explorer, Java Editor, Java Class Structure ed Task List. Il progetto caricato in Eclipse in questa immagine è il framework di test JUnit. I pannelli possono essere facilmente scambiati.
Figura 3. Qui NetBeans sta eseguendo lo stesso progetto basato su Maven aperto da IntelliJ IDEA nella Figura 1. Notare la funzionalità migliorata nel menu contestuale e nel sottomenu di refactoring
Cos'è un ambiente di sviluppo?
La risposta molto breve è che un ambiente di sviluppo è un programma o più programmi utilizzati per creare programmi. Questo processo include effettivamente la scrittura del codice, il debugging, l'avvio e l'integrazione con i sistemi di controllo della versione. Se prima gli sviluppatori utilizzavano spesso un semplice editor di testo (a volte anche senza evidenziazione della sintassi), come Blocco note e riga di comando, ora utilizzano più spesso processori all-in-one, ambienti di sviluppo integrati o IDE.Cos'è un IDE?
Ambiente di sviluppo integrato o in inglese Ambiente di sviluppo integrato - IDE - è un programma che contiene strumenti per lo sviluppo di software. In genere, un ambiente di sviluppo moderno include:- Editor di testo con evidenziazione del codice;
- compilatore o interprete;
- Browser delle classi, controllo oggetti e diagramma della gerarchia delle classi;
- strumenti di automazione dell'assemblaggio;
- debugger;
- strumenti per l'integrazione con sistemi di controllo versione (Git);
- strumenti per semplificare la progettazione di un'interfaccia utente grafica.
Cosa aspettarsi da un IDE
Un IDE moderno per un "sano sviluppatore Java" dovrebbe supportare Java 8, Scala, Groovy e altri linguaggi di macchina virtuale Java che utilizza regolarmente. Sarebbe utile anche il supporto per i principali server applicativi e i framework web più diffusi, tra cui Spring MVC, JSF, Struts, GWT, Play, Wicket, Grails e Vaadin. L'IDE deve essere compatibile con qualsiasi build di sistema di controllo della versione, come Ant, Maven o Gradle, insieme a Git, SVN, CVS, Mercurial o Bazaar. Inoltre, per l'ambiente di sviluppo è importante essere in grado di lavorare con i database e il livello client del proprio stack, avere il supporto per JavaScript integrato, TypeScript, HTML, SQL, JavaServer Pages, Hibernate e Java Persistence API. Infine, è logico sperare che l'IDE ti permetta di modificare, creare, eseguire il debug e testare i sistemi senza stress inutili. Idealmente, l'ambiente di sviluppo supporta non solo il completamento intelligente del codice, ma anche il refactoring intelligente e la metrica del codice. In molti casi, sarà utile supportare i framework e gli stub di test. Se il tuo team utilizza un sistema di ticket e CI/CD, hai bisogno dell'IDE per poterti connettere. E decidi se hai bisogno di distribuzione e debug in contenitori e cloud. Abbiamo elencato solo le aspettative di base (forse hai qualcosa da aggiungere), e ora diamo uno sguardo più da vicino ai nostri concorrenti.IDEA IntelliJ
In termini di caratteristiche e prezzo, IntelliJ IDEA è disponibile in due versioni: l'edizione Community gratuita e l'edizione Ultimate a pagamento con funzionalità estese. L'edizione Community è progettata per lo sviluppo JVM e Android. La versione gratuita supporta Java, Kotlin, Groovy e Scala; androide; Maven, Gradle e SBT; funziona con i sistemi di controllo della versione Git, SVN, Mercurial e CVS. L'edizione Ultimate è adatta per lo sviluppo web e aziendale. Questa versione dell'IDE funziona non solo con Git, SVN, Mercurial e CVS, ma anche con Perforce, ClearCase e TFS; in esso puoi scrivere in JavaScript e TypeScript; Naturalmente c'è il supporto per Java EE, Spring, GWT, Vaadin, Play, Grails e una serie di altri framework. E, naturalmente, non potremmo fare a meno di SQL e degli strumenti per lavorare con i database. L'idea che guida gli sviluppatori di questo IDE quando formulano una politica dei prezzi è che la sua versione commerciale (Ultimate) prenderà il suo posto sui computer dei professionisti, grazie alla quale aumenterà la loro produttività. Se un programmatore Java guadagna 50mila dollari all'anno (o anche di più), il ritorno sull'investimento speso per l'IDE IntelliJ IDEA a pagamento (500 dollari per un abbonamento annuale) avverrà molto rapidamente grazie anche ad una leggera accelerazione del suo lavoro. Negli anni successivi il prezzo per le aziende diminuisce, per startup e liberi professionisti è notevolmente più basso e per studenti, insegnanti, campioni Java e sviluppatori open source è completamente gratuito. IntelliJ IDEA colpisce per la profonda comprensione del codice, l'ergonomia intelligente, le funzionalità di sviluppo integrate e il supporto multilingue.Comprensione profonda del codice
L'evidenziazione della sintassi e il semplice completamento del codice sono comuni per tutti i moderni editor Java. IDEA è andata oltre offrendo il “completamento automatico intelligente”. Questo termine significa che l'ambiente di sviluppo mostra un elenco dei simboli più rilevanti applicabili in un dato contesto. L'elenco dei simboli dipende non solo dal contesto in quanto tale, quello “generalmente accettato”, ma dallo stile di programmazione dello sviluppatore, dalla frequenza con cui utilizza determinati operatori. "Completamento catena" mostra anche un elenco di simboli applicabili consentiti tramite metodi o getter nel contesto corrente. Inoltre, per i membri statici o le costanti, IDEA aggiunge automaticamente tutte le istruzioni di importazione necessarie. In tutti i casi di completamento automatico, IDEA tenta di indovinare il tipo del simbolo in fase di esecuzione, perfezionarne la selezione e persino applicare un cast di tipo, se necessario. Il codice Java spesso include frammenti di altri linguaggi come stringhe. IDEA può inserire codice SQL, XPath, HTML, CSS o JavaScript in stringhe letterali Java. In questo senso, l'IDE può effettuare il refactoring del codice in più lingue. Ad esempio, se rinomini una classe in una mappatura JPA, IDEA aggiornerà l'entità JPA corrispondente e la classe di espressione. Durante il refactoring di una parte di codice, lo sviluppatore ha un desiderio (abbastanza naturale): che anche tutti i duplicati di questo codice vengano refactoring. IDEA Ultimate trova duplicati e frammenti simili e applica loro anche il refactoring. IntelliJ IDEA analizza il codice al momento del caricamento e direttamente mentre lo inserisci. Indica i problemi sospetti (come nella nostra immagine sopra) e facoltativamente offre un elenco di probabili soluzioni rapide ai problemi rilevati.Ergonomia
IntelliJ IDEA è progettato in modo da non far uscire uno sviluppatore da uno stato di produttività fluida una volta che ci è già dentro. La finestra Progetto, mostrata nella prima immagine a sinistra, scompare con un semplice clic del mouse in modo che il programmatore possa concentrarsi sulla finestra dell'editor del codice. Per tutte le azioni necessarie durante la scrittura del codice, esistono combinazioni di tasti per richiamarle rapidamente, inclusa la definizione di simboli nelle finestre popup. All'inizio, tutte queste combinazioni sono difficili da ricordare, ma gradualmente ti abitui e le usi solo. Tuttavia, anche se il programmatore non utilizza scorciatoie da tastiera, come dimostra la pratica, si abitua facilmente e rapidamente a lavorare in IDEA. Vorrei sottolineare in particolare il debugger IDEA: i valori delle variabili vengono visualizzati direttamente nella finestra dell'editor, accanto al codice sorgente corrispondente. Quando cambia lo stato di una variabile, cambia anche il colore di evidenziazione.Strumenti integrati
IntelliJ IDEA fornisce un'interfaccia unificata per la maggior parte dei sistemi di controllo della versione, inclusi Git, SVN, Mercurial, CVS, Perforce e TFS. Puoi gestire le modifiche direttamente nell'IDE, il che è molto comodo. Quando stavo testando IDEA, desideravo che l'ultima modifica nel codice sorgente venisse visualizzata nella finestra dell'editor come annotazione (come accade, ad esempio, in Visual Studio). A quanto pare, IDEA ha un plugin speciale per questo. IDEA include anche strumenti di creazione, un runtime di test, strumenti di copertura e una finestra terminale integrata. IntelliJ non dispone di un proprio profiler, ma è possibile collegarsi ad esso tramite plugin di terze parti. Ad esempio, YourKit, creato da un ex sviluppatore principale di JetBrains, o VisualVM (che è una versione riconfezionata del profiler NetBeans). Il debug in Java può essere una seccatura quando accadono cose misteriose a classi di cui non si dispone la fonte. IDEA include un decompilatore per questi casi. La programmazione lato server in Java richiede una frequente interazione con i database, quindi i programmatori di IDEA Ultimate apprezzeranno la comodità degli strumenti per lavorare con SQL e database. Ma se le loro capacità non sono sufficienti per qualcuno, puoi acquistare la versione IDEA Ultimate con un IDE SQL integrato (DataGrip). Tuttavia, sarà leggermente più costoso del normale abbonamento IDEA Ultimate. IntelliJ IDEA supporta tutti i principali server di applicazioni JVM e consente di eseguire la distribuzione e il debug su questi server, eliminando le difficoltà familiari a tutti i programmatori Java Enterprise. IDEA supporta anche Docker (tramite un plugin che aggiunge una speciale finestra dello strumento Docker all'ambiente di sviluppo. A proposito, IDEA ha un sacco di plugin.Un vero poliglotta
IDEA ha ampliato il supporto del codice per Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS e altri framework. Probabilmente hai notato che non tutti sono specifici di Java. IDEA "capisce" altri linguaggi immediatamente: Groovy, Kotlin, Scala, JavaScript, TypeScript e SQL. Se non vedi la lingua che stai cercando in questo elenco, ci sono attualmente 19 plugin di lingua IntelliJ, che supportano specificamente R, Elm e D.IDE di Eclipse
Circa 10 anni fa, alla domanda sul miglior IDE, uno sviluppatore Java rispose con sicurezza: Eclipse. Per molti anni, questo ambiente di sviluppo ha detenuto con sicurezza la palma tra gli IDE Java. Questo ambiente è completamente gratuito, open source, scritto principalmente in Java. Tuttavia, la sua architettura modulare consente di utilizzare Eclipse con altri linguaggi. Il progetto Eclipse, avviato da IBM, è apparso nel 2001. Volevano sostituire la famiglia di ambienti di sviluppo IBM Visual Age basati su Smalltalk. Ebbene, l'obiettivo principale, come suggerisce anche il nome, era quello di eclissare Microsoft Visual Studio (eclipse in inglese significa eclissi). La portabilità di Java aiuta Eclipse a essere un ambiente multipiattaforma: questo IDE funziona su Linux, Mac OS X, Solaris e Windows. Nel bene e nel male, Java Standard Widget Toolkit (SWT) è almeno parzialmente responsabile dell'aspetto di Eclipse. Eclipse deve le sue prestazioni (o, come dicono alcuni sostenitori, la sua mancanza) alla JVM. Eclipse funziona piuttosto lentamente, poiché è radicato in hardware piuttosto vecchio e in versioni antiche della JVM. Anche oggi sembra lento, soprattutto se gli si allegano molti plugin. Parte del sovraccarico delle risorse di Eclipse può essere attribuito al compilatore incrementale integrato, che viene eseguito ogni volta che un file viene caricato o il codice viene aggiornato. Questa è una cosa utile; rileva gli errori durante l'immissione del testo. Indipendentemente dalla build, il progetto Eclipse mantiene un modello di contenuto che contiene informazioni sulla gerarchia di tipi, riferimenti e dichiarazioni di elementi Java. La versione attuale di Eclipse si chiama Neon (4.6.0). Ho installato Eclipse Java EE IDE per sviluppatori web (questa non è l'unica opzione, puoi scegliere qualcos'altro). Contiene un SDK Eclipse minimo e i plug-in vengono aggiunti su richiesta. A proposito, lavorare con i plugin in questo IDE non è per i deboli di cuore. I plugin di terze parti spesso entrano in conflitto tra loro, anche se le loro specifiche ufficiali non dicono nulla al riguardo.Supporto plug-in
L'ecosistema di plugin di Eclipse è sia il punto di forza dell'IDE che uno dei suoi principali problemi. È a causa dell'incompatibilità dei plugin che a volte interi gruppi si bloccano e i programmatori devono ricominciare da capo il lavoro. Attualmente ci sono oltre 1.700 plugin scritti per Eclipse, ufficiali e non ufficiali, che potrebbero funzionare bene o meno. I plugin Eclipse supportano più di 100 linguaggi di programmazione e quasi 200 framework di sviluppo di applicazioni. È supportata anche la maggior parte dei server Java: se designi una nuova connessione al server da Eclipse, verrai indirizzato a un elenco di cartelle dei fornitori in cui troverai circa 30 server delle applicazioni. Ci saranno fino a nove varianti di Apache Tomcat da sole. I fornitori commerciali tendono a raggruppare insieme le loro soluzioni: ad esempio, c'è un solo articolo Red Hat JBoss Middleware e al suo interno troverai gli strumenti server WildFly e EAP, oltre a JBoss AS.Modifica, refactoring e debug
La tua prima esperienza con Eclipse può creare confusione e persino confusione. Il primo passo è configurare Eclipse e abituarsi alla sua architettura concettuale di spazi di lavoro, viste e viste. Tutto questo è determinato dai plugin che hai installato. Per lo sviluppo Java lato server, utilizzerai probabilmente le viste di navigazione Java, Java EE e Java, la vista Esplora pacchetti, la vista di debug, la vista di sincronizzazione dei comandi degli strumenti Web, la vista di sviluppo del database e la vista di debug del database. In pratica tutto ha senso quando apri le finestre che ti servono. Eclipse offre quasi sempre diversi modi per risolvere un particolare problema. Ad esempio, puoi visualizzare il codice utilizzando la prospettiva di navigazione Java. Cosa scegliere è una questione di gusti e scelte. Una speciale ricerca Java consente di trovare dichiarazioni, riferimenti ed occorrenze di pacchetti, tipi, metodi e campi Java. Puoi anche utilizzare l'accesso alla ricerca rapida e l'anteprima. Modelli di codice comuni possono essere generati da modelli di codice. Java Refactoring in Eclipse supporta 23 operazioni, che vanno dalle comuni operazioni di ridenominazione alle trasformazioni meno ovvie (come nel libro di Martin Fowler). Eclipse supporta sia il debug locale che remoto, a condizione che tu stia utilizzando una JVM che supporti il debug remoto. Il debug è piuttosto standard: definisci i punti di interruzione e quindi visualizzi le variabili nella scheda debug. Naturalmente, puoi scorrere il codice e valutare le espressioni. Eclipse dispone di un vasto database di documentazione di diverse età, valori e utilità. Sfortunatamente, trovare nelle istruzioni un'immagine che non corrisponde alla versione attuale, ad esempio con un'interfaccia e un layout dei pulsanti obsoleti, è un evento comune per questo IDE. Sfortunatamente, il problema degli aggiornamenti tardivi della documentazione è molto comune per qualsiasi progetto di codice sorgente.NetBeans
NetBeans è iniziato come progetto studentesco universitario a Praga nel 1996. Nel 1997 l'IDE divenne un prodotto commerciale, nel 1999 fu acquistato da Sun Microsystems (i genitori di Java) e l'anno successivo presentò una versione open source. L'attuale versione 8.1 funziona su macchine che eseguono Windows, Mac OS X, Linux e Solaris. Bene, il pacchetto portatile può essere eseguito su qualsiasi sistema per il quale esiste una macchina Java. Ho scaricato personalmente il pacchetto Java EE, è uno dei sei possibili pacchetti di download. Questo pacchetto supporta JavaScript e HTML, GlassFish e Tomcat, ma non supporta PHP, C/C++/Fortran, Groovy e Grails: possono essere ottenuti nel pacchetto “All Inclusive” (o semplicemente “All”). Tuttavia, se lo desidero, posso scaricare in qualsiasi momento il supporto per le lingue sopra indicate selezionando l'apposito plugin (o qualsiasi altro). NetBeans ne ha meno di Eclipse, ma di solito non sono in conflitto tra loro. Quest'autunno, Oracle (che ha acquisito NetBeans dopo aver acquisito Sun Microsystems) ha deciso di trasferire questo ambiente di sviluppo sotto l'ala protettrice della Apache Software Foundation, insieme a tutti i diritti, il codice sorgente, il marchio, il dominio "netbeans.org" e una serie di altre infrastrutture elementi. Pertanto, il futuro del progetto è ancora vago, anche se in precedenza il sistema disponeva di alcuni privilegi correlati. Pertanto, è stato NetBeans il primo a ricevere il supporto per Java 8 quasi immediatamente dopo il rilascio della piattaforma aggiornata, ed è stato chiamato "IDE ufficiale per Java 8". Tuttavia, un mese dopo il suo rilascio, questo vantaggio è andato perso: è stato allora che anche altri IDE hanno ricevuto il supporto per Java 8. Tuttavia, voglio sottolineare che il supporto Java 8 di NetBeans è davvero buono e l'IDE è ottimo per intrecciare i trucchi Java 8 nel "vecchio" codice. I suoi editor, analizzatori di codice e convertitori aiuteranno il programmatore ad aggiornare il codice utilizzando costrutti tipici di Java 8: espressioni lambda, operatori funzionali e riferimenti a metodi. I plugin JavaScript in NetBeans 8 svolgono un ottimo lavoro nel supportare Node.js e gli strumenti JavaScript più recenti come Gulp e Mocha, oltre a supportare l'interprete JavaScript Nashorn.Modifica e refactoring
NetBeans Editor supporta le lingue, rileva gli errori durante la digitazione e ti aiuta con descrizioni comandi e completamento intelligente del codice. Secondo la sensazione soggettiva, l'IDE affronta questo compito più velocemente di Eclipse, ma un po' più lentamente di IntelliJ IDEA. Inoltre, NetBeans dispone di una gamma completa di strumenti di refactoring (come mostrato nella Figura 3) che consentono al programmatore di ristrutturare il codice senza romperlo, eseguire l'analisi del codice sorgente e offre inoltre un'ampia gamma di suggerimenti per soluzioni rapide o estensioni del codice. NetBeans include lo strumento di progettazione GUI Swing, precedentemente noto come "Project Matisse". Gli sviluppatori apprezzano molto lo strumento di refactoring automatizzato Inspect & Transform, introdotto in NetBeans 7.1. Ti consente di analizzare il codice del progetto e apportare miglioramenti suggeriti. Anche se personalmente preferisco testare prima tutto il mio codice con test unitari e solo successivamente eseguire strumenti che possono apportare modifiche radicali. Ho sofferto ripetutamente di tutti i tipi di correzioni automatiche che hanno portato a conseguenze irreparabili.Creazione, debug e profilazione
NetBeans ha un eccellente supporto nativo per Maven e Ant, oltre a un plug-in per Gradle. Sono stato molto felice quando ho scoperto che i progetti Maven venivano trattati come “nativi” dal sistema. Ciò significa che possono semplicemente essere aperti anziché importati. NetBeans contiene anche una visualizzazione grafica attraente (e utile) per le dipendenze Maven. Il debugger Java di NetBeans non è male, ma presenta alcuni avvertimenti. Un debugger visivo separato consente al programmatore di acquisire screenshot dell'interfaccia grafica utente ed esplorare le interfacce delle applicazioni realizzate utilizzando JavaFX e Swing. Il profiler NetBeans rende più evidente il modo in cui vengono utilizzate CPU e memoria e dispone di strumenti eccellenti per individuare perdite di memoria.Quale IDE Java è migliore? Confronto del trio di giganti
Ho utilizzato tutti e tre gli IDE, Eclipse, NetBeans e IntelliJ IDEA, nel corso degli anni nell'ordine cronologico elencato. Ogni volta che passavo a un IDE diverso, sentivo che la mia produttività aumentava. Ma anche quando ero fermamente convinto che IDEA fosse la mia scelta finale, a volte dovevo tornare a uno dei due IDE rimasti. Questo era il caso, ad esempio, all'epoca in cui Eclipse era l'unico strumento che supportava lo sviluppo di Android (oggi c'è Android Studio, l'attuale IDE ufficiale per Android, si basa su IntelliJ IDEA). Naturalmente, tutti e tre gli IDE hanno i loro fan e detrattori. Conosco molti sviluppatori Java che amano IntelliJ IDEA, nonché fedeli fan di Visual Studio C++ e C#. Nella maggior parte dei casi queste persone sono contente del fatto che la loro produttività è aumentata e il costo dell'abbonamento annuale viene rimborsato dopo poche settimane di utilizzo della versione a pagamento di IDEA. Tuttavia, anche gli utenti NetBeans ed Eclipse sono spesso attaccati ai loro strumenti e si chiedono perché altri programmatori siano disposti a pagare per IDEA. Consiglierei ai nuovi sviluppatori Java di stare lontani da Eclipse. Nonostante sia ancora l'IDE per Java più popolare, è difficile per i principianti: è facile perdersi nella natura selvaggia di Eclipse, sia durante l'implementazione del sistema che durante il lavoro quotidiano. Eclipse ha l'ecosistema di plugin più esteso di tutti gli IDE ed è anche quello che ha maggiori probabilità di bloccarsi a causa dell'installazione di un set incompatibile di questi stessi plugin. Sfortunatamente, durante l'utilizzo di Eclipse, ho dovuto rimuovere ripetutamente un altro assembly danneggiato di questo IDE e installare un bundle "pulito". NetBeans è utile per la maggior parte degli sviluppatori, ha un ottimo profiler e lo uso a volte. Tuttavia, preferisco pagare per IntelliJ IDEA Ultimate. E il futuro di NetBeans non è ancora chiaro. Per i nuovi sviluppatori Java che non hanno ancora il budget per acquistare strumenti, consiglio di utilizzare NetBeans o IntelliJ IDEA Community Edition a seconda delle loro esigenze. Vale la pena scegliere il primo per coloro che stanno codificando server Java, ma solo se non rientri nella categoria di coloro che possono ottenere IntelliJ IDEA Ultimate gratuitamente o con uno sconto enorme (studenti o programmatori che stanno sviluppando un software open source progetto).IDE Java "leggero".
Oggi, la maggior parte degli sviluppatori Java utilizza IDEA, NetBeans o Eclipse, ma a volte c'è bisogno di ambienti di sviluppo più leggeri o anche di editor di codice come Sublime Text, emacs o vim che supportino i plugin Java. Ho elencato di seguito opzioni ragionevoli per chi cerca qualcosa di un po' più leggero:- DrJava — небольшая бесплатная среда разработки. Её создали для студентов Университета Райса, и она стала довольно популярной: DrJava загрузor уже более 2 млн раз. DrJava призвана развивать разработку, основанную на тестировании (test-driven development). Среда содержит «умный» редактор codeа, панель взаимодействия для оценки codeа applications, отладчик уровня источника и инструменты модульного тестирования.
- BlueJ бесплатная среда разработки Java, созданная специалистами Кентского университета для начинающих программистов. Эта среда поддерживается Oracle. BlueJ отличается гораздо более лаконичным и простым интерфейсом, чем профессиональные IDE, такие, How NetBeans or Eclipse, и даже содержит специальный учебник по основам ООП.
- JCreator — ещё одна небольшая Java IDE для Windows, написанная на C++ (из соображений увеличения производительности). Платная version Pro оснащена отладчиком, поддержкой Ant и code wizards, ну а бесплатная version (LE) — нет.
- Eclipse Che — браузерная облачная IDE: Java, C++, JavaScript, Python, PHP, Ruby и SQL — список языков, которые она поддерживает. .
GO TO FULL VERSION