Un primer vistazo al IDE de JBuilder de Borland

En junio de 1995, cuando escuché por primera vez que Borland iba a crear una herramienta Java, me sentí bastante satisfecho. Borland fue la única empresa que hizo mella en la franquicia de Visual Basic que había creado Microsoft. Además, muchos (incluido yo mismo) consideran que el entorno de desarrollo Delphi de Borland es la mejor herramienta de desarrollo rápido de aplicaciones (RAD) del mercado. Así que fue con gran entusiasmo que compré Borland C ++ 5.0 con soporte para Java a fines del '95.

Desafortunadamente, el esfuerzo de Borland dejó mucho que desear. Uno de los mayores inconvenientes del producto era que el soporte de Java era un módulo adicional para C ++, en lugar de ser una herramienta por derecho propio. El problema con este enfoque es que Java no se parecía mucho a C ++ en términos de sus unidades de compilación, archivos de objetos y objetivos de compilación. En Java, compila un archivo de clase en un objeto que puede instanciar inmediatamente con otros objetos que ya están en el sistema. No hay destinos ".exe" y ".dll", que son el modelo utilizado por el IDE de C ++ genérico. Por lo tanto, construir clases era engorroso, la documentación era casi inexistente y la experiencia era totalmente insatisfactoria. Sin embargo, el compilador de C ++ funcionó muy bien.

Inmediatamente después del producto complementario C ++, se corrió la voz rápidamente sobre "Latte", el nombre en clave de un entorno IDE en el que iban a trabajar los ingenieros del grupo Delphi y que estaba escrito completamente en Java. El ambicioso proyecto se vio afectado por retrasos; hizo una demostración en la primera Conferencia de Desarrolladores JavaOne en San Francisco en 1996 y luego nuevamente en JavaOne '97. Finalmente, ha sido lanzado como JBuilder.

Un recorrido rápido por JBuilder

JBuilder comparte muchos temas comunes con el mundo de Delphi y se siente lo suficientemente similar a las herramientas de Symantec Visual Cafe. Así que fue fácil para mí ponerme en marcha con JBuilder, incluso sin leer la documentación proporcionada. (Cuando me hizo una pregunta, la documentación era bastante completo en cuanto a la descripción de las opciones disponibles).

El entorno consta de una "barra de control", que es una ventana de barra de herramientas flotante, una "ventana de exploración" con un control de árbol en capas a la izquierda y una ventana de visualización a la derecha. Solo hay una barra de control, pero se pueden abrir varias ventanas del navegador.

La barra de control, que se muestra a continuación, consta de los comandos de menú estándar en la parte superior, una paleta de herramientas a la izquierda que proporcionan accesos directos a los elementos del menú y una colección de componentes (JavaBeans) que están disponibles para usar en su aplicación visual o applet. Debajo de la paleta de herramientas y los componentes hay una línea de estado que se actualiza con cualquier actividad que se esté llevando a cabo en ese momento.

La ventana del navegador se muestra a continuación. Esta ventana es donde interactúa con su código fuente, ya sea HTML o Java. Encima de esto está la barra de control, que le permite iniciar acciones (como una reconstrucción) y contiene sus colecciones de JavaBeans para usar en sus propias aplicaciones. Además, cada ventana del navegador puede mostrar un proyecto en curso, por lo que si está trabajando en varios proyectos, como un nuevo JavaBean y una aplicación que lo usa, puede tener ambos proyectos abiertos a la vez y moverse fácilmente entre ellos. . Esta capacidad me impresionó ya que admite la forma más común de desarrollo de Java, cambiando varias piezas diferentes a la vez. En una ventana del navegador puede haber un proyecto de clases de utilidad, en otro navegador el applet que usa esas clases y en una tercera un conjunto de páginas HTML que usan el applet.

La ventana del navegador está dividida verticalmente, con la vista de árbol de archivos a la izquierda y el visor a la derecha. La división vertical se llama "cortina". La interfaz de usuario de Borland le permite quitar la cortina cuando desee una vista de pantalla completa del código fuente en el que está trabajando. Debajo de cada mitad de la ventana del navegador hay pestañas de control que cambian la semántica de la vista en sí.

Al ver el código fuente de Java, las pestañas en la mitad del visor del navegador están etiquetadas como fuente, diseño y documento.

  • La pestaña fuente simplemente le muestra el código fuente, y puede editarlo usando el editor de resaltado de sintaxis incluido.

  • La pestaña de diseño muestra un espacio de trabajo visual donde existe cualquier información de interfaz de usuario que haya definido. Entonces, por ejemplo, si su código fuente tenía definiciones de panel, botones, etc., este panel es el área de arrastrar y soltar donde puede componer esa información.

  • La pestaña doc le muestra el documento HTML que se genera a partir de los comentarios anidados en el código fuente. El documento HTML se puede extraer usando JavaDoc, sin embargo, no hay una forma automatizada que pueda encontrar para generar este documento.

