Java - Universidad de Chile

Embed Size (px)

Citation preview

Tutorial de Java - Tabla de Contenido

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.

Introduccin a Java Instalacin del JDK Conceptos Bsicos de Java Programas Bsicos en Java El Depurador de Java - jdb Clases Java AWT Grficos Excepciones en Java Threads y Multithreading Cdigo Nativo Entrada/Salida por fichero en Java Comunicaciones en Java Arquitectura MVC en Java Aplicaciones Java Final y Agradecimientos

Navegacin por el Tutorial Download del Tutorial 1. Introduccin a Java 1. Origen de Java 2. Caractersticas de Java s Simple s Orientado a Objetos s Distribuido s Robusto s De Arquitectura Neutral

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/tabla.html (1 of 12) [13/05/2002 12:50:26]

Tutorial de Java - Tabla de Contenido

Seguro s Portable s Interpretado s Multithreaded s Dinmico 3. HotJava 4. Java para aplicaciones corporativas s Desarrollo rpido de aplicaciones s Aplicaciones efectivas y eficientes s Portabilidad para programador y programa s Costes de desarrollo s Mantenimiento y soporte s Aprendizaje s Resumen 2. Instalacin del JDK 1. Windows 95 2. Solaris 3. Linux 4. Compilacin sin JDK 3. Conceptos Bsicos de Java 1. Programacin en Java s Comentarios s Identificadores 1. Palabras clave 2. Palabras reservadas s Literales s Arrays s Operadores s Separadores 2. Control del Flujo s Sentencias de Salto s Sentencias de Bucles s Excepciones s Control General del Flujo 3. Clases s Tipos de Clases 4. Variables y Mtodos de Instancia s Ambito de una variable s Mtodos y Constructoress

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/tabla.html (2 of 12) [13/05/2002 12:50:26]

Tutorial de Java - Tabla de Contenido

Finalizadores 5. Alcance de Objetos y Reciclado de Memoria 6. Herencia 7. Control de Acceso 8. Variables y Mtodos Estticos 9. this y super 10. Clases Abstractas 11. Interfaces 12. Mtodos Nativos 13. Paquetes s Import s Paquetes de Java 14. Referencias s Punteros s Referencias en C++ s Referencias en Java s Referencias y Arrays s Referencias y Listas s Punteros C/C++ y Referencias Java 4. Programas Bsicos en Java 1. Una mnima aplicacin en Java s HolaMundo s Compilacin y Ejecucin de HolaMundo 1. Ficheros fuente java 2. Compilacin 3. Ejecucin s Problemas de compilacin 2. El visor de Applets de Sun (appletviewer) s Applet s Llamadas a Applets con appletviewer s Arquitectura de appletviewer s Ciclo de vida de un Applet s Mtodos de appletviewer 1. Sinopsis 2. Ejemplo de uso s Funciones de men de appletviewer 3. Un Applet bsico en Java s HolaMundo s Componentes bsicos de un Applets

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/tabla.html (3 of 12) [13/05/2002 12:50:26]

Tutorial de Java - Tabla de Contenido

1. Clases incluidas 2. La clase Applet 3. Mtodos de Applet s Compilacin de un Applet s Llamada a Applets s Prueba de un Applet s La marca APPLET de html 1. Atributos de APPLET 2. Paso de parmetros a Applets 3. Tokens en parmetros de llamada 4. El parmetro ARCHIVE s Depuracin general s Ciclo de vida de un Applet s Proteccin de Applets 4. Escribir Applets Java s init s destroy s start s stop s resize s width s height s paint s update s repaint s getParameter s getDocumentBase s getCodeBase s print 5. La aplicacin Fecha (Aproximacin a OOP) 5. El Depurador de Java - jdb 1. Depurar HolaMundo 2. Comando help 3. Comando threadgroups 4. Comando threads 5. Comando run 6. Comando where 7. Comando use 8. Comando listhttp://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/tabla.html (4 of 12) [13/05/2002 12:50:26]

Tutorial de Java - Tabla de Contenido

9. Comando dump 10. Comando step 6. Clases Java 1. La clase Math s Funciones matemticas 2. La clase Character s Declaraciones s Comprobaciones booleanas s Traslaciones de caracteres s Traslaciones de carcter/dgito s Mtodos de la clase Character 3. La clase Float s Declaraciones s Valores de Float s Conversiones de Clase/Cadena s Comprobaciones s Conversiones de Objetos s Otros Mtodos 4. La clase Double s Declaraciones s Valores de Double s Mtodos de Double 5. La clase Integer s Declaraciones s Valores de Integer s Mtodos de Integer 6. La clase Long s Declaraciones s Valores de Long s Mtodos de Long 7. La clase Boolean s Declaraciones s Valores de Boolean s Mtodos de Boolean 8. La clase String s Funciones Bsicas 1. Funciones de Comparacin de Strings 2. Funciones de Comparacin de Subcadenas s Funciones ValueOfhttp://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/tabla.html (5 of 12) [13/05/2002 12:50:26]

Tutorial de Java - Tabla de Contenido

1. Funciones de Conversin 9. La clase StringBuffer s Cambio de Tamao s Modificacin del Contenido s Operadores de Concatenacin 10. Uso de Conversiones 7. AWT 1. Introduccin al AWT 2. Interface de Usuario 3. Estructura del AWT 4. Componentes y Contenedores s Tipos de Componentes 5. Componentes s Botones 1. Eventos Button 2. De pulsacin (Push) 3. De lista (Choice) 4. De marcacin (CheckBox) 5. De seleccin (Radio) 6. Autocontenidos s Etiquetas s Listas s Campos de Texto s Areas de Texto s Canvas s Barras de Desplazamiento s Diseo de Componentes propios 6. Contenedores s Window s Frame s Dialog s Panel s Crear un Contenedor s Aadir Componentes a un Contendor 7. Creacin de Aplicaciones con AWT s Crear el Marco de la Aplicacin s Inicializar Fuentes, Colores y Recursos s Crear Mens y Barras de Mens s Dilogos y Ventanashttp://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/tabla.html (6 of 12) [13/05/2002 12:50:26]

Tutorial de Java - Tabla de Contenido

8. Paneles 9. Layouts s FlowLayout s BorderLayout s GridLayout s GridBagLayout s CardLayout s Crear un Layout propio 10. Control de Eventos s La clase Event s Tipos de Eventos 1. Eventos de Ventana 2. Eventos de Teclado 3. Eventos de Ratn 4. Eventos de Barras 5. Eventos de Lista 6. Eventos Varios s Generacin y Propagacin de Eventos s Mtodos de Control de Eventos s ACTION_EVENT 11. Mejorar el Diseo de Interfaces s Cambio de Font de Caracteres s Colores de Fondo y Texto s Fijar el Tamao Preferido s Uso de Insets s Habilitar y Deshabilitar Componentes s Botn Grfico 8. Grficos 1. Objetos Grficos 2. Mtodos para Dibujos s Lneas s Rectngulos s Crculos, Elipses s Polgonos s Funciones Grficas s Fractales s Lneas Flotantes 3. Mtodos para Imgenes 4. Doble Buffering de Grficoshttp://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/tabla.html (7 of 12) [13/05/2002 12:50:26]

Tutorial de Java - Tabla de Contenido

Contextos Grficos s Creacin de Contextos Grficos s Utilizacin de Contextos Grficos 5. Nuevas Clases para Dibujo 6. La Clase MediaTracker s Manejo de Imgenes para Animacin s Creacin de un Objeto MediaTracker s Ejemplo de Animacin 7. Sonido en Java s Reproduccin de Sonido s Reproduccin Repetitiva 8. Entrada por Ratn 9. Excepciones en Java 1. Manejo de Excepciones 2. Generar Excepciones en Java 3. Excepciones Predefinidas 4. Crear Excepciones Propias 5. Capturar Excepciones s try s catch s finally 6. Propagacin de Excepciones 10. Threads y Multithreading 1. Flujo en Programas s Programas de Flujo Unico s Programas de Flujo Mltiple 2. Creacin y Control de Threads s Creacin de un Thread s Arranque de un Thread s Manipulacin de un Thread s Suspensin de un Thread s Parada de un Thread 3. Arrancar y Parar Threads 4. Suspender y Reanudar Threads 5. Estados de un Thread s Nuevo Thread s Ejecutable s Parado s Muertos

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/tabla.html (8 of 12) [13/05/2002 12:50:26]

Tutorial de Java - Tabla de Contenido

El mtodo isAlive() 6. Scheduling 7. Prioridades, demonios... s Prioridades s Threads Demonio s Diferencia de Threads con fork() 8. Ejemplo de Animacin 9. Comunicacin entre Threads s Productor s Consumidor s Monitor s Monitorizacin del Productor 11. Mtodos Nativos 1. Escribir Cdigo Java 2. Compilar el Cdigo Java 3. Crear el fichero de Cabecera 4. Crear el fichero de Stubs 5. Escribir la funcin C 6. Crear la Librera Dinmica s Unix s Windows '95 7. Ejecutar el Programa 12. Entrada/Salida Estndar 1. La clase System s Stdin s Stdout s Stderr 2. Clases comunes de Entrada/Salida 13. Ficheros en Java 1. Ficheros s Creacin de un objeto File s Comprobaciones y Utilidades 2. Streams de Entrada s Objetos FileInputStream 1. Apertura de un FileInputStream 2. Lectura de un FileInputStream 3. Cierre de FileInputStream 4. Ejemplo: Visualizacin de un fichero s Objetos DataInputStreams

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/tabla.html (9 of 12) [13/05/2002 12:50:26]

Tutorial de Java - Tabla de Contenido

1. Apertura y cierre de DataInputStream 2. Lectura de un DataInputStream s Streams de entrada de URLs 1. Apertura de un Stream de entrada 3. Streams de Salida s Objetos FileOutputStream 1. Apertura de un FileOutputStream 2. Escritura en un FileOutputStream 3. Cierre de FileOutputStream 4. Ejemplo: Almacenamiento de Informacin s Streams de salida con buffer 1. Creacin de Streams de salida con buffer 2. Volcado y Cierre de Streams de salida con buffer s Streams DataOutput 1. Apertura y cierre de objetos DataOutputStream 2. Escritura en un objeto DataOutputStream 3. Contabilidad de la salida 4. Ficheros de Acceso Aleatorio s Creacin de un Fichero de Acceso Aleatorio s Acceso a la Informacin s Actualizacin de Informacin 14. Comunicaciones en Java 1. Comunicaciones en Unix 2. Sockets s Sockets Stream s Sockets Datagrama s Sockets Raw 3. Diferencias entre Sockets Stream y Datagrama 4. Uso de Sockets s Puertos y Servicios s La clase URL 5. Dominios de Comunicaciones s Dominio Unix s Dominio Internet 6. Modelo de Comunicaciones con Java s Apertura de Sockets s Creacin de Streams de Entrada s Creacin de Streams de Salida s Cierre de Socketshttp://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/tabla.html (10 of 12) [13/05/2002 12:50:26]

Tutorial de Java - Tabla de Contenido

