Esiste un compilatore distribuito per Java, analogo a distcc per C/C++?Distributed Java Compiler
risposta
La risposta diretta alla tua domanda è "no". Tuttavia, probabilmente non ti aiuterà comunque ... compilare Java è molto veloce.
Su un piccolo progetto, la compilazione è abbastanza veloce che non dovresti davvero preoccuparti. In un progetto di grandi dimensioni è necessario gestire il lancio del file per la compilazione in una rete, e il dover affrontare potenzialmente anche il trasferimento di molti megabyte di dipendenze.
Una cosa che puoi fare per migliorare la tua velocità di compilazione è usare il eclipse compiler invece del javac Sun. Il compilatore di Eclipse è multi-thread e così, con un po 'di fortuna, usa tutti i core della tua macchina.
Probabilmente vale anche la pena menzionare che Apple ha anche recentemente reduced distcc support, poiché in generale, su hardware più recente, è costato più tempo per ottenere il codice da un'altra parte per compilare e tornare, piuttosto che eseguire la compilazione localmente. Per citare di Apple:
Le prestazioni accumulo singolo computer di Xcode è stata migliorata al punto che distribuito edificio con Distributed Network Builds è più lento di quello locale costruisce nella maggior parte dei casi.
Un buon consiglio tutto intorno. Ciò si collega anche con la risposta di Karol Wilk, dal momento che ritengo che il compilatore interno e i jikes di Eclipse siano almeno in qualche modo correlati, cioè originati dal codice (probabilmente) comune. Il compilatore di Eclipse "imbroglia" compilando in modo incrementale, e penso che jikes sappia fare anche questo. –
Jikes è scritto in C++, ecj è Java, quindi probabilmente non è un codice comune. –
@Carl, ecj è stato scritto sulla base delle esperienze di Jikes. Sono contenti di averlo fatto - javac aveva bisogno di competizione. –
Forse Jikes potrebbe funzionare per voi. È possibile ottenere effetti molto simili con uno script di formica intelligente e nfs come il filesystem ...
Java non dovrebbe essere compilato una volta eseguito ovunque? –
@Ipthnc - cosa ti fa pensare che non lo sia? e quanto è rilevante per la domanda? –
Se sei seccato con aspettare molto tempo per il vostro Java compila, allora si potrebbe prendere in considerazione una delle seguenti opzioni:
- rompere il progetto fino in diversi file jar diversi (in una dipendenza gerarchica). Con un po 'di fortuna, le tue modifiche riguarderanno solo la fonte in uno di quei barattoli, mentre gli altri potranno continuare a servire come dipendenze.
- interrompi il tuo progetto in gruppi di sorgenti, forse per pacchetto, e usa formica Apache per coordinare la tua compilazione. Ero sempre troppo pigro per usarlo, ma puoi impostare una gestione delle dipendenze esplicita per evitare di ricompilare roba per cui esistono già file
.class
e sono più recenti della fonte. Lo sforzo che si pone nella creazione di una volta può raccogliere i dividendi entro pochi giorni se il progetto è ampio e le compilazioni stanno consumando molto del tuo tempo.
A differenza di multi-carotaggio, riducendo la quantità di codice che è necessario ricompilare anche ridurre il consumo di energia del PC e emissioni di anidride carbonica;)
... presumendo che il tuo PC abbia la sua energia dai combustibili fossili –
penso che il compilation in parallelo dei moduli Maven indipendenti dovrebbe essere abbastanza semplice usando alcuni script semplici: basta tirare il controllo della versione, cambiare la directory ed eseguire mvn clean compile. Aggiungi mvn deploy per ottenere l'artefatto nel tuo repository di risorse.
Questo dovrebbe funzionare anche con i moduli dipendenti, tuttavia sarà necessario lavorare sulla sincronizzazione.
ho scritto l'inizio di uno per java6
http://www.pointdefence.net/jarc/index.html
E 'distribuito al compito java compilatore. Quindi funzionerebbe bene con la compilazione parallela di moduli Maven indipendenti.
Avete un requisito per uno, o è solo una curiosità? – skaffman
Voglio scriverne uno. – Boolean
Buona fortuna! Siate consapevoli dei punti che sollevo nella mia risposta e vi auguro buona fortuna per scriverlo. –