Está en la página 1de 18

Introduccin al lenguaje Java

Programacin Orientada a Objetos


Facultad de Informtica

Juan Pavn Mestras


Dep. Sistemas Informticos y Programacin
Universidad Complutense Madrid

Qu es Java?

brewed coffee
la bebida preferida de los programadores
(al menos en USA)

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

Historia de Java

Abril 1991: Proyecto Green (Sun) software para dispositivos


electrnicos inteligentes y televisin interactiva. Se trataba de
desarrollar un entorno de operacin fiable, portable y eficiente.

El resultado: Lenguaje Oak (James Gosling)

Principio 1994: El equipo se reduce ante el escaso crecimiento


del mercado PDA y STB, y tras perder acuerdos con TimeWarner y 3DO, se reorienta hacia WWW:

Los requisitos del software son los mismos en WWW

1994: WebRunner (luego HotJava): navegador Web escrito en


Java

23 mayo 1995 (SunWorld 95): Anuncio de la release alpha de


Java

Java se distribuye gratuitamente

Finales 1995: Primera integracin Netscape+Java

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

Qu es Java?

Un lenguaje de programacin orientado a objetos


desarrollado por Sun Microsystems

Encapsulacin, herencia y polimorfismo


Fuertemente tipado
Gestin automtica de la memoria (recogida de basura)
Soporte para concurrencia (multihilo)
Gestin de excepciones
Constructores independientes de la arquitectura del
procesador

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

Qu es Java?

acompaado por un conjunto de bibliotecas


(packages, conjuntos de clases)

Desarrollo de interfaces grficas de usuario (AWT, Swing)


Conectividad (sockets, RMI, IDL, JDBC)
Utilidades (Vector, Stack, Hashtable, Date, etc.)
Funciones matemticas
Grficos 2D y 3D
Interaccin y multimedia (Media, JMF, Speech, Animation,
Collaboration, Telephony)
Etctera, etctera, ...

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

Qu es Java?

Apropiado para Internet

Ejecutable en mltiples plataformas


Fcil de distribuir
Seguridad
Soporte para interaccin con el usuario:
Grficos
Tipos de datos arbitrarios
Descarga el servidor

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

Qu es Java?

Segn Sun:

Sencillo, Orientado a objetos, y Familiar


Robusto y Seguro
Independiente de la arquitectura y portable
Alto rendimiento
Interpretado, Concurrente, y Dinmico

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

Arquitectura de Mquina Virtual Java


Cdigo fuente Java
Cargador
de clases

Verificador
De ByteCode

Internet

Compilador
Java
Intrprete

Java ByteCode
(cdigo mquina de
la MVJ)
Juan Pavn Mestras
Facultad de Informtica UCM, 2004

Java2c

Run time
Environ
ment

Java

Just-intime
Compiler

Hardware

Linux
Solaris
Windows
MacOS 8

Java e Internet

Un nuevo paradigma de software

Software bajo demanda:


El software se carga de la red
cuando es necesario
lo que es estrictamente necesario
sin necesidad de instalacin

Se puede controlar el uso del software

No hacen falta actualizaciones software individuales


Las versiones nuevas reemplazan a las anteriores de forma
invisible

No hay problemas de configuracin especficos del HW


Codifica una vez, ejecuta en varias plataformas

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

La mquina virtual de Java (MVJ)

Java se ejecuta en un computador simulado

Otras arquitecturas de MV:

Portabilidad
Proteccin
Para portar todo el cdigo Java, portar la MVJ
UCSD P-system, Apple Newton, Smalltalk, Emacs, ...

La mquina virtual Java es sofisticada:

Multihilo (Threads)
Recogida de basura

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

10

La mquina virtual de Java (MVJ)

Entorno de compilacin y ejecucin tradicional


Programa
Programa
fuente
fuente

Biblioteca
Biblioteca

Compilador

Compilador

.obj

.lib

Enlazador

Ejecutable
Juan Pavn Mestras
Facultad de Informtica UCM, 2004

Java

11

La mquina virtual de Java (MVJ)

Intrpretes

Inicio

Leer instruccin

Analizar instruccin

Ejecutar instruccin

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

12

La mquina virtual de Java (MVJ)

El intrprete de bytecodes de Java


Clases
Clasesjava
java
(.java)
(.java)

Mquina virtual Java


Inicio

javac
Leer
instruccin

Cargador
de clases

bytecodes
(.class)

Analizar
instruccin
Ejecutar
instruccin

Biblioteca
Clases Java

(.zip)

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

13

Java

La mquina virtual de Java (MVJ)

