En el día a día del desarrollo de un gran proyecto, los programadores se enfrentan constantemente a un sinfín de dicotomías: ¿Swing o JEE? ¿Android o iOS? ¿Bases de datos con tablas o con JSON? ¿Programación imperativa o reactiva? ¿Lambdas o bucles for? ¿Café o té? ¿Teletrabajar o venir a verles las caras a los compañeros en la oficina?

Pero pocas cosas pueden enconar más a dos javeros como la elección del programa que van a ver durante más horas en sus monitores, el entorno de desarrollo. Dos de nuestros programadores back-end más combativos trasladan a nuestro blog una pugna que mantienen desde el primer día que trabajaron juntos. David Rodríguez mantiene su Eclipse contra viento y marea, mientras que Sergio Delgado defiende a IntelliJ Idea con el fervor que sólo puede tener un converso.

Eso sí, que nos perdonen los fans de Sun de la vieja escuela, pero nadie ha levantado la mano para meter a Netbeans en liza y convertir este Versus en una lucha a tres bandas. Quizás en otra ocasión...

Sergio Delgado

Sergio Delgado

David, quiero empezar este Versus diciendo que te entiendo. Yo estuve en tu lugar y la primera vez que me enseñaron Eclipse, con la entusiasta recomendación de “es la bomba”, también lo flipé. Claro, que yo venía de programar en Java en el bloc de notas. Y era 2003. Ha llovido mucho desde entonces.

Pero tú me dirás que has arrancado Idea (la versión gratuita, pero no te preocupes, tienes más que de sobra para empezar con ella) y no le has visto la gracia. Toda la interfaz es un poco distinta. Ya no hay workspaces, sino proyectos; y lo que eran proyectos ahora son módulos. Pruebas un par de atajos de teclado y hacen cosas raras. ¿Y tanto esfuerzo de acostumbrarte para qué? Si, total, al final ambos IDEs hacen lo mismo, ¿no?

Nunca me hizo tilín Idea y, si no fuera por el empujón de Google basando su Android Studio en él, igual no me hubiera pasado a IntelliJ aún. Benditos los de Google.

Idea no es una aplicación que se pavonee, con colorines, dibujitos y tonterías. Al fin y al cabo, es un editor de código y editar código es una tarea seria de profesionales serios, que lo que queremos es productividad y podernos ir a casa a una hora decente, con el trabajo bien hecho, para poder estar un rato con la familia.

Lo primero que hay que tener en cuenta es que esto lo hacen unos rusos en San Petersburgo y, que me perdone Kevin Mitnick, no hay hackers como los rusos. Esta gente en invierno no puede salir a la calle y se tira el día viciándose con el PC. Se nota. Además, qué narices no tendrán estos rusos, que se han acabado inventando un nuevo lenguaje sobre la JVM, ese Kotlin que tan de moda está ahora, solo para poder sacar versiones aún mejores cada vez en menos tiempo. Así de listos son.

El hecho diferencial es que Idea no es un editor de texto de la misma forma en que Eclipse edita Java como podría editar PHP, Brainfuck o tu lista de la compra. Idea analiza todo tu código y mantiene su estructura permanentemente en memoria mientras estás trabajando con él. Esto tan simple, y a la vez tan potente, es la base sobre la que se construye todo el entorno. Idea sabe lo que está haciendo tu software y, probablemente, lo sabe mejor que tú. Porque se distrae menos con el Whatsapp y tal.

Control + Espacio también sirve para autocompletar en Eclipse. Le das y salen opciones. Un poco a voleo, te pilla nombres que hayas usado más arriba, ese tipo de cosas. OK. Ahora coge la misma clase, el mismo punto, y haz lo mismo en Intellij. ¡Oh!

No te saca lo mismo para una variable de un tipo u otro, ¿verdad? Se fija en si es un parámetro o no, si el método es uno heredado, revisa el código que tiene delante y también el de detrás. Es sutil, pero pronto te darás cuenta que cada vez usas más las sugerencias que te va dando… Porque éstas sí que son buenas.

¿Qué decir del Alt + Intro? Mira dónde estás, lo que es, si tienes algún problema, ¡y ofrece soluciones! ¡Lo que sea! ¿Estás en Java 8 y tienes un for? Sugiere pasarlo a un Stream. ¿Un Arrays.toList con un sólo parámetro? Lo pasa a Collections.singletonList. ¿Es un nombre de clase que no tienes importado?

Busca en tu classpath y te saca las que coinciden, ordenadas según las que cree que son más útiles. ¿Es código duplicado? Estaría bien sacarlo a un método y de paso te refactorizo el resto de la clase para que se llame desde todos los puntos.

