Curso
Programación en Java
Tema 1
Características de Java
Genealogía del lenguaje
Sun Microsystems (Naughtom y Gosling), 1991: Proyecto de lenguaje
para dispositivos, Oak.
1995: Primera versión JDK 1.0.
1997: JDK 1.1.
1998: JDK 1.2 (Java 2).
2000 y marzo 2002: JDK 1.3, JDK 1.4. Versiones con biblioteca en
constante crecimiento y depuración de errores de Java 2.
2004: JDK 1.5 (Java 5). Clases genéricas, bucle "for each", args
variables, enumeraciones.
En la actualidad: JDK 1.6.
2
Componentes de J2SE v1.4
3
Características generales (I)
Simplicidad.
Sintaxis parecida a C++, lo que implica una rápida curva de
aprendizaje.
Orientación a objetos.
Lenguaje totalmente orientado a objetos.
Portabilidad.
Necesidad de un lenguaje multiplataforma para las aplicaciones en
Internet a través de clientes web (navegador).
Independiente de la plataforma."Escribir una vez, ejecutar en
cualquier parte".
El código compilado de Java se puede ejecutar sobre cualquier
plataforma que implemente una Máquina Virtual Java (JVM).
4
Características generales (II)
Concurrencia (multihilo, multi-thread).
Permite la ejecución de varios hilos de proceso (thread) que se
comunican entre si para permitir su colaboración.
La concurrencia permite por ejemplo:
Evitar las esperas de la interfaz de usuario.
Recibir información de forma asíncrona (descarga de archivos).
Aplicaciones multisuario.
Aplicaciones multiproceso si el hardware y los sistemas operativos lo
permiten.
Distribuido y dinámico.
Carga dinámica de bibliotecas de clases.
Aplicaciones con objetos distribuidos RMI (Remote Method
Invocation), CORBA, Enterprise JavaBeans (EJB).
5
Características generales (III)
Seguridad
Tres componentes del modelo de seguridad:
Verificador de bytecode.
Cargador de clases.
Security Manager
Seguridad en los applets
Applets firmados.
APIs de criptografía, certificados digitales, sistema de claves,
generador de claves.
6
El modelo de compilación (I)
Otras clases Java
Editor de texto
Cargador de clases
[Link]
Verificador de
java HolaMundo Memoria
bytecode
javac
[Link]
Interprete de
bytecode
[Link]
7
El modelo de compilación (II)
Edición del archivo fuente con un editor de texto.
import [Link].*;
class HolaMundo {
public static void main(String args[]) {
[Link]("¡Hola mundo!");
Date d = new Date();
[Link]("Hoy es " + d);
}
}
8
El modelo de compilación (III)
Compilación
javac [Link]
[Link] genera bytecode independiente de la plataforma y
ejecutable en una JVM.
Se genera un archivo .class por cada clase presente en la unidad de
compilación.
Posibles ajustes necesarios:
Variable de entorno PATH
Variable de entorno CLASSPATH
9
Modelo de compilación (IV)
Ejecución
Ejecución del archivo .class mediante el interprete [Link]
(java HolaMundo).
1. Cargador de clases.
2. Verificador de bytecode.
3. Unidad de ejecución
Interpretación = merma de eficiencia.
Compilador JIT (Just In Time).
Convierte el bytecode a código nativo que ejecuta la JVM.
Compiladores en código nativo.
Perdida de compatibilidad.
10
Modelo de compilación (V)
Entornos de desarrollo Java.
JCreator.
JBuilder.
NetBeans.
BlueJ.
Eclipse.
Algunos errores de compilación frecuentes
javac Bad command or file name.
[Link]: ';' expected
[Link]("¡Hola mundo!")
^
[Link]: cannot resolve symbol
symbol : method printl ([Link])
location: class [Link]
[Link]("¡Hola mundo!");
^
Exception in thread "main" [Link]:
HolaMundo
11
Arquitectura de la Máquina Virtual Java (I)
JVM: capa interpuesta entre el
sistema operativo y las clases
Java.
Interpreta el bytecode a las
órdenes nativas de un entorno
(hardware o software)
determinado.
Dos capas:
Dependiente de la plataforma: adaptador.
Independiente de la plataforma: interfaz de portabilidad.
Sólo es necesario escribir un nuevo adaptador para cada plataforma.
12
Arquitectura de la Máquina Virtual Java (II)
13
Utilidades principales del SDK
javac.
Compilador de Java. Toma una unidad de compilación (.java) y
convierte las clases contenidas en archivos .class.
java.
Interprete Java. Verifica, carga y traduce el bytecode de un archivo
.class.
appletviewer.
Interprete que ejecuta los applets contenidos en un archivo HTML.
javadoc.
Crea documentación en formato HTML a partir del código y los
comentarios de un programa Java.
14