Llegamos a ustedes gracias a:



Reportajes y análisis

Comparación de 4 IDEs de Java

Eclipse, NetBeans, JDeveloper e IntelliJ

[17/04/2015] Cuando piensa en un IDE Java, sin duda, imagina una aplicación gráfica en la que se escribe el código fuente de Java; a continuación, se compila, depura y ejecuta. Por supuesto que esa es una pequeña parte -si está construyendo una aplicación Java, hay muchas posibilidades de que esté trabajando con algo más que solo Java.

Podría haber una base de datos relacional implicada. O si está construyendo una aplicación basada en la Web, es posible que tenga que lidiar con AJAX, y eso significa JavaScript. Y HTML. Y si la aplicación se va a ejecutar desde un servidor de aplicaciones como Tomcat, necesitará las herramientas de administración del servidor de aplicaciones. No está solo; está trabajando con un equipo de desarrolladores, por lo que sería útil si esa IDE trabajara con Git o Subversion.

La lista es interminable, pero se entiende la idea. Pocas veces se da el caso de que, cuando se genera una aplicación Java, todo lo que hacemos es construir una aplicación Java. Y un IDE necesita proporcionar herramientas que le ayuden a someter todas las tecnologías relacionadas en las que su proyecto se enredará.

En esta revisión, observaré el estado actual de cuatro de los IDEs Java más conocidos que están disponibles en la actualidad:

* El venerable Eclipse. Aunque existen versiones de Eclipse en muchos idiomas además de Java (C ++, Python, Fortran, Ruby, incluso Cobol, por nombrar algunos), Eclipse está basado en Java, y es mejor conocido como un IDE Java. El hecho de que puede ser utilizado para desarrollar en tantas otras lenguas es un testamento a su extensibilidad, que es... extensa.

* NetBeans. NetBeans puede soportar el desarrollo en idiomas distintos al de Java, aunque no tantos como Eclipse. NetBeans comenzó su vida como un producto comercial a finales de los 90s, pero fue más tarde abrió su código para Sun, y ha permanecido así desde la compra de Sun por Oracle (y la consiguiente adquisición de NetBeans).

* JDeveloper. JDeveloper es también propiedad de Oracle. Sin embargo, mientras que NetBeans soporta el desarrollo en varios idiomas y en una variedad de entornos Java, JDeveloper es sólidamente Java, y está pensado principalmente para el desarrollo de J2EE.

* IntelliJ IDEA. Como Eclipse y NetBeans, IntelliJ IDEA de JetBrains soporta una variedad de lenguajes y tecnologías Java. IDEA es más notable por su incorporación de mejoras en la productividad de los editores y herramientas del IDE. A diferencia de las otras IDEs, IDEA está disponible (prepago) como Ultimate Edition y de una manera más limitada -pero gratuita- como Community Edition.

Eclipse

Eclipse está disponible en más variedades de las que puede contar. No solo proporciona las capacidades fundamentales de un IDE -gestión de proyectos, edición de fuente, compilación, depuración, control de versiones- sino que la plataforma Eclipse ha sido modificado para su uso como un navegador de base de datos (DBeaver), un modelador de procesos de negocio (BPMN2 Modeler), un kit de herramientas de visualización de datos y reporte (BIRT, Business Intelligence y Reporting Tools), y más. Se han creado versiones de Eclipse para dominios específicos de aplicaciones: pruebas, desarrollo de la automoción, desarrollo de sistemas paralelos, y así sucesivamente. El número de plug-ins disponibles es igualmente sin fin, como es la variedad de lenguajes de programación soportados.

Eclipse es también la fuente de muchos proyectos notables. Por ejemplo, Eclipse RAP (plataforma de aplicaciones remotas por sus siglas en inglés) es un marco para la construcción de una aplicación empresarial que se puede presentar en los dispositivos que van desde los navegadores web para clientes de aplicaciones de escritorio hasta los dispositivos móviles. La API reutilizable basada en SWT de Eclipse RAP le permite desplegarse a una variedad de objetivos de una única base de código.

En resumen, Eclipse no es tanto una IDE sino una plataforma IDE.

En la perspectiva de Eclipse Java, se puede ver no solo la estructura lógica de paquetes y clases Java, sino que también puede utilizar la "jerarquía de llamadas" para ver todas las localizaciones en su proyecto que llaman a un método específico.
Java Eclipse

Sin embargo, Eclipse es, sin duda más conocido como un IDE de JAVA de primera categoría. Está escrito en Java, por lo que se puede ejecutar en todos los principales sistemas operativos. Como era de esperar con tantas variaciones de Eclipse, hay muchas variedades de lo que podría llamarse "Eclipse para Java". Diríjase a la página web de Eclipse, y encontrará lo siguiente:

* Eclipse básico para desarrolladores de Java, para construir aplicaciones Java.

* Eclipse para desarrolladores de Java EE, para la construcción de aplicaciones basadas en Web y en servidores.

* Eclipse para desarrolladores de Java y Report, una amalgama de herramientas Java EE y la herramienta de informes BIRT, lo que facilita el diseño y la creación de informes, incluye un motor de gráficos, y se puede aplicar tanto a aplicaciones Java de escritorio y de Web.

* Eclipse para desarrolladores Java y DSL, incluyendo el marco de código abierto Xtext que le permite crear DSLs (lenguajes de dominio específico, por sus siglas en inglés).

* Eclipse para Testers, que incluye la herramienta Jubula para crear y administrar las pruebas automatizadas de interfaz gráfica de usuario (GUI) para aplicaciones que emplean Swing, SWT, HTML y otras tecnologías.