Compilador Just-In-Time (JIT)


Clases
Clasesjava
java
(.java)
(.java)
javac

bytecodes
(.class)

JIT

Cdigo
Mquina
Nativo

Biblioteca
Clases Java

(.zip)

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

14

La mquina virtual de Java (MVJ)

Arquitectura Java sobre un SO

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

15

Sistema de ejecucin de Java

Facilidades bsicas

Class Object
Class Thread, Interface Runable
Class Throwable, Class Exception

Abstract Window Toolkit

Class Component
Class Graphics
Class Applet

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

16

Sistema de ejecucin de Java

E/S y comunicaciones

Otras utilidades

Class InputStream y OutputStream


Encadenamiento y herencia de flujos (Stream)
Class URL
Class Socket
Class String
Colecciones: Vector, Stack, HashTable

Recogida de basura
Comprobacin de rangos

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

17

Java Development Kit (JDK)

Bibliotecas de clases Java


Herramientas bsicas

javac -- compilador Java -> bytecodes


java -- intrprete Java
jdb -- depurador
javah -- crea ficheros de cabecera y stubs para conectividad
con C
javap -- desensamblador bytecodes -> Java
javadoc -- genera documentacin de API en formato HTML a
partir de cdigo fuente Java
appletviewer -- permite ejecutar applets sin un navegador

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

18

JDK

Herramientas RMI

Herramientas de internacionalizacin

native2ascii -- convierte ficheros no-Unicode Latin-1 a ste

Herramienta JAR

rmic -- genera clases stub y skeleton para objetos Java que


implementan la interfaz java.rmi.Remote
rmiregistry -- arranca un objeto registrador en un puerto
dado
serialver -- devuelve el serialVersionUID para una o ms
clases

jar -- combina varios ficheros en un fichero Java Archive


(JAR)

Herramienta de firma digital

javakey -- genera firmas digitales

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

19

Java

Versiones de Sun JDK/J2SE

23 de mayo de 1995: James Gosling presenta Java


Java Development Kit (JDK) 1.0.2 [Mayo 1996]

JDK 1.1.x [1997/98]

Core API: java.applet, java.awt, java.io, java.lang, java.net, java.util


Herramientas: javac, java, appletviewer, jdb
Applets ejecutables en Netscape 3.0
Aade: internacionalizacin, seguridad, JavaBeans, JAR, RMI,
serializacin de objetos, JDBC, JNI, y mejoras a las bibliotecas
anteriores
Herramientas: javac, java, appletviewer, jdb
Applets ejecutables en HotJava 1.x y Netscape 4.0

Java 2 SDK, Standard Edition (J2SE) 1.2


2000], 1.4 [Marzo 2002]

[Dic. 1998],

1.3

[Mayo

Swing, 3D, ...


Incorpora todas las facilidades para la programacin con
componentes

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

20

Versiones de Sun JDK

J2SE 5.0 (Tiger) [30 sep. 2004]

http://java.sun.com/developer/technicalArticles/releases/j2se15/

Aadidos al lenguaje: metadatos, tipos enumerados, tipos


genricos, argumentos variables, utilidades de concurrencia
Ms control y gestin de la MVJ (tambin gestin remota)
Mayor eficiencia y estabilidad
Menor tiempo de arranque

Un nuevo look & feel del GUI de Java

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

21

Entornos de desarrollo integrados (IDE)

En casi todos los sistemas operativos: Unix (Solaris,


Linux), Windows, Mac

Comerciales
Sun Java Workshop, Visual Caf (Symantec), JBuilder (Borland),
Metrowerks CodeWarrior, etc.

Libre distribucin
GNU Java, Kawa

Y mi recomendacin:

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

www.eclipse.org

Java

22

Tecnologas Java

El 15 de junio 1999 Sun anuncia 3 ediciones de


la plataforma Java:

J2SE: Edicin estndar


Para desarrollar aplicaciones y applets

J2ME: Java Micro Edition


Aplicaciones para dispositivos mviles
Midlets

J2EE: Java Enterprise Edition


Aplicaciones para la web
Componentes para servidores de aplicaciones
Servlets, JSPs, EJBs, ...

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

23

Java

Ingeniera de componentes

J2EE: Java Enterprise Edition

Cliente
Cliente

Servidores web con tecnologa de componentes soportada


por el lenguaje Java

Servidor Web

Servidor de Aplicaciones EJB

Contenedor de EJBs
Navegador

Servlet

Tarjeta de
crdito

Aplicaciones
de la empresa

Programas CICS

Carrito
Inventorio
Bases de Datos
Aplicacin
Servidor de EJBs
Juan Pavn Mestras
Facultad de Informtica UCM, 2004

Mdulos SAP
Java

24

Dispositivos mviles

J2ME: Java 2 Micro Edition

Orientada a pequeos dispositivos y sistemas embebidos


(telfonos mviles, PDAs, Set-Top Boxes, ...)

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

25

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

26

Cmo realizar un programa Java

1) Editar el fuente
2) Compilar
3) Ejecutarlo

