19
INSTITUTO UNIVERSITARIO POLITÉCNICO “SANTIAGO MARIÑO” EXTENSIÓN PORLAMAR ESCUELA DE INGENIERÍA DE SISTEMAS Autor: Reynaldo Gil C.I: 17.417.846 Prof.: Ing. Diógenes Rodriguez Porlamar, 30 de Junio de 2013

Javascrip reynaldo gil

Embed Size (px)

Citation preview

Page 1: Javascrip reynaldo gil

INSTITUTO UNIVERSITARIO POLITÉCNICO “SANTIAGO MARIÑO”

EXTENSIÓN PORLAMAR ESCUELA DE INGENIERÍA DE SISTEMAS

Autor: Reynaldo Gil

C.I: 17.417.846

Prof.: Ing. Diógenes Rodriguez

Porlamar, 30 de Junio de 2013

Page 2: Javascrip reynaldo gil

INTRODUCCIÓN

Internet, la red de redes más grande del planeta ha venido evolucionando a

ritmos muy acelerados, en sus inicios el correo electrónico fue la sensación. En la

actualidad sigue siendo una herramienta fundamental en las comunicaciones, pero

se han venido desarrollando otras herramientas y tecnologías como el hipertexto,

los cuales vienen a ser objetos de información los cuales pueden contener textos,

gráficos, audio, vídeo además de vínculos a otros hipertextos.

La World Wide Web se encarga de la transferencia de los hipertextos

utilizando el protocolo HTTP, hasta aquí Internet había crecido y madurado un

poco, cada vez eran más los sites donde se podían encontrar páginas web

mostrando información de todo tipo, pero había un detalle: las paginas eran

estáticas, y de pronto Sun Microsystems anuncia un nuevo producto asegurando

que JAVA, así se llamaba, iba revolucionar Internet, las páginas Web se

convertirían en dinámicas e interactivas.

El avance de la tecnología informática y de las telecomunicaciones ha

hecho posible que estemos viviendo tiempos en donde la globalización de la

información, nos permita alcanzar uno de los grandes sueños de la humanidad:

“Tener igualdad de condiciones para acceder al conocimiento”, y esto se ha venido

logrando gracias a Internet.

Java es un nuevo lenguaje de programación orientado a objetos

desarrollado por Sun Microsystems. Sun describe al lenguaje Java de la siguiente

manera: Simple, orientado a objetos, distribuido, interpretado, robusto, seguro, de

arquitectura neutral, portable, de alto rendimiento, multitarea y dinámico.

Sun admite totalmente que lo dicho anteriormente es una cadena de halagos por

parte suya, pero el hecho es que todo ello describe al lenguaje Java.

Java permite hacer cosas excitantes con las páginas Web que antes no

eran posibles. De manera que en este momento la gran interactividad que

proporciona Java marca la diferencia en las páginas Web. Imagina un Web donde

puedes jugar a un juego, como el fútbol, tú y otras personas que están en lugares

remotos forman parte de un equipo y otras más del contrario, verías a los

Page 3: Javascrip reynaldo gil

jugadores animados en la pantalla obedeciendo las instrucciones de las personas

que están jugando al juego desde sitios remotos.

Además las puntuaciones quedarían registradas. O un Web con una

aplicación en donde el usuario pueda hacer transacciones y estas se actualicen en

tiempo real. O un sitio que ofrezca pequeñas aplicaciones como hojas de cálculo o

calculadoras para uso de los visitantes. O uno que muestre figuras 3D, tales como

moléculas o dinosaurios que pueden ser rotados con un click del ratón.

Java también aumenta el contenido multimedia de un sitio, ofreciendo

animaciones fluidas, gráficos mejorados, sonido y vídeo, fuera de lo necesario

para enganchar aplicaciones de ayuda dentro de sus navegadores Web.

Page 4: Javascrip reynaldo gil

ENTRADA Y SALIDA DE DATOS EN JAVA

En java la manera de representar las entradas y las salidas es a base de

streams (flujos de datos). Un stream es una conexión entre el programa y la fuente

o destino de los datos.

La información se traslada en serie a través de esta conexión. Todas las

clases de java relacionadas con la entrada y salida se agrupan en el package

java.io.

El siguiente ejemplo solicita al operador ingresar una línea de caracteres,

finalizando con la tecla Enter, y la despliega en pantalla.

Código Ejemplo:

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.IOException;