Esas ediciones son colecciones más o menos específicas de plug-ins de Eclipse. La flexibilidad de la arquitectura plug-in de Eclipse significa que puede equipar su instalación particular de Eclipse con una combinación prácticamente ilimitada de capacidades. Para esta revisión, sin embargo, instalé la versión Java EE de Eclipse, una IDE equipada para crear aplicaciones Java para Web, de servidor y de escritorio, así como EJB (Enterprise JavaBeans), conectores, y más. Debido a que utilizo Groovy para escribir scripts de prueba, he añadido el maravilloso plug-in Groovy de Codehaus.

La versión más reciente (a fecha de este escrito) es Eclipse Luna, que es totalmente compatible con Java 8, incluyendo la capacidad para el analizador de memoria Eclipse para aceptar los vuelcos de almacenamiento dinámico de Java 8. Luna también es compatible con Paho, un sistema de mensajería M2M (máquina a máquina, por sus siglas en inglés) que emplea MQTT (Message Queue Telemetry Transport), un protocolo ligero de publicación y suscripción de mensajería.

Trabajando con Eclipse

Al abrir Eclipse, el espacio de trabajo se compone de numerosas ventanas con pestañas, o llamadas también 'vistas'. Una vista proporciona gestión de un recurso determinado. Un editor es un tipo de vista; el explorador de paquetes, que muestra la disposición de los paquetes, clases y bibliotecas en una aplicación Java, es otro tipo de vista; la ventana del depurador es una vista; etcétera.

Una "perspectiva" -un concepto central en la interfaz de usuario de Eclipse- es una combinación de puntos de vista orientados a una tarea específica. Durante la escritura del actual código Java, utilizará la perspectiva Java, con sus vistas de esquema y editor. Cuando ya es hora de depurar la aplicación, podrá cambiar a la perspectiva Depurar con sus vistas de depuración y threads activos. Para el trabajo de base de datos, abra la perspectiva de desarrollo de base de datos, con su vista 'Explorador de fuente de datos' y la vista de ejecución de SQL. El número de perspectivas disponibles en cualquier sesión de Eclipse generalmente depende de qué plug-ins haya instalado.

Tan complejo como suena -ciertamente parece complejo para cualquier persona nueva en Eclipse- la topología de la zona de trabajo de Eclipse será familiar para cualquiera que haya usado una IDE. Las vistas de navegación están a la izquierda; edición de contenidos, en el centro; las vistas de jerarquía de componentes a la derecha, y producción y estado en la parte inferior. Por supuesto, la disposición de estos elementos visuales es completamente adaptable, y puede añadir vistas a su perspectiva o quitarlas a voluntad.

Eclipse está lleno hasta el borde con toda clase de editores que pueda imaginar: editores de recursos de Java, CSS, HTML, SQL, JavaScript, archivos Maven POM (Project Object Proyecto Model), y -oh, sí- archivos fuente de Java. De hecho, piense en un tipo de archivo modificable por el usuario que una aplicación Java podría concebiblemente emplear, y Eclipse tiene un editor para ello. Incluso si descubre un archivo para el que Eclipse no ofrece ningún editor, el IDE se puede configurar para abrir un editor externo. Por supuesto, los editores de Eclipse cuidan su contenido. Abra un archivo de Java, y obtendrá el editor de código fuente Java. Abra un archivo XML, y obtendrá el editor XML.

Mientras codificando, Eclipse está listo con una variedad de asistencias: auto-realización, resolución de dependencias (utilizar una clase que no ha importado todavía, y Eclipse ofrecerá añadir la declaración de importación para usted), un montón de plantillas de código repetitivo -constructores, captadores y definidores, el método toString ()- y más. Su repertorio incluye renombrar, mover (transferir un método de una clase a otra y la actualización automática de referencias a través del código), extraer la interfaz de una clase, y trucos prácticos adicionales. Eclipse también le ayuda a navegar a través de referencias y declaraciones de variables o métodos.

Incluso con toda esta ayuda, si lo estropea, Eclipse hará un seguimiento de los cambios, y su característica 'historia local' le permite dar un paso atrás en el tiempo y ver sus alteraciones. Puede ver las versiones anteriores del archivo, y Eclipse proporciona una vista gráfica 'Diff' para que pueda examinar los deltas entre las versiones.

Para construir un proyecto, está integrado el soporte de Eclipse para Ant. El soporte de Maven se proporciona a través de este plug-in. Si prefiere Gradle, hay un plug-in, aunque sus capacidades varían dependiendo de qué soporte de idioma le haya añadido a Eclipse. El plug-in puede manejar Java, Groovy y Scala, y puede gestionar la producción de WARs (archivos Web) y EARs (archivos de la empresa). Hablando de Scala, si desea utilizar ese idioma JVM en Eclipse, hay un plug-in para la herramienta de construcción, SBT, así como una IDE Scala en toda regla integrado en Eclipse.

Para el control de versiones, Eclipse viene con soporte para CVS (incluye un cliente integrado). La edición Java EE de Eclipse también cubre EGit, que proporciona integración Git. Los plug-ins están disponibles para Subversion, Visual SourceSafe, Perforce, y Mercurial. De hecho, sería sorprendente encontrar un producto de control de versiones de software para los que no existe un plug-in gratuito de Eclipse.

Ayuda y documentación de Eclipse