Quizás uno de los aspectos más inteligentes de la implementación del navegador es que cuando examina un archivo de clase, el navegador lee el archivo de clase y lo descompila lo suficiente para mostrarle la estructura del código fuente. Esto puede ser muy útil si está acostumbrado a leer la fuente, en lugar de mirar un diagrama de objetos. Además, cuando seleccione cualquiera de las clases estándar de Java o las clases personalizadas de Borland, al hacer clic en la pestaña doc se devolverá la página JavaDoc para esa clase. Esto le permite hacer cosas como: resaltar una clase del sistema, seleccionar "buscar símbolo seleccionado" y ver tanto la fuente reconstruida como la documentación de la clase. Prefiero este método, que conserva el formato HTML incrustado en los datos de JavaDoc, a los sistemas que convierten la documentación de Java en archivos de "ayuda" de Microsoft.

El depurador de JBuilder

Por supuesto, escribir código es fácil. Hacer que funcione es difícil. Quizás la característica más importante de cualquier IDE es su depurador. Afortunadamente, el depurador de Borland JBuilder no defrauda. A continuación se muestra una captura de pantalla del depurador.

Al depurar, la ventana del navegador se reconfigura para admitir la visualización del estado de su clase. La vista del archivo con estructura de árbol se divide en una ventana superior que contiene el estado del hilo y una ventana inferior que contiene información sobre las variables activas. Además, la mitad izquierda del navegador obtiene algunos controles de pestañas adicionales en la parte inferior que controlan el funcionamiento del depurador.

Además, las ventanas emergentes mostrarán el valor de una variable en la ventana de origen de la misma manera que funciona el depurador de Symantec. Todas las características de depuración estándar están presentes: paso único, puntos de observación, puntos de interrupción, puntos de interrupción condicionales, etc. Es de destacar el soporte de hilos, que es sobresaliente. En la ventana del hilo en la esquina superior izquierda, puede hacer clic en la línea que se está ejecutando actualmente de cualquier fragmento de código en cualquier hilo, y la ventana de origen aparecerá en ese lugar en el código. Además, la ventana inferior izquierda mostrará cualquier estado local y global que sea visible para ese hilo. El depurador de JBuilder definitivamente representa el nuevo estándar con el que se medirán otros depuradores de Java.

A lo largo del lado izquierdo de la ventana de origen, pequeños puntos indican líneas donde se pueden instalar puntos de interrupción. Al hacer clic en el punto, se resalta la línea y aparece el símbolo del punto de interrupción. Otra característica útil es "ejecutar hasta el cursor", para aquellos momentos en los que no desea realizar un solo paso en cada iteración de un forbucle. Simplemente haga clic en la línea, seleccione "ejecutar hasta el cursor" y la ejecución se detiene allí mismo.

Manejo de salida

Un área final en la que encontré que JBuilder era particularmente útil fue su manejo de la salida de la ejecución de una aplicación Java. El registro de ejecución es una ventana que contiene todos los datos enviados System.outdesde la ejecución actual. Sin embargo, cuando hay varios proyectos abiertos, el registro de ejecución mantiene pestañas separadas para cada proyecto. A continuación se muestra un ejemplo de esto.

Como puede ver en la imagen, hay dos pestañas, una para "ejemplo" y otra para "BÁSICO", el proyecto actual. Esta separación es esencial cuando se construyen varias bibliotecas de clases al mismo tiempo porque evita que se mezclen los resultados de los dos proyectos.

Lo que me gusta de JBuilder

A veces son las pequeñas cosas. Me gusta mucho que se pueda imprimir el código fuente de Java en una impresora a color y que salga con sus fuentes y resaltado de sintaxis intactos. Si pudiera personalizar los encabezados y pies de página y especificar una salida "doble" (dos páginas de código fuente impresas una al lado de la otra en una página de salida horizontal), sería perfecto.

El soporte para Java 1.1 es muy bueno. Si bien JDK 1.1 ha estado disponible por un tiempo, y Symantec ha tenido soporte beta para 1.1, no hay nada como tener un IDE diseñado desde cero para funcionar con 1.1.

Como dije anteriormente, el depurador también es muy bueno: brinda una gran cantidad de información de una manera fácil de comprender. Gran parte de la depuración es de estilo "apuntar y disparar", que a algunos usuarios les gusta (a mí me gusta) y a otros no (creyendo que "gdb" significa DeBugger de Dios). Creo que es suficiente para encontrar incluso los errores de interbloqueo de subprocesos más difíciles.