Usando el intrprete
de cdigo de bytes

Invocndolo dentro
de una pgina HTML

Aplicacin

Applet

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

27

Java

Cmo realizar una aplicacin Java

editor

> edita HolaMundo.java

Clases
Clasesjava
java
(.java)
(.java)
javac

bytecodes
(.class)

> javac HolaMundo.java

java

> java HolaMundo


Hola Mundo.
Invoca el mtodo main() de la clase HolaMundo

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

28

Cmo realizar un aplicacin Java

public class HolaMundo {


public static void main(String[] args) {
System.out.println(Hola Mundo);
}
}

>>edita
editaHolaMundo.java
HolaMundo.java
>>javac
javacHolaMundo.java
HolaMundo.java
>>java
javaHolaMundo
HolaMundo
Hola
Mundo.
Hola Mundo.

Invoca
Invocaelelmtodo
mtodomain()
main()de
delalaclase
claseHolaMundo
HolaMundo
Juan Pavn Mestras
Facultad de Informtica UCM, 2004

Java

29

Java

30

Ms fcil con Eclipse

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Cmo realizar un applet Java

> edita HolaMundoApplet.java

editor

Define el mtodo paint()


Clases
Clasesjava
java
(.java)
(.java)

> edita hola.html

editor

Invoca el applet
javac

Fichero
Fichero
HTML
HTML

> javac HolaMundoApplet.java

bytecodes
(.class)

Navegador o
appletviewer

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

31

Cmo realizar un applet Java

Hola.html
<HTML>
<HTML>
<HEAD>
<HEAD>
<TITLE>
<TITLE>Hola
HolaMundo</TITLE>
Mundo</TITLE>
</HEAD>
</HEAD>
<BODY>
<BODY>
Saluda
Saludaamigablemente:
amigablemente:
<APPLET
<APPLET
CODE=HolaMundoApplet.class
CODE=HolaMundoApplet.class
WIDTH=150
WIDTH=150HEIGHT=125>
HEIGHT=125>
</BODY>
</BODY>
</HTML>
</HTML>

HolaMundoApplet.java
import
importjava.applet.Applet;
java.applet.Applet;
import
java.awt.Graphics;
import java.awt.Graphics;
public
publicclass
classHolaMundoApplet
HolaMundoAppletextends
extendsApplet
Applet
{{
public
publicvoid
voidinit()
init(){{
resize
resize(150,25);
(150,25);
}}
public
publicvoid
voidpaint
paint(Graphics
(Graphicsg)g){{
g.drawString
g.drawString(Hola
(HolaMundo,
Mundo,50,25);
50,25);
}}
}}

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

32

Cmo se ejecuta un applet Java

Intrprete HTML
1

html
clases

gifs
Intrprete Java

Servidor Web

Visor grficos (gif, jpeg)

Navegador (cliente)
Juan Pavn Mestras
Facultad de Informtica UCM, 2004

Java

33

Java y C++

Java se parece a C++

Sin algunas cosas


Punteros, direcciones, estructuras (struct y union),
preprocesado, herencia mltiple, sobrecarga de operadores,
tipos enumerados (enum), tipos sin signo (unsigned), goto,
variables y funciones globales

Ms seguro
Recogida de basura, interfaces, paquetes, arrays con lmites,
soporte para concurrencia y sincronizacin

Aspectos recientes de C++

Excepciones uniformes
Informacin de tipos en tiempo de ejecucin
Tipo boolean
Casting seguro

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

34

Java y C++

El cdigo Java es ms sencillo

El cdigo Java es ms robusto

Verificacin al cargar y comprobacin en tiempo de ejecucin


Arrays seguros
Compilador estricto e inteligente

Menos oportunidades para los ms audaces

recogida de basura
Las facilidades en tiempo de ejecucin ms avanzadas
Las interfaces simplifican la jerarqua de herencia

Imposible realizar aritmtica de punteros


No es posible hacer mejoras especficas para una plataforma

No es cierto eso de que las aplicaciones Java tengan que ser


ms lentas que las C++

Juan Pavn Mestras


Facultad de Informtica UCM, 2004

Java

35

También podría gustarte