Hay más material en la documentación en línea de Eclipse de la que puede imaginar, y debido a que Eclipse ha existido durante tanto tiempo, algunos pueden alcanzar bastante tiempo. Por ejemplo, encontrará un enlace en la Wiki de Eclipse, que lo lleva a un artículo de dos partes llamado "Descripción técnica general de la plataforma Eclipse". La versión original de la primera parte fue escrita en el año 2001; su más reciente revisión fue en el 2006. La guía del usuario en línea para la versión Luna también está aquí. Se extiende por kilómetros, ya que incluye la documentación de todos los componentes Luna: C/C ++, Fortran, BIRT, EGIT, JavaScript, desarrollo de procesamiento en paralelo, y así sucesivamente.

El tiempo de ejecución de la ayuda de Eclipse incluye la característica 'Ayuda dinámica'. Esto abre una barra lateral: una ventana flotante que puede ser anclada a donde quiera en la GUI. Haga clic en cualquier vista en su sesión de Eclipse, y el contenido de la barra lateral cambiará para reflejar su elección. Por ejemplo, si está editando una clase de Java y hace clic en la ventana del editor, el contenido de la ayuda de la barra lateral podría tener entradas como "conceptos de editor de Java", "Uso de plantillas de código" y "referencias de editor de Java".

Eclipse puede realizar prácticamente cualquier tarea que pueda surgir en el proceso de desarrollo de Java. También puede ser equipado con todas las herramientas que necesita para las tareas auxiliares: que se ocupan de los servicios Web, gestión de bases de datos, depuración de un servidor de aplicaciones a distancia. Su gran fortaleza es el número aparentemente ilimitado y variedad de plug-ins. De hecho, no es descabellado afirmar que, al iniciar Eclipse, está activando una colonia de plug-ins. La única tarea real que enfrentará mientras gestiona su proyecto de desarrollo con Eclipse es la gestión en sí de Eclipse, ya que es fácil crear una anarquía IDE.

Java Eclipse
NetBeans

Una IDE Java bien establecida, el proyecto NetBeans es administrado actualmente por Oracle. El código de la IDE fue abierto por Sun Microsystems a finales de 1990. Puede utilizar NetBeans para desarrollar aplicaciones no solo en Java, sino también en Groovy, JavaScript, PHP y C/C ++. Los plug-ins soportados por la comunidad están disponibles para Python, Ruby, y Scala.

La versión actual de NetBeans es la versión 8.0.2, y aquí, 8 es el número mágico. Debido a que esta versión incluye el soporte para Java 8 -incluyendo soporte para depurar código en el motor JavaScript engine de JDK 8 Nashorn. Esta versión también es compatible con el marco PrimeFaces, así como la mejora de funcionamiento de Maven. (PrimeFaces es un marco de interfaz de usuario que combina Java Server Faces y componentes AJAX. Puede ser utilizado tanto para escritorio como para aplicaciones móviles.) La versión 8 de NetBeans reforzó el soporte para bibliotecas JavaScript como AngularJS y jQuery, y ha añadido soporte para RequireJS, una biblioteca que gestiona dependencias JavaScript y cargas de módulos.

Esta última versión de NetBeans maneja los servidores de aplicaciones Tomcat 8 y TomEE, así como WildFly (anteriormente JBoss) y GlassFish. Tomcat y GlassFish se incluyen con la IDE.

NetBeans está disponible en varias ediciones. Para el desarrollo básico de Java, vaya con la edición Java SE. Elija la edición EE para el desarrollo empresarial. Añade soporte para Java EE, así como soporte para los servidores de aplicaciones antes mencionados. Si trabaja con el servidor de aplicaciones WebLogic, NetBeans puede manejar eso, pero debe descargar el servidor WebLogic por separado y registrarlo con la IDE.

Las ediciones de NetBeans existen para el desarrollo en C / C ++, junto con PHP y HTML5. Si lo quieres todo, hay una edición para eso también.

Trabajar con NetBeans

El diseño NetBeans es ordenado y fácil, incluso para que naveguen los nuevos usuarios. A la izquierda del área de trabajo está el panel de navegación. Se compone de tres pestañas: Proyectos, Archivos y Servicios. La ficha de Proyectos tiene una visión jerárquica de los componentes de la aplicación. Elija un proyecto, y se abre un árbol con ramas que incluyen fuente, los recursos y las bibliotecas. La pestaña Archivos muestra una perspectiva del sistema de archivos a través de la cual se puede navegar por las carpetas y los archivos reales de su proyecto. La ficha Servicios es más elaborada; Voy a examinar sus capacidades a continuación.

Cuando trabaja en el editor, encontrará que NetBeans proporciona las asistencias de codificación esperados. Sus habilidades de refactorización incluyen el cambio de nombre estándar, mover, y borrado seguro. NetBeans también puede automatizar la tarea de mover un método hacia una superclase o bajarlo a una clase de niños, y puede extraer ya sea una interfaz o una subclase de una definición de clase. Las plantillas de la IDE pueden generar rápidamente código fuente de constructores, captadores y definidores, métodos estándar como toString () y hashCode (), e incluso crear miembros de la delegación que dan acceso a las variables de clase sin exponer dicho campo directamente. Si tiene los servicios Web definidos en la IDE (que se encuentra en la ficha Servicios), NetBeans pueden generar código para llamar a una operación de servicio Web.

El diseño limpio y despejado de la NetBeans IDE hace que los nuevos desarrolladores puedan encontrar su camino fácilmente.
Java Netbeans

La última pestaña en la ventana de la izquierda -la ficha Servicios- incluye funciones de gestión para todos los servicios externos con los que su proyecto podría interactuar. Éstas incluyen:

