Son muchos los debates que se han suscitado sobre el lenguaje Java desde su creación. Por un lado se encuentran aquellos que defienden a capa y espada la compatibilidad entre plataformas a costa de lo que sea, mientras que por otro lado se encuentran los que defienden la necesidad de optimizar de algún modo el lenguaje. Esto último suele ir acompañado de la apertura de alguna puerta en la máquina virtual, lo que provoca la irritación en los puristas. Lo cierto es que, entre debate y debate, el lenguaje va evolucionando y actualmente podríamos decir que sigue dos caminos distintos. Por un lado se encuentra la evolución purista, abanderada por Sun y defensora máxima de los principios en los que se asienta Java. Paralelamente se encuentra la evolución libre, en este caso defendida por Microsoft. El gigante americano no se conforma con que Java sea un lenguaje con una serie de particularidades, sino que busca la mayor complicidad posible con el sistema operativo.

Esta postura es beneficiosa para los desarrolladores que únicamente trabajen bajo Windows, ya que lo más interesante es el rendimiento y la potencia de las aplicaciones, y no tanto la multiplataforma. Sin embargo, esto rompe con uno de los principios básicos sobre los que se asienta Java. En este punto podríamos reflexionar y pensar que, si Java se modifica para integrarse mucho mejor con el sistema operativo, sacar el máximo partido de la plataforma y poder acceder a bajo nivel, ¿para qué necesitamos inventar de nuevo C++?. Es decir, si Java rompe con sus principios básicos, al final se llegará a inventar de nuevo la rueda y tendremos un lenguaje cuasi equivalente a C++. Ahora bien, hay matices que hacen a C++ y Java algo diferentes, como por ejemplo, la gestión automática de la memoria que posee Java. Pero, ¿estos matices son lo suficientemente sólidos como para optar por el Java desvirtuado en lugar de por C++?. La respuesta a esta pregunta dependerá de cada programador, pero parece lógico pensar que el gran atractivo de Java se encuentra en sus principios básicos, y no tanto en el maquillaje que posee.

Lo cierto es que Microsoft con Visual J++ 6.0 introduce muchas novedades al lenguaje. Tan innovadoras que, si se opta por las nuevas características del compilador, se desvirtúa en gran medida el espíritu inicial de Java. Sin embargo, no sólo se limita el lenguaje a las extensiones de Microsoft, sino que en cualquier momento el usuario puede optar por desactivar todas esas extensiones y trabajar con Java puro. Precisamente este matiz es el que hace de Visual J++ 6.0 el compilador Java más completo, pues no impone trabajar con las extensiones de Microsoft, sino que únicamente da la posibilidad de utilizarlas a aquellos usuarios que lo estimen adecuado.

Son muchas las novedades del producto. Para comenzar, el número de versión es una de las primeras ya que se ha pasado de la versión 1.1 a la 6.0. Sin embargo, esto no es ni mucho menos significativo. Las novedades del producto las podríamos ubicar en dos escenarios diferentes. En primer lugar se encuentra el nuevo IDE, con una amplia gama de nuevas herramientas y características que veremos detenidamente. En segundo lugar, y quizás más importante, se encuentran las extensiones que se han realizado al lenguaje, dando la posibilidad de acceder al API Win32 mediante una nueva librería de clases.

Antes de continuar hay que resaltar que esta versión de Visual J++ es una versión previa, y en concreto, es la mísma que se entregó el mes pasado en el CD-ROM de PC World Especial Java. La versión definitiva no estará disponible hasta bien pasado el verano, cuando se lance la suite completa de programación Visual Studio 98. Dentro de Visual Studio se incluirán, tanto Visual J++ 6.0, como las nuevas versiones de Visual C++, Visual Basic, Visual FoxPro y Visual Interdev entre otras herramientas.

El nuevo IDE

Una de las novedades más importantes de Visual J++ 6.0 la encontramos en el IDE. Éste se ha remodelado para tomar un aspecto equivalente al de Visual Basic, alcanzando el carácter definitivo de herramienta RAD y, por ende, de herramienta visual. Pero no sólo se queda en el IDE que actualmente posee Visual Basic, sino que va un poco más lejos y será el mismo IDE que el de Visual Basic 6.0. Esto quiere decir que, además de todas las características y herramientas del actual IDE de Visual Basic, se incluirán nuevas y atractivas opciones. Por ejemplo, si se pone un comentario del tipo /** encima de un método, inmediatamente será reconocido por el entorno y, cuando en el panel de clases seleccionemos ese método, en la parte inferior de éste panel aparecerá el comentario que hayamos puesto, todo esto sin necesidad de hacer un doble clic en el método para abrir el código fuente. Además, como complemento, una vez que introducimos la secuencia de caracteres /** el IDE la reconoce como comentario y automáticamente la complementa. Incluso si pulsamos intro, el mismo editor irá insertando asteriscos y tabuladores para que todo quede perfectamente maquetado.

Otra de las nuevas características es el listado de tareas pendientes. Por defecto, en la parte inferior de la pantalla aparece una ventana acoplable (se puede situar donde deseemos), en la que se muestra un listado de las tareas pendientes. Además de algunas tareas que inicialmente crea el propio entorno, éste irá identificando aquellas que nosotros añadamos. Pero la característica de esta herramienta es que el IDE reconoce tareas pendientes mediante la introducción de la siguiente secuencia de caracteres en cualquier parte del listado: /* TODO:. Así, si introducimos /* TODO: Hacer algo, en la ventana de tareas pendientes aparecerá la entrada Hacer Algo. Esto quiere decir que en cualquier parte del listado podemos introducir comentarios /* TODO: para ir marcando cosas pendientes. Después, con un simple doble clic en la lista de tareas pendientes el IDE nos llevará exactamente hasta ese punto.

Como ya hemos comentado, Visual J++ 6.0 es un RAD. Por tanto, toda la programación gira en torno a los formularios, de igual forma que sucede en cualquier otra herramienta RAD. Sin embargo, esto no impide que en cualquier momento podamos desarrollar una aplicación de consola o cualquier otro tipo de aplicación. Por supuesto, la edición es bidireccional, es decir, lo que se teclee manualmente en el editor de código se reflejará automáticamente en el formulario, y viceversa.

La tecnología IntelliSense se ha añadido a esta versión de Visual J++, por lo que la escritura de código es mucho más sencilla. Para aquellos a los que les suene extraña esta tecnología diremos que es la encargada de ir mostrando, a la vez que se escribe, la sintaxis de las sentencias. Por ejemplo, si comenzamos escribiendo form1 y a continuación introducimos un punto para acceder a las propiedades o métodos del formulario, automáticamente aparecerá una lista debajo del cursor con todas las propiedades y métodos asociados al objeto en cuestión. Así, simplemente bajando con las teclas del cursor por la lista, podremos seleccionar lo que deseemos, sin temor de cometer errores sintácticos y, lo que es más importante, sin necesidad de tener que aprender exactamente la sintaxis de los muchos objetos que componen el lenguaje. Si se elige un método y se abre el paréntesis para introducir los parámetros, automáticamente aparecerá por debajo del cursor una ventana que nos recordará exactamente cuáles y