Vous êtes sur la page 1sur 9

Unidad Didctica 1.

Introduccin

1. Introduccin
Sun Microsystems es la empresa que ha inventado el lenguaje Java, en un intento de resolver
simultneamente todos los problemas que se planteaban a los desarrolladores de software por la
proliferacin de arquitecturas incompatibles en los siguientes aspectos:

Diferentes mquinas desde el punto de vista del hardware.


Diferentes sistemas operativos.
Diferentes sistemas de ventanas que funcionan sobre una misma mquina.

Estos problemas se han agravado an ms con la expansin de Internet en la cual debe comunicarse
plataformas heterogneas, y dnde las aplicaciones distribuidas son el corazn del sistema.

2.1. Introduccin

EM

El xito de Java reside en su arquitectura y las caractersticas que esta arquitectura le confiere.

En la arquitectura de Java es dnde se encuentra la solucin al problema planteado en la

IN
ES

introduccin. El siguiente dibujo intenta resumir dicha arquitectura:

Los programas se compilan a un fichero (*.class) intermedio, en un lenguaje creado por Sun
(bytecodes). Este fichero luego es interpretado por una mquina virtual java (JVM). Por tanto, java es
compilable-interpretable.

2.2. La mquina virtual Java (JVM)


La Especificacin de la Mquina Virtual Java la define como:
Una mquina imaginaria implementada mediante la emulacin por software en una mquina real. El
INESEM

Unidad Didctica 1. Introduccin

cdigo para la mquina virtual Java se almacena en archivos .class, cada uno de los cuales contiene,
al menos, el cdigo para una clase pblica.
La especificacin de la mquina virtual java proporciona las especificaciones de hardware para las
que se compila toda la tecnologa java. Esta especificacin permite al software en java ser
independiente de la plataforma ya que la compilacin se hace para una mquina genrica conocida
como la mquina virtual java (JVM). Esta puede ser emulada por software para poder ser ejecutada
en los diferentes sistemas informticos existentes, o bien ser implementada en hardware.
A partir del cdigo fuente el compilador genera bytecodes. Estos bytecodes son instrucciones de

EM

cdigo mquina para la JVM. Cada intrprete de java tiene una implementacin de la JVM.
La especificacin de la JVM proporciona definiciones muy concretas para la implementacin de:

Conjunto de instrucciones (equivalente al de la CPU).


Registros del sistema.
Formato de los archivos de clase.
Pila.
Garbage-collected heap.
rea de memoria.

IN
ES

2.3. El Garbage collector

Gran parte de los lenguajes de programacin permiten la reserva de memoria en tiempo de


ejecucin. El proceso de reserva de memoria vara segn la sintaxis del lenguaje, pero siempre
involucra el retorno de un puntero al inicio del bloque de memoria reservado.
Una vez la memoria reservada deja de necesitarse (el puntero que la referencia esta "out of scope"),
el programa o el entorno de ejecucin debera liberar esa memoria.
En C, C++, y otros lenguajes, el programador es responsable de la gestin de la liberacin de
memoria. Esta es una tarea complicada a veces porque no siempre se sabe a priori cuando se puede
liberar la memoria. Los programas que no liberan la memoria utilizada pueden generar errores de
ejecucin cuando ya no queda memoria disponible en el sistema. Se dice que estos programas tienen
fugas de memoria ("memory-links").
Java libera al programador de la responsabilidad de liberar la memoria. El lenguaje java proporciona
una hebra de ejecucin, o proceso en paralelo, a nivel de sistema que rastrea las operaciones de
reserva de memoria. Durante los ciclos muertos de la JVM, la hebra de "garbage collector" verifica
qu memoria puede liberarse y realiza dicha operacin.
INESEM

Unidad Didctica 1. Introduccin

El proceso de "Garbage collector" se realiza automticamente durante el ciclo de vida de un


programa java, eliminando la necesidad de liberar memoria y evitando las prdidas de memoria. Sin
embargo, la implementacin del gestor de "garbage collection" puede variar sustancialmente en las
diferentes implementaciones de la JVM.

2.4. Seguridad del cdigo


Ya hemos visto que el cdigo fuente de Java se compila en el sentido de que se convierten a un
conjunto de bytecodes.

EM

En el momento de la ejecucin, los diferentes archivos bytecodes que componen el programa a