* Servicios Web. Esta ficha se rellena previamente con los servicios conocidos como Amazon, Delicious, Flickr, Google, WeatherBug, y otros. Se utiliza cuando su aplicación requiere que se agregue el acceso a una operación de servicio Web. Abra el archivo de origen por el que desea acceder al servicio Web y arrastre la función 'llamada de servicio Web'de la ficha Servicios hacia la ubicación de la fuente de donde desea que se haga la llamada de servicio Web. NetBeans "derrama" el código apropiado, define los argumentos necesarios, e incluso pone las declaraciones de importación requeridas por el archivo de origen.

* Repositorios Maven. Dele a NetBeans una ID, nombre y dirección URL de un repositorio Maven, y la IDE descargará el índice y le permitirá navegar por sus contenidos.

* Hudson Builders. Hudson es una herramienta de integración continua que se ejecuta en un servidor de aplicaciones. Puede conectarse a uno o más servidores de Hudson y monitorear el estado de los trabajos que cada servidor gestiona. Algunas funciones de gestión también están disponibles; por ejemplo, puede establecer algunos puestos de trabajo como "observados", en cuyo caso una notificación emergente aparece cuando se producen fallas de compilación o de prueba en dichos puestos de trabajo.

* Grupo de Repositorios. Esta entrada permite el acceso a los sistemas de seguimiento de problemas tales como Bugzilla y JIRA.

* JS Test Driver. Por último, esta entrada le permite configurar el uso de JS Test Driver, un servidor basado en Java que fue diseñado para probar el código JavaScript. Puede configurar no solo la ubicación del servidor JS Test Driver (en realidad, un archivo JAR), así como los navegadores que utilizará para probar el código JavaScript. NetBeans incluso generará un archivo de configuración que se puede modificar aún más para controlar el proceso de prueba.

NetBeans puede trabajar con sistemas de control de versiones como Subversion, Mercurial y Git. Los plug-ins están disponibles para CVS y ClearCase. Como Eclipse, NetBeans se beneficia de un ecosistema de plug-ins saludable. Si no encuentra una capacidad en la IDE NetBeans, es probable que exista un plug-in para esa capacidad. Puede comprobar si hay plug-ins disponibles directamente desde la IDE o explorar el portal de plug-ins de NetBeans.

NetBeans tiene excelentes instalaciones de prueba, que incluyen plantillas y asistentes, tanto para JUnit y TestNG. Apoyará tanto a JUnit 3 y a JUnit 4, así como autogenerará inicializadores y finalizadores JUnit. NetBeans generará inicializadores y finalizadores para TestNG también.

El depurador NetBeans trata fácilmente con aplicaciones multiproceso. Puede alternar entre los hilos, y NetBeans detectará puntos muertos entre los hilos o flujos suspendidos. El evaluador de código del depurador le permite definir métodos para dar formato a la salida de objetos complejos, mientras hace la depuración, por lo que puede mostrar los objetos en una forma más fácil de leer, en lugar de tener que profundizar en una maraña de referencias de contención.

Para depurar componentes GUI, un depurador visual NetBeans puede tomar una "instantánea" de la pantalla GUI en tiempo de ejecución, y desde ahí le permite localizar el código detrás delos componentes seleccionados (botones, barras de desplazamiento, paneles). También puede seleccionar el componente, abrir una ventana de propiedades, y examinar las propiedades asociadas con el componente en el momento que se tomó la instantánea.

Ayuda y documentación de NetBeans

La ayuda y la documentación para Java integradas en NetBeans es poco más que enlaces a la ayuda en línea. Los resultados de las consultas de búsqueda de documentación se califican de la misma manera que popularizó el sistema de clasificación de productos Consumer Reports: Aparece un pequeño círculo junto a cada resultado de búsqueda; el círculo se completa por un importe correspondiente al juicio de la herramienta de búsqueda sobre lo cerca que esté la respuesta a la consulta. La documentación en línea es extensa. La información "Primeros pasos" en la página principal se mueve sin problemas de "esto es lo que puede hacer" a "aquí está cómo hacerlo". También hay gran cantidad de tutoriales en línea. Muchos están dispuestos en "caminos de aprendizaje" -como la interfaz gráfica de usuario, Java EE, Mobile, y Embedded- e incluyen enlaces a artículos y screencasts.

NetBeans disfruta casi tantos complementos como Eclipse, aunque no es la IDE constructora de IDEs en la que se ha convertido Eclipse. Por otro lado, la interfaz de usuario de NetBeans es más limpia que la interfaz de Eclipse; no tiene que hacer una transición entre las perspectivas en NetBeans cuando cambia la naturaleza del trabajo. Los nuevos desarrolladores levantarán NetBeans más rápidamente que Eclipse. Esto de ninguna manera disminuye su utilidad para los desarrolladores avanzados de Java. NetBeans lo llevará a través de las tareas de construcción de las aplicaciones empresariales Java más exigentes.

Java Netbeans
JDeveloper

JDeveloper, que también está disponible vía Oracle, es la plataforma de desarrollo principal para los productos Oracle Fusion Middleware. La versión actual del JDeveloper es 12c, que está disponible en dos ediciones: Studio y Java. La edición Studio está destinada para el desarrollo de aplicaciones empresariales. La edición Java incluye solo componentes para aplicaciones Java SE y herramientas XML; carece de herramientas J2EE, características de base de datos, ADF (Application Developer Framework), y herramientas UML ... todos los cuales están en la versión Studio.