public class DeTerminal {

public static void main (String args[]) throws IOException {

BufferedReader stdin = null;

stdin = new BufferedReader(new InputStreamReader(System.in));

System.out.print("Ingrese caracteres y digite Enter: ");

String linea = stdin.readLine();

System.out.println("Usted digitó: " + linea);

stdin.close();

}

}

Page 5: Javascrip reynaldo gil

Mensaje para el ingreso de datos:

CLASES DE JAVA PARA LECTURA Y ESCRITURA DE DATOS

Lectura: la clase InputStream

La clase abstracta InputStream declara los métodos para leer datos desde

una fuente concreta y es la clasa base de la mayor parte de los flujos de entrada

en java.io. Soporta los métodos siguientes:

o int read() lee un sólo byte de datos y los devuelve en el rango [0..255].

Devuelve -1 cuando se alcanza el final del flujo y no puede seguir leyendo

bytes.

o int read (byte [] buf) lee un array de bytes hasta buf.length. Devuelve el

número de bytes leidos o -1 cuando se llega al final del flujo.

o int read (byte [] buf, int off, int len) lee len bytes del flujo (o los que pueda)

y los coloca a partir de la posición off del array.

o long skip (long count) salta hasta count bytes de entrada o hasta el final

del flujo de entrada, devolviendo el número de bytes saltados.

o int available() devuelve el número de bytes que están disponibles para

leerse.

o void close() cierra el flujo de entrada que abrió el constructor no-arg,

liberando los recursos asociados a ese flujo. No es necesario invocar este

Page 6: Javascrip reynaldo gil

método ya que el flujo se cierra cuando se destruye el objeto aunque es

conveniente hacerlo ya que vuelca el buffer sobre el disco.

Escritura: la clase OutputStream

La clase abstracta OutputStream es análoga a InputStream sólo que

proporciona métodos para manejar el flujo de salida. Los métodos que incluye son:

o void write (int b) escribe b como byte, que, aunque sea declarado

como int es transformado a byte. Esto es porque habitualmente es el

resultado de una operación previa.

o void write (byte [] buf) escribe un array de bytes.

o void write (byte [] buf, int offset, int count) escribe un array buf de bytes,

empezando en la posición offset y escribiendo count de ellos, deteniendose

antes si encuentra el final del array.

o void flush() vacia el flujo de modo que los bytes que quedaran por escribir

son escritos.

o void close() cierra el flujo de salida liberando los recursos asociados a ese

flujo.

A menos que se diga lo contrario estos métodos lanzan una

excepción IOException si detectan algún error en el flujo de salida.

ENTRADA Y SALIDA ESTANDAR (TECLADO Y PANTALLA)

La entrada/salida estándar (normalmente el teclado y la pantalla,

respectivamente) se definen mediante dos objetos que puede usar el programador

sin tener que crear flujos específicos.

La clase System tiene un miembro dato denominado in que es una instancia

de la clase InputStream que representa al teclado o flujo de entrada estándar. Sin

embrago, el miembro out de la clase System es un objeto de la clase PrintStream,

que imprime texto en la pantalla (la salida estándar).

Page 7: Javascrip reynaldo gil

Para leer un carácter solamente tenemos que llamar a la

función read desde System.in.

try{

System.in.read();

}catch (IOException ex) { }

Obligatoriamente, el proceso de lectura ha de estar en un bloque try..catch.

Esta porción de código es la que se ha empleado en muchas aplicaciones para

detener la ejecución de una aplicación hasta que se pulse la tecla RETORNO.

Para leer un conjunto de caracteres hasta que se pulse la tecla RETORNO

escribimos:

StringBuffer str=new StringBuffer();

char c;

try{

while ((c=(char)System.in.read())!='\n'){

str.append(c);

}

}catch(IOException ex){}

La clase StringBuffer es una clase que nos permite crear strings. Contiene

métodos para añadir nuevos caracteres a un buffer y convertir el resultado final en

un string. Las principales funciones miembro soninsert y append. Usamos una

versión de esta última función para añadir un carácter al final de un objeto de la

clase StringBuffer.

Para convertir un objeto str de la clase StringBuffer a String se usa la

función miembro toString. Esta llamada se hace de forma implícita cuando dicho

objeto se le pasa a System.out.println.

System.out.println(str);

Page 8: Javascrip reynaldo gil

Finalmente, se ha de hacer notar, que la función read miembro

