2009-04-27 11 views
5

Encuentro que java se inicia y funciona prácticamente instantáneamente para mí, pero javac demora unos segundos y hormiga lo vuelve más lento. Solo son unos pocos segundos, pero mi ciclo de compilación de compilación de edición sería más fluido sin él. :-)Más rápido javac/ant?

BTW: Ya he usado el ": make" de vim con hormiga.

¿Hay alguna manera de acelerar javac y/o hormiga? Estoy pensando en interruptores especiales o trucos? O tal vez un compilador Java alternativo (estoy usando 1.6, en Linux)

Respuesta

4

Eclipse hace eso para usted ... pero es probablemente un poco grande como un "parche" para su problema.

Dejando eso de lado, puede hacer rodar su propio complemento de compilación. Hay dos enfoques:

  1. Ejecute el compilador Java desde adentro de hormiga (en lugar de crear un nuevo proceso). No estoy seguro si la hormiga ya hace eso; si no, eso te ahorrará un poco de tiempo. Mira el Java 6 compiler API para más detalles.

  2. Ejecute javac en un proceso de servidor que escuche las opciones en un socket. En la hormiga, envíe el proceso a la línea de comando y espere a que se devuelva la salida. Le ahorra comenzar un nuevo proceso todo el tiempo.

  3. Intenta usar el compilador de eclipse. A diferencia del javac original, el compilador de Eclipse es bastante bueno para "ignorar" los errores, por lo que puede generar archivos de clase incluso cuando contienen errores. Eso no parece significar mucho, pero te permite compilar todo el tiempo en segundo plano. Cuando haga su último guardado (terminando todo), el compilador habrá podido compilar todo lo demás y solo tendrá que mirar un solo archivo.

+0

Gracias, 1. Creo que hay una opción para saber si la hormiga se bifurca o no. 2. Configurar un proceso de servidor de Java es una linda idea, aunque no estoy seguro de cómo hacerlo :-). 3.La mayoría de las veces (no siempre) ya hay un solo archivo para compilar (aunque veo que el compilador también ya estaría cargado) – 13ren

+0

Escribí un servidor javac (2) y la compilación ahora parece instantánea. Es bastante genial. (alrededor de 0.5 segundos, abajo de 3-4 segundos). El servidor invoca JavaCompiler.compile cuando se envían las opciones de javac, y redirige stderr al cliente, por lo que el comportamiento del cliente es indistinguible de javac (solo más rápido). No está integrado con la hormiga, porque la hormiga agrega 1-2 segundos (y puedo vivir sin la hormiga), pero podría decir que mi cliente es un compilador. Detengo el servidor con "pkill java" - Supongo que enviar un mensaje de "detener" es la manera correcta. – 13ren

+0

Cargar el compilador de Java lleva mucho tiempo (tiene que configurar el entorno, cargar todas las clases para la VM, asignar mucha memoria, etc.). Cargar los (pocos) archivos para compilar es bastante rápido. –

1

puedo recomendar encarecidamente el uso de un IDE adecuada con Java como el aumento de la productividad con el uso de un editor que sabe acerca de su programa es inmensa. Piense en "ir a la línea que contiene la definición de la variable/clase/campo donde está el cursor", "cambiar el nombre de esta clase y todas las referencias a ella", y todos los otros tipos de cosas agradables. Si está molesto con el tiempo que toma para invocar Java, es posible que esté listo :)

+1

La pregunta es acerca de compilar, no invocar java ("java se inicia y se ejecuta prácticamente al instante"). Con ^], vim + ctags "irá a la línea que contiene la definición de la variable/clase/campo donde está el cursor". Encontré IDEs más molestos y menos productivos (una semana de prueba), aunque esperaba que fueran muy útiles. – 13ren

+0

Incluso si java se inicia y se ejecuta prácticamente al instante, javac no es de lo que te quejas. ¿Intentó aprender un IDE por su cuenta o un mentor desarrollador experimentado lo asesoró? –

+0

Una vez hecha la pregunta, soy consciente de eso. Estaba señalando que no parecía haber leído la pregunta. No estoy seguro de querer tener una conversación contigo, ya que pareces ser bastante arrogante, con tu frase "quizás estés listo". Oh, bueno, te voy a probar: probé el IDE solo sin un usuario experimentado. Sin embargo, al aprender vim, tenía muchos usuarios experimentados, así que esto probablemente ayudó mucho. Por su respuesta, parece que no está familiarizado con vim. – 13ren

3

Google encontró que estos dos (no he probado ninguno aún)

  1. javac-J-client -J-Xms100m -J-Xmx100m<src>

  2. JBrownie "supervisa el código fuente de Java y recompila automáticamente los archivos encontrados" según las líneas de Aaron Digulla (2)

+0

El primer enlace está roto, y parece que OpenJDK carece de la opción '-J-client' – zserge

0

Señalo todos mis archivos de salida a un disco RAM que creo con this utility. Se acelera las construcciones un poco (aunque no en una medida mágica) ya que casi todo está en la memoria. Es más notable cuando se hace una compilación 'limpia' que se vuelve casi instantánea.

Cuestiones relacionadas