Sei sulla pagina 1di 35

Introduccin a Java

Humberto Cervantes Maceda Alfonso Martnez Martnez


1

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

Java: caractersticas del lenguaje


Simple Orientado a objetos Portable Robusto Seguro Facilita programacin distribuida Soporte para desarrollo de programas multi-hilo Cargado dinmico

Lenguaje simple
Similar a C/C++
No hay separacin entre .h y .cpp

Sin apuntadores
Paso de parmetros por referencia

Manejo de memoria automtico


Colector de basura

Lenguaje orientado a objetos


Provee elementos necesarios para hacer POO
Clase, interfase, herencia

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.

Se almacena en archivos .class

El bytecode es usado por una mquina virtual

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

Chequeo en tiempo de compilacin y de ejecucin


ClassCastException

Mecanismo de excepciones para manejo de errores


try { ... } catch(Exception ex) { ... } finally { ... }

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

Soporte para desarrollo de programas multi-hilo


Facilita programacin concurrente

Cargado dinmico
Toda clase se carga dinmicamente conforme se usa Permite cargar cdigo a distancia
Clave para las applets

12

Evolucin del lenguaje Java


Varias versiones han aparecido
1.0 - 1996 1.1 - 1997 1.2 - 1998 1.3 - 2000 1.4 - 2002 1.5 (5.0) - 2004

JDK y JRE
Java Development Kit
Herramientas de desarrollo

Java Runtime Environment


13

Plataforma de ejecucin (+API) Micro Edition, Standard Edition, Enterprise Edition

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

Mquina Virtual Java


Mquina virtual
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

Local o Red

Cargador de clases bytecode Motor de ejecucin invocaciones nativas Sistema operativo husped

.class

Archivos .class
Programa API

16

Mquina Virtual Java (2)


Seguridad
Verificacin del bytecode antes de ejecutarlo
Compatibilidad de versiones

Restringe acceso a cdigo no confiable


Por ejemplo applets

Ejecucin
Interpretacin Compilacin Justo a Tiempo (JIT), ms eficiente
HotSpot de Sun

17

Application Programming Interface


Conjunto de clases que dan acceso al entorno de ejecucin que abstrae el sistema operativo
Alrededor de 3300 Clases

Agrupadas en distintos packages de acuerdo con su utilidad


166 Packages en J2SE 1.5 java packages estndar javax extensiones org.omg CORBA org.xml XML

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

Packages principales del API


java.xxx
java.applet: Applets java.awt: Abstract Windowing Toolkit java.beans: JavaBeans java.io: Input / Output java.lang: Tipos de datos, Excepciones, Reflexion java.math: Matemticas java.net: Red (ej URL) java.nio: Buffers (?) java.rmi: Remote Method Invocation java.security: Seguridad java.sql java.text java.util: Clases utilitarias (Colecciones, Jars, etc...) java.accessibility: Acceso a usuarios discapacitados

19

Packages de extension del API


javax.xxx
javax.crypto: Criptografa javax.imageio: Entrada y salida de imgenes javax.naming: Servicios de nombrado (directorio) javax.net: Sockets javax.print: Impresin javax.rmi javax.security javax.sound javax.swing javax.transaction javax.xml
20

Javadoc del API

Packages

21

Javadoc del API

Clases

22

Javadoc del API

23

Detalle de clase

Herramientas del JDK


El Java Development Kit provee un conjunto de herramientas necesarias para el desarrollo en Java
javac: compilacin java: ejecucin de un programa javadoc: documentacin jar: empaquetamiento Otras herramientas del JDK
24

Reglas de escritura de una clase


Se puede usar un editor cualquiera El nombre de la clase siempre lleva mayscula
Ej: Coche

Los mtodos comienzan con minscula


Ej: enciende, abreCajuela

Una clase siempre se pone dentro de un espacio de nombres (package)


Ej: mx.uam.cursojava.practica1 El package se representa con una jerarqua de directorios
25

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

Se recomienda tener las fuentes dentro de un directorio especfico


Ej: src

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

Desde el directorio raz


esto crea el directorio docs/javadoc

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

- .class - recursos - manifest.mf

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

Ejecucin desde JARs


Los JAR se ponen en el classpath
java -classpath dist/vehiculos.jar mx.uam.vehiculos.Principal
desde el directorio raiz

34

Sntesis
El SDK de Java provee comandos para
Compilar (javac) Documentar (javadoc) Empaquetar (jar) Ejecutar (java)

Sin embargo desarrollar nicamente usando estos comandos tiene inconvenientes


Complicado
Muchas opciones

Difcil de repetir
Se puede hacer un script, pero no es flexible

No es portable
35

Potrebbero piacerti anche