ejecutar se cargan, se verifican y se ejecutan en el intrprete. La funcin del intrprete es doble:

Por un lado ejecuta los bytecodes y por otro gestiona las llamadas al hardware del sistema.
El entorno de ejecucin que ejecuta el cdigo compilado para una JVM realiza tres tareas principales:
Carga el cdigo: Lo realiza el cargador de clases.
Verificacin del cdigo: Lo realiza el verificador de bytecode.
Ejecucin del cdigo: Lo realiza el intrprete de bytecode.

IN
ES

El cargador de clases:

Su funcin es cargar todas las clases necesarias para la ejecucin de un programa.


Adems, mantiene separadas aquellas clases cargadas a partir del sistema de archivos local y
aquellas otras cargadas a travs de los recursos de la red. Esto permite limitar la accin de posibles
aplicaciones dainas, ya que las clases locales son las primeras en ser cargadas.
Una vez que todas las clases han sido cargadas, se determina el mapa de memoria de la aplicacin.
En este momento se asigna direcciones de memoria reales a las referencias simblicas del cdigo y
se rellena la tabla de asignacin de memoria. Debido a que el proceso de asignacin de memoria se
realiza en el momento de la ejecucin, el intrprete de java aade proteccin contra acceso no
autorizado a las reas de cdigo.
Verificador de bytecode:
El cdigo de java se verifica mediante diferentes test antes de ejecutarse en la mquina. La JVM
verifica el formato de los diferentes fragmentos de bytecode en busca de cdigo ilegal - cdigo que
utilice punteros, que viola los permisos de acceso de los objetos o intenta cambiar los tipos de los
objetos. Todas las clases importadas por la red pasan obligatoriamente por el verificador de
bytecode.
INESEM

Unidad Didctica 1. Introduccin

En el proceso de verificacin se resuelve si el cdigo cumple las especificaciones de la JVM y no


viola la integridad del sistema. Si la verificacin se completa con xito, se puede asegurar lo
siguiente:

Las clases cumplen con el formato de archivo de clase de la especificacin JVM.


No hay violaciones de acceso restringido.
El cdigo no provoca desbordamientos de la pila.
Los tipos de parmetros para todo el cdigo es correcto y no se modificar durante la ejecucin.
No existen conversiones ilegales de datos, por ejemplo, convertir enteros a referencias a objetos.
Los accesos a los campos de los objetos estn autorizados.

Introduccin:

EM

3. Caractersticas de Java

La arquitectura presentada en el punto anterior proporciona unas caractersticas a Java que ningn
otro lenguaje de programacin tiene:
Robusto:

IN
ES

Java realiza verificaciones en busca de problemas tanto en tiempo de compilacin como en tiempo de
ejecucin. En tiempo de compilacin no tiene ningn misterio porque todos los lenguajes realizan
esas verificaciones, sin embargo, en tiempo de ejecucin, la JVM, que realiza la interpretacin de los
bytecodes, detecta cuando existe algn problema en la ejecucin del programa, y lanza excepciones
que pueden ser recogidas por el programador con el propsito de recuperarse de dichos errores.
Arquitectura neutral (multiplataforma):

Gracias a que la compilacin se realiza a un cdigo objeto independiente de la arquitectura de la


mquina (bytecodes), tan slo necesitamos utilizar el intrprete adecuado para que nuestro
programa funcione sobre cualquier plataforma. El lema de Sun es "escribir una vez, ejecutar en
cualquier parte".
Seguro:
Como toda la ejecucin la realiza la JVM, los programas Java pueden ser sometidos a muchas
comprobaciones antes de ejecutarse en la mquina. En concreto:

El cdigo se pasa a travs de un verificador de ByteCodes que comprueba el formato de los fragmentos
de cdigo y detecta fragmentos de cdigo ilegal (cdigo que falsea punteros, viola derechos de acceso
sobre objetos, etc.).
El cargador de clases separa el espacio de nombres del sistema de ficheros local del de los recursos
procedentes de la red. Esto limita cualquier aplicacin del tipo Caballo de Troya, ya que las clases se

INESEM

Unidad Didctica 1. Introduccin

