Dec 17

Por qué me está gustando IntelliJ IDEA

 Hace ya un porrón de años tuve que elegir un IDE para trabajar con Java. Miré Eclipse y Netbeans, de aquella no existía IntelliJ y me acabé decantando por eclipse. Y desde entonces, más de 10 años ya, trabajando con eclipse.

Sin embargo, algunos compañeros míos usan IntelliJ y están muy contentos con él. También encontré unas estadísticas en las que IntelliJ se estaba usando cada vez más mientras que Eclipse parece que cada vez menos, aunque actualmente andan muy a la par.

Así que me decidí a probar IntelliJ …. y de momento me está convenciendo.

Me está costando acostumbrarme a los atajos de teclado o encontrar los comandos del IDE que quiero hacer, pero sólo es por la costumbre y poco a poco me voy haciendo a los nuevos atajos. Aparte de esto ¿por qué me está gustando?

Lo primero es el auto-compilar. Eclipse auto-compila siempre. IntelliJ por defecto no lo  hace, pero es una opción que se puede poner. El autocompilado de eclipse a veces hace el trabajo lento o pesado. En eclipse me veía frecuentemente esperando por barras del progreso de cosas que el eclipse estaba haciendo por debajo. En IntelliJ de momento no me está pasando.

Soy fan del editor vi. IntelliJ lo lleva por defecto, pero se puede activar/desactivar. Siempre tengo el gvim instalado en windows para determinadas tareas, ahora parece que no me va a hacer falta.

IntelliJ lleva la ventana de comandos del sistema empotrada por defecto. Habitualmente me gusta ejecutar los comandos de gradle, maven, git y subversion desde línea de comandos, porque me da la impresión de tener más control de lo que estoy haciendo. Lo de tener la ventana de comandos integrada en el IDE me está ayudando mucho. Sí, eclipse tiene un plugin opcional para poner.

Otra ventaja que resulta más o menos interesante es que el autocompletar de IntelliJ es más inteligente. Incluso autocompleta el nombre de la variable que estamos declarando, ofreciéndonos sugerencias. Por ejemplo, si tengo una clase MiClase y despues de poner el tipo MiClase le digo a IntelliJ que me diga el posible nombre de variable, me pone miClase.

Pero todo esto no dejan de ser detalles (bueno, quizás lo de las esperas de eclipse no sea tan tonto). Una de las cosas que me ha convencido totalmente de IntelliJ es que IntelliJ entiende por separado los classpath de test y de main. Tanto en gradle como en maven, hay directorios src/main/java y src/test/java y hay dependencias de compilado y dependencias de test. Tanto gradle como maven no incluyen para nada las dependencias de test en compilado o runtime, salvo que se estén haciendo test. Pues bien, eclipse no hace esta distinción en absoluto. En tu código de src/main/java puedes usasr clase que sean de test o de dependencias de test. En eclipse va, pero al compilar luego fuera de eclipse con gradle o maven, da error. IntelliJ sin embargo sí tiene en cuenta esta separación. Tiene su "classpath" de "proyecto_main" y "proyecto_test".

En fin, llevo ya un par de semanas con IntelliJ y me está gustando más que eclipse. Es posible que tenga que volver a eclipse cuando quera utilizar alguna cosa que no venga en la edición gratuita de IntelliJ.