Porque, sí, analiza el código, claro. Igual estamos más acostumbrados a subir nuestros fuentes a un Sonarqube. Normal, es que estamos acostumbrados a usar Eclipse. Pues en IntelliJ haces Code \ Analyze y te saca otro informe tanto o más completo de todo tu proyecto. Y quizás es por el coraje que le tengo a Sonarqube, pero en mi opinión suele ser bastante más acertado. Vamos, que si éste me dice algo me lo creo. Ahí es nada.

Ya te digo que para mí sustituye a Sonarqube, pero no sólo a él. ¿Tienes algún cliente de Git favorito? En cuanto te defiendas con Idea no lo volverás a arrancar. Dime eso de cualquiera de los plug-ins de control de versiones de Eclipse, anda.

Entorno gráfico y alguna vez tirarás de línea de comandos para la típica cosa rara. En ese momento, no te vayas al menú de Windows, Idea tiene una terminal empotrada en una pestañita de las de abajo. De nada.

¿Comparador de versiones del fichero? Usa el de Idea, es la bomba. ¿Profiler para ver en qué se está zampando la memoria tu microservicio? Antes de refrescar el VisualVM prueba con las ventanas de análisis de rendimiento de Idea. ¿Quieres copiar código a un Powerpoint para dar una charla? Mira el modo Presentación de Idea. ¿Quieres construir tu aplicación? Usa Id… No, no uses Idea.

Idea no obliga a crear ficheros .project ni a hacer magia negra para reconocer un proyecto Maven. Si es Maven se usa Maven y si es Gradle se usa Gradle. Sin tonterías. Ahora vete a Eclipse e importa un proyecto con un POM raíz y los módulos en subdirectorios. A ver cómo se te queda el cuerpo.

He nombrado la palabra “refactorizar” sin detenerme mucho. Pero lo merecería. La refactorización de Idea es buenísima. ¿Sabías que los de Eclipse metieron estas opciones porque veían que IntelliJ les comía la tostada? Pero no hay color. Sólo échale un ojo a la cantidad de posibilidades que te da el menú de Refactor. Yo me manejo con seis o siete y ya me salvan la vida. Imagínate cuando coja confianza con el resto.

Porque eso es lo que más me gusta de Idea. Que no tengo ni idea. Llevo un par de años usándolo cada vez más como IDE principal y apenas he rascado la superficie. Cada nueva versión, cada Tip of the Day, cada artículo que me encuentro en un blog me descubre algo nuevo que es genial y que, de repente, se ha convertido en imprescindible en mi día a día.

Querías hacer una selección vertical y al final resulta que es pulsar Alt mientras mueves el ratón. Un día depuras y te das cuenta de que te está escribiendo en gris, a la derecha de cada línea de código el valor de la variable que se escribe, o el retorno del método al que se llama.

Es que al final no necesitas ni mirar a la ventana de Debug. Otro día te pinta, a la izquierda de cada parámetro de esa llamada a new SuperEnterpriseManagerController(true, true, true, false, null, 0) si éste se llama respectTimeToLive o deleteTheWholeDataBase. Porque los de IntelliJ saben que necesitamos ayuda para que no se nos vaya la pinza. Todo eso es mimo, y los programadores necesitamos que nos mimen.

Después de todo esto, te sentirás un poco abrumado, David. Es normal. Al final mis consejos son simples: léete cada día el consejo que te saca el IDE cuando lo abres. Por una vez, verás que sí que sirve de algo y te enseña cosas chulas. Cuando quieras cargar un fichero, acostúmbrate a pulsar Mayúsculas dos veces.

Y en el diálogo empieza a escribir el nombre de tu clase. O un trozo del nombre. O las iniciales de las palabras de su nombre. Te lo encuentra todo, ¿eh? Y, sobre todo, cuando no sepas si el entorno tiene algo o en qué menú o diálogo está o cuál es su atajo de teclado, la combinación mágica: Alt + Mayúsculas + A. Actions. Y escribe lo que quieres hacer. Te sorprenderá.

¿Tiene cosas malas? Pues también, cómo no. Ocupa bastante RAM en tu PC, no podía ser de otra manera. Por eso los de Sistemas son tan majos y nos ponen 16 GB cuando se lo pedimos por favor. También saca algunos errores internos de vez en cuando que no sabes ni a qué se deben, pero en todo este tiempo ninguno ha acabado teniendo impacto ninguno en lo que estaba haciendo. Habré tenido suerte.

Te crea mogollón de ficheros en el directorio .idea que, pese a lo que te recomienden ellos, al final es mejor meterlos en el .gitignore y no hacerle spam a nadie.