Mnimo Cliente SMTP s Servidor de Eco s Mnimo Servidor TCP/IP s Mnimo Cliente TCP/IP s Servidor Simple de HTTP s Red en Windows '95 (sin conexin) 1. Configuracin del TCP/IP de Windows '95 2. Crear una entrada en la Red 3. Comprobacin de la Red 4. Problemas ms frecuentes 7. Clases Utiles en Comunicaciones 15. Arquitectura MVC en Java 1. La Arquitectura MVC s Definicin de las partes 2. Observador y Observable s Funciones de Observer y Observable 1. Observer 2. Observable s Cmo utilizar Observer y Observable 1. Extender un Observable 2. Implementar un Observador 3. Usando Observador y Observable 3. Ejemplo de aplicacin MVC 16. Aplicaciones en Java 1. Etiqueta 2. Reloj Digital 3. Persiana 4. Solapas 5. Transparencia 6. Calculadora 7. Cuenta-Kilmetros 8. Potencimetro 9. Cartel (de Luis Angel Ortega)s

Seguro que quedan cosas pendientes que podramos acometer, pero esto tiene que tener un fin y como creemos que hemos desarrollado todo lo importante, e incluso algunas que no lo son tanto, de Java, pues aqu lo dejamos. No obstante, este Tutorial est totalmente abierto, y si alguien cree que falta algn aspecto importante de Java todava por desarrollar, agradeceramos que nos enviase su comentario. Dentro de nuestrashttp://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/tabla.html (11 of 12) [13/05/2002 12:50:26]

Tutorial de Java - Tabla de Contenido

posibilidades, veramos la forma de incluir ms captulos en este Tutorial.

Tutorial de Java

[Presentacin] [Home] [Siguiente]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/tabla.html (12 of 12) [13/05/2002 12:50:26]

Tutorial de Java - Introduccin a Java

1. Origen de Java 2. Caractersticas de Java r Simple r Orientado a Objetos r Distribuido r Robusto r De Arquitectura Neutral r Seguro r Portable r Interpretado r Multithreaded r Dinmico 3. HotJava 4. Java para aplicaciones corporativas r Desarrollo rpido de aplicaciones r Aplicaciones efectivas y eficientes r Portabilidad para programador y programa r Costes de desarrollo r Mantenimiento y soporte r Aprendizaje r Resumen El uso principal que se hace de Internet e incluso de las redes internas (corporativas) es correo electrnico (e-mail), aunque actualmente hay un auge sorprendente de la navegacin web. Los documentos web pueden contener variedad de texto, grficos de todas clases y proporcionar enlaces hipertexto hacia cualquier lugar de la red. Los navegadores utilizan documentos escritos en lenguaje HTML. La combinacin actual de navegadores HTML/WWW estn limitados pues, a texto y grficos. Si se quiere reproducir un sonido o ejecutar un programa de demostracin, primero hemos de bajarnos (download) el fichero en cuestin y luego utilizar un programa en nuestro ordenador capaz de entender el formato de ese fichero, o bien cargar un mdulo (plug-in) en nuestro navegador para que pueda interpretar el fichero que hemos bajado.http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/introdu.html (1 of 2) [13/05/2002 12:50:56]

Tutorial de Java - Introduccin a Java

Hasta ahora, la nica forma de realizar una pgina web con contenido interactivo, era mediante la interfaz CGI (Common Gateway Interface), que permite pasar parmetros entre formularios definidos en lenguaje HTML y programas escritos en Perl o en C. Esta interfaz resulta muy incmoda de programar y es pobre en sus posibilidades. El lenguaje Java y los navegadores con soporte Java, proporcionan una forma diferente de hacer que ese navegador sea capaz de ejecutar programas. Con Java se puede reproducir sonido directamente desde el navegador, se pueden visitar home pages con animaciones, se puede ensear al navegador a manejar nuevos formatos de ficheros, e incluso, cuando se pueda transmitir video por las lneas telefnicas, nuestro navegador estar preparado para mostrar esas imgenes. Utilizando Java, se pueden eliminar los inconvenientes de la interfaz CGI y tambin se pueden aadir aplicaciones que vayan desde experimentos cientficos interactivos de propsito educativo a juegos o aplicaciones especializadas para la televenta. Es posible implementar publicidad interactiva y peridicos personalizados. Por ejemplo, alguien podra escribir un programa Java que implementara una simulacin qumica interactiva (una cadena de adn). Utilizando un navegador con soporte Java, un usuario podra recibir fcilmente esa simulacin e interaccionar con ella, en lugar de conseguir simplemente un dibujo esttico y algo de texto. Lo recibido cobra vida. Adems, con Java podemos estar seguros de que el cdigo que hace funcionar el experimento qumico no contiene ningn trozo de cdigo malicioso que dae al sistema. El cdigo que intente actuar destructivamente o que contenga errores, no podr traspasar los muros defensivos colocados por las caractersticas de seguridad y robustez de Java. Adems, Java proporciona una nueva forma de acceder a las aplicaciones. El software viaja transparentemente a travs de la red. No hay necesidad de instalar las aplicaciones, ellas mismas vienen cuando se necesitan. Por ejemplo, la mayora de los navegadores del Web pueden procesar un reducido nmero de formatos grficos (tpicamente GIF y JPEG). Si se encuentran con otro tipo de formato, el navegador estndar no tiene capacidad para procesarlo, tendra que ser actualizado para poder aprovechar las ventajas del nuevo formato. Sin embargo, un navegador con soporte Java puede enlazar con el servidor que contiene el algoritmo que procesa ese nuevo formato y mostrar la imagen. Por lo tanto, si alguien inventa un nuevo algoritmo de compresin para imgenes, el inventor slo necesita estar seguro de que hay una copia en cdigo Java de ese algoritmo instalada en el servidor que contiene las imgenes que quiere publicar. Es decir, los navegadores con soporte Java se actualizan a s mismos sobre la marcha, cuando encuentran un nuevo tipo de fichero o algoritmo.

Tutorial de Java

[Navegacin] [Indice] [Siguiente]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/introdu.html (2 of 2) [13/05/2002 12:50:56]

Tutorial de Java - Home Page

accesos ha tenido este sitio Web, desde el 8 de Octubre de 1996

El Tutorial se ve mejor con

AVISOSEL TUTORIAL YA ESTA TERMINADO. SI ALGUIEN LO CITA EN ALGUN SITIO, O DESEA HACER LINKS, O DESEA INCLUIRLO EN ALGUN MEDIO DE TRANSMISION (CD-ROM, BBS, etc.), LE RUEGO ME LO COMUNIQUE.

Agustn Froufe

Ultima Actualizacin: 1 de Enero de 1997

[Introduccin] [Indice] [ftp]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/index.html [13/05/2002 12:51:07]

Tutorial de Java - Presentacin

PRESENTACIONEn este tutorial presentaremos una visin general del lenguaje de programacin Java, incluyendo la programacin de applets y aplicaciones. Tambin trataremos algunas caractersticas avanzadas y el API del lenguaje Java. No obstante, y para que todos tengamos una idea general de lo que es Java, haremos una serie de aclaraciones o indicaciones, para que alguien que no est muy decidido a aprender Java, pueda tener elementos de juicio y de comparacin para tomar esa decisin. Por ello, haremos una introduccin ms extensa de lo que sera habitual en un tutorial, lo que tambin me permitir verter ciertas opiniones que en otro sitio no tendran cabida.

Conocimientos previos...En el planteamiento inicial se supone que t, que ests leyendo esto, tienes experiencia en algn lenguaje de programacin, como puede ser C o un lenguaje similar , tambin sabes utilizar un navegador de WWW como Netscape o Internet Explorer, tambin eres capaz de desarrollar pginas WWW con HTML y comprendes la programacin orientada a objetos. Intentaremos que estos conocimientos sean suficientes para poder seguir el tutorial. El entorno de desarrollo habitual entre la gente que trabajamos con el JDK (los pobres sin poder para comprarse herramientas comerciales) consiste en tener abiertas sobre el escritorio de la pantalla, ya sea en Solaris, Windows '95/NT o Linux, varias ventanas, que usamos para lo siguiente:q

q

q

En una de ellas tenemos abierto HotJava, apuntando al fichero packages.html de la documentacin del API de Java, para poder tener al momento la informacin sobre los parmetros de llamada, valores de retorno y la informacin de cada una de las funciones que estemos utilizando. Los que estn desarrollando sobre Windows '95 o NT, podrn disponer de la documentacin del API tambin desde el sistema de ayuda de Windows si han descargado esta documentacin en formato Winhelp desde Dippy. En otra tendremos abierto un navegador con soporte Java, normalmente ser Netscape, en una

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/presenta.html (1 of 3) [13/05/2002 12:51:21]

Tutorial de Java - Presentacin

q

q

q

q

q

versin superior a la 2.0b4, para que tenga soporte audio en los applets que desarrollemos, o Microsoft Explorer, en versin 3.0 o superior. Tendremos abierta otra ventana con un editor, donde iremos escribiendo el cdigo de nuestro applet o aplicacin Java. En Windows '95 son muy utilizados el editor Jpad y Diva. Aunque en estos momentos, quien tiene potencia suficiente en su ordenador, est programando Java desde el Java Workshop de Sun. Y una ventana ms donde tendremos acceso al prompt del sistema para poder invocar al compilador y a las dems herramientas del JDK. Los que tengan algo de dinero podrn estar utilizando alguno de los entornos shareware que ya hay disponibles como RadJa, Kawa o JavaMaker. Los que s disponen de poder adquisitivo suficiente habrn empezado con el Symantec Caf de Symantec, porque ahora estarn trabajando con Borland C++ 5.0, que soporta Java o estarn entusiasmados con el Visual J++ de Microsoft o estarn deseando ver ya en sus pantallas el Borland Latte. Y los enamorados de OS2, que en su versin 4.0 ya incluye una Mquina Virtual Java (JVM) en su kernel, se lo pasarn en grande con el IBM VisualAge for Java.

ObjetivosLos objetivos que nos hemos marcado, para que t, navegante lector, cuando llegues al final del tutorial, seas capaz de:q q q q q q q

Crear pginas HTML que llamen a applets Java Crear contextos grficos en Java Utilizar los componentes del interfaz grfico que proporciona Java Crear aplicaciones autnomas en Java Crear aplicaciones multi-threaded Utilizar las libreras de E/S para manipular ficheros de texto y datos Crear servidores y clientes TCP/IP que se comuniquen va socket

Intentaremos cumplir lo que acabamos de prometer, aunque tambin pedimos paciencia, ya que Java, en este momento, es un lenguaje con una notable vitalidad, que todava estamos aprendiendo nosotros. Por otro lado, no es nada sencillo el hacerse entender, por lo que tenemos que dar varias vueltas a cada uno de los conceptos que escribimos para cerciorarnos de que t que lo lees comprendes exactamente lo que nosotros te queremos transmitir. Adems, tampoco esperes que te proporcionemos ungentos milagrosos, que por arte de magia traspasen el conocimiento. El estudio de Java, y sus applets, no ser sino el examen de una particular forma de ver las cosas, con un poco de estructuracin en la presentacin y un cierto trasfondo de Internet; el resto es, como siempre, tarea del programador. Es decir, uno puede aprender a construir un applet, o dejar que alguna de las herramientas lo construyan automticamente, igual que puede ensearse a codificar un dilogo en un entorno grfico, pero... la inteligencia de esa pieza siempre depender de la habilidad yhttp://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/presenta.html (2 of 3) [13/05/2002 12:51:21]

