Elección de su IDE de Java

Actualizado: diciembre de 2018 .

Cada desarrollador de Java necesita un editor de programación o IDE que pueda ayudar con las partes más sucias de escribir Java y usar bibliotecas de clases y marcos. Decidir qué editor o IDE le conviene más depende de varias cosas, incluida la naturaleza de los proyectos en desarrollo, su función en la organización, el proceso utilizado por el equipo de desarrollo y su nivel y habilidades como programador. Las consideraciones adicionales son si el equipo se ha estandarizado en herramientas y sus preferencias personales.

Los tres IDE elegidos con mayor frecuencia para el desarrollo de Java en el lado del servidor son IntelliJ IDEA, Eclipse y NetBeans. Sin embargo, estas no son las únicas opciones, y esta revisión también incluirá algunos IDE ligeros.

Para este resumen, hice nuevas instalaciones de IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018-09 para desarrolladores de Java EE y Apache NetBeans (incubando) IDE 9 en una Mac. También revisé varios proyectos Java de código abierto para poder probar todos los IDE en los mismos proyectos.

Acerca de esta actualización

Esta revisión de IDE se publicó por primera vez en septiembre de 2016 y se actualizó en diciembre de 2018. En esos años intermedios, el lenguaje Java, las API, el ecosistema de JVM y algunos marcos han evolucionado significativamente. Java EE 8 introdujo o actualizó muchas especificaciones de tecnología Java, incluido JSON-B (enlace de notación de objetos JavaScript), Java EE Security, Servlet 4.0 y JSF (JavaServer Faces) 2.3 para crear interfaces de usuario del lado del servidor. Java EE 8 también fue la versión empresarial final de Java de Oracle: La Fundación Eclipse se ha hecho cargo de administrar la tecnología, que ha cambiado de nombre a Jakarta EE. Mientras tanto, JUnit ha avanzado a la versión 5, rompiendo integraciones; IDEA y Eclipse tienen soporte nativo para JUnit 5, pero al momento de escribir este artículo NetBeans no lo tiene.

Todos estos cambios deben ser parte de su evaluación de un IDE, ya sea para uso general o para un proyecto en particular.

NetBeans 10 agrega soporte para JUnit 5 y JDK 11

Lanzado en enero de 2019, NetBeans 10 agrega soporte para JDK 11 y JUnit 5.

Conceptos básicos: lo que necesita de un IDE de Java

Como mínimo, esperaría que su IDE admita Java 8 y / o 11 (las versiones LTS), Scala, Groovy, Kotlin y cualquier otro lenguaje JVM que utilice habitualmente. También querrá que sea compatible con los principales servidores de aplicaciones y los marcos web más populares, incluidos Spring MVC, JSF, Struts, GWT, Play, Grails y Vaadin. Su IDE debe ser compatible con cualquier sistema de control de versiones y compilación que utilice su equipo de desarrollo; los ejemplos incluyen Apache Ant con Ivy, Maven y Gradle, junto con Git, SVN, CVS, Mercurial y Bazaar. Para obtener crédito adicional, su IDE debería poder manejar las capas de cliente y base de datos de su pila, admitiendo JavaScript incorporado, TypeScript, HTML, SQL, JavaServer Pages, Hibernate y la API de persistencia de Java.

Finalmente, esperaría que su IDE de Java le permita editar, compilar, depurar y probar sus sistemas con facilidad y gracia. Idealmente, no solo tendría finalización inteligente de código, sino también refactorización y métricas de código. Si está en una tienda que realiza desarrollo basado en pruebas, desea soporte para sus marcos de prueba y stubbing. Si su grupo utiliza un sistema de tickets y CI / CD, es mejor si su IDE puede conectarse a ellos. Si necesita implementar y depurar contenedores y nubes, su IDE debería ayudarlo a hacerlo.

Con esa base en mente, consideremos a los contendientes.

IntelliJ IDEA

IntelliJ IDEA, el principal IDE de Java en términos de características y precio, viene en dos ediciones: la edición comunitaria gratuita y la edición Ultimate de pago, que tiene características adicionales.

La edición Community está destinada al desarrollo de JVM y Android. Es compatible con Java, Kotlin, Groovy y Scala; Androide; Maven, Gradle y SBT; y Git, SVN, Mercurial, CVS y TFS.

La edición Ultimate, destinada al desarrollo web y empresarial, admite Perforce además de los otros sistemas de control de versiones; admite JavaScript y TypeScript; admite Java EE, Spring, GWT, Vaadin, Play, Grails y otros marcos; e incluye herramientas de base de datos y soporte SQL.