de InputStream devuelve un int que es promocionado a char.

LECTURA Y ESCRITURA DE ARCHIVOS

Existen las clases FileInputStream y FileOutputStream (extendiendo

InputStream y OutputStream) que permiten leer y escribir bytes en archivos. Para

archivos de texto son preferibles FileReader (desciende de Reader) y FileWrite

(desciende de Write), que realizan las mismas funciones. Se puede construir un

objeto de cualquiera de estas cuatro clases a partir de un String que contenga el

nombre o la dirección en disco del archivo o con un objeto de la clase File que

representa dicho archivo.

Ejemplo:

FileReader frl = new FileReader (“archivo.txt”);

es equivalente a:

File f= new File (“archive.txt”);

FileReader fr2 = new FileReader (f);

Si no encuentran el archivo indicado, los constructores de FileReader y

FileInputStream pueden lanzar la excepción java.io.FileNotFoundException.

Los constructores de FileWriter y FileOutputStream pueden lanzar

java.io.IOException. Si no encuentran el archivo indicado, lo crean nuevo. Por

defecto, estas dos clases comienzan a escribir al comienzo del archivo. Para

Page 9: Javascrip reynaldo gil

escribir detrás de lo que ya existe en el archivo ("append"), se utiliza un segundo

argumento de tipo boolean con valor true:

FileWriter fw = new FileWriter("archivo.txt", true);

Las clases que se explican a continuación permiten un manejo más fácil y

eficiente que las vistas hasta ahora.

Si no encuentran el archivo indicado, los constructores de FileReader y

FileInputStream pueden lanzar la excepción java.io.FileNotFoundException.

SERIALIZACIÓN

o Proporciona un mecanismo de persistencia e integridad.

o Permite convertir un objeto a un flujo de bytes para ser tratados por un

stream.

o Se obtiene mediante la implementación del interface java.io.Serializable.

o Este interface no defibe ningún método.

o Proceso reversible:

Serialización – deserialización

Escritura – lectura.

Ejemplo:

LECTURA DE UN ARCHIVO EN UN SERVIDOR DE INTERNET

La clase básica para esto es URL. Con ella indicamos la dirección web del

fichero y establecemos la conexión.

Page 10: Javascrip reynaldo gil

import java.net.URL; import java.net.URLConnection; ... try { URL url = new URL("http://mas.lne.es/fotos/img/2007/10/62/203093470447035b9bc5a095.43783284-foto_verano.jpg"); URLConnection urlCon = url.openConnection(); ... } catch (Exception e) { ... }

Si no se sabe el tipo de fichero que tiene el enlace, se pregunta a la

clase URLConnection. Desde luego, el tipo de fichero es totalmente anecdótico,

puesto que el método aquí expuesto vale para cualquier tipo de fichero, incluidos

los html.

// Esto saca por pantalla "image/jpeg" System.out.println(urlCon.getContentType());

Para acceder al contenido y descargarlo en un fichero local, se pide

a URLConnection el getInputStream() y se lee y escribe en un fichero local hasta

el final.

// acceso al contenido web InputStream is = urlCon.getInputStream(); // Fichero en el que queremos guardar el contenido FileOutputStream fos = new FileOutputStream("e:/foto.jpg"); // buffer para ir leyendo. byte [] array = new byte[1000]; // Primera lectura y bucle hasta el final int leido = is.read(array); while (leido > 0) { fos.write(array,0,leido); leido=is.read(array); }

Page 11: Javascrip reynaldo gil

// Cierre de conexion y fichero. is.close(); fos.close();

JAVA FOUNDATION CLASSES (JFC) Y JAVA 2D

Java Foundation Classes (JFC, en castellano Clases Base Java) son un

framework gráfico para construir interfaces gráficas de usuario portables basadas

en Java.

JFC se compone deAbstract Window Toolkit (AWT), Swing y Java 2D.

Juntas, suministran una interfaz de usuario consistente para programas Java,

tanto si el sistema de interfaz de usuario subyacente es Windows, Mac OS

X o Linux.

AWT es la más antigua de las dos APIs de interfaz, y fue criticada

duramente por ser poco más que una envoltura alrededor de las capacidades

gráficas nativas de la plataforma anfitrión. Esto significa que los widgets estándar

en la AWT confían en esas capacidades de los widgets nativos, requiriendo que el