Tutorial de Java - Presentacin

experiencia del programador respecto del lenguaje usado y de sus recursos. En fin, un buen applet ser nicamente resultado del trabajo de un buen programador Java.

A empezar...Te recomendamos que, si vas a seguir el Tutorial a la vez que nosotros vayamos publicando captulos, utilices las opciones Hotlist o Bookmark de tu navegador para marcar la pgina por la que vas y poder pasar fcilmente de unos captulos a otros. Hemos escrito el Tutorial de Java, enfocado a Netscape, en cualquier otro navegador se ver decentemente, pero bien, bien... con Netscape, porque nos ser imprescindible, al ser el ms extendido de los navegadores con soporte Java. Y ya puedes pasar a ver lo que hemos preparado, para ello puedes empezar viendo como Navegar a travs del Tutorial o pasar directamente a la Tabla de Contenido, donde encontrars enlaces con cada uno de los captulos y apartados. Buena Suerte.

Tutorial de Java

[Intenciones] [Indice] [Siguiente]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/presenta.html (3 of 3) [13/05/2002 12:51:21]

Tutorial de Java - Final y Agradecimientos

...Y esto ha sido todo, amigos! Espero que todo el esfuerzo que hemos realizado para que este Tutorial de Java pudiese ver la luz haya servido para que, al menos, alguien de los que se hayan atrevido a seguirlo dominen un poco ms el lenguaje que representa Java. Nosotros (yo) s que he aprendido mucho durante estos meses que me he pasado escribiendo y desarrollando ejemplos. Me he encontrado con problemas, que quizs en un uso normal de Java no se hubiesen presentado, sobre todo porque he utilizado tres plataformas diferentes para probar lo que haca: Solaris 2.5, Linux 1.3.20 y Windows '95. El escoger los volcados de Windows '95 para los ejemplos ha sido porque todo el Tutorial se ha escrito en Word para Windows '95.

AgradecimientosMi agradecimiento a Juan Antonio Ruz y Ramn M. Gmez ( btico hasta la mdula), webmaster de este site y para la Facultad de Informtica de Sevilla, por haberme permitido utilizar su servidor para que todo el mundo pueda conocer mi trabajo. Y por supuesto a mi familia, sin cuya comprensin no hubiese podido llevar este proyecto a buen trrmino, porque les he robado gran cantidad del tiempo que debera estar con ellos.

CopyrightsEste documento no tiene, en principio, copyright; aunque si se utiliza alguna informacin en l contenida, agradecra que se citase la procedencia. Por supuesto, cualquier tipo de distribucin del Tutorial est absolutamente permitida, aunque tambin me gustara conocerla. Las fuentes principales de las que he recogido informacin para poder desarrollar este Tutorial de Java corresponden a documentacin de Sun, aunque tambin a otras:q q q q

The Java Tutorial de Sun Microsystems Brewing Java: A Tutorial de Elliot Rusty Harold Revista Electrnica JavaWorld Gamelan, gran fuente de applets

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/fin.html (1 of 2) [13/05/2002 12:51:31]

Tutorial de Java - Final y Agradecimientosq q q q

Revista Electrnica SunWorld Online Faq's de Java en DigitalFocus WWWiz, lista impresionante de libros sobre Java, Internet, etc. Java Programming Resources, de Marty Hall, infinidad de recursos sobre Java

HotJava(tm), Java(tm) y Duke son Marcas Registradas de Sun Microsystems Microsoft es una marca registrada y el logo del Microsoft Internet Explorer es una marca registrada de Microsoft

Tutorial de Java Agustn Froufe ([email protected])

[Home] [Indice]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/fin.html (2 of 2) [13/05/2002 12:51:31]

Tutorial de Java - Navegacin

En la parte inferior de cada una de las pginas que componen el Tutorial de Java, podrs encontrar una barra con tres iconos que permiten el desplazamiento a travs del Tutorial. Esos tres iconos son: Presenta la pgina anterior a la que estamos visualizando en la pantalla del navegador Presenta la pgina siguiente a la que estamos visualizando en la pantalla del navegador Nos desplaza directamente a la pgina de la Tabla de Contenido Icono inactivo, es decir, que aunque se pulse sobre l, no pasar nada

Este es un men con los iconos con igual significado, es decir, que sus acciones con como las de sus semejantes anteriores, pero se encuentra situado inmediatamente debajo del titulo de la pgina, para evitar tener que desplazarse al final de la misma para pasar a la siguiente en secuencia

En la Tabla de Contenido es donde est el ndice del documento totalmente desplegado, con enlaces a cada uno de los captulos y apartados de stos. La navegacin se realiza a dos niveles: a nivel de captulos y a nivel de apartados. Por ejemplo, si estamos en una pgina que corresponde con el encabezado de un captulo, la opcin de ir a la Siguiente pgina nos llevar al siguiente captulo. Sin embargo, si seleccionamos uno de los apartados del captulo en la tabla de cotenido que corresponde al captulo, que se presenta en cada una de las pginas principales de los captulos; se nos presentar la pgina que desarrolla el tema seleccionado en el apartado. Ahora, las opciones de ir al Siguiente o al Anterior, nos harn desplazarnos por los distintos apartados de este captulo. Por ltimo, en cada pgina esta la direccin en que se puede contactar conmigo. Si tienes alguna sugerencia o alguna duda o ves que me he equivocado en algo, no dejes de utilizarla, por favor.

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/navega.html (1 of 2) [13/05/2002 12:51:35]

Tutorial de Java - Navegacin

Tutorial de Java

[Anterior] [Indice] [Siguiente]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/navega.html (2 of 2) [13/05/2002 12:51:35]

Tutorial de Java - Download

DOWNLOAD DEL TUTORIALNo puedes bajarte el Tutorial, porque si has accedido a esta pgina es que lo tienes en tu disco duro o lo ests ejecutando desde un CD-ROM. Si te lo has bajado desde la pgina de la Facultad de Informtica de Sevilla, pues muchas gracias por la confianza que has depositado en mi trabajo, porque el que te lo hayas bajado ya es suficiente agradecimiento. Si lo has conseguido por otros medios, te pedira que como mnima compensacin me enviases un mensaje email dicindome qu te parece el Tutorial y si te ha servido o sirve de algo. Te estar eternamente agradecido tambin, si me indicas cmo ha llegado a ti el Tutorial; por ejemplo, si en un CD-ROM de la Revista Tal, o te lo has bajado de Cual BBS, o has hecho download desde Tal Mirror... de donde sea, si no ha sido va Internet. Nada ms, que disfrutes... 8-)

Tutorial de Java Agustn Froufe ([email protected])

[Home] [Indice]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/ftp.html [13/05/2002 12:51:38]

Tutorial de Java - Origen de Java

ORIGEN DE JAVASun Microsystems, lder en servidores para Internet, uno de cuyos lemas desde hace mucho tiempo es "the network is the computer" (lo que quiere dar a entender que el verdadero ordenador es la red en su conjunto y no cada mquina individual), es quien ha desarrollado el lenguaje Java, en un intento de resolver simultneamente todos los problemas que se le plantean a los desarrolladores de software por la proliferacin de arquitecturas incompatibles, tanto entre las diferentes mquinas como entre los diversos sistemas operativos y sistemas de ventanas que funcionaban sobre una misma mquina, aadiendo la dificultad de crear aplicaciones distribuidas en una red como Internet. He podido leer ms de cinco versiones distintas sobre el origen, concepcin y desarrollo de Java, desde la que dice que este fue un proyecto que rebot durante mucho tiempo por distintos departamentos de Sun sin que nadie le prestara ninguna atencin, hasta que finalmente encontr su nicho de mercado en la aldea global que es Internet; hasta la ms difundida, que justifica a Java como lenguaje de pequeos electrodomsticos. Hace algunos aos, Sun Microsystems decidi intentar introducirse en el mercado de la electrnica de consumo y desarrollar programas para pequeos dispositivos electrnicos. Tras unos comienzos dudosos, Sun decidi crear una filial, denominada FirstPerson Inc., para dar margen de maniobra al equipo responsable del proyecto. El mercado inicialmente previsto para los programas de FirstPerson eran los equipos domsticos: microondas, tostadoras y, fundamentalmente, televisin interactiva. Este mercado, dada la falta de pericia de los usuarios para el manejo de estos dispositivos, requera unos interfaces mucho ms cmodos e intuitivos que los sistemas de ventanas que proliferaban en el momento. Otros requisitos importantes a tener en cuenta eran la fiabilidad del cdigo y la facilidad de desarrollo. James Gosling, el miembro del equipo con ms experiencia en lenguajes de programacin, decidi que las ventajas aportadas por la eficiencia de C++ no compensaban el gran coste de pruebas y depuracin. Gosling haba estado trabajando en su tiempo libre en un lenguaje de programacin que l haba llamado Oak, el cual, an partiendo de la sintaxis de C++, intentaba remediar las deficiencias que iba observando. Los lenguajes al uso, como C o C++, deben ser compilados para un chip, y si se cambia el chip, todo el software debe compilarse de nuevo. Esto encarece mucho los desarrollos y el problema es especialmente acusado en el campo de la electrnica de consumo. La aparicin de un chip ms barato y, generalmente, ms eficiente, conduce inmediatamente a los fabricantes a incluirlo en las nuevas series de sus cadenas de produccin, por pequea que sea la diferencia en precio ya que, multiplicada por la tirada masiva de los aparatos, supone un ahorro considerable. Por tanto, Gosling decidi mejorar las caractersticas de Oak y utilizarlo. El primer proyecto en que se aplic este lenguaje recibi el nombre de proyecto Green y consista en un sistema de control completo de los aparatos electrnicos y el entorno de un hogar. Para ello se construy un ordenadorhttp://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/origen.html (1 of 2) [13/05/2002 12:51:41]

Tutorial de Java - Origen de Java

experimental denominado *7 (Star Seven). El sistema presentaba una interfaz basada en la representacin de la casa de forma animada y el control se llevaba a cabo mediante una pantalla sensible al tacto. En el sistema apareca Duke, la actual mascota de Java. Posteriormente se aplic a otro proyecto denominado VOD (Video On Demand) en el que se empleaba como interfaz para la televisin interactiva. Ninguno de estos proyectos se convirti nunca en un sistema comercial, pero fueron desarrollados enteramente en un Java primitivo y fueron como su bautismo de fuego. Una vez que en Sun se dieron cuenta de que a corto plazo la televisin interactiva no iba a ser un gran xito, urgieron a FirstPerson a desarrollar con rapidez nuevas estrategias que produjeran beneficios. No lo consiguieron y FirstPerson cerr en la primavera de 1994. Pese a lo que pareca ya un olvido definitivo, Bill Joy, cofundador de Sun y uno de los desarrolladores principales del Unix de Berkeley, juzg que Internet podra llegar a ser el campo de juego adecuado para disputar a Microsoft su primaca casi absoluta en el terreno del software, y vio en Oak el instrumento idneo para llevar a cabo estos planes. Tras un cambio de nombre y modificaciones de diseo, el lenguaje Java fue presentado en sociedad en agosto de 1995. Lo mejor ser hacer caso omiso de las historias que pretenden dar carta de naturaleza a la clarividencia industrial de sus protagonistas; porque la cuestin es si independientemente de su origen y entorno comercial, Java ofrece soluciones a nuestras expectativas. Porque tampoco vamos a desechar la penicilina aunque haya sido su origen fruto de la casualidad.