ADF es un marco de desarrollo de Java EE. ADF implementa el paradigma MVC y abarca prácticamente todos los aspectos del desarrollo de la EE: ORM, persistencia, controles de interfaz de usuario y la interfaz de usuario Web, control de flujo de la aplicación, y así sucesivamente. Su objetivo es reducir al mínimo el código de infraestructura que tiene que escribir para construir una aplicación Java EE.

Junto con la instalación de la edición Studio se encuentra una instancia de WebLogic Server de Oracle, con los archivos JAR del cliente WebLogic. Aunque WebLogic es la plataforma de despliegue J2EE preferida, JDeveloper le permitirá implementar en servidores de aplicaciones GlassFish, Tomcat y WebSphere.

Trabajar con JDeveloper

Al iniciar JDeveloper, se le preguntará cuál es el papel que desarrollará durante el uso de la IDE. Esta función determina las características -elementos de menú, cuadros de diálogo, preferencias- que JDeveloper habilita o deshabilita para su sesión de desarrollo. Las funciones disponibles son las siguientes:

* Desarrollador de estudio. Esto habilita todas las funciones.

* Desarrollador personalización. Seleccione esta función si va a personalizar los componentes de una aplicación ADF. (Las aplicaciones creadas con ADF pueden ser "personalizadas" mediante la personalización de los atributos de los componentes de la aplicación. La función del desarrollador de personalización proporciona herramientas para este tipo de operaciones.)

* Desarrollador de base de datos. Seleccione esta función si su aplicación requerirá una fuerte interacción con una base de datos. Las herramientas de base de datos de JDeveloper son particularmente poderosas.

* Desarrollador de Java. Elija esto para el desarrollo de aplicaciones importantes de Java (carece de características de Java EE).

* Desarrollador de Java. Elija esto para el desarrollo de aplicaciones Java EE.

Java JDeveloper
La vista Smart Data de JDeveloper (disponible al depurar) muestra solo aquellas variables que puedan ser de interés, dado el punto de ejecución actual del programa.

Lo nuevo en esta versión de JDeveloper (versión 12.1.3) es el soporte para Java SE 8 (aunque la propia JDeveloper IDE se debe ejecutar en Java SE 7 JDK) y el soporte mejorado para Maven. También trae mejoras incrementales para las herramientas de la IDE Java EE y añade la posibilidad de crear servicios y clientes JAX-RS 1.1 y JAX-RS REST 2.0 a través de Jersey. (JAX-RS es la API de Java para los servicios web RESTful, y Jersey es la implementación de referencia de Oracle.) Las herramientas de bases de datos también se han mejorado. Por ejemplo, el Código Insight -el nombre de JDeveloper para las capacidades de finalización de código- ya está disponible en el modelador de base de datos. Por último, hay muchas mejoras en el soporte de JDeveloper para ADF.

El elemento de la organización de más alto nivel en JDeveloper es una aplicación (que, como se verá, puede ser un poco confusa). Durante una sesión de trabajo con JDeveloper, tendrá una única aplicación abierta. Dentro de una aplicación puede definir uno o más proyectos, en los que un proyecto es un contenedor de los elementos que (normalmente) se utilizan para crear un solo programa Java. Dentro de los proyectos están las "unidades de compilación", que más o menos corresponden con las clases Java que construye su proyecto.

Una vez que haya definido su aplicación, empieza a poblarla con los proyectos. JDeveloper tiene muchos tipos de proyectos para elegir: aplicación Java de escritorio, aplicación ADF, aplicación de Coherence (siendo Coherence la tecnología de datos de la red en memoria de Oracle), servicios Web REST y SOAP, proyecto JSF (JavaServer Faces), y muchos más. Una vez que haya seleccionado el tipo de proyecto, se procede a la adición de los archivos de origen y de los recursos necesarios. Para las herramientas de construcción, JDeveloper tiene su propio sistema de construcción, o puede elegir Ant o Maven para administrar su proyecto.

El término de finalización de código de JDeveloper es Completion Insight, y aunque el nombre es peculiar, tiene todas las características que usted esperaría. Escriba el nombre de un objeto y una ventana emergente le mostrará todos sus métodos disponibles. También cuenta con plantillas para construcciones comunes. Escriba Ctrl-Enter, y un pop-up le da una lista para elegir: vacío para () bucles, si hay, intente coger, recorrer claves o valores de un mapa, y muchos más. Por supuesto, usted puede añadir su propia opción.

El editor de JDeveloper también proporciona una ficha de historia. Selecciónela, y tendrá tres "puntos de vista" en la historia de los archivos de cambios. Una es una especie de mini línea de tiempo, la segunda es una vista de árbol jerárquico de los componentes de Java que han sido modificados en cada punto de la línea de tiempo, y la tercera es una vista familiar de la fuente.

Si va a crear una interfaz gráfica de usuario, entonces el constructor Swing de JDeveloper está ahí para ayudarle. La página web de JDeveloper indica que los equipos de NetBeans y JDeveloper han estado trabajando para compartir herramientas de desarrollo GUI. Muestra: El constructor Swing de JDeveloper es prácticamente idéntico al constructor GUI en NetBeans. Elija una forma de base -JPanel, JFrame, JDialog, y así sucesivamente- y obtendrá un lienzo sobre el que puede colocar controles Swing. Puede cambiar entre la vista de diseño y la vista de origen, y no hay un modo de vista previo para que pueda examinar su interfaz gráfica de usuario tal y como aparecerá cuando esté listo. JDeveloper incluso tiene la función de depuración de escrito anteriormente descrita en la sección de NetBeans.

