Академический Документы
Профессиональный Документы
Культура Документы
Marzo 2005
Indice
Historia Lenguaje Java Plataforma
Mquina Virtual API Herramientas de desarrollo
Historia
Al principio
En 1991, Java empez como un proyecto fallido llamado Oak dirigido a crear software imbricado (dentro de dispositivos). Buscaba ser un remplazo para C++
Qu es Java ?
Un lenguaje orientado a objetos Una plataforma
Mquina Virtual Java Application Programming Interface (API)
Java, el lenguaje
Lenguaje simple
Similar a C/C++
No hay separacin entre .h y .cpp
Sin apuntadores
Paso de parmetros por referencia
Todo es un objeto
Clase Object a la raz de toda la jerarqua de herencia A excepcin de tipos primitivos
int, float, boolean, char, byte existen clases que los representan, por ej. Integer
Mecanismos de introspeccin
Clase Class
Todo objeto implementa getClass();
7
Lenguaje portable
Cdigo Java se compila hacia un lenguaje intermediario llamado bytecode
Especie de ensamblador con caractersticas OO
Conjunto de instrucciones pequeo y cercano al lenguaje.
Ejemplo de bytecode
Java
class Employee extends java.lang.Object { public Employee(java.lang.String,int) { name = strName; idNumber = num; storeData(strName, num); } }
Bytecode
Method Employee(java.lang.String,int) 0 aload_0 1 invokespecial #3 <Method java.lang.Object()> 4 aload_0 5 aload_1 6 putfield #5 <Field java.lang.String name> 9 aload_0 10 iload_2 11 putfield #4 <Field int idNumber> 14 aload_0 15 aload_1 16 iload_2 17 invokespecial #6 <Method void storeData(java.lang.String, int)> 20 return 9
Lenguaje robusto
Strong-typing
Nombres de variable llevan tipo asociado Conversiones entre tipos explicitas
Va cast
10
Lenguaje seguro
No se pueden accesos ilegales de memoria Sandbox
Ejecucin de cdigo en entorno restringido (sandbox)
Firmas digitales
Soporte de firmas digitales del cdigo
11
Otras caractersticas
Facilita programacin distribuida
Soporte de alto nivel para comunicacin en red
Cargado dinmico
Toda clase se carga dinmicamente conforme se usa Permite cargar cdigo a distancia
Clave para las applets
12
JDK y JRE
Java Development Kit
Herramientas de desarrollo
Java, la plataforma
14
Java: la plataforma
Compuesta por tres entidades
Mquina virtual
Un simulador de computadora que se ejecuta en otra computadora pero que se comporta como si fuera una mquina distinta.
API
Un conjunto de funciones de software que proveen acceso a las capacidades de un sistema.
Herramientas de desarrollo
15
Local o Red
Cargador de clases bytecode Motor de ejecucin invocaciones nativas Sistema operativo husped
.class
Archivos .class
Programa API
16
Ejecucin
Interpretacin Compilacin Justo a Tiempo (JIT), ms eficiente
HotSpot de Sun
17
Al programar en Java siempre hay que tener un navegador abierto en la pgina del API
18
http://java.sun.com/j2se/1.5.0/docs/api/index.html
19
Packages
21
Clases
22
23
Detalle de clase
Javac: compilacin
Se utiliza el comando javac (Java Compiler)
Archivo.java Archivo.class
Sintaxis
javac -cp classpath -d dirsalida dir/de/package/*.java Se recomienda usar un directorio distinto para las salidas
Ej: build
El classpath referencia cdigo usado durante compilacin (imports que no son del API)
26
Javac: compilacin
Ejemplo
javac -cp . -d build src/mx/uam/cursojava/practica1/*.java
Si la entrada es
src
mx/uam/cursojava/practica1/EjemploA.java mx/uam/cursojava/practica1/EjemploB.java
La salida queda as
build
mx/uam/cursojava/practica1/EjemploA.class mx/uam/cursojava/practica1/EjemploB.class
27
Java: ejecucin
Se utiliza el comando java
java -classpath build/ mx.uam.vehiculos.Principal desde el directorio raiz
Salida: Coche creado! Camion creado! Encendiendo:coche Motor Turbo activado! Apagando:coche Motor Turbo desactivado! Checando llenado... Encendiendo:camion Motor Alto Rendimiento activado! Apagando:camion Motor Alto Rendimiento desactivado!
28
Javadoc: documentacin
Java permite crear documentacin en formato HTML a partir de comentarios en el cdigo fuente.
package mx.uam.vehiculos; /** * Clase Vehiculo. * * @author Humberto Cervantes * @version 1.0 */ abstract public class Vehiculo { protected String tipo; private Motor m; /** * Este es el constructor de la clase Vehiculo * @param m Un objeto motor * @return nada */ public Vehiculo(Motor m) { this.m=m; }
29
Javadoc: documentacin
Se utiliza el comando javadoc (Java Documentation)
javadoc -d docs/javadoc/ -sourcepath src/ mx.uam.vehiculos
Proyecto
src build docs
javadoc
mx/uam/vehiculos resources index.html
30
Javadoc: documentacin
31
Empaquetamiento
Permite empaquetar un conjunto de archivos en un solo archivo JAR (Java Archive)
Facilita envo (compresin) Seguridad (se puede firmar el archivo) Sellado Versionamiento
.java
javac
.class
jar
.jar
32
Empaquetamiento (2)
Se utiliza el comando jar jar cvf dist/vehiculos.jar -C build/ mx/uam/vehiculos/ Desde el directorio raiz
Hay que crear el directorio dist antes
Proyecto
src build docs dist
vehiculos.jar
33
34
Sntesis
El SDK de Java provee comandos para
Compilar (javac) Documentar (javadoc) Empaquetar (jar) Ejecutar (java)
Difcil de repetir
Se puede hacer un script, pero no es flexible
No es portable
35