|
|||||||
|
|
|
|||||
|
|
|||||||
Historia
Hace algunos años, 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.
El mercado inicialmente previsto para los programas de FirstPerson eran los equipos domésticos: microondas, tostadoras y, fundamentalmente, televisión interactiva. Este mercado, dada la falta de pericia de los usuarios para el manejo de estos dispositivos, requería unos interfaces mucho más cómodos e intuitivos que los sistemas de ventanas que proliferaban en el momento.
Otros requisitos importantes a tener en cuenta eran la fiabilidad del código y la facilidad de desarrollo. James Gosling, el miembro del equipo con más experiencia en lenguajes de programación, decidió que las ventajas aportadas por la eficiencia de C++ no compensaban el gran coste de pruebas y depuración. Gosling había estado trabajando en su tiempo libre en un lenguaje de programación que él había llamado Oak, el cual, aún partiendo de la sintaxis de C++, intentaba remediar las deficiencias que iba observando.
Los lenguajes al uso, como C o C++, deben ser compilados para un chip, y si se cambia el chip, todo el software debe compilarse de nuevo. Esto encarece mucho los desarrollos y el problema es especialmente acusado en el campo de la electrónica de consumo. La aparición de un chip más barato y, generalmente, más eficiente, conduce inmediatamente a los fabricantes a incluirlo en las nuevas series de sus cadenas de producción, por pequeña que sea la diferencia en precio ya que, multiplicada por la tirada masiva de los aparatos, supone un ahorro considerable. Por tanto, Gosling decidió mejorar las características de Oak y utilizarlo.
El primer proyecto en que se aplicó
este lenguaje recibió el nombre de proyecto Green y consistía
en un sistema de control completo de los aparatos electrónicos y
el entorno de un hogar. Para ello 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
Duke, la actual mascota de Java.
Posteriormente se aplicó a otro
proyecto denominado VOD (Video On Demand) en el que se empleaba como interfaz
para la televisión interactiva. Ninguno de estos proyectos se convirtió
nunca en un sistema comercial, pero fueron desarrollados enteramente en
un Java primitivo y fueron como su bautismo de fuego.
Una vez que en Sun se dieron cuenta de que a corto plazo la televisión interactiva no iba a ser un gran éxito, urgieron a FirstPerson a desarrollar con rapidez nuevas estrategias que produjeran beneficios. No lo consiguieron y FirstPerson cerró en la primavera de 1994.
Pese a lo que parecía ya un olvido
definitivo, Bill Joy, cofundador de Sun y uno de los desarrolladores principales
del Unix de Berkeley, juzgó que Internet podría llegar a
ser el campo de juego adecuado para disputar a Microsoft su primacía
casi absoluta en el terreno del software, y vio en Oak el instrumento idóneo
para llevar a cabo estos planes. Tras un cambio de nombre y modificaciones
de diseño, el lenguaje Java fue presentado en sociedad en agosto
de 1995.
Características
Ventajas
Desventajas
Máquina Virtual de Java
El concepto de máquina virtual es antiguo. Fue usado por IBM en 1959 para describir uno de los primeros sistemas operativos que existieron en la historia de la computación, el VM. En 1970, el ambiente de programación de SmallTalk llevó la idea a un nuevo nivel y construyó una máquina virtual para soportar abstracciones orientadas a objetos de alto nivel, sobre las máquinas subyacentes.
Las máquinas virtuales tienen varias ventajas importantes. La primera es que presentan un medio excelente para alcanzar la portabilidad. Otra de las ventajas importantes, es que introduce otro nivel de abstracción y de protección, entre la computadora y el software que ejecuta sobre ella. Esto cobra particular importancia en un ambiente donde el código que ejecutamos proviene de algún lugar del mundo y es escrito por alguna "buena" persona.
La Máquina Virtual Java es el núcleo
del lenguaje de programación Java. De hecho, es imposible ejecutar
un programa Java sin ejecutar alguna implantación de la MVJ; su
misión principal es la de garantizar la portabilidad de las aplicaciones
Java. Las tareas principales de la JVM son las siguientes:
Siempre que se corre un programa Java,
las instrucciones que lo componen no son ejecutadas directamente por el
hardware sobre el que subyace, sino que son pasadas a un elemento de software
intermedio, que es el encargado de que las instrucciones sean ejecutadas
por el hardware. Es decir, el código Java no se ejecuta directamente
sobre un procesador físico, sino sobre un procesador virtual Java,
precisamente el software intermedio del que habíamos hablado anteriormente.
La representación de los códigos
de instrucción Java (bytecode) es simbólica, en el sentido
de que los desplazamientos e índices dentro de los métodos
no son constantes, sino que son cadenas de caracteres o nombres simbólicos.
Estos nombres son resueltos la primera vez que se ejecuta el método,
es decir, el nombre simbólico se busca dentro del archivo de clase
(.class) y se determina el valor numérico del desplazamiento. Este
valor es guardado para aumentar la velocidad de futuros accesos. Gracias
a esto, es posible introducir un nuevo método o sobreescribir uno
existente en tiempo de ejecución, sin afectar o romper la estructura
del código.
Referencias:
http://java.sun.com/features/1998/05/birthday.html
http://java.sun.com/people/jag/green/index.html
http://www.sun.com/sunworldonline/swol-07-1995/swol-07-java.html
http://www.wired.com/wired/archive/3.12/java.saga.html
http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/introduccion/virtual.htm
http://www.diarioti.com/noticias/1999/feb99/15191721.htm
http://www.soslinux.com/foros/internet/messages/303.html