La idea es que la edición comercial (Ultimate) se gane su lugar en el escritorio de un profesional, justificando una suscripción paga a través de una mayor productividad del programador. Si gana entre 50.000 y 100.000 dólares al año como desarrollador de Java, no es necesario un gran impulso de productividad para obtener un rápido retorno de la inversión con una suscripción de IDEA empresarial de 500 dólares al año. El precio baja en los años siguientes para las empresas, es mucho más bajo para las empresas emergentes y los individuos, y es gratuito para estudiantes, profesores, "campeones de Java" y desarrolladores de código abierto.

IntelliJ promociona IDEA para obtener una visión profunda de su código, la ergonomía del desarrollador, las herramientas de desarrollo integradas y una experiencia de programación políglota. Analicemos en profundidad y veamos qué significan estas funciones y cómo pueden ayudarlo.

Martin Heller

Conocimiento profundo de su código

La coloración de la sintaxis y la finalización de código simple son un hecho para los editores de Java. IDEA va más allá de eso para proporcionar "finalización inteligente", lo que significa que puede mostrar una lista de los símbolos más relevantes aplicables en el contexto actual. Estos están clasificados según su frecuencia personal de uso. La "finalización de la cadena" es más profunda y muestra una lista de símbolos aplicables  accesibles a través de métodos o captadores  en el contexto actual. IDEA también completa miembros estáticos o constantes, agregando automáticamente cualquier declaración de importación necesaria. En todas las finalizaciones de código, IDEA intenta adivinar el tipo de símbolo de tiempo de ejecución, refina sus opciones a partir de eso y agrega conversiones de clases según sea necesario.

El código Java a menudo contiene otros lenguajes como cadenas. IDEA puede inyectar fragmentos de código SQL, XPath, HTML, CSS y / o JavaScript en literales de cadena Java. De hecho, puede refactorizar el código en varios idiomas; por ejemplo, si cambia el nombre de una clase en una declaración JPA, IDEA actualizará la clase de entidad correspondiente y las expresiones JPA.

Cuando está refactorizando un fragmento de código, una de las cosas que normalmente desea hacer es también refactorizar todos los duplicados de ese código. IDEA Ultimate puede detectar duplicados y fragmentos similares y aplicarles la refactorización también.

IntelliJ IDEA analiza su código cuando se carga y cuando escribe. Ofrece inspecciones para señalar posibles problemas y, si lo desea, una lista de soluciones rápidas al problema detectado.

Ergonomía del desarrollador

IntelliJ diseñó IDEA teniendo en cuenta el flujo creativo del desarrollador, también conocido como  "estar en la zona". La ventana de la herramienta Proyecto que se muestra a la izquierda en la Figura 1 desaparece de la vista con un simple clic del mouse, para que pueda concentrarse en el editor de código. Todo lo que desea hacer durante la edición tiene un atajo de teclado, incluida la visualización de definiciones de símbolos en una ventana emergente. Si bien aprender los atajos requiere tiempo y práctica, eventualmente se convierten en una segunda naturaleza. Incluso sin conocer los atajos, un desarrollador puede aprender a usar IDEA fácil y rápidamente.

El diseño del depurador IDEA es especialmente agradable. Los valores de las variables se muestran directamente en la ventana del editor, junto al código fuente correspondiente. Cuando cambia el estado de una variable, también cambia su color de resaltado.

Herramientas de desarrollo integradas

IntelliJ IDEA proporciona una interfaz unificada para la mayoría de los principales sistemas de control de versiones, incluidos Git, SVN, Mercurial, CVS, Perforce y TFS. Puede realizar toda la gestión de cambios directamente en el IDE. Mientras probaba IDEA, deseaba que el último cambio en un bloque de código fuente apareciera en la ventana del editor como una anotación (como lo hace en Visual Studio). Resulta que hay un complemento para eso.

IDEA también integra herramientas de compilación, corredores de prueba y herramientas de cobertura, así como una ventana de terminal incorporada. IntelliJ no tiene su propio generador de perfiles, pero admite varios generadores de perfiles de terceros a través de complementos. Estos incluyen YourKit, creado por un antiguo desarrollador líder de IntelliJ, y VisualVM, que es una versión reempaquetada del generador de perfiles NetBeans.

La depuración de Java puede ser una molestia cuando suceden cosas misteriosas en clases para las que no tienes código fuente. IDEA viene con un descompilador para esos casos.

La programación del servidor Java a menudo implica trabajar con bases de datos, por lo que IDEA Ultimate incluye herramientas de base de datos SQL y NoSQL. Si necesita más, un IDE SQL dedicado (DataGrip) está disponible como parte de una suscripción de todos los productos que es solo un poco más cara que una suscripción IDEA Ultimate.

IntelliJ IDEA es compatible con todos los principales servidores de aplicaciones de JVM y puede implementar y depurar en los servidores, solucionando un problema importante para los desarrolladores de Java empresarial. IDEA también es compatible con Docker a través de un complemento que agrega una ventana de herramientas de Docker. (Hablando de complementos, IntelliJ tiene muchos).