buscan primero entre las locales y luego entre las procedentes del exterior.
Respecto a la seguridad del cdigo fuente, el propio JDK proporciona un desensamblador de ByteCodes,
que hace que cualquier programa pueda ser convertido a cdigo fuente a partir de sus bytecodes.
Utilizando javap no se obtiene el cdigo fuente original, aunque si desmonta el programa mostrando su
estructura. Este problema de seguridad del cdigo fuente es algo todava pendiente de subsanar.

Portable:
Ms all de la portabilidad bsica por ser de arquitectura independiente, Java implementa otros
estndares de portabilidad para facilitar el desarrollo.
Los enteros son de 32 bits en complemento a 2.

EM

Java construye sus interfaces de usuario a travs de un sistema abstracto de ventanas de forma que
stas puedan ser implantadas en entornos UNIX, Mac o Pc.
Desarrollo con Java:

Para poder desarrollar software con Java necesitamos una serie de herramientas que nos

IN
ES

proporciona Sun a travs de su JDK (Java Development Kit).

Al igual que el lenguaje natural que utilizamos para comunicarnos, ya sea de forma oral o por
escrito, cualquier lenguaje de programacin dispone de unos elementos y reglas que deben
conocerse a la hora de programar.

Los elementos del lenguaje natural nos permiten designar cosas (nombres), expresar cualidades de
esas cosas (adjetivos), expresar acciones (verbos), etc.

Las reglas sintcticas (estructura) y semnticas (significado) permiten el entendimiento entre las
partes que forman la comunicacin.

En los lenguajes de programacin tambin encontramos unas reglas sintcticas que debemos
respetar a la hora de confeccionar los programas y una semntica encargada de resolver el
problema que queremos programar.
Elementos y reglas sintcticas de los lenguajes de programacin:
Aunque todos los conceptos que aprenderemos a continuacin aparecen en todos los lenguajes de
programacin existen diferencias en la implementacin en cada uno de ellos lo que obliga a un
estudio individual en cada uno de ellos.

INESEM

Unidad Didctica 1. Introduccin

Comentarios en los programas:


Un aspecto importante a la hora de confeccionar un programa es comentar lo ms detalladamente
posible lo que significa cada una de las rdenes que forman parte del programa, con el propsito de
poder recordar en un futuro la funcin que realiza cada una de ellas, y facilitar su estudio a personas
ajenas al programa.
Identificadores:
En todo lenguaje de programacin surge la necesidad de utilizar una serie de elementos que

EM

debemos designar con algn nombre, por ejemplo:


DESCRIPCIN

Variables

- Elementos utilizados para referenciar posiciones de memoria dnde podremos


almacenar datos necesarios para el programa.

Funciones

- Elementos utilizados para referenciar posiciones de memoria dnde reside el


cdigo del programa.

IN
ES

ELEMENTO

Objetos

- Elementos que encapsulan variables (propiedades) y funciones (mtodos) de


manera que resulta ms sencillo modelar los problemas que queremos resolver
simplificando el diseo de programas complejos.

etc.

- Conforme avancemos iremos conociendo ms elementos de los lenguajes de


programacin.

A la hora de asignar nombre a todos estos elementos hay que seguir unas reglas.
Tipos de datos bsicos:

El modelo mental ms sencillo que se puede tener de una aplicacin informtica es el de una caja
negra que recibe unos datos de entrada, los procesa y entrega unos datos de salida representados de
alguna manera.
Estos datos de entrada, los cules deben ser albergados en memoria y referenciados mediante
alguna variable, pueden ser de diferente naturaleza (numricos, alfanumricos, etc.).
Cada lenguaje de programacin dispone de unos tipos de datos bsicos a los cules nos tenemos que
amoldar a la hora de realizar el anlisis de los datos que necesitamos en nuestra aplicacin.
Variables:
INESEM

Unidad Didctica 1. Introduccin

Este elemento juega un papel muy importante en el programa porque es el mecanismo que pone a
nuestra disposicin el lenguaje de programacin para gestionar de una manera sencilla los datos de
la aplicacin.
Al declarar una variable en el programa estamos reservando una zona de memoria para
posteriormente albergar un dato. Existen lenguajes que necesitan que especifiquemos el tipo de dato
que se va a albergar (java) y otros que no lo necesitan (javascript).
Al asignar un valor a la variable lo que estamos haciendo es almacenar el dato en la posicin de

EM

memoria que se reserv para dicha variable.