No es de extrañar, las herramientas de desarrollo de base de datos de JDeveloper son particularmente fuertes. El navegador de base de datos proporciona una interfaz gráfica de administración, y es compatible con muchas bases de datos: Oracle, DB2, Derby, MySQL, SQL Server, SQLite, y por supuesto cualquier base de datos para la que exista un controlador JDBC.

Si lo prefiere, puede construir las bases de datos de forma gráfica mediante la herramienta de Diagrama de base de datos de JDeveloper. No es muy diferente de la construcción de una interfaz gráfica de usuario arrastrando y soltando botones, barras de desplazamiento, y demás en un lienzo. La idea es la misma, solo que está arrastrando objetos de base de datos -tablas, claves foráneas, secuencias y relaciones- en un lienzo de base de datos.

JDeveloper también soporta la función "base de datos fuera de línea" de Oracle. Esto representa las bases de datos (y los objetos de la base) con definiciones basadas en XML lo cual le permite trabajar con elementos de base de datos -para crear tablas, modificar la estructura de tablas, eliminar tablas, y así sucesivamente- sin tener que configurar una conexión en directo. Puede hacer todo su trabajo de gestión, sin interferir con las operaciones en curso de una base de datos en vivo. Una vez que tenga la configuración que desea, reconciliará los cambios con la base de datos activa.

El depurador de JDeveloper tiene una ventana de Smart Data. Mientras que la ventana de datos del depurador muestra todas las variables, campos estáticos, y argumentos en el marco actual, la ventana de Smart Data muestra variables y campos pertinentes para que se ejecute el código. Esto le ahorra la tarea de buscar a través de lo que podría ser una larga lista de variables y objetos para encontrar la que probablemente interese en un punto específico en el proceso de depuración.

Para la depuración de aplicaciones basadas en la Web, el analizador HTTP de JDeveloper entiende cómo separar HTTP y los encabezados SOAP. La documentación ofrece directrices para utilizar el analizador con el fin de depurar los servicios Web de RESTful. Incluso puede configurar el navegador Web Firefox para utilizar el analizador HTTP. Esto permite que el analizador intercepte tráfico que está pasando entre su cliente de aplicaciones Web y el navegador.

Ayuda y documentación de JDeveloper

Gran parte de la documentación para JDeveloper está en línea, y es extensa. La sección para todas las teclas de acceso directo y sus correspondientes controles podría mantenerlo ocupado por días. Mientras tanto, cuando está empezando con la IDE, deténgase en la sección "Trabajar con el Jdeveloper de Oracle", que está lleno de entradas que explican cómo entrar. El sitio de Oracle Technology Network tiene enlaces a tutoriales, guías de principiante, y más.

JDeveloper enumera en gran medida al desarrollo de escritorio y aplicaciones empresariales Java. Más allá de utilizar Groovy en el contexto de Oracle ADF (donde Groovy se utiliza para crear código lógico de negocio dinámico), JDeveloper no tiene soporte para Groovy... ni Scala ni Jython, para el caso. JDeveloper es una IDE de un solo idioma.

Además, JDeveloper actualmente solo es compatible con Java EE 6 (la versión que actualmente es reconocida por el servidor de aplicaciones WebLogic de Oracle). En comparación, NetBeans soporta Java EE 7.

Sin embargo, JDeveloper es un entorno de desarrollo Java sólido con buena depuración y perfilado. En particular, si su aplicación va a hacer un uso intensivo de un RDBMS, las herramientas de base de datos de JDeveloper pueden satisfacer sus necesidades muy bien.

Java JDeveloper
IntelliJ IDEA

IntelliJ IDEA deJetBrains, que apareció por primera vez en el 2001, se ha distinguido por estar en la vanguardia de ideas innovadoras para hacer más eficiente el proceso de desarrollo. La versión 14 fue lanzada a principios de noviembre, y refuerza a una IDE ya poderosa con una serie de nuevas características. Éstas incluyen:

* Un 'descompilador' de Java incluido. Esto es muy útil cuando se trabaja con una biblioteca de terceros y no tiene la fuente. (NetBeans y Eclipse tienen plug-ins 'descompiladores' de terceros.)

* Soporte mejorado para Java 8. Por ejemplo, el evaluador de expresiones en el depurador ahora puede manejar expresiones lambda.

* La función de "archivos temporales". Esto le permite abrir lo que equivale a un archivo temporal -uno que no pasa a formar parte de su proyecto, sino que desaparece cuando se cierra. Puede seleccionar qué tipo de código está escrito en el archivo de trabajo- Java, JavaScript, HTML, etc. -e IDEA le proporcionará toda la asistencia de codificación que le proporciona a los archivos "normales". Con un "archivo temporal", realiza prototipos sobre la marcha, con todas las capacidades de codificación de IDEA disponible, y no 'contaminar' el espacio de trabajo.

* Un constructor JavaFX que se ejecuta en la IDE. En versiones anteriores, había que configurar la IDE para iniciar el constructor de escenario como un proceso independiente.

Esta última versión de IDEA también mejora el soporte para las herramientas de construcción Gradle y Maven, así como los sistemas de control de versiones Git y Mercurial. (IDEA ya tenía soporte para Mercurial y CVS). Además, es compatible con las versiones actuales de WildFly (anteriormente JBoss), TomEE, GlassFish, y los servidores de aplicaciones Server tc.

IDEA está disponible en dos ediciones: la edición comunitaria gratuita y la de pago para Ultimate Edition. Las licencias personales y académicas están disponibles para la edición Ultimate. JetBrains también ofrece descuentos para las compañías de lanzamiento de software. Puede ver una matriz de las diferencias entre las dos ediciones en la página Web de JetBrains.

