Académique Documents
Professionnel Documents
Culture Documents
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:
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.
IN
ES
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.
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:
IN
ES
EM
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:
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):
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
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
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
EM
Variables
Funciones
IN
ES
ELEMENTO
Objetos
etc.
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
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
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.
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
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
INESEM
IN
ES
EM
INESEM