Tutorial de Java

[Anterior] [Indice] [Siguiente]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/origen.html (2 of 2) [13/05/2002 12:51:41]

Tutorial de Java - Caractersticas de Java

CARACTERISTICAS DE JAVALas caractersticas principales que nos ofrece Java respecto a cualquier otro lenguaje de programacin, son: Es SIMPLE: Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las caractersticas menos usadas y ms confusas de stos. C++ es un lenguaje que adolece de falta de seguridad, pero C y C++ son lenguajes ms difundidos, por ello Java se dise para ser parecido a C++ y as facilitar un rpido y fcil aprendizaje. Java elimina muchas de las caractersticas de otros lenguajes como C++, para mantener reducidas las especificaciones del lenguaje y aadir caractersticas muy tiles como el garbage collector (reciclador de memoria dinmica). No es necesario preocuparse de liberar memoria, el reciclador se encarga de ello y como es un thread de baja prioridad, cuando entra en accin, permite liberar bloques de memoria muy grandes, lo que reduce la fragmentacin de la memoria. Java reduce en un 50% los errores ms comunes de programacin con lenguajes como C y C++ al eliminar muchas de las caractersticas de stos, entre las que destacan:q q q q q q

aritmtica de punteros no existen referencias registros (struct) definicin de tipos (typedef) macros (#define) necesidad de liberar memoria (free)

Aunque, en realidad, lo que hace es eliminar las palabras reservadas (struct, typedef), ya que las clases son algo parecido. Adems, el intrprete completo de Java que hay en este momento es muy pequeo, solamente ocupa 215 Kb de RAM. Es ORIENTADO A OBJETOS: Java implementa la tecnologa bsica de C++ con algunas mejoras y elimina algunas cosas para mantener el objetivo de la simplicidad del lenguaje. Java trabaja con sus datos como objetos y con interfaces a esos objetos. Soporta las tres caractersticas propias del paradigma de la orientacin a objetos: encapsulacin, herencia y polimorfismo. Las plantillas de objetos son llamadas, como en C++, clases y sus copias, instancias. Estas instancias, como en C++,http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/carac.html (1 of 8) [13/05/2002 12:51:54]

Tutorial de Java - Caractersticas de Java

necesitan ser construidas y destruidas en espacios de memoria. Java incorpora funcionalidades inexistentes en C++ como por ejemplo, la resolucin dinmica de mtodos. Esta caracterstica deriva del lenguaje Objective C, propietario del sistema operativo Next. En C++ se suele trabajar con libreras dinmicas (DLLs) que obligan a recompilar la aplicacin cuando se retocan las funciones que se encuentran en su interior. Este inconveniente es resuelto por Java mediante una interfaz especfica llamada RTTI (RunTime Type Identification) que define la interaccin entre objetos excluyendo variables de instancias o implementacin de mtodos. Las clases en Java tienen una representacin en el runtime que permite a los programadores interrogar por el tipo de clase y enlazar dinmicamente la clase con el resultado de la bsqueda. Es DISTRIBUIDO: Java se ha construido con extensas capacidades de interconexin TCP/IP. Existen libreras de rutinas para acceder e interactuar con protocolos como http y ftp. Esto permite a los programadores acceder a la informacin a travs de la red con tanta facilidad como a los ficheros locales. La verdad es que Java en s no es distribuido, sino que proporciona las libreras y herramientas para que los programas puedan ser distribuidos, es decir, que se corran en varias mquinas, interactuando. Es ROBUSTO: Java realiza verificaciones en busca de problemas tanto en tiempo de compilacin como en tiempo de ejecucin. La comprobacin de tipos en Java ayuda a detectar errores, lo antes posible, en el ciclo de desarrollo. Java obliga a la declaracin explcita de mtodos, reduciendo as las posibilidades de error. Maneja la memoria para eliminar las preocupaciones por parte del programador de la liberacin o corrupcin de memoria. Tambin implementa los arrays autnticos, en vez de listas enlazadas de punteros, con comprobacin de lmites, para evitar la posibilidad de sobreescribir o corromper memoria resultado de punteros que sealan a zonas equivocadas. Estas caractersticas reducen drsticamente el tiempo de desarrollo de aplicaciones en Java. Adems, para asegurar el funcionamiento de la aplicacin, realiza una verificacin de los byte-codes, que son el resultado de la compilacin de un programa Java. Es un cdigo de mquina virtual que es interpretado por el intrprete Java. No es el cdigo mquina directamente entendible por el hardware, pero ya ha pasado todas las fases del compilador: anlisis de instrucciones, orden de operadores, etc., y ya tiene generada la pila de ejecucin de rdenes. Java proporciona, pues:q q q q

Comprobacin de punteros Comprobacin de lmites de arrays Excepciones Verificacin de byte-codes

Es de ARQUITECTURA NEUTRAL: Para establecer Java como parte integral de la red, el compilador Java compila su cdigo a un fichero objeto de formato independiente de la arquitectura de la mquina en que se ejecutar. Cualquier mquina que tenga el sistema de ejecucin (run-time) puede ejecutar ese cdigo objeto, sin importar en modo alguno la mquina en que ha sidohttp://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/carac.html (2 of 8) [13/05/2002 12:51:54]

Tutorial de Java - Caractersticas de Java

generado. Actualmente existen sistemas run-time para Solaris 2.x, SunOs 4.1.x, Windows 95, Windows NT, Linux, Irix, Aix, Mac, Apple y probablemente haya grupos de desarrollo trabajando en el porting a otras plataformas.

El cdigo fuente Java se "compila" a un cdigo de bytes de alto nivel independiente de la mquina. Este cdigo (bytecodes) est diseado para ejecutarse en una mquina hipottica que es implementada por un sistema run-time, que s es dependiente de la mquina. En una representacin en que tuvisemos que indicar todos los elementos que forman parte de la arquitectura de Java sobre una plataforma genrica, obtendramos una figura como la siguiente:

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/carac.html (3 of 8) [13/05/2002 12:51:54]

Tutorial de Java - Caractersticas de Java

En ella podemos ver que lo verdaderamente dependiente del sistema es la Mquina Virtual Java (JVM) y las libreras fundamentales, que tambin nos permitiran acceder directamente al hardware de la mquina. Adems, habr APIs de Java que tambin entren en contacto directo con el hardware y sern dependientes de la mquina, como ejemplo de este tipo de APIs podemos citar:q q q q q q

Java 2D: grficos 2D y manipulacin de imgenes Java Media Framework : Elementos crticos en el tiempo: audio, video... Java Animation: Animacin de objetos en 2D Java Telephony: Integracin con telefona Java Share: Interaccin entre aplicaciones multiusuario Java 3D: Grficos 3D y su manipulacin

Es SEGURO: La seguridad en Java tiene dos facetas. En el lenguaje, caractersticas como los punteros o el casting implcito que hacen los compiladores de C y C++ se eliminan para prevenir el acceso ilegal a la memoria. Cuando se usa Java para crear un navegador, se combinan las caractersticas del lenguaje con protecciones de sentido comn aplicadas al propio navegador. El lenguaje C, por ejemplo, tiene lagunas de seguridad importantes, como son los errores de alineacin. Los programadores de C utilizan punteros en conjuncin con operaciones aritmticas. Esto le permite al programador que un puntero referencie a un lugar conocido de la memoria y pueda sumar (o restar) algn valor, para referirse a otro lugar de la memoria. Si otros programadores conocen nuestras estructuras de datos pueden extraer informacin confidencial de nuestro sistema. Con un lenguaje como C, se pueden tomar nmeros enteros aleatorios y convertirlos en punteros para luego acceder a la memoria:

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/carac.html (4 of 8) [13/05/2002 12:51:54]

Tutorial de Java - Caractersticas de Java

printf( "Escribe un valor entero: " ); scanf( "%u",&puntero ); printf( "Cadena de memoria: %s\n",puntero ); Otra laguna de seguridad u otro tipo de ataque, es el Caballo de Troya. Se presenta un programa como una utilidad, resultando tener una funcionalidad destructiva. Por ejemplo, en UNIX se visualiza el contenido de un directorio con el comando ls. Si un programador deja un comando destructivo bajo esta referencia, se puede correr el riesgo de ejecutar cdigo malicioso, aunque el comando siga haciendo la funcionalidad que se le supone, despus de lanzar su carga destructiva. Por ejemplo, despus de que el caballo de Troya haya enviado por correo el /etc/shadow a su creador, ejecuta la funcionalidad de ls persentando el contenido del directorio. Se notar un retardo, pero nada inusual. El cdigo Java pasa muchos tests antes de ejecutarse en una mquina. El cdigo se pasa a travs de un verificador de byte-codes que comprueba el formato de los fragmentos de cdigo y aplica un probador de teoremas para detectar fragmentos de cdigo ilegal -cdigo que falsea punteros, viola derechos de acceso sobre objetos o intenta cambiar el tipo o clase de un objeto-. Si los byte-codes pasan la verificacin sin generar ningn mensaje de error, entonces sabemos que:q q q q q

El cdigo no produce desbordamiento de operandos en la pila El tipo de los parmetros de todos los cdigos de operacin son conocidos y correctos No ha ocurrido ninguna conversin ilegal de datos, tal como convertir enteros en punteros El acceso a los campos de un objeto se sabe que es legal: public, private, protected No hay ningn intento de violar las reglas de acceso y seguridad establecidas

El Cargador de Clases tambin ayuda a Java a mantener su seguridad, separando el espacio de nombres del sistema de ficheros local, del de los recursos procedentes de la red. Esto limita cualquier aplicacin del tipo Caballo de Troya, ya que las clases se buscan primero entre las locales y luego entre las procedentes del exterior. Las clases importadas de la red se almacenan en un espacio de nombres privado, asociado con el origen. Cuando una clase del espacio de nombres privado accede a otra clase, primero se busca en las clases predefinidas (del sistema local) y luego en el espacio de nombres de la clase que hace la referencia. Esto imposibilita que una clase suplante a una predefinida. En resumen, las aplicaciones de Java resultan extremadamente seguras, ya que no acceden a zonas delicadas de memoria o de sistema, con lo cual evitan la interaccin de ciertos virus. Java no posee una semntica especfica para modificar la pila de programa, la memoria libre o utilizar objetos y mtodos de un programa sin los privilegios del kernel del sistema operativo. Adems, para evitar modificaciones por parte de los crackers de la red, implementa un mtodo ultraseguro de autentificacin por clave pblica. El Cargador de Clases puede verificar una firma digital antes de realizar una instancia de un objeto. Por tanto, ningn objeto se crea y almacena en memoria, sin que se validen los privilegios de acceso. Es decir, la seguridad se integra en el momento de compilacin, con el nivel de detalle y de privilegio que sea necesario. Dada, pues la concepcin del lenguaje y si todos los elementos se mantienen dentro del estndar marcado por Sun, no hay peligro. Java imposibilita, tambin, abrir ningn fichero de la mquina local (siempre que se realizan operaciones con archivos, stas trabajan sobre el disco duro de la mquina de donde parti el applet), no permite ejecutar ninguna aplicacin nativa de una plataforma e impide que se utilicen otros ordenadores como puente, es decir, nadie puedehttp://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/carac.html (5 of 8) [13/05/2002 12:51:54]

Tutorial de Java - Caractersticas de Java

utilizar nuestra mquina para hacer peticiones o realizar operaciones con otra. Adems, los intrpretes que incorporan los navegadores de la Web son an ms restrictivos. Bajo estas condiciones (y dentro de la filosofa de que el nico ordenador seguro es el que est apagado, desenchufado, dentro de una cmara acorazada en un bunker y rodeado por mil soldados de los cuerpos especiales del ejrcito), se puede considerar que Java es un lenguaje seguro y que los applets estn libres de virus. Respecto a la seguridad del cdigo fuente, no ya del lenguaje, JDK proporciona un desemsamblador de byte-code, que permite que cualquier programa pueda ser convertido a cdigo fuente, lo que para el programador significa una vulnerabilidad total a su cdigo. Utilizando javap no se obtiene el cdigo fuente original, pero s desmonta el programa mostrando el algoritmo que se utiliza, que es lo realmente interesante. La proteccin de los programadores ante esto es utilizar llamadas a programas nativos, externos (incluso en C o C++) de forma que no sea descompilable todo el cdigo; aunque as se pierda portabilidad. Esta es otra de las cuestiones que Java tiene pendientes. Es PORTABLE: Ms all de la portabilidad bsica por ser de arquitectura independiente, Java implementa otros estndares de portabilidad para facilitar el desarrollo. Los enteros son siempre enteros y adems, enteros de 32 bits en complemento a 2. Adems, Java construye sus interfaces de usuario a travs de un sistema abstracto de ventanas de forma que las ventanas puedan ser implantadas en entornos Unix, Pc o Mac. Es INTERPRETADO: El intrprete Java (sistema run-time) puede ejecutar directamente el cdigo objeto. Enlazar (linkar) un programa, normalmente, consume menos recursos que compilarlo, por lo que los desarrolladores con Java pasarn ms tiempo desarrollando y menos esperando por el ordenador. No obstante, el compilador actual del JDK es bastante lento. Por ahora, que todava no hay compiladores especficos de Java para las diversas plataformas, Java es ms lento que otros lenguajes de programacin, como C++, ya que debe ser interpretado y no ejecutado como sucede en cualquier programa tradicional. Se dice que Java es de 10 a 30 veces ms lento que C, y que tampoco existen en Java proyectos de gran envergadura como en otros lenguajes. La verdad es que ya hay comparaciones ventajosas entre Java y el resto de los lenguajes de programacin, y una ingente cantidad de folletos electrnicos que supuran fanatismo en favor y en contra de los distintos lenguajes contendientes con Java. Lo que se suele dejar de lado en todo esto, es que primero habra que decidir hasta que punto Java, un lenguaje en pleno desarrollo y todava sin definicin definitiva, est maduro como lenguaje de programacin para ser comparado con otros; como por ejemplo con Smalltalk, que lleva ms de 20 aos en cancha. La verdad es que Java para conseguir ser un lenguaje independiente del sistema operativo y del procesador que incorpore la mquina utilizada, es tanto interpretado como compilado. Y esto no es ningn contrasentido, me explico, el cdigo fuente escrito con cualquier editor se compila generando el byte-code. Este cdigo intermedio es de muy bajo nivel, pero sin alcanzar las instrucciones mquina propias de cada plataforma y no tiene nada que ver con el pcode de Visual Basic. El byte-code corresponde al 80% de las instrucciones de la aplicacin. Ese mismo cdigo es el que se puede ejecutar sobre cualquier plataforma. Para ello hace falta el run-time, que s es completamente dependiente de la mquina y del sistema operativo, que interpreta dinmicamente el byte-code y aade el 20% de instrucciones que faltaban para su ejecucin. Con este sistema es fcil crear aplicaciones multiplataforma, pero para ejecutarlas es necesario que exista el run-time correspondiente al sistema operativo utilizado.

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/carac.html (6 of 8) [13/05/2002 12:51:54]

Tutorial de Java - Caractersticas de Java

Es MULTITHREADED: Al ser multithreaded (multihilvanado, en mala traduccin), Java permite muchas actividades simultneas en un programa. Los threads (a veces llamados, procesos ligeros), son bsicamente pequeos procesos o piezas independientes de un gran proceso. Al estar los threads contruidos en el lenguaje, son ms fciles de usar y ms robustos que sus homlogos en C o C++. El beneficio de ser miltithreaded consiste en un mejor rendimiento interactivo y mejor comportamiento en tiempo real. Aunque el comportamiento en tiempo real est limitado a las capacidades del sistema operativo subyacente (Unix, Windows, etc.), an supera a los entornos de flujo nico de programa (single-threaded) tanto en facilidad de desarrollo como en rendimiento. Cualquiera que haya utilizado la tecnologa de navegacin concurrente, sabe lo frustrante que puede ser esperar por una gran imagen que se est trayendo. En Java, las imgenes se pueden ir trayendo en un thread independiente, permitiendo que el usuario pueda acceder a la informacin en la pgina sin tener que esperar por el navegador. Es DINAMICO: Java se beneficia todo lo posible de la tecnologa orientada a objetos. Java no intenta conectar todos los mdulos que comprenden una aplicacin hasta el tiempo de ejecucin. Las librera nuevas o actualizadas no paralizarn las aplicaciones actuales (siempre que mantengan el API anterior).

Java tambin simplifica el uso de protocolos nuevos o actualizados. Si su sistema ejecuta una aplicacin Java sobre la red y encuentra una pieza de la aplicacin que no sabe manejar, tal como se ha explicado en prrafos anteriores, Java es capaz de traer automticamente cualquiera de esas piezas que el sistema necesita para funcionar.

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/carac.html (7 of 8) [13/05/2002 12:51:54]

Tutorial de Java - Caractersticas de Java

Java, para evitar que los mdulos de byte-codes o los objetos o nuevas clases, haya que estar trayndolos de la red cada vez que se necesiten, implementa las opciones de persistencia, para que no se eliminen cuando de limpie la cach de la mquina.

Tutorial de Java

[Anterior] [Indice] [Siguiente]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/carac.html (8 of 8) [13/05/2002 12:51:54]

Tutorial de Java - HotJava

HotJavaHotJava, en pocas palabras, es un navegador con soporte Java (Java-enabled), desarrollado en Java. Como cualquier navegador de Web, HotJava puede decodificar HTML estndar y URLs estndares, aunque no soporta completamente el estndar HTML 3.0. La ventaja sobre el resto de navegadores, sin soporte Java, es que puede ejecutar programas Java sobre la red. La diferencia con Netscape, es que tiene implementado completamente los sistemas de seguridad que propone Java, esto significa que puede escribir y leer en el disco local, aunque esto hace disminuir la seguridad, ya que se pueden grabar en nuestro disco programas que contengan cdigo malicioso e introducirnos un virus, por ejemplo. No obstante, el utilizar esta caracterstica de HotJava es decisin del usuario.

Tutorial de Java

[Anterior] [Indice] [Siguiente]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/hot.html [13/05/2002 12:51:57]

Tutorial de Java - Aplicaciones Corporativas

JAVA PARA APLICACIONES CORPORATIVASJava actualmente est en boca de todos, Java e Intranet son las palabras de moda. Pero, surge la pregunta de si esta es una buena tecnologa para desarrollar aplicaciones corporativas. Y la respuesta es afirmativa y voy a proponer argumentos para esa afirmacin. En donde la red sea algo crtico, Java facilita tremendamente la vida de la programacin corporativa. Durante aos, las grandes empresas se han convencido de que la "red" corporativa es la arteria por donde fluye la sangre que mantiene vivo su negocio. Desde el gran servidor de sus oficinas centrales, hasta los servidores de las delegaciones, las estaciones de trabajo de los programadores y la marabunta de PCs, la informacin va fluyendo de unos a otros. Para muchas compaas, la Red es la Empresa. Si esta red no se mantiene sana, los pedidos no llegan, el inventario no se actualiza, el software no se desarrolla adecuadamente, los clientes no estn satisfechos y, fundamentalmente, el dinero no entra. La necesidad de diagnosticar y reducir la arterioesclerosis de la red, hace que se estn inyectando continuamente nuevas metodologas que subsanen este grave problema. Es Java la medicina? Est claro que cuando vemos un cepillo animado limpiando los dientes, cubos movindose en 3-D, o una banda de gatos locos en applets de Java, nos convencemos de que es el lenguaje idneo para Internet. Pero, qu pasa con las aplicaciones corporativas, sera una buena tecnologa all donde la red es el punto crtico? Vamos a intentar responder comparando las capacidades de Java contra la lista de necesidades de la red corporativa.

Desarrollo rpido de aplicacionesHace aos, se deca que los programadores pronto desapareceran. Los generadores automticos de programas, eliminaran a los generadores humanos y el mundo sera un lugar mejor para vivir. Desafortunadamente, quienes decan esto no tuvieron en cuenta una acelerada demanda de software de calidad para muy diferentes aplicaciones. Sin embargo, la tecnologa de objetos pronto vino a intentar facilitar la tarea, adoptando el modelo de "generar parte de un programa", as, generando la parte bsica de un programa (los objetos), se podra conectar con otras partes para proporcionar diferentes utilidades al usuario. El lenguaje C++ es una buena herramienta, pero no cumple totalmente la premisa. Visual Basic y NextStep, se acercan cada vez ms al poder de los objetos. Java facilita la creacin de entornos de desarrollo-aplicaciones de modo similar, pero adems es flexible, poderoso y efectivo. Los programadores ahora disponen de herramientas de programacin de calidad beta, que apuntan hacia esa meta, como son el Java WorkShop de SunSoft, el entorno Java de Borland, el Caf de Symantec, y pronto, herramientas ms sofisticadas como Netcode o FutureTense. Esto proporciona una gran progresin a los entornos de desarrollo Java.

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/corpora.html (1 of 5) [13/05/2002 12:52:50]

Tutorial de Java - Aplicaciones Corporativas

Aplicaciones efectivas y eficientesLas aplicaciones que se crean en grandes empresas deben ser ms efectivas que eficientes; es decir, conseguir que el programa funcione y el trabajo salga adelante es ms importante que el que lo haga eficientemente. Esto no es una crtica, es una realidad de la programacin corporativa. Al ser un lenguaje ms simple que cualquiera de los que ahora estn en el cajn de los programadores, Java permite a stos concentrarse en la mecnica de la aplicacin, en vez de pasarse horas y horas incorporando APIs para el control de las ventanas, controlando minuciosamente la memoria, sincronizando los ficheros de cabecera y corrigiendo los agnicos mensajes del linker. Java tiene su propio toolkit para interfaces, maneja por s mismo la memoria que utilice la aplicacin, no permite ficheros de cabecera separados (en aplicaciones puramente Java) y solamente usa enlace dinmico. Muchas de las implementaciones de Java actuales son puros intrpretes. Los byte-codes son interpretados por el sistema run-time de Java, la Mquina Virtual Java (JVM), sobre el ordenador del usuario. Aunque ya hay ciertos proveedores que ofrecen compiladores nativos Just-In-Time (JIT). Si la Mquina Virtual Java dispone de un compilador instalado, las secciones (clases) del byte-code de la aplicacin se compilarn hacia la arquitectura nativa del ordenador del usuario. Los programas Java en ese momento rivalizarn con el rendimiento de programas en C++. Los compiladores JIT no se utilizan en la forma tradicional de un compilador; los programadores no compilan y distribuyen binarios Java a los usuarios. La compilacin JIT tiene lugar a partir del byte-code Java, en el sistema del usuario, como una parte (opcional) del entorno run-time local de Java. Muchas veces, los programadores corporativos, ansiosos por exprimir al mximo la eficiencia de su aplicacin, empiezan a hacerlo demasiado pronto en el ciclo de vida de la aplicacin. Java permite algunas tcnicas innovadoras de optimizacin. Por ejemplo, Java es inherentemente multithreaded, a la vez que ofrece posibilidades de multithread como la clase Thread y mecanismos muy sencillos de usar de sincronizacin; Java en s utiliza threads. Los desarrolladores de compiladores inteligentes pueden utilizar esta caracterstica de Java para lanzar un thread que compruebe la forma en que se est utilizando la aplicacin. Ms especficamente, este thread podra detectar qu mtodos de una clase se estn usando con ms frecuencia e invocar a sucesivos niveles de optimizacin en tiempo de ejecucin de la aplicacin. Cuanto ms tiempo est corriendo la aplicacin o el applet, los mtodos estarn cada vez ms optimizados (Guava de Softway es de este tipo). Si un compilador JIT est embebido en el entorno run-time de Java, el programador no se preocupa de hacer que la aplicacin se ejecute ptimamente. Siempre he pensado que en los Sistemas Operativos tendra que aplicarse esta filosofa; un optimizador progresivo es un paso ms hacia esta idea.

Portabilidad para programador y programaEn una empresa de relativo tamao hay una plyade diferente de ordenadores. Probablemente nos encontremos con estaciones de trabajo Sun para el desarrollo de software, hordas de PCs para cada empleado, algn Mac en el departamento de documentacin, una estacin de trabajo HP en administracin y una estacin SGI en la sala de demos. Desarrollar aplicaciones corporativas para un grupo tan diferente de plataformas en excesivamente complejo y caro. Hasta ahora era complicado convencer a los programadores de cada arquitectura que utilizasen un API comn para reducir el coste de las aplicaciones. Con un entorno run-time de Java portado a cada una de las arquitecturas de las plataformas presentes en la empresa y una buena librera de clases ("packages" en Java), los programadores pueden entenderse y encontrar muy interesante trabajar con Java. Esta posibilidad har tender a los programadores hacia Java, justo donde otros intentos anteriores

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/corpora.html (2 of 5) [13/05/2002 12:52:50]

Tutorial de Java - Aplicaciones Corporativas

con entornos universales (como Galaxy o XVT) han fracasado. Estos APIs eran simplemente inadecuados, no orientados a redes y, verdaderamente, pesados. Una vez que los programas estn escritos en Java, otro lado interesante del asunto es que los programadores tambin son portables. El grupo de programadores de la empresa puede ahora enfrentarse a un desarrollo para cualquiera de las plataformas. La parte del cliente y del servidor de una aplicacin estarn ahora escritas en el mismo lenguaje. Ya no ser necesario tener un grupo que desarrolle en Solaris en del departamento de I+D, programadores trabajando sobre Visual Basic en el departamento de documentacin y programadores sobre GNU en proyectos especiales; ahora todos ellos podrn estar juntos y formar el grupo de software de la empresa.

Costes de desarrolloEn contraste con el alto coste de los desarrollos realizados sobre estaciones de trabajo, el coste de creacin de una aplicacin Java es similar al de desarrollar sobre un PC. Desarrollar utilizando un software caro para una estacin de trabajo (ahora barata) es un problema en muchas empresas. La eficiencia del hardware y el poco coste de mantenimiento de una estacin de trabajo Sun, por ejemplo, resulta muy atractivo para las empresas; pero el coste adicional del entorno de desarrollo con C++ es prohibitivo para la gran mayora de ellas. La llegada de Java e Intranet reducen considerablemente estos costes. Las herramientas Java ya no estn en el entorno de precios de millones de pesetas, sino a los niveles confortables de precio de las herramientas de PCs. Y con el crecimiento cada da mayor de la comunidad de desarrolladores de software freeware y shareware que incluso proporcionan el cdigo fuente, los programadores corporativos tienen un amplio campo donde moverse y muchas oportunidades de aprender y muchos recursos a su disposicin. El xito que Internet ha proporcionado a los equipos de software corporativos es un regalo. El precio del software es ahora el mismo para un poderoso equipo corriendo Unix que para un PC. Incluso Netscape tiene al mismo precio la versin Unix de su servidor Web SuiteSpot que la versin PC/NT. Esta es la filosofa de precios que parece ser ser la que se siga con las herramientas basadas en Java.

Mantenimiento y soporteUn problema bien conocido que ocurre con el software corporativo es la demanda de cuidados y realimentacin. Java no es, ciertamente, la cura para la enfermedad del mantenimiento, pero tiene varias caractersticas que harn la vida del enfermero ms fcil. Uno de los componentes del JDK es javadoc. Si se usan ciertas convenciones en el cdigo fuente Java (como comenzar un comentario con /** y terminarlo con */), javadoc se puede fcilmente generar pginas HTML con el contenido de esos comentarios, que pueden visualizarse en cualquier navegador. La documentacin del API de Java ha sido creada de este modo. Esto hace que el trabajo de documentar el cdigo de nuevas clases Java sea trivial. Otro gran problema del desarrollador corporativo es la creacin y control de makefiles. Leerse un makefile es como estar leyendo la historia de empresa. Normalmente se pasan de programador a programador, quitando la informacin que no es esencial, siempre que se puede. Esto hace que muchos de los makefiles de las aplicaciones contengan docenas de libreras, una mirada de ficheros de cabecera y ultra-confusos macros. Es como mirar en el estmago de la ballena de Jons.

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/corpora.html (3 of 5) [13/05/2002 12:52:50]

Tutorial de Java - Aplicaciones Corporativas

Java reduce las dependencia de complejos makefiles drsticamente. Primero, no hay ficheros de cabecera. Java necesita que todo el cdigo fuente de una clase se encuentre en un solo fichero. Java tiene la inteligencia de make en el propio lenguaje para simplificar la compilacin de byte-codes. Por ejemplo: public class pepe { Guitarra flamenca ; } public class guitarra { } // Fichero: pepe.java

// Fichero: guitarra.java

% javac -verbose pepe.java [parsed pepe.java in 720ms] [loaded C:\JAVA\BIN\..\classes\java\lang\Object.class in 220ms] [checking class pepe] [parsed .\\Guitarra.java in 50ms] [wrote pepe.class] [checking class Guitarra] [wrote .\\Guitarra.class] [done in 2300ms] El compilador Java se da cuenta de que necesita compilar el fichero guitarra.java. Ahora vamos a forzarlo a que recompile pepe.java sin cambiar guitarra.java, podremos comprobar que el compilador de byte-code Java no recompila innecesariamente el fichero guitarra.java. % javac -verbose pepe.java [parsed pepe.java in 440ms] [loaded C:\JAVA\BIN\..\classes\java\lang\Object.class in 160ms] [checking class pepe] [loaded .\\Guitarra.java in 0ms] [wrote pepe.class] [done in 1860ms] Ahora, si modificamos guitarra.java (aadiendo, por ejemplo, otro miembro a la clase) y compilamos pepe.java, el compilador Java se dar cuenta de que debe recompilar tanto pepe.java como guitarra.java % javac -verbose pepe.java [parsed pepe.java in 710ms] [loaded C:\JAVA\BIN\..\classes\java\lang\Object.class in 220ms] [checking class pepe] [parsed .\\Guitarra.java in 0ms] [wrote pepe.class] [checking class Guitarra] [wrote .\\Guitarra.class] [done in 2640ms] En el libro Just Java de Peter van der Linden hay un captulo excelente acerca del compilador de Java, si tienes oportunidad, no dejes de leerlo.

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/corpora.html (4 of 5) [13/05/2002 12:52:50]

Tutorial de Java - Aplicaciones Corporativas

AprendizajeSi la empresa est llena de programadores de C++ con alguna experiencia en el manejo de librera grficas, aprendern rpidamente lo esencial de Java. Si el equipo de ingenieros no conoce C++, pero maneja cualquier otro lenguaje de programacin orientada a objetos, les llevar pocas semanas dominar la base de Java. Lo que s que no es cierto es que haya que aprender C++ antes de aprender Java. Si los ingenieros de la empresa no conocen ningn lenguaje orientado a objetos, s que tienen que aprender los fundamentos de esta tecnologa antes de nada, y luego aplicarlos a la programacin con Java. El anlisis y diseo orientado a objetos debe ser comprendido antes de intentar nada con Java. Los programadores de Java sin un fondo de conocimientos de OOA/D producirn cdigo pobre. Adems, los libros sobre Java crecen como la espuma, ya hay ms de 25 publicados, y si buscas "Progamming in Java" en la Red, encontrars 312 Web sites, y 30 ms dedicados a "Learning Java". Y si esto, evidentemente, no es el sustituto de un instructor humano, hay ya varias empresas que ofrecen enseanza de Java, entre ellas, Sun.

ResumenEn base a los argumentos que acabamos de exponer, podra una empresa utilizar Java para sus aplicaciones crticas? En este instante, sera suficiente un acercamiento a Java. Porque ms importante que la eleccin de Java o cualquier otro lenguaje de programacin es un buen diseo de la arquitectura de la aplicacin. Disear la aplicacin para que est distribuida entre servidores y clientes, y la lnea de partida debe ser el diseo modular. Algunas sugerencias para adoptar Java como tecnologa corporativa, seran: 1. Usar Java en el desarrollo de la interface del cliente; Java es suficientemente estable para desarrollar una interface portable. Utilizar herramientas de programacin ms estables en los servidores, porque son la parte crtica. 2. Portar o crear un servidor no-crtico en Java, de forma que tanto cliente como servidor estn escritos en Java. 3. Utilizar Java en proyectos de envergadura tanto en el cliente como en el servidor, para valorar la efectividad de Java. Intranet est creciendo actualmente ms rpido que Internet. Las organizaciones corporativas estn adoptando la metodologa Internet para proporcionar soluciones a sus usuarios y clientes. Java tiene todas las cartas para ser una herramienta de inestimable valor en el desarrollo de aplicaciones corporativas.

Tutorial de Java

[Anterior] [Indice] [Siguiente]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/corpora.html (5 of 5) [13/05/2002 12:52:50]

Tutorial de Java - Instalacin del JDK

1. 2. 3. 4.

Windows 95 Solaris Linux Compilacin sin JDK

En el instante en que estoy escribiendo esto, Java todava no es un producto comercial. No todas las mquinas disponen de la versin del Java Development Kit para ejecutarse en ellas. Por ello, solamente comentar la instalacin de JDK en Solaris, Windows 95 y Linux. Actualmente ya hay entornos de desarrollo integrados completos para Java, diferentes del JDK de Sun. Symantec dispone de un compilador de Java para Windows 95 y Windows NT, con las ventajas del aumento de velocidad de proceso y capacidades multimedia que esto proporciona, Symantec Caf. Borland tambin est trabajando en ello y la nueva versin de su entorno de desarrollo soporta Java. Sun ha lanzado la versin comercial de su propio entorno de desarrollo para Java, el Java Workshop, enteramente escrito en Java. Y Microsoft ha puesto en el mercado Visual J++, que sigue el estilo de todas sus herramientas de desarrollo. No obstante, trataremos solamente el JDK, que hasta el momento es lo ms conocido. El entorno bsico del JDK de Java que proporciona Sun est formado por herramientas en modo texto, que son: java, intrprete que ejecuta programas en byte-code. javac, compilador de Java que convierte el cdigo fuente en byte-code. javah, crea ficheros de cabecera para implementar mtodos para cualquier clase. javap, es un descompilador de byte-code a cdigo fuente Java. javadoc, es un generador automtico de documentos HTML a partir del cdigo fuente Java. javaprof, es un profiler para aplicaciones de un solo thread. HotJava, es un navegador Web escrito completamente en Java. El entorno habitual pues, consiste en un navegador que pueda ejecutar applets, un compilador que convierta el cdigo fuente Java a byte-code y el intrprete Java para ejecutar los programas. Estos son los componenetes bsicos para desarrollar algo en Java. No obstante se necesita un editor para escribir el cdigo fuente, y no son estrictamente necesarias otras herramientas como el debugger, un entorno visual, la documentacin o un visualizador de jerarqua de clases. Tan es as, que disponiendo del navegador Netscape 2.0 no se necesita ni tan siquiera el JDK (a peticin de varios amigos que disfrutan del uso de Linux pero no disponen de soporte ELF para poder utilizar el JDK portado por Randy Chapman, leshttp://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/instala.html (1 of 5) [13/05/2002 12:52:58]

Tutorial de Java - Instalacin del JDK

indicar como conseguir utilizar el compilador embebido en Netscape).

WindowsLa versin del JDK para Windows es un archivo autoextraible. Se necesitan alrededor de 6 Mb de espacio libre en disco. Ejecutar el fichero, que desempaquetar el contenido del archivo. El directorio donde se instale no es importante, pero supondremos que se instala en el raiz del disco C:, en cuyo caso los archivos colgarn de c:\java. Es necesario aadir c:\java\bin a la variable de entorno PATH. Adems de los ficheros java, el JDK incluye dos libreras dinmicas, MSVCRT20.DLL y MFC30.DLL, que se instalarn en el directorio de Java. Si tienes ninguna copia de estos ficheros en tu ordenador (probablemente en el directorio system de Windows) copia estos ficheros en el directorio c:\java\bin. Si estos ficheros ya estn en tu ordenador, elimina las copias extra que instala el JDK.

SolarisLa versin del JDK para Solaris es un fichero tar comprimido. Se necesitan alrededor de 9 Mb de disco para descomprimir el JDK, aunque el doble de espacio sera una cifra ms cmoda. Ejecutar los siguientes comandos: % uncompress JDK-beta-solaris2-sparc.tar.Z % tar xvf JDK-beta-solaris2-sparc-tar Puedes descomprimir el archivo en tu directorio home, o, si tienes privilegios de supervisor, en algn sitio ms conveniente de /usr/local para que todos los usuarios tengan acceso a los ficheros. Sin embargo, los privilegios del supervisor no son necesarios para instalar y ejecutar Java. Por simplicidad, supondr que has descomprimido el JDK en /usr/local, aunque el path completo donde se haga no tiene relevancia (tambin es posible colocarlo en /opt que es donde residen todas las aplicaciones de Solaris). Si lo has colocado en un sitio diferente, simplemente sustituye /usr/local por ese directorio (si lo has descomprimido en tu home, puedes utilizar ~/java y ~/hotjava, en vez del path completo). Es necesario aadir /usr/local/java/bin a la variable de entorno PATH. Utiliza el siguiente comando (suponiendo que tengas el shell csh o tcsh): set path=($PATH /usr/local/java/bin) Tambin puedes aadir esta lnea al final del fichero .profile y .cshrc, y ya tienes el sistema listo para ejecutar applets. Si quieres desembarazarte de la ventana que aparece cada vez que lances el appletviewer con la licencia de Sun, crea un directorio que se llame .hotjava en el directorio java/bin y ya no volvers a verla.

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/instala.html (2 of 5) [13/05/2002 12:52:58]

Tutorial de Java - Instalacin del JDK

LinuxNecesitas un kernel que soporte binarios ELF, por lo tanto tu Linux debe ser la versin 1.2.13 o superior, las anteriores tienen un bug que hacen que javac no funcione. Necesitas tambin Netscape, versin 2.0b4 o posterior. Sobre la versin 1.2.13 del kernel de Linux, hay que seguir los pasos que indico para conseguir que JDK funcione:q

q

Bajarse el JDK, linux.jdk-1.0-try4.static-motif.tar.gz y linux.jdk-1.0-try1.common.tar.gz a /usr/local, descomprimirlo y hacer 'tar xvf' En el fichero .java_wrapper (si no existe, crearlo) cambiar las variable J_HOME y PRG, para que queden como: J_HOME=/usr/local/java PRG=/usr/local/java/bin

q

q

q

q

q

Bajarse la librera libc.5.2.18.bin.tar.gz a /, descomprimirla, hacer 'tar xvf'. Asegurarse de que /lib/libc.so.5 es un link simblico a este nuevo fichero. Si no lo es, hacer el /lib 'ln -s libc.so.5.2.18 libc.so.5' Bajarse ld-so.1.7.14.tar.gz a un directorio temporal, descomprimirlo y hacer 'tar xvf'. Ejecutar 'instldso.sh' y eliminar el directorio temporal. Aadir /usr/local/java a la variable de entorno PATH. Si se desea que est fijada para todos los usuarios, incorporar el directorio a la varible PATH que se fija en el fichero /etc/profile. Bajarse netscape-v202-export.i486-unknown-linux.tar.z a /usr/local/netscape, descomprimirlo y hacer 'tar xvf' Crear un link en /usr/local/bin a /usr/local/netscape/netscape

Esto debera ser suficiente para compilar cualquier cosa en Java/Linux. En caso de tener problemas, es el momento de recurrir a las FAQ. Siguiendo los pasos indicados ya se puede ejecutar el ejemplo del Tic-Tac-Toe que propone la hoja de instalacin que Sun ha incluido en todas sus versiones y que en Linux consistira en cambiarse al directorio de la demo: % cd /usr/local/java/demo/TicTacToe ejecutar el visualizador de applets sobre la pgina html: % appletviewer example1.html y a jugar a las tres en raya. Por cierto, que el algoritmo que usa el ordenador est falseado por lo que es posible ganarle.

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/instala.html (3 of 5) [13/05/2002 12:52:58]

Tutorial de Java - Instalacin del JDK

Compilacin sin JDKParece raro, pero se puede conseguir. Lo nico necesario es el navegador Netscape 2.0. Este navegador, junto con la mquina virtual Java (JVM) y el sistema run-time, tiene un compilador Java. Si no se dispone del Java Development Kit (JDK), que no est disponible para todas las plataformas, pero s de la versin de Netscape para nuestra plataforma, aqu van los pasos a seguir para utilizar el compilador de Java embebido en Netscape. Como necesito partir de algn punto para tomarlo como referencia, voy a suponer que estamos sobre Linux y que vamos a prescindir del JDK de Randy Chapman. Lo que habra que hacer sera lo siguiente. Primero. Instalar Netscape en el ordenador. Asegurarse de entender perfectamente y leerse hasta el final el fichero README, para seguir las instrucciones especficas de la instalacin de Netscape en la plataforma y que Netscape funcione perfectamente. En nuestro caso, en que vamos a intentar compilar cdigo Java con Netscape sobre Linux, la pieza clave es la situacin del fichero moz2_0.zip, que en mi mquina est en /usr/local/netscape/java/classes. Segundo. Extraer de una copia cualquiera del JDK (aunque sea de otra plataforma), el fichero java/lib/classes.zip y guardarlo en el mismo sitio que el fichero moz2_0.zip; esta localizacin no es necesaria, pero simplifica la estructura. Tercero. Fijar la variable de entorno CLASSPATH para que Netscape pueda encontrar sus propias clases adems de las clases del Java de Sun. Asegurarse de incluir el "directorio actual", para poder compilar a la vez que se usan los ficheros .zip de Netscape y Sun. Por ejemplo: setenv CLASSPATH .:/usr/local/netscape/java/classes/moz2_0.zip : /usr/local/netscape/java/classes/classes.zip Cuarto. Compilar el cdigo Java (applet o aplicacin) con el comando: netscape -java sun.tools.javac.Main [fichero].java (sustituir el nombre del fichero con el cdigo Java en vez de [fichero]). Esto convertir el cdigo fuente Java en byte-code, generndose el archivo [fichero].class. Quinto. Comprobar si se puede ejecutar la aplicacin con el comando: netscape -java [clase] (sustituir el nombre de la clase de la aplicacin -la que contiene la rutina main- en vez de [clase]).

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/instala.html (4 of 5) [13/05/2002 12:52:58]

Tutorial de Java - Instalacin del JDK

Sexto. Si se ha compilado un applet Java, construir una pgina html que lo utilice para visualizarlo con el navegador en su forma normal. O tambin se puede visualizar utilizando el appletviewer, ejecutando: netscape -java sun.applet.AppletViewer [clase] Desgraciadamente, la sentencia anterior no parece funcionar en todos los sistemas. Hay amigos mos que no han sido capaces de visualizar applets con este mtodo. Para aprovechar el tiempo, se puede crear un script que recoja los pasos 3, 4 y 6. Si estamos utilizando el csh, el contenido del script sera: #/bin/csh -f setenv CLASSPATH .:/usr/local/netscape/java/classes/moz2_0.zip: /usr/local/netscape/java/classes/classes.zip netscape -java sun.tools.javac.Main $1 y lo almacenaramos como javac. Se ha de hacer el script ejecutable y cambiar /bin/csh por el path completo donde est situado el csh. De forma semejante podemos definir el intrprete java y el appletviewer, sustituyendo la lnea adecuada de llamada a Netscape.

Tutorial de Java

[Anterior] [Indice] [Siguiente]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Intro/instala.html (5 of 5) [13/05/2002 12:52:58]

Tutorial de Java - Conceptos Bsicos

1. Programacin en Java r Comentarios r Identificadores 1. Palabras clave 2. Palabras reservadas r Literales r Arrays r Operadores r Separadores 2. Control del Flujo r Sentencias de Salto r Sentencias de Bucle r Excepciones r Control General del Flujo 3. Clases r Tipos de Clases 4. Variables y Mtodos de Instancia r Ambito de una Variable r Mtodos y Constructores r Finalizadores 5. Alcance de Objetos y Reciclado de Memoria 6. Herencia 7. Control de Acceso 8. Variables y Mtodos Estticos 9. this y super 10. Clases Abstractas 11. Interfaces 12. Mtodos Nativos 13. Paquetes r Importhttp://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Cap1/concept.html (1 of 2) [13/05/2002 12:53:03]

Tutorial de Java - Conceptos Bsicos

Paquetes de Java 14. Referencias r Punteros r Referencias en C++ r Referencias en Java r Referencias y Arrays r Referencias y Listas r Punteros C/C++ y Referencias Javar

Ahora que ya hemos visto a grandes rasgos lo que Java puede ofrecernos, y antes de entrar a saco en la generacin de nuestro primer cdigo Java, vamos a echar un vistazo al lenguaje Java en s. Lo bsico resultar muy familiar a los que tengan conocimientos de C/C++. Los programadores con experiencia en otros lenguajes procedurales reconocern la mayor parte de las construcciones. Esperemos que este captulo no resulte demasiado intenso, no obstante, s debe estar presente, porque ms de una vez recurriremos a l como referencia. En posteriores captulos profundizaremos sobre aspectos de la programacin en Java por los que aqu pasaremos de puntillas e iremos presentando ejemplos de cdigo de cada uno de esos aspectos de la programacin en Java.

Tutorial de Java

[Anterior] [Indice] [Siguiente]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Cap1/concept.html (2 of 2) [13/05/2002 12:53:03]

Tutorial de Java - Programacin en Java

PROGRAMACION EN JAVACuando se programa en Java, se coloca todo el cdigo en mtodos, de la misma forma que se escriben funciones en lenguajes como C.

ComentariosEn Java hay tres tipos de comentarios: // comentarios para una sola lnea /* comentarios de una o ms lneas */ /** comentario de documentacin, de una o ms lneas */ Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del mismo modo. Los comentarios de documentacin, colocados inmediatamente antes de una declaracin (de variable o funcin), indican que ese comentario ha de ser colocado en la documentacin que se genera automticamente cuando se utiliza la herramienta de Java, javadoc. Dichos comentarios sirven como descripcin del elemento declarado permitiendo generar una documentacin de nuestras clases escrita al mismo tiempo que se genera el cdigo. En este tipo de comentario para documentacin, se permite la introduccin de algunos tokens o palabras clave, que harn que la informacin que les sigue aparezca de forma diferente al resto en la documentacin.

IdentificadoresLos identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar. En Java, un identificador comienza con una letra, un subrayado (_) o un smbolo de dlar ($). Los siguientes caracteres pueden ser letras o dgitos. Se distinguen las maysculas de las minsculas y no hay longitud mxima. Seran identificadores vlidos:

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Cap1/progra.html (1 of 5) [13/05/2002 12:53:23]

Tutorial de Java - Programacin en Java

identificador nombre_usuario Nombre_Usuario _variable_del_sistema $transaccion y su uso sera, por ejemplo: int contador_principal; char _lista_de_ficheros; float $cantidad_en_Ptas; Palabras clave Las siguientes son las palabras clave que estn definidas en Java y que no se pueden utilizar como indentificadores: abstract boolean break byte byvalue case catch char class const continue default do double else extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static super switch synchronized this threadsafe throw transient true try void while

Palabras Reservadas Adems, el lenguaje se reserva unas cuantas palabras ms, pero que hasta ahora no tienen un cometido especfico. Son: cast operator future outer generic rest inner var

LiteralesUn valor constante en Java se crea utilizando una representacin literal de l. Java utiliza cinco tipos de elementos: enteros, reales en coma flotante, booleanos, caracteres y cadenas, que se pueden poner en cualquier lugar del cdigo fuente de Java. Cada uno de estos literales tiene un tipo correspondiente asociado con l. Enteros: byte short int long Por ejemplo: 8 bits 16 bits 32 bits 64 bits 21 077 complemento complemento complemento complemento 0xDC00 a dos a dos a dos a dos

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Cap1/progra.html (2 of 5) [13/05/2002 12:53:23]

Tutorial de Java - Programacin en Java

Reales en coma flotante: float double Por ejemplo: Booleanos: true false Caracteres: Por ejemplo: Cadenas: Por ejemplo: "Esto es una cadena literal" a \t \u???? [????] es un nmero unicode 32 bits 64 bits 3.14 2e12 IEEE 754 IEEE 754 3.1E12

ArraysSe pueden declarar en Java arrays de cualquier tipo: char s[]; int iArray[]; Incluso se pueden construir arrays de arrays: int tabla[][] = new int[4][5]; Los lmites de los arrays se comprueban en tiempo de ejecucin para evitar desbordamientos y la corrupcin de memoria. En Java un array es realmente un objeto, porque tiene redefinido el operador []. Tiene una funcin miembro: length. Se puede utilizar este mtodo para conocer la longitud de cualquier array. int a[][] = new int[10][3]; a.length; /* 10 */ a[0].length; /* 3 */ Para crear un array en Java hay dos mtodos bsicos. Crear un array vaco: int lista[] = new int[50];

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Cap1/progra.html (3 of 5) [13/05/2002 12:53:23]

Tutorial de Java - Programacin en Java

o se puede crear ya el array con sus valores iniciales: String nombres[] = { "Juan","Pepe","Pedro","Maria" }; Esto que es equivalente a: String nombres[]; nombres = new String[4]; nombres[0] = new String( nombres[1] = new String( nombres[2] = new String( nombres[3] = new String(

"Juan" ); "Pepe" ); "Pedro" ); "Maria" );

No se pueden crear arrays estticos en tiempo de compilacin: int lista[50]; // generar un error en tiempo de compilacin

Tampoco se puede rellenar un array sin declarar el tamao con el operador new: int lista[]; for( int i=0; i < 9; i++ ) lista[i] = i; Es decir, todos los arrays en Java son estticos. Para convertir un array en el equivalente a un array dinmico en C/C++, se usa la clase vector, que permite operaciones de insercin, borrado, etc. en el array.

OperadoresLos operadores de Java son muy parecidos en estilo y funcionamiento a los de C. En la siguiente tabla aparecen los operadores que se utilizan en Java, por orden de precedencia: . ++ ! * + > > ^ || op= () instanceof % >>> =

==

!=

(*=

/=

%=

+=

-=

etc.)

,

Los operadores numricos se comportan como esperamos:http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Cap1/progra.html (4 of 5) [13/05/2002 12:53:23]

Tutorial de Java - Programacin en Java

int + int = int Los operadores relacionales devuelven un valor booleano. Para las cadenas, se pueden utilizar los operadores relacionales para comparaciones adems de + y += para la concatenacin: String nombre = "nombre" + "Apellido"; El operador = siempre hace copias de objetos, marcando los antiguos para borrarlos, y ya se encargar el garbage collector de devolver al sistema la memoria ocupada por el objeto eliminado.

SeparadoresSlo hay un par de secuencias con otros caracteres que pueden aparecer en el cdigo Java; son los separadores simples, que van a definir la forma y funcin del cdigo. Los separadores admitidos en Java son: () - parntesis. Para contener listas de parmetros en la definicin y llamada a mtodos. Tambin se utiliza para definir precedencia en expresiones, contener expresiones para control de flujo y rodear las conversiones de tipo. {} - llaves. Para contener los valores de matrices inicializadas automticamente. Tambin se utiliza para definir un bloque de cdigo, para clases, mtodos y mbitos locales. [] - corchetes. Para declarar tipos matriz. Tambin se utiliza cuando se referencian valores de matriz. ; - punto y coma. Separa sentencias. , - coma. Separa identificadores consecutivos en una declaracin de variables. Tambin se utiliza para encadenar sentencias dentro de una sentencia for. . - punto. Para separar nombres de paquete de subpaquetes y clases. Tambin se utiliza para separar una variable o mtodo de una variable de referencia.

Tutorial de Java

[Anterior] [Indice] [Siguiente]

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Cap1/progra.html (5 of 5) [13/05/2002 12:53:23]

Tutorial de Java - Control de Flujo

CONTROL DE FLUJOMuchas de las sentencias de control del flujo del programa se han tomado del C:

Sentencias de Saltoif/else if( Boolean ) { sentencias; } else { sentencias; } switch switch( expr1 ) { case expr2: sentencias; break; case expr3: sentencias; break; default: sentencias; break; }

Sentencias de BucleBucles for for( expr1 inicio; expr2 test; expr3 incremento ) { sentencias; }

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Cap1/flujo.html (1 of 3) [13/05/2002 12:53:30]

Tutorial de Java - Control de Flujo

El siguiente trocito de cdigo Java que dibuja varias lneas en pantalla alternando sus colores entre rojo, azul y verde. Este fragmento sera parte de una funcin Java (mtodo): int contador; for( contador=1; contador VERTICAL || orient < HORIZONTAL ) throw new IllegalArgumentException( "Orientacin ilegal" ); if( orientacion != orient ) {

http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Cap4/cpropio.html (1 of 5) [13/05/2002 12:55:56]

Tutorial de Java - Diseo de Componentes Propios

orientacion = orient; sepDim = new Dimension( sepDim.height,sepDim.width ); invalidate(); } } public Dimension preferredSize() { return sepDim; } public Dimension minimumSize() { return sepDim; } public void paint( Graphics g ) { int x1,y1,x2,y2; Rectangle bbox = bounds(); Color c = getBackground(); Color brillo = c.brighter(); Color oscuro = c.darker(); if( orientacion == HORIZONTAL ) { x1 = 0; x2 = bbox.width - 1; y1 = y2 = bbox.height/2 - 1; } else { x1 = x2 = bbox.width/2 - 1; y1 = 0; y2 = bbox.height - 1; } g.setColor( oscuro ); g.drawLine( x1,y1,x2,y2 ); g.setColor( brillo ); if( orientacion == HORIZONTAL ) g.drawLine( x1,y1+1,x2,y2+1 ); else g.drawLine( x1+1,y1,x2+1,y2 ); } } El cdigo que mostramos a continuacin EjSeparador.java, muestra un ejemplo de uso de nuestro separador recin creado: import java.awt.*;http://sunsite.dcc.uchile.cl/SunSITE/java/docs/JavaTut/Cap4/cpropio.html (2 of 5) [13/05/2002 12:55:56]

Tutorial de Java - Diseo de Componentes Propios

import java.applet.Applet; public class EjSeparador extends Applet { public final static int HORIZONTAL = 0; public final stati