Y la compilación incremental no consigo que sea tan completa y tan intuitiva como en Eclipse, muchas veces me entero de los bugs cuando voy a lanzar el programa entero. Aunque aquí sospecho que igual el problema no es del software sino mío, que aún no sé cómo dar con la combinación de preferencias adecuada.

Y eso es para mí lo más importante. Que me hace sentir que, cuando hay algo raro, no es el entorno el que está fallando, sino que soy yo. Porque no se me va a quedar pequeño, soy yo el que va creciendo poco a poco cada vez que lo arranco. Y eso vale millones. O, por lo pronto, vale el precio de la licencia de pago.

Y qué mejor piropo le puedo dar a un software que decir que, sin que Paradigma me ponga un duro por ella, la pago religiosamente todos los meses. Estos rusos se lo merecen.

David Rodríguez

David Rodríguez

Ay, Sergio, puedes decir que me entiendes, pero en el fondo sabes que no es así. En el ámbito en general y en el mundo informático en particular, los desarrolladores solemos ser fieles acérrimos de lo que nos gusta y lo defendemos a muerte. En mi papel de abogado defensor de Eclipse, no voy a basar mi alegato en gritar que IntelliJ es el peor IDE que existe y que debería ser quemado en la hoguera (¡bruja, bruja, bruja!).

Al contrario, creo que es una herramienta con alguna funcionalidad curiosa que la hace destacable, pero te voy a decir una cosa: llegar a ser famoso es fácil, lo difícil es mantenerse en lo alto, y Eclipse lo ha demostrado de sobra. Ya veremos si Idea es capaz de mantenerse o se convierte en otra moda pasajera más.

Mi experiencia en el mundo de la programación comenzó utilizando JDeveloper, un IDE que me encantaba en su época y que abandoné en 2012 por Eclipse. Tengo que decir que la transición no fue dolorosa, ni traumática, al contrario, fue muy sencilla ya que facilita bastante esa tarea.

Te guste o no, es mucho más intuitivo. Al fin y al cabo, tú también trabajas con un workspace al que importas proyectos, ¿no? ¿Por qué cambiarle el nombre para intentar hacerlo más cool?

Es verdad que ambos IDEs hacen lo mismo, Windows y Ubuntu en el fondo también lo hacen, pero no nos da igual tener cualquier sistema operativo, ¿o es que tu móvil tiene Tizen? A mí me gusta una aplicación con iconos, colores, fuentes que dan aspecto de aplicación sólida, en vez de iconos pobres e interfaz confusa.

Tienes razón en una cosa: mi experiencia con Idea no es amplia, restricciones de fechas no me han permitido invertir tiempo en toquetear a fondo una herramienta que, además de cambiar los nombres a todo, no es intuitiva. Pero un IDE puede ser a la vez productivo, amigable, y tener colorines, o ¿acaso los dispositivos son en blanco y negro? ¿Idea no te marca los errores en rojo?

Para refrescarte un poco la memoria, Eclipse fue desarrollado por una pequeña compañía hasta ahora casi desconocida, IBM, la cual lo liberó y ahora se encuentra bajo el amparo de una organización independiente sin ánimo de lucro que fomenta una comunidad de código abierto (enormemente amplia, por cierto) creando un gran ecosistema de complementos y extensiones totalmente personalizados a las necesidades de los usuarios, y ¡gratis!

Además de Open Source, es multiplataforma, orientado a otros lenguajes de programación (no solo de Java vive el desarrollador) y utilizado por otros proyectos como interfaz base (en la Wikipedia podrás encontrar muchos ejemplos).

Al igual que en la guerra Android vs iOS, Idea ha copiado funcionalidades y supuestamente las ha mejorado. Control + Espacio inicialmente era bastante limitado en Eclipse, pero en Neón te ofrece todo tipo de sugerencias útiles, ahorrando tiempo porque, como tú bien dices: ¡sí que son buenas!

El menú emergente encuentra todas las coincidencias, incluidos métodos heredados, y marca en negrita los caracteres coincidentes. Además, admite patrones de subcadenas, mostrando en menú todos los resultados. Y ofrece información complementaria sobre los constructores, sus tipos y sus respectivos parámetros.

Idea tiene un proyecto con módulos, pero Eclipse tiene una muy buena estructura de proyectos. Tengo un espacio de trabajo compuesto por multitud de proyectos que puedo tener abiertos, cerrados, agrupados y ocultos.

El explorador de paquetes ofrece una estructura clara, limpia y ordenada de los proyectos, algo que personalmente aprecio enormemente. ¿A quién no le gusta ver las clases ordenadas, catalogadas y de un solo vistazo?

Independientemente del sistema de compilación, Eclipse mantiene el modelo de su contenido, incluyendo la información sobre jerarquías, referencias y definiciones de elementos en Java.