desarrollador también este prevenido de las diferencias entre plataformas anfitrión.

Una API de gráficos alternativa llamada Internet Foundation Classes fue

desarrollada en código más independiente de la plataforma por Netscape.

Últimamente, Sun mezcló la IFC con otras tecnologías bajo el nombre "Swing",

añadiendo la capacidad para un look and feel enchufable de los widgets. Esto

permite a los programas Swing mantener la base del código independiente de la

plataforma, pero imita el look de la aplicación nativa.

Java 2D es un API para dibujar gráficos en dos dimensiones usando

el lenguaje de programación Java. Cada operación de dibujo Java 2D puede

tratarse como rellenar unaforma usando un pincel y componiendo el resultado en

la pantalla.

Conceptualmente, dibujando una línea negra en Java 2D puede pensarse

como crear un segmento de línea, transformarlo de acuerdo a la transformación

Page 12: Javascrip reynaldo gil

actual, moviéndolo para crear un rectángulo fino, consultando su forma para

computar los píxeles que están siendo afectados, generando los píxeles que

usan java.awt.Color.BLACK, y entonces componiendo los resultados en la

pantalla.

Sin embargo, realizar esta secuencia completa de pasos para cada

operación de dibujado sería muy ineficiente. Java 2D por lo tanto optimiza las

operaciones de dibujado comunes para que muchos de esos pasos puedan

saltarse. Si el pincel es de un color sólido simple, por ejemplo, no hay necesidad

de ordenar que genere una lista de los colores que van a ser pintados. Asimismo,

si el compuesto por defecto completamente opaco está en uso, actualmente pedir

que realice la operación de composición es innecesario y resultaría en esfuerzo

inútil.

Java 2D realiza la mínima cantidad de trabajo necesario para hacer

que parezca como si realizara todos los pasos para cada operación, por lo tanto

conserva gran flexibilidad y alto rendimiento.

JAVA MEDIA FRAMEWORK (JMF)

Java Media Framework o JMF (en español entorno de trabajo multimedia de

Java) es una extensión de Java que permite la programación de

tareas multimedia en este lenguaje de programación.

Sus principales características son:

Estabilidad debida a que funciona sobre la máquina virtual java (JVM).

Sencillez, ya que permite, usando unos pocos comandos, realizar complejas

tareas multimedia.

Potencia, permitiendo la manipulación de elementos multimedia de vídeo y

audio locales (procedentes de la misma máquina en la que se ejecuta el

programa), así como la retransmisión en tiempo real de vídeo y audio a

través de la red mediante el protocolo RTP.

Page 13: Javascrip reynaldo gil

JMF no se incluye en la JDK, ni en la JRE, sino que debe conseguirse como

un paquete externo.

JAVA 3D

Java 3D es un proyecto que permite crear entornos tridimensionales en el

lenguaje Java.

Es una API para gráficos 3D para el lenguaje de programación Java la cual

corre sobre OpenGL o Direct3D. Desde la version 1.2 Java 3D es desarrollado

bajo las especificaciones Java Community Process.

JAVA BEANS

Son un modelo de componentes creado por Sun Microsystems para la

construcción de aplicaciones en Java.

Se usan para encapsular varios objetos en un único objeto (la vaina

o Bean en inglés), para hacer uso de un solo objeto en lugar de varios más

simples.

La especificación de JavaBeans de Sun Microsystems los define como

"componentes de software reutilizables que se puedan manipular visualmente en

una herramienta de construcción".

A pesar de haber muchas semejanzas, los JavaBeans no deben confundirse

con los Enterprise JavaBeans (EJB), una tecnología de componentes del lado

servidor que es parte de Java EE.

Dentro de un JavaBean podemos distinguir tres partes:

Propiedades: Los atributos que contiene.

Métodos: Se establecen los métodos get y set para acceder y modificar los

atributos.

Eventos: Permiten comunicar con otros JavaBeans.

Page 14: Javascrip reynaldo gil

Ejemplo:

