A. Qué
es JAVA?
Java es un lenguaje de programación
con el que podemos realizar cualquier tipo de programa. En la actualidad es
un lenguaje muy extendido y cada vez cobra más importancia tanto en el
ámbito de Internet como en la informática en general. Está
desarrollado por la compañía Sun Microsystems con gran dedicación
y siempre enfocado a cubrir las necesidades tecnológicas más punteras.
Una de las principales características por las que Java se ha hecho muy
famoso es que es un lenguaje independiente de la plataforma. Eso quiere decir
que si hacemos un programa en Java podrá funcionar en cualquier ordenador
del mercado. Es una ventaja significativa para los desarrolladores de software,
pues antes tenían que hacer un programa para cada sistema operativo,
por ejemplo Windows, Linux, Apple, etc. Esto lo consigue porque se ha creado
una Máquina de Java para cada sistema que hace de puente entre el sistema
operativo y el programa de Java y posibilita que este último se entienda
perfectamente.
La independencia de plataforma es una de las razones por las que Java es interesante
para Internet, ya que muchas personas deben tener acceso con ordenadores distintos.
Pero no se queda ahí, Java está desarrollándose incluso
para distintos tipos de dispositivos además del ordenador como móviles,
agendas y en general para cualquier cosa que se le ocurra a la industria.
Pasado y presente
Java fue pensado originalmente para utilizarse en cualquier tipo de electrodoméstico
pero la idea fracasó. Uno de los fundadores de Sun rescató la
idea para utilizarla en el ámbito de Internet y convirtieron a Java en
un lenguaje potente, seguro y universal gracias a que lo puede utilizar todo
el mundo y es gratuito. Una de los primeros triunfos de Java fue que se integró
en el navegador Netscape y permitía ejecutar programas dentro de una
página web, hasta entonces impensable con el HTML.
Actualmente Java se utiliza en un amplio abanico de posibilidades y casi cualquier
cosa que se puede hacer en cualquier lenguaje se puede hacer también
en Java y muchas veces con grandes ventajas. Para lo que nos interesa a nosotros,
con Java podemos programar páginas web dinámicas, con accesos
a bases de datos, utilizando XML, con cualquier tipo de conexión de red
entre cualquier sistema. En general, cualquier aplicación que deseemos
hacer con acceso a través web se puede hacer utilizando Java.
Las principales características del Java son:
Portabilidad. Los programas que creados son portátiles dentro de una red. El programa se compila en un código de bytes Java que puede ejecutarse en cualquier sitio de una red, en un servidor o cliente que tenga una máquina virtual de Java. La máquina virtual de Java interpreta el código de bytes y lo transforma en código que puede correr en el equipo real del ordenador. Esto significa que las diferencias individuales de las plataformas de los ordenadores, como la longitud de las instrucciones, pueden ser reconocidas y adaptadas localmente mientras el programa se esta ejecutando.
Compatibilidad. Ya no se necesitan versiones específicas de nuestros programas para cada plataforma.
Seguridad. El código es "robusto", lo que aquí significa que, a diferencia de los programas escritos en C++ y quizá algunos otros lenguajes, los objetos Java no pueden tener referencias a datos externos a ellos mismos. Esto asegura que una instrucción no pueda tener la dirección de almacenamiento de datos en otra aplicación o en el sistema operativo mismo, casos que provocarían que el programa y quizá el sistema operativo se cerraran o cayeran ("crash"). La máquina virtual de Java realiza una serie de verificaciones de cada objeto para garantizar su integridad.
Objetos. Java está orientado a objetos, lo que significa que, entre otras características, objetos similares pueden aprovechar el hecho de que son parte de la misma clase y heredar código común. Se piensa en los objetos como "sujetos" gramaticales con los que un usuario puede relacionarse más que los tradicionales "verbos" de procedimiento. Se puede pensar en un método como una de las capacidades o comportamientos del objeto.
Velocidad. Además de ser ejecutado en el cliente en vez del servidor, un applet Java tiene otras características diseñadas para que corra rápidamente.
Facilidad. Comparado con el C++, Java es más fácil de aprender. (Sin embargo, no es un lenguaje que podamos dominar en una noche.)
Java fue lanzado por Sun Microsystems en 1995 e instantáneamente creó una nueva percepción de las posibilidades interactivas de la Red. Los dos principales navegadores incluyen una máquina virtual de Java. Casi todos los principales desarrolladores de sistemas operativos (IBM, Microsoft y otros) han añadido compiladores de Java como parte de su oferta de productos.
La máquina virtual de Java incluye un compilador opcional "justo a tiempo" (just-in-time, JIT) que compila dinámicamente el código de bytes en código ejecutable como una alternativa a la interpretación de una instrucción de código de bytes a la vez. En muchos casos la compilación dinámica JIT es más rápida que la interpretación de la máquina virtual.
El script de Java o JavaScript no
debe confundirse con Java. El JavaScript, que se originó en Netscape,
se interpreta a un nivel más alto y es más fácil de aprender
que Java, pero carece de parte de la portabilidad de Java y la velocidad del
código de bytes. Dado que los applets de Java corren en casi cualquier
sistema operativo sin requerir recompilación, y dado que el Java no tiene
extensiones o variaciones específicas de un sistema operativo, generalmente
se lo considera como el lenguaje más estratégico para el desarrollo
de aplicaciones para la Red. (Sin embargo, JavaScript puede ser útil
para aplicaciones muy pequeñas que corran en el cliente o servidor web.)
B. ¿Por
qué se diseñó Java?
Los lenguajes de programación C y Fortran se han utilizado para diseñar
algunos de los sistemas más complejos en lenguajes de programación
estructurada, creciendo hasta formar complicados procedimientos. De ahí
provienen términos como "código de espagueti" o "canguros"
referentes a programas con múltiples saltos y un control de flujo difícilmente
trazable.
No sólo se necesitaba un lenguaje de programación para tratar
esta complejidad, sino un nuevo estilo de programación. Este cambio de
paradigma de la programación estructurada a la programación orientada
a objetos, comenzó hace 30 años con un lenguaje llamado Simula67.
El lenguaje C++ fue un intento de tomar estos principios y emplearlos dentro
de las restricciones de C. Todos los compiladores de C++ eran capaces de compilar
programas de C sin clases, es decir, un lenguaje capaz de interpretar dos estilos
diferentes de programación. Esta compatibilidad ("hacia atrás")
que habitualmente se vende como una característica de C++ es precisamente
su punto más débil. No es necesario utilizar un diseño
orientado a objetos para programar en C++, razón por la que muchas veces
las aplicaciones en este lenguaje no son realmente orientadas al objeto, perdiendo
así los beneficios que este paradigma aporta.
Así Java utiliza convenciones casi idénticas para declaración
de variables, paso de parámetros, y demás, pero sólo considera
las partes de C++ que no estaban ya en C.
Las principales características que Java no hereda de C++ son:
· Punteros: Las direcciones de memoria son la característica más
poderosa de C++. El inadecuado uso de los punteros provoca la mayoría
de los errores de colisión de memoria, errores muy difíciles de
detectar. Además, casi todos los virus que se han escrito aprovechan
la capacidad de un programa para acceder a la memoria volátil (RAM) utilizando
punteros. En Java, no existen punteros, evitando el acceso directo a la memoria
volátil.
· Variables globales: Con ellas cualquier función puede producir
efectos laterales, e incluso se pueden producir fallos catastróficos
cuando algún otro método cambia el estado de la variable global
necesaria para la realización de otros procesos. En Java lo único
global es el nombre de las clases.
· goto: Manera rápida de arreglar un programa sin estructurar
el código. Java no tiene ninguna sentencia goto. Sin embargo Java tiene
las sentencias break y continue que cubren los casos importantes de goto.
· Asignación de memoria: La función malloc de C, asigna
un número especificado de bytes de memoria devolviendo la dirección
de ese bloque. La función free devuelve un bloque asignado al sistema
para que lo utilice. Si se olvida de llamar a free para liberar un bloque de
memoria, se están limitando los recursos del sistema, ralentizando progresivamente
los programas. Si por el contrario se hace un free sobre un puntero ya liberado,
puede ocurrir cualquier cosa. Más tarde C++ añadió new
y delete, que se usan de forma similar, siendo todavía el programador,
el responsable de liberar el espacio de memoria. Java no tiene funciones malloc
ni free. Se utiliza el operador new para asignar un espacio de memoria a un
objeto en el montículo de memoria. Con new no se obtiene una dirección
de memoria sino un descriptor al objeto del montículo. La memoria real
asignada a ese objeto se puede mover a la vez que el programa se ejecuta, pero
sin tener que preocuparse de ello. Cuando no tenga ninguna referencia de ningún
objeto, la memoria ocupada estará disponible para que la reutilice el
resto del sistema sin tener que llamar a free o delete. A esto se le llama recogida
de basura. El recolector de basura se ejecuta siempre que el sistema esté
libre, o cuando una asignación solicitada no encuentre asignación
suficiente.
· Conversión de tipos insegura: Los moldeados de tipo (type casting)
son un mecanismo poderoso de C y C++ que permite cambiar el tipo de un puntero.
Esto requiere extremada precaución puesto que no hay nada previsto para
detectar si la conversión es correcta en tiempo de ejecución.
En Java se puede hacer una comprobación en tiempo de ejecución
de la compatibilidad de tipos y emitir una excepción cuando falla.
C.
Comienzos
Java fue diseñado en 1990 por James Gosling, de Sun Microsystems, como
software para dispositivos electrónicos de consumo. Curiosamente, todo
este lenguaje fue diseñado antes de que diese comienzo la era World Wide
Web, puesto que fue diseñado para dispositivos electrónicos como
calculadoras, microondas y la televisión interactiva.
Logotipo de la empresa Sun Microsystems
En los primeros años de la
década de los noventa, Sun Microsystems decidió intentar introducirse
en el mercado de la electrónica de consumo y desarrollar programas para
pequeños dispositivos electrónicos. Tras unos comienzos dudosos,
Sun decidió crear una filial, denominada FirstPerson Inc., para dar margen
de maniobra al equipo responsable del proyecto.
Inicialmente Java se llamó Oak (roble en inglés), aunque tuvo
que cambiar de denominación, debido a que dicho nombre ya estaba registrado
por otra empresa. Se dice este nombre se le puso debido a la existencia de tal
árbol en los alrededores del lugar de trabajo de los promotores del lenguaje.
Tres de las principales razones que
llevaron a crear Java son:
1. Creciente necesidad de interfaces mucho más cómodas e intuitivas
que los sistemas de ventanas que proliferaban hasta el momento.
2. Fiabilidad del código y facilidad de desarrollo. Gosling observó
que muchas de las características que ofrecían C o C++ aumentaban
de forma alarmante el gran coste de pruebas y depuración. Por ello en
los sus ratos libres creó un lenguaje de programación donde intentaba
solucionar los fallos que encontraba en C++.
3. Enorme diversidad de controladores electrónicos. Los dispositivos
electrónicos se controlan mediante la utilización de microprocesadores
de bajo precio y reducidas prestaciones, que varían cada poco tiempo
y que utilizan diversos conjuntos de instrucciones. Java permite escribir un
código común para todos los dispositivos.
Por todo ello, en lugar de tratar únicamente de optimizar las técnicas
de desarrollo y dar por sentada la utilización de C o C++, el equipo
de Gosling se planteó que tal vez los lenguajes existentes eran demasiado
complicados como para conseguir reducir de forma apreciable la complejidad de
desarrollo asociada a ese campo. Por este motivo, su primera propuesta fue idear
un nuevo lenguaje de programación lo más sencillo posible, con
el objeto de que se pudiese adaptar con facilidad a cualquier entorno de ejecución.
Basándose en el conocimiento y estudio de gran cantidad de lenguajes,
este grupo decidió recoger las características esenciales que
debía tener un lenguaje de programación moderno y potente, pero
eliminando todas aquellas funciones que no eran absolutamente imprescindibles.
D. Primeros
proyectos en que se aplicó Java
El proyecto Green fue el primero en el que se aplicó Java, y consistía
en un sistema de control completo de los aparatos electrónicos y el entorno
de un hogar. Con este fin se construyó un ordenador experimental denominado
*7 (Star Seven). El sistema presentaba una interfaz basada en la representación
de la casa de forma animada y el control se llevaba a cabo mediante una pantalla
sensible al tacto. En el sistema aparecía ya Duke, la actual mascota
de Java.
Icono de Duke, la mascota de Java
Más tarde Java se aplicó
a otro proyecto denominado VOD (Video On Demand) en el que se empleaba como
interfaz para la televisión interactiva que se pensaba iba a ser el principal
campo de aplicación de Java. Ninguno de estos proyectos se convirtió
nunca en un sistema comercial, pero fueron desarrollados enteramente en un Java
primitivo.
Una vez que en Sun se dieron cuenta de que a corto plazo la televisión
interactiva no iba a ser un gran éxito, instaron a FirstPerson a desarrollar
nuevas estrategias que produjeran beneficios. Entre ellas se encontraba la aplicación
de Java a Internet, la cual no se consideró productiva en ese momento.
E.
Resurgimiento de Java
Aunque muchas de las fuentes consultadas señalan que Java no llegó
a caer en un olvido, lo cierto es que tuvo que ser Bill Joy (cofundador de Sun
y uno de los desarrolladores principales del sistema operativo Unix de Berckley)
el que sacó a Java del letargo en que estaba sumido. Joy juzgó
que Internet podría llegar a ser el campo adecuado para disputar a Microsoft
su primacía en el terreno del software, y vio en Oak el instrumento idóneo
para llevar a cabo estos planes.
Para poder presentarlo en sociedad se tuvo que modificar el nombre de este lenguaje
de programación y se tuvo que realizar una serie de modificaciones de
diseño para poderlo adaptar al propósito mencionado. Así
Java fue presentado en sociedad en agosto de 1995.
Algunas de las razones que llevaron a Bill Joy a pensar que Java podría
llegar a ser rentable son:
· Java es un lenguaje orientado a objetos: Esto es lo que facilita abordar
la resolución de cualquier tipo de problema.
· Es un lenguaje sencillo, aunque sin duda potente.
· La ejecución del código Java es segura y fiable: Los
programas no acceden directamente a la memoria del ordenador, siendo imposible
que un programa escrito en Java pueda acceder a los recursos del ordenador sin
que esta operación le sea permitida de forma explícita. De este
modo, los datos del usuario quedan a salvo de la existencia de virus escritos
en Java. La ejecución segura y controlada del código Java es una
característica única, que no puede encontrarse en ninguna otra
tecnología.
· Es totalmente multiplataforma: Es un lenguaje sencillo, por lo que
el entorno necesario para su ejecución es de pequeño tamaño
y puede adaptarse incluso al interior de un navegador.
Las consecuencias de la utilización de Java junto a la expansión
universal de Internet todavía están comenzando a vislumbrarse.
F. Futuro de Java
Existen muchas críticas a Java debido a su lenta velocidad de ejecución,
aproximadamente unas 20 veces más lento que un programa en lenguaje C.
Sun está trabajando intensamente en crear versiones de Java con una velocidad
mayor.
El problema fundamental de Java es que utiliza una representación intermedia
denominada código de byte para solventar los problemas de portabilidad.
Los códigos de byte posteriormente se tendrán que transformar
en código máquina en cada máquina en que son utilizados,
lo que ralentiza considerablemente el proceso de ejecución.
La solución que se deriva de esto parece bastante obvia: fabricar ordenadores
capaces de comprender directamente los códigos de byte. Éstas
serían unas máquinas que utilizaran Java como sistema operativo
y que no requerirían en principio de disco duro porque obtendrían
sus recursos de la red.
A los ordenadores que utilizan Java como sistema operativo se les llama Network
Computer, WebPC o WebTop. La primera gran empresa que ha apostado por este tipo
de máquinas ha sido Oracle, que en enero de 1996 presentó en Japón
su primer NC (Network Computer), basado en un procesador RISC con 8 Megabytes
de RAM. Tras Oracle, han sido compañías del tamaño de Sun,
Apple e IBM las que han anunciado desarrollos similares.
La principal empresa en el mundo del software, Microsoft, que en los comienzos
de Java no estaba a favor de su utilización, ha licenciado Java, lo ha
incluido en Internet Explorer (versión 3.0 y posteriores), y ha lanzado
un entorno de desarrollo para Java, que se denomina Visual J++.
El único problema aparente es la seguridad para que Java se pueda utilizar
para transacciones críticas. Sun va a apostar por firmas digitales, que
serán clave en el desarrollo no sólo de Java, sino de Internet.
G. Cómo
habilitar Java
No parece fácil que el agarrón de Sun y Microsoft se resuelva,
pero una solución es bajar de Internet la Java VM de Sun y olvidarse
del asunto legal.
Vaya a la dirección java.sun.com/getjava. A la derecha puede escoger
la instalación en español. Dé clic en el botón Descárguelo
Ya; después de unos segundos verá un cuadro que le pide autorizar
el envío del archivo por parte de Sun (dé clic en Yes para aceptar).
Si en vez de ese cuadro aparece el logo de Java (una tasa de café), usted
ya tiene instalado ese componente.
Cuando el archivo termine de bajar (es de 8 MB), se iniciará automáticamente
la instalación. Suministre la información que se le pide en los
cuadros que se abren para completar el proceso (si tiene alguna duda, los pasos
se explican en detalle en la dirección java.sun.com/getjava/es/install-windows.html).
Cuando la instalación esté lista, se agregará al Panel
de Control de Windows el ícono Java Plug-in. Si tiene algún problema,
revise la página de solución de problemas en la dirección
java.sun.com/getjava/es/troubleshooting.html. Encuentra varios ejemplos de programas
creados con Java en la dirección java.sun.com/getjava/showcase.html.
NOTA: si está tratando de instalar Java desde su empresa, y esta tiene
un servidor proxy, posiblemente no pueda realizar la instalación automática.
En ese caso, vaya a la página de instalación manual en la dirección
java.sun.com/getjava/manual.html. El proceso es similar, pero debe dar doble
clic en el archivo que baje para iniciar la instalación.