Lo que no me gusta de JBuilder

El IDE configurable de JBuilder en realidad no se puede configurar de dos maneras cruciales:

  • Primero, no puede establecer los colores predeterminados de fondo y primer plano en la pantalla. En su lugar, primero debe configurarlos para todo su escritorio y luego JBuilder notará los cambios. Sin embargo, puede configurarlos utilizando algunos de sus esquemas de color "enlatados".

  • El segundo defecto grave es que no puede personalizar las pulsaciones de teclas del editor. Mis dos editores favoritos en este sentido son EMACS y Programmer's File Editor (PFE). La pestaña de personalización del editor de JBuilder consiste en poder seleccionar algunas asignaciones de teclas preempaquetadas (se incluyen por defecto, Breve, Clásico y Epsilon) y poder seleccionar cómo funcionan cosas como sangrado automático, resaltado y envoltura. Todavía estoy buscando el editor que te permita definir paquetes de macros en Java.

En el área de presentación, JBuilder sufre de algunos errores simples que espero serán corregidos en la primera versión del parche. Por ejemplo, si su escritorio tiene "Fuentes grandes" seleccionadas (lo que Microsoft insiste en que significa tomar Arial 10 y "multiplicarlo" por algún factor), el cálculo de cuánto espacio necesitan las barras de herramientas se rompe y los iconos de las bibliotecas de componentes se cortan apagado. Si, por otro lado, establece la apariencia de la fuente explícitamente en la sección "Aspecto" de las propiedades de su escritorio, como Arial de 14 puntos, entonces la barra de componentes se representa correctamente. Claramente, es una bogosidad de Microsoft (donde una fuente de 10 puntos no siempre se representa como una fuente de 10 puntos), pero la gente de Borland necesita lidiar con eso.

Otra área que no me gusta de todos los IDE para Java es la dependencia de su propia máquina virtual Java "personalizada" para el desarrollo. Espero que en el futuro, los IDE se puedan utilizar con el Java Runtime Environment (JRE) estándar y algunas bibliotecas personalizadas. Nadie lo ha hecho bien todavía.

Lo que desearía que tuviera

Por supuesto, ningún producto es perfecto para todos, por lo que lo que me gustaría ver puede ser considerado ruido para otras personas. Pero, en el espíritu de hablar, estas son las tres cosas principales que me gustaría ver en JBuilder (o cualquier IDE sólido para el caso):

  • Control de configuración IDE más fino: asignaciones de teclas, colores de pantalla y diseño

  • Soporte de creación de perfiles en el depurador: seguimiento / temporización de llamadas, uso del montón, mapas de basura, etc.

  • Control de código fuente: esta es un área donde Java es débil (control de versiones), y un sistema de control inteligente que notó cuándo cambió el contrato (cambios de clase incompatibles) y qué cambió cuándo, sería un verdadero placer

Terminando

La herramienta JBuilder es una entrada muy capaz en el mercado IDE cada vez más concurrido. Ofrece una capacidad extraordinaria en algunos lugares, como JavaBeans, depuración, múltiples proyectos y diseño de interfaz de usuario. Esta versión de JBuilder tiene algunas asperezas en cuanto a la presentación y la configurabilidad del IDE, sin embargo, esto es de esperar en una versión 1.0. Su soporte de Java 1.1 también es superior. Mi opinión es que, por primera vez, los chicos y chicas de Symantec tienen una competencia seria con su producto Visual Cafe Pro.

Chuck McManis es actualmente el director de software de sistemas en FreeGate Corp., una empresa de nueva creación financiada por empresas que está explorando oportunidades en el mercado de Internet. Antes de unirse a FreeGate, Chuck era miembro del Grupo Java. Se unió al Grupo Java justo después de la formación de FirstPerson Inc. y fue miembro del grupo de sistemas operativos portátiles (el grupo responsable de la parte del sistema operativo de Java). Más tarde, cuando se disolvió FirstPerson, permaneció con el grupo durante el desarrollo de las versiones alfa y beta de la plataforma Java. Creó la primera página de inicio "todo Java" en Internet cuando hizo la programación para la versión Java de la página de inicio de Sun en mayo de 1995. También desarrolló una biblioteca criptográfica para Java y versiones del cargador de clases Java que podían filtrar clases. basado en firmas digitales. Antes de unirse a FirstPerson,Chuck trabajó en el área de sistemas operativos de SunSoft, desarrollando aplicaciones de redes, donde realizó el diseño inicial de NIS +. Echa un vistazo a su página de inicio.