Vorrei anche suggerire di utilizzare un qualche tipo di strumento di compilazione ( Ant o Maven , Ant è già suggerito ed è più facile iniziare) o un IDE che gestisce la compilazione (Eclipse utilizza la compilazione incrementale con la strategia di riconciliazione e non è nemmeno necessario cura di premere qualsiasi pulsante "Compila" ).
Usando Javac
Se devi provare qualcosa per un progetto più grande e non hai strumenti di compilazione adeguati nelle vicinanze, puoi sempre usare un piccolo trucco che javac
offre: i nomi delle classi da compilare possono essere specificati in un file. Devi semplicemente passare il nome del file javac
con il @
prefisso.
Se riesci a creare un elenco di tutti i *.java
file nel tuo progetto, è facile:
# Linux / MacOS
$ find -name "*.java" > sources.txt
$ javac @sources.txt
:: Windows
> dir /s /B *.java > sources.txt
> javac @sources.txt
- Il vantaggio è che è una soluzione semplice e veloce.
- Lo svantaggio è che devi rigenerare il
sources.txt
file ogni volta che crei una nuova fonte o rinomini un file esistente che è un compito facile da dimenticare (quindi soggetto a errori) e noioso.
Utilizzando uno strumento di creazione
A lungo termine è meglio usare uno strumento progettato per creare software.
Utilizzando Ant
Se si crea un build.xml
file semplice che descrive come compilare il software:
<project default="compile">
<target name="compile">
<mkdir dir="bin"/>
<javac srcdir="src" destdir="bin"/>
</target>
</project>
è possibile compilare l'intero software eseguendo il comando seguente:
$ ant
- Il vantaggio è che stai usando uno strumento di costruzione standard che è facile da estendere.
- Lo svantaggio è che devi scaricare, configurare e apprendere uno strumento aggiuntivo. Nota che la maggior parte degli IDE (come NetBeans ed Eclipse) offre un ottimo supporto per la scrittura di file di build, quindi in questo caso non devi scaricare nulla.
Usando Maven
Maven non è così banale da configurare e con cui lavorare, ma impararlo paga bene. Ecco un ottimo tutorial per iniziare un progetto in 5 minuti .
- Il vantaggio principale (per me) è che gestisce anche le dipendenze, quindi non sarà necessario scaricare altri file Jar e gestirli manualmente e l'ho trovato più utile per costruire, impacchettare e testare progetti più grandi.
- Lo svantaggio è che ha una ripida curva di apprendimento e se ai plugin Maven piace sopprimere gli errori :-) Un'altra cosa è che molti strumenti funzionano anche con i repository Maven (come Sbt per Scala, Ivy per Ant, Graddle per Groovy) .
Utilizzando un IDE
Ora che cosa potrebbe aumentare la produttività dello sviluppo. Ci sono alcune alternative open source (come Eclipse e NetBeans , preferisco la prima) e anche quelle commerciali (come IntelliJ ) che sono piuttosto popolari e potenti.
Possono gestire l'edificio del progetto in background in modo da non dover affrontare tutte le cose della riga di comando. Tuttavia, è sempre utile se sai cosa succede effettivamente in background in modo da poter dare la caccia a errori occasionali come aClassNotFoundException
.
Una nota aggiuntiva
Per progetti più grandi, si consiglia sempre di utilizzare un IDE e uno strumento di creazione. Il primo aumenta la produttività, mentre il secondo consente di utilizzare diversi IDE con il progetto (ad esempio, Maven può generare descrittori di progetti Eclipse con un semplice mvn eclipse:eclipse
comando). Inoltre, avere un progetto che può essere testato / costruito con un comando a linea singola è facile da presentare ai nuovi colleghi e ad esempio in un server di integrazione continua. Pezzo di torta :-)