En todo momento tenemos que tener presente que al usar la variable realmente estamos usando el
dato al que representa.
Operadores:

Una de las primeras aplicaciones de los ordenadores fue el clculo de matemtico y, aunque ahora

IN
ES

ha pasado a un segundo plano, los lenguajes de programacin ofrecen una serie de elementos que
permiten realizar operaciones con los datos.

Estas operaciones no slo se limitan a operaciones aritmticas. Disponemos tambin de operaciones


lgicas, comparaciones, etc.
Sentencias de control:

Sin embargo, la caracterstica que confiere al ordenador su potencia es la capacidad de


procesamiento de la que dispone.

Aunque esto nos pueda asustar, el tipo de procesamiento que puede realizar es muy bsico,
limitndose a:
Tomar decisiones sobre la ejecucin o no de determinadas tareas en base al cumplimiento o no de
una o varias condiciones (sentencias de decisin). En dichas condiciones siempre estarn implicados
datos (o si se quiere, sus representantes las variables).
Alterar el flujo de ejecucin normal del cdigo del programa (sentencias de salto o bucles). Tambin
estas alteraciones estarn controladas por variables.

INESEM

Unidad Didctica 1. Introduccin

La combinacin adecuada de este tipo de sentencias es la que definir la estructura que resuelve un
determinado problema.
Almacenamiento de datos mediante Arrays:
Hemos visto el uso de variables como mecanismo bsico para almacenar y acceder a datos en
memoria. Sin embargo, en la mayora de aplicaciones este tipo de almacenamiento de informacin se
queda corto por ser demasiado simple y necesitamos a sistemas de almacenamiento ms complejos
pero tambin ms potentes.

Excepciones:

EM

Uno de estos sistemas, que aparece en todos los lenguajes de programacin, es el de los Arrays.

Todos los lenguajes de programacin avisan de los errores que cometamos en tiempo de
compilacin, pero pocos son los que han sido diseados para seguir avisando de posibles errores en
tiempo de ejecucin. Las aplicaciones Java, gracias a que se ejecutan bajo la supervisin de la

IN
ES

mquina virtual (JVM), estn siendo controladas constantemente. En caso de que ocurra algn error
de ejecucin, se lanza una excepcin que puede ser recogida y tratada por el programador en su
aplicacin. De esta manera, lo que antes sola terminar en una ejecucin anormal del programa, con
java puede ser resuelto.
Objetos:

Java es un lenguaje de programacin orientado a objetos. La importancia de este tema es tal que le
dedicamos el siguiente captulo entero.

Recuerda

Sun Microsystems es la empresa que ha inventado el lenguaje Java.


En Java los programas se compilan a un fichero (*.class) intermedio, en un lenguaje creado por Sun
(bytecodes). Este fichero luego es interpretado por una mquina virtual java (JVM).
Java es compilable-interpretable.
La Especificacin de la Mquina Virtual Java la define como: ua mquina imaginaria implementada
mediante la emulacin por software en una mquina real.
Java libera al programador de la responsabilidad de liberar la memoria. El lenguaje java
proporciona una hebra de ejecucin, o proceso en paralelo, a nivel de sistema que rastrea las
operaciones de reserva de memoria.
Durante los ciclos muertos de la JVM, la hebra de "garbage collection" verifica qu memoria puede
liberarse y realiza dicha operacin.
Cargador de clases: Su funcin es cargar todas las clases necesarias para la ejecucin de un
programa, Adems, mantiene separadas aquellas clases cargadas a partir del sistema de archivos local

INESEM

Unidad Didctica 1. Introduccin

IN
ES

EM

y aquellas otras cargadas a travs de los recursos de la red.


Java realiza verificaciones en busca de problemas tanto en tiempo de compilacin como en tiempo de
ejecucin.
Gracias a que la compilacin, se realiza a un cdigo objeto independiente de la arquitectura de la
mquina (bytecodes), tan slo necesitamos utilizar el intrprete adecuado para que nuestro programa
funcione sobre cualquier plataforma.
Como toda la ejecucin la realiza la JVM, los programas Java pueden ser sometidos a muchas
comprobaciones antes de ejecutarse en la mquina.
Para poder desarrollar software con Java necesitamos una serie de herramientas que nos
proporciona Sun a travs de su JDK (Java Development Kit).

INESEM

Vous aimerez peut-être aussi