La edición comunitaria es compatible con Java, Groovy, Scala, y Clojure. Con la ayuda de un plug-in, IDEA soporta Dart, un lenguaje con una sintaxis similar a C que compila a JavaScript y tiene la intención de, en última instancia, convertirse en el sustituto de JavaScript en el navegador Web. La edición de la Comunidad también soporta la edición de XML, así como XSD (XML Schema Definition) y DTD (Document Type Definition).

IntelliJ IDEA proporciona una vista gráfica de la herencia de clases y el contenido. Hacia la parte inferior de la pantalla, la vista del analizador de inspección identifica posibles problemas de tiempo de ejecución.
Java IntelliJ IDEA

Compre la edición Ultimate, y agregue soporte para HTML, CSS y JavaScript, así como SQL, Ruby, Python y PHP. Una vez más, se requiere un plug-in gratuito para permitir algunos idiomas. Por desgracia, si tiene la intención de desarrollar Java EE en IDEA, necesitará la edición Ultimate, ya que solo proporciona soporte para servlets, JSP (JavaServer Pages), JSF, JPA e Hibernate, y frameworks como Grails y Rails.

Al igual que con las otras IDEs, las capacidades de IDEA pueden extenderse a través de numerosos plug-ins. Las entradas en los repositorios de plug-ins de JetBrains, se puntúan (como un producto de Amazon). Los ejemplos incluyen los navegantes de bases de datos, los plug-ins para soporte de idiomas Haskell, numerosas extensiones para Android, extensiones para Groovy, e incluso un plug-in que muestran los dibujos animados "Dilbert". Algunos plug-ins están disponibles solo para la edición Ultimate, pero incluso la edición Community tiene muchas extensiones para elegir.

Trabajar con IntelliJ IDEA

Al igual que las otras IDE, IntelliJ IDEA puede construir una amplia variedad de proyectos, incluyendo viejas y simples aplicaciones Java SE, componentes Java EE, aplicaciones de Spring, y aplicaciones Java FX. (El rango depende de la versión que está utilizando. Algunos proyectos no están disponibles en la edición Community) Si desea crear aplicaciones móviles, IDEA soporta J2ME y proyectos Android. (Es necesario descargar e instalar el SDK de Android para construir un proyecto de Android). Puede utilizar el sistema de acumulación de IDEA, crear un proyecto Gradle, o solicitar la IDE para generar una construcción Ant.

Al introducir el código fuente con IDEA, encontrará todas las herramientas de finalización de código. De hecho, esta es un área donde realmente brilla IDEA: Los ingenieros de JetBrains han añadido innovaciones únicas que reducen la cantidad de teclas que tiene que escribir para producir una línea de código. Por ejemplo, la "postfix completion" de IDEA es una característica que no encontrará en ningún otro lugar.

Funciona así: Mientras está en el editor usted escribe, digamos, un nombre variable, luego le añade un identificador postfix precedido por un punto (.). El editor re escribirá automáticamente la variable envuelta en una expresión Java. Por ejemplo, si escribe una referencia a un objeto incluirá un apéndice al postfix con la expresión .null, el editor re escribirá la línea para que sea una declaración condicional (objeto == null), completado con corcheas y listo para el cuerpo de la cláusula condicional.

Las herramientas de base de datos son una adición importante a los desarrollos de aplicaciones Java de escritorio y servidores, e IDEA proporciona una buena colección de dichas herramientas. Hay un explorador de base de datos, un editor de consultas SQL (que soporta el completado de código), y un editor de tabla. Por supuesto, IDEA es compatible con todas las RDBMSes, y cualquier base de datos para la que está disponible la unidad JDBC. Como en el editor de fuente, IDEA proporciona varios atajos útiles en las herramientas de base de datos. Por ejemplo, en lugar de crear una consulta para ver a qué se refiere una clave foránea en una tabla de base de datos en particular, puede simplemente seleccionar la clave en el explorador de base de datos y presionar Ctrl + Q, la cual abre una ventana emergente que muestra los datos de referencia.

Cuando está trabajando con código SQL en el editor de Java, IDEA es lo suficientemente inteligente para proporcionarle complementos de código para SQL (lo cual es sorprendente, considerando que en lo que concierne a Java, las declaraciones SQL son simples cuerdas). También puede seleccionar el dialecto de SQL que utilizará, lo cual es útil para notar diferencias entre, digamos, DB2 y HSQLDB. Mejor aún, si ha instalado una conexión a su base de datos, puede probar una consulta directamente, y la IDE completará esos parámetros que requieren valores.

Lo único en contra de todo esto es el hecho de que las herramientas de base de datos solo están disponibles en la edición Ultimate.

IDEA tiene aparentemente ventanas ilimitadas de herramientas, todas diseñadas para simplificar los tediosos quehaceres del desarrollo. Por ejemplo, la ventana de la herramienta de inspección de código examinará, valga la redundancia, el código e identificará construcciones problemáticas o mal escritas. Ésta es una de las muchas herramientas de análisis disponible, que incluye análisis de dependencias de módulo y de flujo de datos, donde puede descubrir la fuente de datos de una variable particular, posibles valores de la variable, y potenciales fuentes NullPointer Exception.

