Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
El lenguaje de programacin.
La plataforma.
El equipo pens al principio usar C++, pero se descart por varias razones. Al
estar desarrollando un sistema empotrado con recursos limitados, C++ no es adecuado
por necesitar mayor potencia adems de que su complejidad conduce a errores de
desarrollo. La ausencia de un recolector de basura (garbage collector) obligaba a los
programadores a manejar manualmente el sistema de memoria, una tarea peligrosa y
proclive a fallos. El equipo tamb in se encontr con problemas por la falta de
herramientas portables en cuanto a seguridad, programacin distribuida, y programacin
concurrente. Finalmente abogaban por una plataforma que fuese fcilmente portable a
todo tipo de dispositivo.
Bill Joy haba concebido un nuevo lenguaje que combinase lo mejor de Mesa y
C. En un escrito titulado Further (ms lejos), propona a Sun que sus ingenieros crearan
un entorno orientado a objetos basado en C++. Al principio Gosling intent modificar y
ampliar C++, a lo que llam C++ ++ --, pero pronto descart la idea para crear un
lenguaje completamente nuevo, al que llam Oak, en referencia al roble que tena junto
a su oficina.
Java est diseado para que un programa escrito en este lenguaje sea ejecutado
independientemente de la plataforma (hardware, software y sistema operativo) en la que
se est actuando. Esta portabilidad se consigue haciendo de Java un lenguaje medio
interpretado medio compilado. Cmo se come esto? Pues se coge el cdigo fuente, se
compila a un lenguaje intermedio cercano al lenguaje mquina pero independiente del
ordenador y el sistema operativo en que se ejecuta (llamado en el mundo Java
bytecodes).
Para ello, se compila el cdigo fuente escrito en lenguaje Java, para generar un
cdigo conocido como bytecode (especficamente Java bytecode) instrucciones
mquinas simplificadas especficas de la plataforma Java. Esta pieza est a medio
camino entre el cdigo fuente y el cdigo mquina que entiende el dispositivo destino.
El bytecode es ejecutado entonces en la mquina virtual (VM), un programa escrito en
cdigo nativo de la plataforma destino (que es el que entiende su hardware), que
interpreta y ejecuta el cdigo. Adems, se suministran libreras adicionales para acceder
a las caractersticas de cada dispositivo (como los grficos, ejecucin mediante hebras o
threads, la interfaz de red) de forma unificada. Se debe tener presente que, aunque hay
una etapa explcita de compilacin, el bytecode generado es interpretado o convertido a
instrucciones mquina del cdigo nativo por el compilador JIT (Just In Time).
La licencia sobre Java de Sun insiste que todas las implementaciones sean
compatibles. Esto dio lugar a una disputa legal entre Microsoft y Sun, cuando ste
ltimo aleg que la implementacin de Microsoft no daba soporte a las interfaces RMI
y JNI adems de haber aadido caractersticas dependientes de su plataforma. Sun
demand a Microsoft y gan por daos y perjuicios (unos 20 millones de dlares) as
como una orden judicial forzando la aceptacin de la licencia de Sun. Como respuesta,
Microsoft no ofrece Java con su versin de sistema operativo, y en recientes versiones
de Windows, su navegador Internet Explorer no admite la ejecucin de applets sin un
conector (o plugin) aparte. Sin embargo, Sun y otras fuentes ofrecen versiones gratuitas
para distintas versiones de Windows.
Carga y almacenamiento
Aritmticas
Conversin de tipos
Creacin de objetos y su manipulacin
Gestin de la pila (push / pop, meter / sacar)
Saltos
Llamada a mtodos y salida de estos
Generacin de excepciones
El objetivo es la compatibilidad. Cada sistema operativo y arquitectura en que
tenga que ejecutarse una aplicacin Java debe tener su propia implementacin de la
JVM. Estas mquinas virtuales interpretan el bytecode de igual forma desde el punto de
vista semntico, pero cada implementacin puede ser distinta. Ms complicado que la
emulacin del bytecode es la implementacin completa y eficiente de la API de Java, en
cada plataforma destino.