public class PersonaBean implements java.io.Serializable { private String nombre; private int edad; public PersonaBean() { // Constructor sin argumentos } public void setNombre(String n) { this.nombre = n; } public void setEdad(int e) { this.edad = e; } public String getNombre() { return (this.nombre); } public int getEdad() { return (this.edad); } }

RMI Y JAVA IDL

RMI (Java Remote Method Invocation) es un mecanismo ofrecido

por Java para invocar un método de manera remota. Forma parte del entorno

estándar de ejecución de Java y proporciona un mecanismo simple para la

comunicación de servidores en aplicaciones distribuidas basadas exclusivamente

en Java. Si se requiere comunicación entre otras tecnologías debe

utilizarseCORBA o SOAP en lugar de RMI.

RMI se caracteriza por la facilidad de su uso en la programación por estar

específicamente diseñado para Java; proporciona paso de objetos por referencia

(no permitido por SOAP), recolección de basura distribuida (Garbage Collector

distribuido) y paso de tipos arbitrarios (funcionalidad no provista por CORBA).

A través de RMI, un programa Java puede exportar un objeto, con lo que dicho

objeto estará accesible a través de la red y el programa permanece a la espera de

Page 15: Javascrip reynaldo gil

peticiones en un puerto TCP. A partir de ese momento, un cliente puede

conectarse e invocar los métodos proporcionados por el objeto.

La invocación se compone de los siguientes pasos:

Encapsulado (marshalling) de los parámetros (utilizando la funcionalidad

de serialización de Java).

Invocación del método (del cliente sobre el servidor). El invocador se queda

esperando una respuesta.

Al terminar la ejecución, el servidor serializa el valor de retorno (si lo hay) y lo

envía al cliente.

El código cliente recibe la respuesta y continúa como si la invocación hubiera

sido local.

Ejemplo:

Un servidor RMI consiste en definir un objeto remoto que va a ser utilizado

por los clientes. Para crear un objeto remoto, se define una interfaz, y el objeto

remoto será una clase que implemente dicha interfaz. Crear un servidor de

ejemplo mediante 3 pasos:

Definir la interfaz remota. Cuando se crea una interfaz remota:

La interfaz debe ser pública.

Debe heredar de la interfaz java.rmi.Remote, para indicar que puede llamarse

desde cualquier máquina virtual Java.

Cada método remoto debe lanzar la excepción java.rmi.RemoteException en su

cláusula throws, además de las excepciones que pueda manejar.

public interface MiInterfazRemota extends java.rmi.Remote

{

public void miMetodo1() throws java.rmi.RemoteException;

public int miMetodo2() throws java.rmi.RemoteException;

}

Java IDL o Java Interface Description Language es una

implementación CORBA que permite que dos objetos interactúen sobre diferentes

Page 16: Javascrip reynaldo gil

plataformas a través de una red. Java IDL al ser una interfaz permite que los

objetos interactúen sin importar el lenguaje en que estén escritos, a diferencia

de Java RMI que solo soporta objetos distribuidos escritos en Java.

Esto se logra ya que Java IDL está basado en Common Object Request

Brokerage Architecture (CORBA), un estándar para objetos distribuidos. CORBA

fue definido y está controlado por elObject Management Group (OMG) que define

las APIs, el protocolo de comunicaciones y los mecanismos necesarios para

permitir la interoperatividad entre diferentes aplicaciones escritas en diferentes

lenguajes y ejecutadas en diferentes plataformas, lo que es fundamental

en computación distribuida.

Para soportar la interacción entre objetos de programas separados, Java

IDL proporciona un Object Request Broker (ORB) que es una biblioteca de clases

que permite una comunicación de bajo nivel entre aplicaciones Java IDL y

aplicaciones compatibles con CORBA.

JAVA NATIVE INTERFACE (JNI)

Java Native Interface (JNI) es un framework de programación que permite

que un programa escrito en Java ejecutado en la máquina virtual java (JVM)

pueda interactuar con programas escritos en otros lenguajes

como C, C++ y ensamblador.

El JNI se usa para escribir métodos nativos que permitan solventar

situaciones en las que una aplicación no puede ser enteramente escrita en Java,

como por ejemplo en el caso de que la biblioteca estándar de clases no

proporcione soporte para funcionalidades dependientes de la plataforma.

También se usa para modificar programas existentes escritos en algún otro

lenguaje, permitiéndoles ser accesibles desde aplicaciones Java. Muchas de las

clases de la API estándar de Java dependen del JNI para proporcionar

funcionalidad al desarrollador y al usuario, por ejemplo las funcionalidades de

sonido o lectura/escritura de ficheros. El desarrollador debe asegurarse que la API

estándar de Java no proporciona una determinada funcionalidad antes de recurrir

Page 17: Javascrip reynaldo gil

al JNI, ya que la primera ofrece una implementación segura e independiente de la

plataforma.

El framework JNI permite a un método nativo utilizar los objetos Java de la

misma forma en que el propio código de Java lo hace. Un método nativo puede

crear objetos Java; y examinarlos y utilizarlos para que lleven a cabo su función.

Un método nativo puede asimismo examinar y utilizar objetos que han sido

creados por código de aplicación escrito en Java.

A menudo se denomina a JNI como la "válvula de escape" para

desarrolladores dado que les permite añadir funcionalidades a sus aplicaciones

que el API de Java no puede proporcionar.

Puede ser usado para interactuar con código escrito en otros lenguajes

como C++, también se usa para operaciones y cálculos de alta complejidad

temporal, porque el código nativo es por lo general más rápido que el que se

ejecuta en una máquina virtual.

En JNI, las funciones nativas se implementan en archivos .c o .cpp por

separado (C++ ofrece una interfaz con JNI ligeramente más clara). Cuando la

máquina virtual invoca a la función, le pasa un puntero a JNIEnv, un puntero

a jobject, y cualquier número de argumentos declarados por el método Java. Una

función de JNI debería parecerse a esto:

JNIEXPORT void JNICALL Java_ClassName_MethodName

(JNIEnv *env, jobject obj)

{

//El método nativo se implementa aquí

}

CONCLUSIÓN

Page 18: Javascrip reynaldo gil

La JVM es la esencia de la aplicación JAVA diseñada, es como la base o el

entorno donde se ejecutara nuestras aplicaciones java y permitirá que corra sobre

cualquier plataforma que soporte java (cualquier sistema operativo que tengamos

instalado o donde se correrá nuestro software).

La API de JAVA es la que nos permitirá crear nuestros programas utilizando

las herramientas que nos suministra el lenguaje, como son clases para procesar

archivos, sockets, crear ventanas, etc, en otras palabras son los medios que

suministra JAVA para desarrollar las diferentes aplicaciones, esto provee un

conjunto de plantillas para diseñar y efectuar toda las tareas necesarias que

deseamos incorporar en un programa que es independiente.

La importancia de Java radica en la posibilidad de crear o diseñar software

y poder ser ejecutado en diferentes plataformas donde se requiere, sin la

necesidad de estar modificándolo. Además de esto, es una herramienta diseñada

con muchos elementos parecidos a C++ pero en una versión mejorada, más

sencilla de manejar, con menos complejidad y con barreras de seguridad en su

lenguaje y ejecución.

Se dice que JAVA es portable, debido a que el código que se genera es un

código independiente que es el que nos permitirá poderlo usar en las distintas

plataformas, sin que cambie la esencia del software diseñado, esto quiere decir

que será el mismo programa en cualquier plataforma. Por ejemplo que puedes

desarrollar un software en un sistema operativo como Windows y después

ejecutarlo en Linux, sin necesidad de compilar en la otra plataforma. Se dice que

es portable, ya que el código que genera el proceso de compilación no es

ejecutable, sino que es un código intermedio (bytecodes) el que no está amarrado

a una plataforma específica, sino que es independiente.

Page 19: Javascrip reynaldo gil

REFERENCIAS BIBLIOGRÁFICAS Y ELECTRÓNICAS

LIBROS

“JAVA 1.2 AL DESCUBIERTO”; Jaworski, Jamie; Ed. Prentice Hall; Madrid, 1999;

ISBN 84-8322-061-X

"JAVA Network Security"; Macgregor, R. | Durbin, D. | Owlett, J. | Yeomans, A.;

Prentice Hall; 1998; ISBN 0-13-761529-9

"Programación en JAVA"; Cuenca Jiménez, Pedro; Anaya; 1997; ISBN 84-415-

0174-2

“PCWorld”; Revista; Ed. IDG Communications; Números 147, 148, 155 del año

1998; ISBN 0213-1307

INTERNET

http://java.sun.com/a-z/

http://www.programacion.net

http://dir.yahoo.com/Computers_and_Internet/Programming_Languages/Java/

http://www.iti.upv.es:81/java/

http://www.idg.es/pcworld

http://www.omg.org

http://www.idg.es/iworld

http://www.gamelan.com

http://www.javaworld.com

http://www.geocities.com/SiliconValley/Lakes/2227/

http://www.ibm.com/developer/java/

http://forum.java.sun.com

http://es.wikipedia.org