JetBrains también ha mejorado el depurador IDEA con innovaciones útiles. Incluso si la información de depuración no está disponible para una clase o método particular, el depurador puede deducir la ubicación de determinada variable local y a qué espacio está asociada. Esto ayuda en el seguimiento de problemas cuando el flujo de ejecución desaparece en una librería de la que usted no tiene el código. Incluso en casos donde IDEA no puede saber qué variable está asociada con un espacio (dichos casos ocurren cuando un espacio es reutilizado entre el cuerpo del método) es lo suficientemente inteligente para decirle que el contenido de ese espacio "debe ser la variable de dicha variable.

Incluso algunas veces cuando se está depurando, se detendrá en una línea que tiene múltiples llamadas de métodos, y querrá parar en el segundo método que llamará, no en el primero. Presione Shift F7. Se le dará una lista de métodos y elegirá en cuál se detendrá. Esto se llama Smart Spet-in, y funciona con clases anónimas y expresiones lambda de Java 8.

Ayuda y documentación IntelliJ IDEA

Mientras que la documentación en línea de IDEA es bastante buena, una vez más la inventiva de la IDE es aparente. Por ejemplo, Find Action le ayuda a ubicar rápidamente una operación en la IDE. Escriba "abrir e IDEA le mostrará todas las acciones pertinentes a "abrir (o importar) en una lista de diálogo. Puede encender su actividad elegida desde la lista de resultados.

Luego está la guía de productividad de IDEA, por un lado ésta es una referencia rápida de ampliación de características de productividad en la IDE. Haga clic en la característica, y se le mostrará un breve ejemplo de lo que implica esa propiedad. Pero la guía también muestra estadísticas de uso -cuántas veces ha utilizado determinada característica en la IDE. ¿Por qué es bueno esto? Debido a que también muestra características o propiedades similares. Si utiliza mucho cierta característica, puede verificar propiedades similares que quizá desconocía, escudríñelas mediante ejemplos, y determine si estas características relacionadas son mejores que la que viene utilizando.

La edición Community IDEA de IntelliJ es una excelente IDE Java. Si realiza trabajo de script con Groovy, su soporte para Groovy es particularmente bueno. También tiene soporte para Scala. En términos de utilidad, la edición Community está entre NetBeans y Eclipse.

Opte por la edición Ultimate y tendrá una poderosa plataforma de desarrollo que incluye las herramientas de base de datos, el soporte para J2EE y servidores de aplicación, soporte para Hybernate y JPA, editores para JavaScript, HTML, CSS y más.

El verdadero poder de IDEA está en su siempre creciente set de mejoras de la productividad. He visto desarrolladores experimentados en el uso de IDEA que vuelan sobre tareas de programación en una fracción del tiempo en que tomarían habitualmente. Solo podemos esperar que los otros equipos de ingeniería IDE estén estudiando las características de IntelliJ e incorporen sus ideas -o mejor aún, las implementen. En ese sentido, todos los desarrolladores de Java se beneficiarían.

Java IntelliJ IDEA
Elija su banco de trabajo

Por razones de espacio y tiempo, no se ha cubierto mucho en esta revisión. Con la excepción de JDeveloper, las otras IDEs pueden servir como plataformas de desarrollo para varios idiomas. Más cercanas, todas las IDEs apoyan - en un grado u otro - el desarrollo de dispositivos Android y móviles. Si bien Android no soporta las API Java SE o Java EE, el lenguaje de Android es Java. Algunas de las IDEs proporcionan herramientas de perfilado que le permiten regresar los cuellos de botella de rendimiento de la aplicación.

Más allá de estas cuestiones, todas las IDEs en esta revisión se pueden ampliar a través de plug-ins. Nuevos plug-ins significan nuevas capacidades. Como ya se ha indicado, el número de plug-ins disponibles para Eclipse solo requeriría varios cientos de páginas web de material simplemente para describir brevemente.

Sería temerario recomendar una IDE por sobre otra, en parte porque todas tienen capacidades comunes y en parte porque las IDEs despiertan el mismo tipo de fanatismo que encontrará cuando usted discute acerca de los editores. Para cada uno de los entornos de desarrollo de esta revisión, me he encontrado con al menos un ingeniero que me ha dicho que confían en él, y me ha presentado una lista de razones por las que lo hacen... y esas razones son todas buenas.

Sin embargo, las sugerencias generales son posibles. Si es nuevo en Java, entonces comience con NetBeans o IntelliJ IDEA. NetBeans le llevará más lejos si se mueve en el desarrollo J2EE. Para desarrollar aplicaciones J2EE con IDEA requerirá la compra de la edición Ultimate. Sin embargo, puede decidir si esas mejoras en la productividad de esa IDEA valen la pena el costo.

Si tiene que trabajar a través de tecnologías -base de datos, JavaScript, XML, HTML, generación de informes- entonces Eclipse y su suministro interminable de complementos podría ser su mejor apuesta. Tendrá que invertir el tiempo para aprender "la forma de Eclipse", pero la gama de capacidades que puede comandar desde el interior de una sola IDE será formidable. Pero tenga cuidado con el potencial para el caos.

Si eres un desarrollador de J2EE que lucha con las bases de datos diariamente, JDeveloper podría ser la mejor opción para los tiempos difíciles. En un proyecto pasado, utilicé JDeveloper para revertir la ingeniería de una base de datos que consistía en cientos de tablas y un número insondable de relaciones. Las herramientas de base de datos en JDeveloper me permitieron domar lo que hubiera sido un desastre.

Por último, está el hecho liberador de que todas son herramientas libres (sin contar la edición de IDEA Ultimate). Eso significa que el único obstáculo que se interpone entre su proyecto y la IDE es una descarga y una instalación.