Programación políglota

IDEA ha ampliado la asistencia de codificación para Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS y otros marcos. No todos estos son marcos de Java. Además de Java, IDEA comprende muchos otros lenguajes listos para usar, incluidos Groovy, Kotlin, Scala, JavaScript, TypeScript y SQL. Si necesita más, actualmente hay cientos de complementos de lenguaje IntelliJ, incluidos complementos para R, Elm, Go, Rust y D.

Eclipse IDE

Eclipse, durante mucho tiempo el IDE de Java más popular, es gratuito y de código abierto y está escrito principalmente en Java, aunque su arquitectura de complementos permite que Eclipse se extienda a otros idiomas. Eclipse se originó en 2001 como un proyecto de IBM para reemplazar la familia de IDE IBM Visual Age basada en Smalltalk por un IDE portátil basado en Java. Un objetivo del proyecto era eclipsar a Microsoft Visual Studio, de ahí el nombre.

La portabilidad de Java ayuda a que Eclipse sea multiplataforma: Eclipse se ejecuta en Linux, Mac OS X, Solaris y Windows. El Java Standard Widget Toolkit (SWT) es al menos parcialmente responsable de la apariencia de Eclipse, para bien o para mal. Asimismo, Eclipse debe su rendimiento (o, según algunos, su falta) a la JVM. Eclipse tiene la reputación de funcionar lentamente, lo que se remonta al hardware más antiguo y a las JVM más antiguas. Sin embargo, incluso hoy puede parecer lento, especialmente cuando se actualiza en segundo plano con muchos complementos instalados.

Parte de la sobrecarga que ocurre en Eclipse es su compilador incremental incorporado, que se ejecuta cada vez que carga un archivo y cada vez que actualiza su código. En general, esto es algo muy bueno y proporciona indicadores de error a medida que escribe.

Independientemente del sistema de compilación, un proyecto Java de Eclipse también mantiene un modelo de su contenido, que incluye información sobre la jerarquía de tipos, referencias y declaraciones de elementos Java. En general, esto también es algo bueno y permite varios asistentes de edición y navegación, así como la vista de esquema.

La versión actual de Eclipse es 2018-09. Instalé el IDE de Eclipse para desarrolladores de Java EE, pero hay muchos otros paquetes de instalación, incluida la opción de instalar el SDK mínimo de Eclipse y agregar complementos solo cuando sea necesario. Sin embargo, la última opción no es para los débiles de corazón: no es difícil introducir conflictos entre complementos que en realidad no  dicen  que son incompatibles.

Martin Heller

Soporte de herramientas extensibles

El ecosistema de complementos es una de las fortalezas de Eclipse, además de ser una fuente de frustración ocasional. El mercado de Eclipse contiene más de 1,600 soluciones actualmente, y los complementos aportados por la comunidad pueden o no funcionar como se anuncia. Aún así, los complementos de Eclipse incluyen soporte para más de 100 lenguajes de programación y casi 200 marcos de desarrollo de aplicaciones.

La mayoría de los servidores Java también son compatibles: si define una nueva conexión de servidor desde Eclipse, llegará a una lista de carpetas de proveedores, debajo de la cual encontrará aproximadamente 30 servidores de aplicaciones, incluidas nueve versiones de Apache Tomcat. Los proveedores comerciales tienden a agrupar sus ofertas: por ejemplo, solo hay un elemento en Red Hat JBoss Middleware, que incluye WildFly y EAP Server Tools, así como JBoss AS.

Edición, exploración, refactorización y depuración

La primera experiencia de un desarrollador con Eclipse puede ser desconcertante, incluso confusa. Esto se debe a que su primera tarea es adaptarse a la arquitectura conceptual de espacios de trabajo, perspectivas y vistas de Eclipse, cuyas funciones están determinadas por los complementos que haya instalado. Para el desarrollo de servidores Java, por ejemplo, es probable que utilice las perspectivas de exploración Java, Java EE y Java; la vista del explorador de paquetes; la perspectiva de la depuración; una perspectiva de sincronización del equipo; herramientas web; una perspectiva de desarrollo de bases de datos; y una perspectiva de depuración de bases de datos. En la práctica, todo eso comenzará a tener sentido una vez que abra las vistas que necesita.

A menudo, hay más de una forma de realizar una tarea determinada en Eclipse. Por ejemplo, puede examinar el código con el explorador de proyectos y / o la perspectiva de navegación de Java; cuál elijas es cuestión de gusto y experiencia.

El soporte de búsqueda de Java le permite encontrar declaraciones, referencias y apariciones de paquetes, tipos, métodos y campos de Java. También puede usar el Acceso rápido para buscar y usar vistas rápidas para mostrar elementos como esquemas de clases.