Además, en el explorador se pueden hacer selecciones múltiples para realizar búsquedas por Referencias, Declaraciones, etc. en vez de tener que ir una por una.

Buscando más diferencias, se me ocurre, que podríamos hablar del ecosistema que rodea a IntelliJ… Creo que en este punto si comparamos los dos IDEs, claramente gana Eclipse. Una de las bondades de ser open source es que tiene una grandísima y sólida comunidad de desarrolladores ofreciendo un Marketplace con miles de plugins que pueden ser instalados de forma fácil y gratuita ya sea desde repositorios o desde el propio Eclipse.

Simple y llanamente: necesito un plug-in y en segundos Marketplace me ofrece varias alternativas y las mantiene con las actualizaciones, sin tener que buscar alternativas en webs o foros. Otra de las ventajas de tener una gran comunidad detrás es el poder adelantarse a los acontecimientos, como, por ejemplo, publicar en junio de 2015 Eclipse su primera Beta con soporte para Java 9.

Ahora, Sergio, voy a hablar sobre ese oscuro objeto de deseo tan ansiado y a la vez tan odiado: ¡la memoria! ¿A qué desarrollador no le gustaría tener 16GB de memoria RAM? ¡Porque desde luego a mí sí! Ese requisito tan pedido y tan pocas veces concedido. ¡Tener 16GB es como recibir la visita de Papá Noel y los Reyes Magos el día de tu cumpleaños.

Pero dejando el mundo ideal de Matrix de lado y volviendo a la realidad, los PCs vienen con 8GB de RAM. Y, te guste o no, uno de los peores defectos que tiene Idea es que come, devora y se atraganta con la memoria, ¡nunca tiene suficiente! Por el contrario, mis 8Gb me dan para tener dos Eclipses abiertos, el TOAD, MySQL, Chrome, Firefox, Git, Skype y ¡hasta Whatsapp! ¡Y no se me cuelga! No es mejor el que más consume, sino el que mejor gestiona los recursos.

Otra ventaja de Eclipse es su compilador incremental incorporado, que se ejecuta cada vez que se actualiza el código. ¿A quién no le gusta ver los errores mientras está escribiendo código? Incluso permite compilar el código con errores. Si estoy trabajando en una parte de la aplicación, ¿por qué no puedo compilar y arrancarla mientras la otra la tengo manga por hombro?

Esta observación se hace extensible a SonarQube. Si me puedo importar las reglas de Sonar a mi local y se pueden ir pasando a la vez que voy actualizando el código en vez de tener que esperar a un informe o, aún peor, mergear el código y esperar a que se pase en el servidor, ¿no me hace más productivo?

Una de las funciones que más me gusta de Eclipse es el debugging. Mediante breakpoints, se pueden ir depurando línea a línea los procesos, evaluando expresiones, viendo en cada momento los valores y sus modificaciones correspondientes en los cuadros de diálogo, ofreciendo una perspectiva exclusiva para esta operación.

Además, soporta debugging en modo local y remoto. Como se suele decir, me permite llegar hasta la cocina de una casa, ¡dónde y cuándo lo necesito!

Respecto a la refactorización, Eclipse tiene multitud de funciones, a cuál mejor, que ayudan y mucho en esta tarea. No hay nada que haga IntelliJ que no pueda hacer Eclipse, te guste o no.

Y sí, hay un factor que, aunque no lo parezca, puede ser decisivo a la hora de elegir un IDE tanto para un desarrollador como para una empresa: el coste. Idea es de pago, y es caro. Y la pregunta es: ¿por qué pagar una matrícula y cuotas anuales por un servicio que puedo tener gratis, con un enorme ecosistema y una gran comunidad a su espalda?

La mayoría de funcionalidades y plugins que ofrece Idea de pago las ofrece Eclipse gratis y, sinceramente, creo que no justifica unas tarifas tan altas. Idea es un buen IDE, no seré yo el que diga lo contrario, y Eclipse tiene también sus puntos a mejorar. Pero seamos honestos, si algo funciona, funciona bien y es gratis, y la alternativa no me aporta algo realmente diferente y novedoso más allá de cambiar algunos nombres y una interfaz sobria, ¿por qué debería cambiar?

Se podría decir que Eclipse es como ese coche antiguo que tenemos cariño que, en vez de mandar al desguace, se puede ir modernizando y tuneando hasta el infinito, añadiendo los extras que realmente necesitamos, y moldeandolo a tus necesidades para cada momento.

Es algo que lleva tiempo lograr, pero el resultado es un workspace funcional y sin errores en el que sentirse cómodo trabajando.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.