core java español

Upload: atomxd

Post on 18-Oct-2015

95 views

Category:

Documents


4 download

TRANSCRIPT

  • 5/28/2018 core java espa ol

    1/267

    Core JavaCdigo del Curso: CY420Versin: 5.1

    Gua del Estudiante

    Libro 1: Core Java

    IBM TrainingWorldwide Certified Material

  • 5/28/2018 core java espa ol

    2/267

    .

    Informacin Sobre la Publicacin

    Esta publicacin ha sido producida usando Microsoft Word 2000 y Microsoft PowerPoint2000 para Windows.

    Marcas Registradas

    IBM es una marca registrada por International Business Machines Corporation.

    Otras compaas, productos, y nombre de servicios pueden ser marcas registradas omarcas de servicios de otros.

    Marcas Registradas de otras Compaas

    HotJava browser, Java Development Kit (JDK), Java, Java Servlet, Solaris, Enterprise

    Java Beans, Java Server Pages, JDK, JSP Sun Microsystems, Microsoft MAKECAB,Windows operating system, ASP, VB, .NET, VC++, Microsoft Access, Microsoft SQLServer, Microsoft ODBC for Oracle Microsoft Corp, WinZip Nico Mak Computing,Inc., Time Time Warner, JDBC Javasoft, Oracle Oracle Corporation, Sybase Sybase Inc., UDB DB2 IBM.

    Edicin Octubre 2007

    La informacin contenida en este documento no ha sido sometida a ninguna pruebaformal de IBM y es distribuida bsicamente como es" sin ninguna garanta ya seaexpresa o implcita. El uso de esta informacin o la implementacin de cualquiera deestas tcnicas es responsabilidad del comprador y depender de la habilidad de stepara su evaluacin e integracin en el ambiente operacional del comprador. A pesar deque cada tema ha sido revisado por IBM para su exactitud en una situacin especfica,no hay garanta de que obtener el mismo resultado o uno similar a ste en otrasituacin. Los compradores que intenten adaptar estas tcnicas a sus propiosambientes lo hacen bajo su propio riesgo.

    Copyright International Business Machines Corporation, 2007. All rights reserved.Este documento no puede ser reproducido en su totalidad o en parte sin el previopermiso escrito de IBM.

    Instrucciones Especiales para la Impresin de este Curso:

    No elimine pginas en blanco que puedan aparecer al final de cada unidad o entreunidades. Estas pginas fueron insertadas intencionalmente.

  • 5/28/2018 core java espa ol

    3/267

    Gua del Estudiante Core Java

    i Copyright IBM Corp. 2007

    Los materiales del curso no pueden ser reproducidos total oparcialmente sin el previo permiso escrito de IBM.

    ContenidoDescripcin del Curso: Core Java....................................................................ivDescripcin de Unidades................................................................................viiiVolumen 1: Fundamentos de Java....................................................................1Unidad 1: Visin General de Java .....................................................................3

    Objetivos del Aprendizaje 31. Introduccin 42. Historia de Java 43. Comparacin entre Java y C++ 54. Caractersticas de Java 65. La Plataforma Java 116. Impacto de Java en la WWW 167. Clases y Objetos 178. Orientacin a Objetos en Java 219. Ejemplo de una Aplicacin Java 2610. Ejemplo de Applet Java 27Resumen 29Unidad 1: Examen de Autoevaluacin 30Respuestas a la Unidad 1: Examen de Autoevaluacin 32

    Unidad 2: Operadores, Expresiones y Control de Flujo................................33Objetivos del Aprendizaje 331. Introduccin 342. Tipos de Datos en Java 343. Clases Envolventes 394. MathClases Colaboradoras sobre los Tipos de Datos 445. Manejo de String 446. Identificadores 507. Declaracin e Inicializacin de Variables 518. Operadores en Java 539. Conversin de Tipos 6310. Arreglos 6611. Estructuras de Control 71Resumen 86Unidad 2: Examen de Autoevaluacin 87

  • 5/28/2018 core java espa ol

    4/267

    Core Java Gua del Estudiante

    ii Copyright IBM Corp. 2007

    Los materiales del curso no pueden ser reproducidos total oparcialmente sin el previo permiso escrito de IBM.

    Respuestas a la Unidad 2: Examen de Autoevaluacin 89Unidad 3: Lab. de Operaciones, Expresiones y Control de Flujo.................90

    Objetivos del Aprendizaje 90Ejercicios de Laboratorio 91

    Volumen 2: Programacin Orientada a Objetos.............................................95

    Unidad 1: Clases y Objetos..............................................................................97Objetivos del Aprendizaje 971. Introduccin 982. Clases y Objetos 983. Estructura de una Clase Java 1014. Variables 1035. Mtodos 1086. Modificadores de Acceso 1137. Constructores de una Clase 1218. Sobrecarga de Mtodo 1249. Clases Anidadas 12710. Argumentos de Lnea de Comandos 13011. Ciclo de Vida de un Objeto 13112. Manejo de la Memoria en Java 13613. Enumeraciones 136Resumen 138Unidad 1: Examen de Autoevaluacin 139Respuestas a Unidad 1: Examen de Autoevaluacin 141

    Unidad 2: Laboratorio de Clases y Objetos..................................................143Objetivos del Aprendizaje 143Ejercicios de Laboratorio 144

    Unidad 3: Herencia .........................................................................................147Objetivos del Aprendizaje 1471. Introduccin 1482. Sintaxis para Declarar Clases Usando Herencia en Java 1483. Conceptos Esenciales de Herencia 152Resumen 177Unidad 3: Examen de Autoevaluacin 178Respuestas a la Unidad 3: Examen de Autoevaluacin 180

    Unidad 4: Laboratorio de Herencia ...............................................................181Objetivos de Aprendizaje 181

  • 5/28/2018 core java espa ol

    5/267

    Gua del Estudiante Core Java

    iii Copyright IBM Corp. 2007

    Los materiales del curso no pueden ser reproducidos total oparcialmente sin el previo permiso escrito de IBM.

    Ejercicios de Laboratorio 182Unidad 5: Clases Abstractas e Interfaces.....................................................183

    Objetivos de Aprendizaje 1831. Introduccin 1842. Clases Abstractas 184

    3. Uso de Clases Abstractas 1864. Qu son las Interfaces? 1945. Usar Interfaces Como Referencias 2026. Heredar de una Interfaz 2057. Opciones de Herencia en Java 208Resumen 210Unidad 5: Examen de Autoevaluacin 211Respuestas a la Unidad 5: Examen de Autoevaluacin 213

    Unidad 6: Laboratorio de Clases Abstractas e Interfaces...........................215Objetivos de Aprendizaje 215Ejercicios de Laboratorio 216

    Unidad 7: Paquetes.........................................................................................219Objetivos de Aprendizaje 2191. Introduccin 2202. Necesidad de los Paquetes 2203. Crear Paquetes en Java 2224. Representacin del Paquete en el Sistema de Archivos 2245. Paquetes y Proteccin de Acceso 2276. Usar Miembros de Paquetes 2357. Agrupar Paquetes 2398. Despliegue de Paquetes 2399. Paquetes Incorporados en Java Usados Comnmente 245Resumen 248Unidad 7: Examen de Autoevaluacin 249Respuestas a la Unidad 7: Examen de Autoevaluacin 251

  • 5/28/2018 core java espa ol

    6/267

    Core Java Gua del Estudiante

    iv Copyright IBM Corp. 2007

    Los materiales del curso no pueden ser reproducidos total oparcialmente sin el previo permiso escrito de IBM.

    Descripcin del Curso: Core JavaNombre del Curso

    Core Java

    Duracin

    La duracin del curso es de 108 horas.

    Propsito

    Este curso ofrece a los estudiantes un estudio del lenguaje Java. El primer volumen delcurso se ocupa de los fundamentos de Java, del impacto de Java en la Web, laorientacin a objetos en Java, operadores y estructuras de control. Los estudiantesaprendern sobre las caractersticas de Java, convenciones de nombres, declaracin devariables y su inicializacin.

    El segundo volumen del curso se ocupa de la programacin orientada a objetos.Proporciona una descripcin de los miembros de una clase Java, del uso de losmtodos de clase y del manejo de la memoria en Java. Los estudiantes aprendernsobre los fundamentos de la herencia, de clases, mtodos abstractos y las interfaces.Tambin aprendern sobre los paquetes incorporados comnmente usados de Java.

    El tercer volumen del curso trata de las excepciones y los mtodos para lanzarexcepciones. Los estudiantes aprendern cmo distinguir entre las excepcionesverificadas y no verificadas. Tambin aprendern sobre cmo crear y usar excepcionesdefinidas por el usuario.

    El cuarto volumen del curso proporciona una descripcin de las capacidades paraentrada/salida. Trata de los archivos y los flujos, los flujos de caracteres, las claseslectoras y escritoras, adems de los archivos de acceso aleatorio. Tambin se ocupa dela serializacin de objetos, de la interfaz serializable y de la interfaz externalizable. Losestudiantes estudiarn la clase ObjectOutputStream y la clase ObjectInputStream.

    El quinto volumen del curso provee una descripcin de las interfaces de usuario usandoAWT y Swing. Se ocupa de las clases y contenedores de AWT, dibujo y actualizacin delos componentes de la interfaz del usuario. Tambin trata los mtodos heredados porlos componentes de AWT de las clases componente y contenedor. Los estudiantesaprendern sobre los administradores de diseo, adems de asociarlos al contenedor.

    Adicionalmente, obtendrn informacin sobre el modelo de delegacin de eventos y el

    manejo de eventos.

    Se proporciona una introduccin a ciertas clases fundamentales de Java. Se ocupa dela arquitectura MVC y las clases Swing, las diferencias entre AWT y Swing, loscomponentes Swing, el API de Java 2D y la representacin en 2D.

    El sexto volumen del curso introduce a los applets. Se ocupa del ciclo de vida de unapplet, prueba de applets, carga de un applet, mtodos de dibujo y manejo de eventos.

  • 5/28/2018 core java espa ol

    7/267

    Gua del Estudiante Core Java

    v Copyright IBM Corp. 2007

    Los materiales del curso no pueden ser reproducidos total oparcialmente sin el previo permiso escrito de IBM.

    Los estudiantes aprendern conceptos tales como: usar el API de applet, localizar ycargar archivos de datos, mostrar documentos en un navegador web, comunicacin conotros applet y restricciones de seguridad en applets.

    El sptimo volumen del curso contiene una introduccin a multihilos y redes. Estudia elciclo de vida de los hilos, creacin y funcionamiento, realizar subclases de la clase de

    hilo e implementar la interfaz Runnable. Tambin se ocupa de la sincronizacin de hilos,de los mtodos y sentencias sincronizadas, adems de la comunicacin entre hilos. Losestudiantes aprendern sobre el trabajo con URLs y programacin de conectores,clases orientadas a conexin en Java, envo y recepcin de datagramas.

    El octavo volumen de este curso presenta una descripcin del API de colecciones. Seocupa del marco de trabajo para colecciones de Java, de las interfaces eimplementaciones de las colecciones. Presenta la conectividad a la base de datos enJava y las sentencias SQL usadas en los programas Java, adems de los pasos queimplica el acceso a base de datos. Los estudiantes aprendern sobre procedimientosalmacenados, manejo de la transaccin, soporte de cursores, procesamiento demltiples conjuntos de resultados, entre otras funcionalidades de JDBC. Para finalizar

    se discute acerca de las caractersticas avanzadas, tales como: las consideraciones deseguridad cuando se trabaja con programas Java, los Java beans y los conceptos de lainternacionalizacin.

    El curso incorpora varias sesiones de laboratorios donde los estudiantes obtendrnexperiencia prctica en los conceptos de Core Java.

    Audiencia

    Estudiantes, Profesionales y Gente de Negocios.

    Prerrequisitos

    CY410, CY350

  • 5/28/2018 core java espa ol

    8/267

    Core Java Gua del Estudiante

    vi Copyright IBM Corp. 2007

    Los materiales del curso no pueden ser reproducidos total oparcialmente sin el previo permiso escrito de IBM.

    Objet ivos

    Al completar este curso, usted ser capaz de:

    Entender las caractersticas principales de Java.

    Explicar los principios de orientacin a objetos en Java.

    Explicar las diferentes estructuras de control usadas en Java. Explicar la necesidad y el uso de los constructores de una clase.

    Describir cmo se realiza el manejo de la memoria en Java.

    Describir cmo crear jerarquas de herencia.

    Definir y explicar cmo implementar una interfaz.

    Explicar la variable classpathy describir su uso.

    Discutir las excepciones y las tcnicas tradicionales para el manejo de errores.

    Describir el manejo de excepciones en Java.

    Examinar las diferentes formas en las que las excepciones pueden ser lanzadas,capturadas y manejadas.

    Exponer la clase File.

    Explicar los diferentes flujos de caracteres y de byte.

    Explicar la interfaz Serializabley la clase ObjectInputStream.

    Describir algunas clases tiles y algunos GUI en AWT.

    Explicar cmo escoger un administrador de diseo y sus responsabilidades.

    Explicar cmo implementar el mecanismo de delegacin de eventos.

    Describir la arquitectura MVC.

    Explicar los administradores de diseo definidos en Swing.

    Describir las propiedades de la apariencia de Swing.

    Establecer las diferencias entre un applet y una aplicacin.

    Describir los mtodos para agregar componentes de UI.

    Mencionar las ventajas del API Applet.

    Explicar los conceptos de hilos y multihilos.

    Explicar cmo crear hilos desde la clase Thread y desde la interfaz Runnable.

    Describir el concepto de sincronizacin.

    Explicar los mtodos y sentencias sincronizadas.

    Exponer los URLs y las excepciones de URL. Explicar los conectores orientados a conexin y no orientados a conexin.

    Describir las interfaces de colecciones.

    Describir los algoritmos polimrficos del JDK que operan en las colecciones.

    Discutir el API de JDBC.

    Explicar el manejo de excepciones en JDBC.

  • 5/28/2018 core java espa ol

    9/267

    Gua del Estudiante Core Java

    vii Copyright IBM Corp. 2007

    Los materiales del curso no pueden ser reproducidos total oparcialmente sin el previo permiso escrito de IBM.

    Explicar el uso de PreparedStatement y CallableStatementen JDBC.

    Mencionar algunas de las clases de soporte de JDBC en Java.

    Explicar la manipulacin de objetos de una clase.

    Exponer las caractersticas de seguridad cuando se trabaja con programas Java.

    Explicar el empaquetamiento de componentes Java. Exponer el API Java 2D.

    Agenda

    Cada unidad en este curso es de 2 horas de duracin.

  • 5/28/2018 core java espa ol

    10/267

    Core Java Gua del Estudiante

    viii Copyright IBM Corp. 2007

    Los materiales del curso no pueden ser reproducidos total oparcialmente sin el previo permiso escrito de IBM.

    Descripcin de UnidadesVolumen 1: Fundamentos d e Java

    Unidad 1: Visin General de Java

    Esta unidad introductoria proporciona una visin general de Java, incluyendo la historiadel desarrollo de Java, fundamentos bsicos de la Programacin Orientada a Objetos yaspectos bsicos de Java. Tambin cubre la plataforma de Java y su efecto en laWWW.

    Unidad 2: Operadores, Expresiones y Flujo de Control

    Esta unidad se ocupa de los elementos fundamentales de Java: tipos de datos yvariables, diferentes tipos de operadores en Java y de la precedencia de operadores.Tambin se discuten las conversiones de tipo y las estructuras de control en Java.

    Unidad 3: Laboratorio de Operadores, Expresiones y Flujo de ControlEsta unidad de Laboratorio permite al estudiante poner en prctica algunos de losaspectos fundamentales de Java, como operaciones aritmticas, operadores de bits ylazos en Java. Esta actividad se realiza a travs de un pequeo conjunto de ejercicios.

    Volumen 2: Progr amacin Orientada a Objetos

    Unidad 1: Clases y Objetos

    El concepto de una clase, el ciclo de vida de un objeto y los constructores de una claseson algunos de los tpicos tratados en esta unidad. Esta unidad tambin examina las

    especificaciones para el control del acceso, cmo declarar variables miembro, mtodosmiembro, la manera de acceder a las clases utilizando mtodos estticos, mtodossobrecargados y argumentos en la lnea de comandos. Finalmente, se ofrece una visingeneral sobre el recolector de basura.

    Unidad 2: Laboratorio de Clases y Objetos

    En esta unidad se desarrollan ejercicios de laboratorio para crear clases y objetos,llamar mtodos de una clase y sobrecargar mtodos de una clase. Tambin proporcionauna ruta de experiencia prctica acerca de los paquetes, el CLASSPATH y suutilizacin, la proteccin de acceso mientras se usan los paquetes, miembros depaquetes y cmo importar paquetes. Tambin le permite al estudiante tener una visin

    general de los paquetes intrnsecos de Java ms usados.

    Unidad 3: Herencia

    El principal objetivo de esta unidad es entender los aspectos bsicos de la herencia,cmo utilizar el modificador sper, cmo crear la herencia multi-nivel y los fundamentosdel mtodo de sobreescritura. Tambin se discute el uso de la palabra clave finalparaevitar la sobreescritura y para evitar la herencia.

  • 5/28/2018 core java espa ol

    11/267

    Gua del Estudiante Core Java

    ix Copyright IBM Corp. 2007

    Los materiales del curso no pueden ser reproducidos total oparcialmente sin el previo permiso escrito de IBM.

    Unidad 4: Laboratorio de Herencia

    Esta unidad de laboratorio permite al estudiante tener una mejor comprensin delconcepto de herencia y cmo llamar a los mtodos de la clase base.

    Unidad 5: Clases Abstractas e Interfaces

    En esta unidad se discute acerca del modificador abstract y las clases y mtodosabstractos. Tambin se discuten las interfaces, su implementacin total o parcial, el usode interfaces y referencias, las variables de una interfaz y cmo heredar desde unainterfaz.

    Unidad 6: Laboratorio de Clases Abstractas e Interfaces

    Esta unidad de laboratorio le ofrece parcialmente al estudiante una exposicin del usode las clases abstractas y la necesidad de usar interfaces.

    Unidad 7: Paquetes

    Los paquetes son un aspecto importante en el estudio de Java. En esta unidad sedefine qu es un paquete, el CLASSPATH y su utilizacin, adems de la proteccin deacceso mientras se usan los paquetes. Tambin explica cmo utilizar los paquetesmiembro, cmo importar paquetes y se explican algunos de los paquetes intrnsecos deJava ms utilizados.

    Volumen 3: Manejo de Excepcion es

    Unidad 1: Manejo de Excepciones y Tipos de Excepciones

    El lenguaje Java proporciona algunos mecanismos sofisticados para el manejo de

    excepciones, en comparacin con otros lenguajes de programacin modernos. Estaunidad establece qu es una excepcin y discute la importancia del manejo deexcepciones. Proporciona una breve visin del manejo de excepciones en los lenguajesde programacin y cmo se aplica en Java. Se examinan los tipos de excepciones, su

    jerarqua en Java, las declaraciones tryy catch,as como la clusula finallyenJava. Proporciona una visin de las excepciones en tiempo de ejecucin (runtime) y losdiferentes mtodos para el lanzamiento y propagacin de excepciones.

    Unidad 2: Lanzamiento y Manejo de Excepciones

    Esta unidad trata con los mtodos de lanzamiento de excepciones, mtodos paramanejar excepciones y las diferentes formas en que las excepciones pueden ser

    lanzadas, capturadas y manipuladas. Tambin se discute el mtodo mediante el cual secrean y usan las excepciones definidas por el usuario.

    Unidad 3: Laboratorio de Lanzamiento y Manejo de Excepciones

    Basndose en las unidades 1 y 2, esta unidad de Laboratorio proporciona una ruta paraexperimentar en forma prctica cmo manejar excepciones, como usar las clusulas

  • 5/28/2018 core java espa ol

    12/267

    Core Java Gua del Estudiante

    x Copyright IBM Corp. 2007

    Los materiales del curso no pueden ser reproducidos total oparcialmente sin el previo permiso escrito de IBM.

    throwy catchaparte de dominar el uso de la clusula throws. Tambin permite alestudiante aprender a escribir excepciones definidas de usuario.

    Volumen 4: Facil idades de Entrada / Salida

    Unidad 1: Archivos y Flujos

    Esta unidad trata los conceptos File, FileDescriptor, flujos, flujos de caracteres,flujos byte y acceso aleatorio de archivos.

    Unidad 2: Laboratorio de Archivos y Flujos

    Esta unidad provee un conjunto de ejercicios para aprender acerca de creacin dearchivos, lectura y escritura desde y hacia archivos. Tambin provee ejercicios paraacceder a directorios y subdirectorios.

    Unidad 3: Serializacin de Objetos

    La serializacin de Objetos es un tpico importante en Java y esta unidad trata sobreese tema, la interfaz Serializable, la interfaz Externalizable, la claseObjectOutputStreamy la clase ObjectInputStream.

    Unidad 4: Laboratorio de Serializacin de Objetos

    Esta unidad de laboratorio se construye sobre la base conceptual de la unidad 3 y lepermite al estudiante aprender a realizar la serializacin de Objetos en Java.

    Volumen 5: Crear Interfaces Usando AWT y Swing

    Unidad 1: Componentes y Contenedores AWTEn esta unidad se discute el abstract window toolkit AWT- (grupo de programas deventana abstracta), algunas clases tiles en AWT y algunos componentes GUI en

    AWT.

    Unidad 2: Laboratorio de Componentes y Contenedores AWT

    Este laboratorio le permite al estudiante aprender a usar varios controles que seincluyen en el AWT, a crear y manejar ventanas y a usar las clases MenuBar, MenuyFileDialog.

    Unidad 3: Administradores de Diseo (Layout Managers)Esta unidad ofrece una amplia cobertura de los manejadores de diseo y su seleccin.Se discuten los diferentes administradores de diseo, sus responsabilidades y las reglaspara su aplicacin y uso.

  • 5/28/2018 core java espa ol

    13/267

    Gua del Estudiante Core Java

    xi Copyright IBM Corp. 2007

    Los materiales del curso no pueden ser reproducidos total oparcialmente sin el previo permiso escrito de IBM.

    Unidad 4: Laboratorio de Administradores de Diseo (Layout Managers)

    En esta unidad de laboratorio, los estudiantes practican el uso de varios manejadoresde diseo y trabajan en la creacin de varios controles como TextField, TextArea,CheckboxGroupy Button.

    Unidad 5: Modelo de Delegacin de Eventos y Manejo de Eventos

    Esta unidad examina el Modelo de Conduccin de Eventos, los Listeners (Oyentes) yAdapters (Adaptadores). Tambin provee una manera de implementar el mecanismode conduccin de eventos.

    Unidad 6: Laboratorio de Modelo de Delegacin de Eventos y Manejo deEventos

    En esta unidad de laboratorio el estudiante aprende el mecanismo de manejo deeventos y el uso de la clase PopupMenu.

    Unidad 7: Arquitectura MVC y Clases SwingEn esta unidad se discuten en gran detalle la arquitectura MVC y los componentesSwing. La mayora de los componentes se analizan en detalle, con ejemplos ilustrativos.

    Unidad 8: Componentes SwingEsta unidad trata con las clases swing, las propiedades look y feel (Apariencia) deSwing y el API Java 2D. Se incluyen detalles de todas las clases y ejemplos dados.

    Unidad 9: Laboratorio de Componentes SwingEn esta unidad de Laboratorio, se espera que los estudiantes entiendan el uso delcomponente Swing y las caractersticas de las clases Swing.

    Volumen 6: Applets

    Unidad 1: Escribir y Desplegar Applets

    En el lenguaje Java, los applets son uno de los tpicos ms interesantes y significativos.Esta unidad establece qu es un applet y lo que puede hacer. Provee un resumen delos applets, su ciclo de vida y cada una de sus fases significativas. Se discuten losmtodos para responder a eventos (milestones), el uso de los mtodos para dibujar ymanejar eventos, los mtodos para aadir componentes UI y la aplicacin y ventajas del

    API en un applet.

    Unidad 2: Laboratorio de Escribir y Desplegar Applets

    En esta unidad, los estudiantes aprenden a desarrollar applets sencillos, los cualesinteractan con el usuario y realizan comunicaciones entre applets a travs delprograma Cliente-Servidor.

  • 5/28/2018 core java espa ol

    14/267

    Core Java Gua del Estudiante

    xii Copyright IBM Corp. 2007

    Los materiales del curso no pueden ser reproducidos total oparcialmente sin el previo permiso escrito de IBM.

    Volumen 7: Mult ihi lo s y Sistema de Redes

    Unidad 1: Crear Hilos

    Java es conocido por su poder en trminos de hilos. En esta unidad se discuten losconceptos de hilos y multihilos (threads y multithreading), el ciclo de vida de los hilos, el

    API Thread y el mtodo de crear hilos de la clase Thread y la interfaz Runnable.Tambin se cubren propiedades especiales de los hilos como establecer prioridades y elThreadGroup.

    Unidad 2: Laboratorio Crear Hilos

    Esta unidad proporciona ejercicios para fortalecer la base conceptual presentada en launidad 1 de creacin de hilos y ayudar a escribir programas que apliquen hilos en Java.

    Unidad 3: Sincronizacin de Hilos

    En esta unidad se examinan los conceptos de sincronizacin, mtodos sincronizados y

    sentencias sincronizadas. Tambin se discuten los interbloqueos o puntos muertos(deadlocks) y provee una visin de comunicacin entre hilos.

    Unidad 4: Laboratorio de Sincronizacin de Hilos

    Esta unidad ha sido diseada para bosquejar el entorno terico en trminos desincronizacin de hilos y reforzar el aprendizaje del uso de la sincronizacin de hilos enla solucin de problemas usando Java.

    Unidad 5: URLs y Programacin de Conectores (Sockets)

    Esta unidad trata acerca del Uniform Resource Locators URLs (Localizadores de

    Recursos Uniformes), la creacin de un URL y la creacin de un URL relativo a otroURL. Tambin se discuten los tpicos de MalformedURLException, cmo analizar unURL, leyendo directamente desde un URL, cmo conectarse a un URL, cmo leerdesde un objeto URLConnection, y cmo escribir a un objeto URLConnection. Porotra parte, abarca los diferentes modos de operaciones de socket, el modo orientado aconexiones de operacin de sockets, etc.

    Unidad 6: Laboratorio de URLs y Programacin de Conectores

    Esta unidad de laboratorio permite a los estudiantes practicar el uso de Java trabajandocon URLs y realizar trabajos con conectores en el mbito de programacin.

    Volumen 8: Conceptos A vanzados

    Unidad 1: API de Colecciones

    Esta unidad ayuda a entender el marco de trabajo de las colecciones de Java, lasinterfaces de colecciones y el impacto que produjo la inclusin de los Genricos en Java5.0. Tambin discute algunos algoritmos polimrficos de JDK operando en colecciones yalgunas implementaciones de colecciones.

  • 5/28/2018 core java espa ol

    15/267

    Gua del Estudiante Core Java

    xiii Copyright IBM Corp. 2007

    Los materiales del curso no pueden ser reproducidos total oparcialmente sin el previo permiso escrito de IBM.

    Unidad 2: Laboratorio del API de Colecciones

    Esta unidad proporciona ejercicios para ayudar a entender la interfaz collection,cmo usar ArrayList, y el uso de las interfaces SortedSet, HashSety TreeSet.Tambin ayuda a usar la clase iteratory sus mtodos.

    Unidad 3: JDBC

    Esta unidad trata la conectividad de base de datos en Java y el API JDBC de Java.Discute las sentencias SQL usadas en los programas de Java y cmo funciona elmanejo de excepciones.

    Unidad 4: Laboratorio de JDBC

    Existen algunos ejercicios en esta unidad para ayudar a los estudiantes a conectarse auna base de datos a travs de un programa Java, adems de entender cmo acceder ala base de datos una vez que se establece una conexin.

    Unidad 5: JDBC Avanzado

    Se explican algunos conceptos avanzados de JDBC tales como usar las clasesheredadas de Statement, procedimientos almacenados (stored procedures) y otrasfuncionalidades JDBC, como por ejemplo el manejo de transacciones.

    Unidad 6: Laboratorio de JDBC Avanzado

    Esta unidad permite al estudiante escribir cdigo en Java para crear y usar losprocedimientos almacenados, adems de facilitar la comprensin acerca de la forma enque trabaja la administracin de transacciones.

    Unidad 7: Caractersticas Avanzadas

    En esta unidad, los objetivos consisten en la capacitacin del trabajo con imgenes ygrficos, incorporar elementos de seguridad mientras se trabaja con programas en Javay aprender el concepto de internacionalizacin en Java. Tambin se explican los Javabeans y cmo realizar la invocacin remota de mtodos.

    Unidad 8: Laboratorio de Caractersticas Avanzadas

    En esta unidad, los estudiantes aprendern a convertir un programa Java usandointernacionalizacin y trabajarn con la invocacin de mtodos remotos.

  • 5/28/2018 core java espa ol

    16/267

  • 5/28/2018 core java espa ol

    17/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 1

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Volumen 1: Fundamentos de Java

  • 5/28/2018 core java espa ol

    18/267

  • 5/28/2018 core java espa ol

    19/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 3

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Unidad 1: Visin General de Java

    Objetivos del Aprendizaje

    Al final de esta unidad, usted ser capaz de:

    Discutir la evolucin de Java.

    Comparar Java con C++.

    Discutir las caractersticas principales de Java.

    Explicar la plataforma Java.

    Describir el impacto de Java en WWW.

    Definir clases y objetos.

    Explicar los principios de orientacin a objetos en Java.

  • 5/28/2018 core java espa ol

    20/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 4

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    1. Introduccin

    Antes que Java existiera, C y C++ eran los lenguajes de programacin ms usados. Ces un lenguaje de programacin estructurada, mientras que C++ brinda soporte tanto ala programacin estructurada como a la programacin orientada a objetos. Estos doslenguajes de programacin son complejos y tienen algunas limitaciones inherentes.

    Aunque Java no fue diseado como solucin a los problemas encontrados en C o C++,algunas de sus caractersticas han solventado las limitaciones de estos dos lenguajes.

    Uno de los objetivos principales detrs de la creacin de Java fue tener un lenguajeorientado a objetos que fuera poderoso, pero simple. Java ha simplificado muchas delas estructuras complicadas y ambiguas de C++. Otra ventaja fundamental es que Javatrajo el concepto de la independencia de plataforma. Se aprender acerca de estascaractersticas en detalle en las prximas secciones.

    Sin embargo, antes de continuar, se presenta un breve resumen de la evolucin deJava.

    2. Historia de Java

    Patrick Naughton, Mike Sheridan y James Gosling de SUN Microsystems iniciaron unproyecto secreto llamado "Proyecto Verde" (Green Project) a finales de 1990. El objetivode este proyecto era anticiparse a la revolucin en el mundo de la computacin queestaba por llegar. El equipo decidi intentar introducirse en el mercado de la electrnicade consumo y desarrollar programas para pequeos dispositivos electrnicos.Desarrollaron un dispositivo llamado StarSeven (*7), este dispositivo era capaz decontrolar una variedad de plataformas de entretenimiento y dispositivos de usodomstico, adems de mostrar animaciones simultneamente. *7 usaba un procesadorindependiente del lenguaje llamado Oakpara adaptarse a una variedad de plataformas

    y dispositivos de uso domstico. Tras unos comienzos dudosos, Sun decidi crear unafilial, denominada FirstPerson Inc., para dar margen de maniobra al equipo responsabledel proyecto. Este grupo intent mercadear l *7 a la industria de televisin por cable,pero la tecnologa usada para desarrollar l *7 estaba adelantada a la tecnologaexistente en la industria de televisin por cable y por esto no fue aceptado.

    Afortunadamente para el grupo creador del *7, Internet se estaba volviendo popular enese momento. La Internet tena una configuracin de red similar al *7, y estaba siendousada cada vez ms para la transferencia de texto, grficos y video, esencialmentedatos estticos. El equipo FirstPerson ampli Oak, transformndolo en un lenguaje quepermita al programador escribir programas que corran en una gran variedad dedispositivos, a un lenguaje que permita escribir cdigo ejecutable que poda ser

    distribuido en Internet.En el ao 1995, este nuevo lenguaje evolucionado fue llamado Java. Java permita a losusuarios de Internet transferir contenido esttico a travs de la misma. Adicionalmente,permita transferir pequeas aplicaciones dinmicas a travs de la red en la forma deapplets de Java. Algunos de los miembros del grupo FirstPerson mostraron el lenguaje

  • 5/28/2018 core java espa ol

    21/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 5

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    y sus nuevas caractersticas, incluyendo la transferencia de animaciones a travs de laInternet, en la Conferencia de Diseo, Tecnologa y Entretenimientoen Monterrey.Sus caractersticas y funcionalidades asombraron a los participantes, ya que latecnologa provea un mtodo ms sencillo para transferir datos en la Internet. El equipopronto construy el navegador HotJava, y public el cdigo fuente Java gratuitamenteen Internet. En poco tiempo, el nmero de usuarios de la tecnologa Java se increment

    rpidamente.

    A continuacin se va a comparar Java y C++, ambos lenguajes de programacinorientado a objetos, para descubrir que ha hecho a Java tan popular.

    3. Comparacin entre Java y C++

    Java simplifica muchas de las ambigedades encontradas en C++, y es, al mismotiempo, un lenguaje de programacin igualmente poderoso. Se ha visto con anterioridadlas ventajas del paradigma de programacin orientada a objetos.

    Existen algunas deficiencias en C++, por el hecho de que permite programacinestructurada. Esto ha sido eliminado en Java, que es un lenguaje puramente orientadoa objetos.

    Las principales diferencias entre C++ y Java se listan en la Tabla 1.1.

    Java C++

    Es tanto un lenguaje de programacincomo una plataforma de software.

    Es slo un lenguaje de programacin.

    Es un lenguaje puramente orientadoa objetos.

    Da soporte tanto a la programacin estructuradacomo a la programacin orientada a objetos.

    Todas las declaraciones de variables

    y mtodos deben estar dentro de ladefinicin de la clase.

    Las declaraciones de variables y funcionespueden estar presentes fuera de las definicionesde las clases. No es necesario para un programaen C++ tener una clase.

    El lenguaje es independiente de laplataforma. El cdigo Java, una vezescrito, puede ser ejecutado encualquier plataforma.

    El cdigo C++, una vez escrito para unaplataforma, necesita ser compilado de nuevo, yel cdigo objeto reenlazado para ser ejecutadoen otra plataforma diferente.

    Maneja la memoria automticamente.Los programadores tienen que hacerse cargo deliberar la memoria no utilizada.

    No se soporta caractersticas comosobrecarga de operadores yconversiones automticas en ambossentidos.

    Da soporte a caractersticas como sobrecarga deoperadores y conversiones automticas enambos sentidos.

    Una clase no puede heredar

    directamente de ms de una clase.Se da soporte a la herencia mltipleusando interfaces.

    Una clase puede heredar directamente de msde una clase.

    Tiene rutinas de libreras extensibles. Sus rutinas de libreras no son extensibles.

  • 5/28/2018 core java espa ol

    22/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 6

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    La programacin de redes es msfcil. Los objetos pueden seraccedidos a travs de la red usandoURLs.

    La programacin para redes es compleja, amenos que se usen APIs de terceros. C++, es unlenguaje, que no brinda soporte incorporado paraprogramacin de redes.

    Los programadores no pueden usarapuntadores. Los apuntadores se

    usan internamente.

    Los programadores pueden usar apuntadores.

    Implementa arreglos verdaderos.Se implementan los arreglos con aritmtica deapuntadores.

    Tabla 1.1: Comparacin entre C++ y Java

    Aunque las construcciones de programacin de Java (sintaxis) son similares a las deC++, Java no debe ser interpretado como la versin Internet de C++, ni como unreemplazo para C++. El equipo FirstPerson cont con programadores expertos paraasegurar que Java permitiera a los programadores tener un control completo sobre laejecucin del programa, excepto por las restricciones inherentes al ambiente deInternet.

    Ahora se estudiarn las diversas caractersticas ofrecidas por Java.

    4. Caractersticas de Java

    Java puede usarse para desarrollar dos tipos de programas:

    Aplicaciones: Las aplicaciones son programas independientes que pueden correr enuna computadora, usando la plataforma Java con el soporte del sistema operativo de lacomputadora.

    Applets: Los applets son programas especiales Java, que pueden usarse paratransmitir informacin en Internet.

    Los applets pueden ser incrustados en una pgina HTML usando la etiqueta Applet, ypueden ejecutarse en un navegador web con soporte para Java. Los applets puedenadaptarse a la entrada del usuario inteligentemente. Las aplicaciones Java y los appletspueden ser compilados y ejecutados usando el Kit de Desarrollo de Java (JavaDevelopment Kit JDK).

    La Figura 1.1 muestra las diferentes caractersticas de Java.

  • 5/28/2018 core java espa ol

    23/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 7

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Figura 1.1: Caractersticas de Java

    4.1 Simple de Usar

    El estilo de programacin en Java est basado en C++, y soporta la mayora de lascaractersticas ofrecidas por C++. De aqu que, los programadores no encontrarn Javamuy difcil de entender y usar. Un programador con un buen conocimiento de los

    conceptos de orientado a objetos puede sacar el mximo provecho a Java, ya que seimplementan los conceptos en una forma mucho ms sencilla que en C++.

    4.2 Seguridad

    Inicialmente, cuando la Internet comenz y Java no era tan conocido, los usuarios deInternet teman descargar programas ejecutables debido al dao alarmante causado porla difusin de virus. Las personas que descargaban archivos eran muy cautelosas derevisar estos archivos cuidadosamente antes de usarlos. Haba tambin programasmaliciosos que recababan informacin acerca de tarjetas de crdito, palabras clave, etc.del sistema de archivos local. Esto fue, por supuesto, desastroso para las personas quenavegan por la Internet. Java proporcion un modelo de seguridad, que previene el

    acceso a los recursos del sistema, y as bloquear cualquier intento malicioso.

    4.3 Portabilidad

    Existen muchas ocasiones en donde los usuarios de Internet pueden querer descargarprogramas y ejecutarlos dinmicamente. Los usuarios pueden estar usando diferentes

  • 5/28/2018 core java espa ol

    24/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 8

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    tipos de plataformas, para permitirles descargar programas y ejecutarlosdinmicamente, se necesita de un mecanismo para crear cdigo ejecutable que seaportable entre varias plataformas.

    Java solventa este inconveniente de portabilidad con el uso de bytecodes. El compiladorJava (javac) primero convierte el cdigo fuente (archivo con extensin .java) a

    bytecodes (archivo con extensin .class), que puede entender el sistema de tiempode ejecucin de Java o la Mquina Virtual de Java (Java Virtual Machine JVM); estosbytecodes son interpretados por el intrprete de Java, y convertidos a una formaejecutable que la entiende la plataforma en la cual el sistema de tiempo de ejecucin deJava se est ejecutando.

    El ambiente de tiempo de ejecucin de Java es el ambiente en donde es posible que losprogramas puedan ser compilados y ejecutados. Este ambiente administra el manejo dela memoria y otras necesidades en tiempo de ejecucin durante la ejecucin delprograma. La Mquina Virtual de Java (JVM) es la capa entre el microprocesador y losarchivos class de Java. Realiza la funcionalidad de traducir los bytecodes de Java, auna forma entendible por la mquina.

    Existe otro componente llamado el compilador Just-In-Time (JIT). El compilador JITcompila los bytecodes a cdigo mquina, hacindolos ms rpidos que la interpretacinhecha por la JVM.

    El sistema de tiempo de ejecucin de Java es especfico a la plataforma en la cual seejecuta. Java soporta la portabilidad, porque los bytecodes son interpretados antes de laejecucin. La Figura 1.2, explica cmo Java logra la portabilidad.

    Figura 1.2: JVM e Independencia de la Plataforma

  • 5/28/2018 core java espa ol

    25/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 9

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    El sistema de tiempo de ejecucin Java previene que el cdigo acceda a cualquierrecurso fuera de l. De este modo, el sistema de tiempo de ejecucin mejora lascaractersticas de seguridad ya provistas por Java. Los bytecodes de Java tambin sontiles al mejorar el nivel de seguridad ofrecido por Java. An si Java hubiese sidodiseado para ser compilado justo antes de la ejecucin, en vez de ser interpretadocomo actualmente lo es, soportara la portabilidad. Esto se debe a que la ejecucin del

    programa est todava en manos del sistema de tiempo de ejecucin de Java. Estemtodo de compilacin usado para convertir bytecodes a cdigo nativo se llamacompilacin justo a tiempo (Just In Time JIT).

    La Figura 1.3 muestra como trabaja el compilador JIT.

    Figura 1.3: Compilador JIT y la JVM

    4.4 Distribuido

    La computacin distribuida es muy til en el ambiente de la Internet, donde los mdulosde los programas pueden estar presentes en diferentes computadoras alrededor delmundo. Java fue diseado para brindar soporte TCP/IP. El soporte a redes de Javapermite construir aplicaciones cliente/servidor, adicionalmente Java tiene el paquete deInvocacin de Mtodos Remota (Remote Method Invocation RMI). Este permite a

    programas que se ejecutan en una JVM invocar un mtodo en una clase Javaejecutndose en otra JVM.

    4.5 Orientado a Objetos

    C++ tena que mantener las caractersticas y ser compatible con C. Cuando Javaestaba siendo diseado, sus diseadores y desarrolladores no quisieron que Java fueracompatible al nivel de cdigo fuente con ningn otro lenguaje. Por lo anterior, tuvieron laopcin de crear un lenguaje orientado a objetos que hace uso de un modelo de objetossimple, y usa tipos de datos simples no objetos, asegurando un alto rendimiento.

    4.6 Robusto

    A medida que los usuarios de Java en Internet comenzaron a incrementarse en nmero,creci tambin la necesidad de ejecutar una aplicacin en diversas plataformas. Estasplataformas diversas tenan demandas diferentes por parte de las aplicaciones para quese ejecutaran apropiadamente y por tanto, la aplicacin tena que ocuparse de todasestas demandas. Para poder hacer esto, la aplicacin deba de ser robusta

  • 5/28/2018 core java espa ol

    26/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 10

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    El diseo de Java hace posible que los programadores identifiquen errores en la mismaetapa de desarrollo. El cdigo puede ser revisado para asegurar confiabilidad colocandorestricciones en ciertas reas claves de la programacin y teniendo un diseo paraevitar los errores ms comunes de programacin. Java est diseado para ser unlenguaje estrictamente tipado, Por lo tanto, verifica errores de codificacin tanto entiempo de compilacin como en tiempo de ejecucin.

    Java provee manejo de excepciones para ocuparse de los errores de una manerasofisticada. La robustez del manejo de excepciones de Java ayuda a construirprogramas confiables. Funciones como la recoleccin automtica de basura en Javahace que los programas sean menos propensos a errores relacionados con la memoria.Esto a su vez da seguridad a los programadores para predecir el comportamiento delprograma en diversas situaciones.

    4.7 Dinmico

    Java enlaza el cdigo dinmicamente. Java fue implementado para usar los datosdisponibles en los archivos class en tiempo de ejecucin. Los objetos que se crean y

    usan en un programa son verificados y resueltos en tiempo de ejecucin. Estacaracterstica es til cuando se quiere actualizar el bytecode en un sistema enejecucin.

    4.8 Fuertemente Tipificado

    Java es fuertemente tipificado. Java fue diseado de forma que si se comete cualquiererror en una invocacin de mtodo, se mostrar un mensaje de error al programador entiempo de compilacin. Por esta razn, los programadores no necesitan preocuparse decometer errores no detectables en las invocaciones de mtodos.

    4.9 Interpretado

    Los bytecodes de Java son interpretados por la JVM en el lenguaje nativo de laplataforma subyacente. Los lenguajes interpretados tienen limitaciones de rendimientocomparados con los lenguajes que son compilados. Java combina las ventajas de lacompilacin e interpretacin. El compilador Java JIT puede ayudar a superar laslimitaciones de rendimiento asociadas a la JVM.

    4.10 Arquitectura Neutral

    Al compilar un programa en Java, el cdigo resultante es un tipo de cdigo binarioconocido comobytecode.Este cdigo es interpretado por diferentes computadoras deigual manera, solamente hay que implementar un intrprete para cada plataforma. De

    esa manera Java logra ser un lenguaje que no depende de una arquitecturacomputacional definida.

  • 5/28/2018 core java espa ol

    27/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 11

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    4.11 Ambiente Multihilos

    Java brinda soporte a la programacin multihilos, que permite que un nico programalleve a cabo varias tareas concurrentemente. Los programadores pueden hacer uso deesto para crear aplicaciones de red interactivas. El sistema en tiempo de ejecucin deJava (JVM) se implement de forma eficiente, para permitir la fcil sincronizacin de

    hilos, que a su vez facilitan la programacin interactiva.

    Ahora que se conocen las caractersticas principales de Java, se discute a continuacinla plataforma de Java.

    5. La Plataforma Java

    Una plataforma es el entorno sobre el cual se ejecutan los programas. Una plataformapuede ser una plataforma de software, una plataforma de hardware o una combinacinde ambos. La plataforma Java es una plataforma de slo software, la cual se puedeejecutar en varias plataformas de hardware as como en varios sistemas de operativos.

    La plataforma Java esta conformada por dos componentes, llamados la JVM y el API deJava, como se muestra en la Figura 1.4.

    Figura 1.4: Los dos Componentes de la Plataforma Java

    5.1 JVM

    La JVM es una aplicacin ejecutable que representa a un procesador genrico en elcual corren los bytecodes de Java. Una implementacin particular de esta mquinavirtual, que es escrita para operar en un entorno particular, an brindar soporte al APIgeneral de Java. Esto es lo que hace a Java independiente de la plataforma.

  • 5/28/2018 core java espa ol

    28/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 12

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    La JVM consta de los siguientes tres aspectos:

    Especificacin abstracta.

    Implementacin concreta.

    Instancia en tiempo de ejecucin.

    Esto se muestra en la Figura 1.5.

    Figura 1.5: Diferentes Aspectos de la JVM

    La especificacin Java define la especificacin abstracta de la JVM, que se necesitapara permitir que los programas se ejecuten en ella. La implementacin concreta de laJVM es la implementacin actual de la especificacin abstracta. La instancia de tiempode ejecucin (la instancia de una JVM que est en ejecucin actualmente) soporta laejecucin de los programas Java. El cdigo fuente de Java (archivo .java) esconvertido en bytecodes (archivo .class) por el compilador Java. Estos bytecodes sonluego convertidos a cdigo de mquina nativo por alguna JVM que sea especfica a una

    plataforma en particular. De aqu que, los archivos .class son portables a cualquierimplementacin de la mquina virtual.

    Para entender la diferencia entre los archivos .java y .class, se va a mostrarbrevemente el flujo de un programa Java.

  • 5/28/2018 core java espa ol

    29/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 13

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    El cdigo fuente Java se ingresa usando un editor.

    El comandojavacse usa para iniciar el compilador Java, que compila el cdigofuente Java (archivo .java) a bytecodes, suponiendo que no hay errores entiempo de compilacin. Si existe un error, el programador debe regresar aleditor, corregir los problemas, y ejecutar nuevamente javac hasta que todos los

    errores sean solucionados y se obtenga una compilacin limpia. Una vez compilado, se produce un archivo .class que podr ser usado con

    cualquier JVM ejecutndose en cualquier plataforma.

    El comandojavase usa para iniciar el intrprete Java, y para ejecutar el archivo.class.

    Se ha discutido que los bytecodes Java obtenidos despus de la compilacin encualquier JVM pueden ser transferidos a cualquier otra JVM ejecutndose en cualquierotra plataforma y ser ejecutado all. Esta caracterstica ayudar a los usuarios adescargar bytecodes Java de la Internet y ejecutarlos en sus JVM sin riesgos deseguridad. Sin embargo, hay un pequeo problema, los bytecodes descargados notienen que haber sido producidos por un compilador Java estndar, por lo que estos

    bytecodes pueden estar errneos.

    Para resolver este problema, una vez que el bytecode sea descargado, la JVM en lamquina del usuario inicia un proceso de verificacin del bytecode. Durante esteproceso, los fragmentos del bytecode son probados para verificar su validez. Se revisacualquier manipulacin ilegal de apuntadores, violacin de restricciones colocadas paraacceder a las variables y mtodos de las clases, uso ilegal de objetos, etc. Si no seencuentran ninguna de las violaciones anteriores, y si el bytecode descargado pasatodas las otras pruebas que el verificador impone, entonces el bytecode es tratadocomo un cdigo confiable.

    Actualmente, el verificador de bytecode no realiza ninguna suposicin acerca del

    bytecode que recibe. El bytecode puede provenir del sistema local o haber sidodescargado de la Internet. Sin importar la fuente, el bytecode es objeto del mismoproceso de verificacin; esto asegura la confiabilidad del cdigo y tambin protege alintrprete Java. Dado que la confiabilidad del cdigo fue verificada, el intrprete Javaopera a toda capacidad sin tener que revisar cualquier aspecto de seguridad.

    Cuando surge un aspecto vinculado con la seguridad en Java, el administrador deseguridad de Java juega un papel fundamental. El administrador de seguridad (clasejava.lang.SecurityManager) es una clase definida en Java, que permite a lasaplicaciones Java implementar una poltica apropiada de seguridad. Cuando unaaplicacin Java implementa esta poltica de seguridad, tiene la capacidad dedeterminar si la operacin que est a punto de realizarse, es una operacin insegura o

    sensible. Tambin se pueden obtener ms detalles de la operacin, y si la operacin serealiza dentro de un contexto de seguridad que permita a la aplicacin llevar a cabo esaoperacin.

    El modelo de seguridad de Java provee una caja de arena (sandbox) que esconfigurable, sta protege a las aplicaciones y applets Java de ser atacados por virus,

  • 5/28/2018 core java espa ol

    30/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 14

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    que son difundidos a travs de programas descargados de mquinas no confiables. Lasaplicaciones y applets Java pueden realizar cualquier operacin que este bajo lasupervisin de la caja de arena y nada ms. En este modelo de caja de arena, lasaplicaciones y applets Java pueden descargar cualquier cdigo de cualquier mquina.El cdigo no se revisa por virus, porque mientras se ejecuta el cdigo, la caja de arenarevisa si viene de una mquina confiable o no.

    Si el cdigo proviene de una mquina no confiable, se evita realizar cualquier operacinque pueda daar al sistema. La ventaja del modelo de caja de arena es que laaplicacin Java no necesita revisar si el cdigo es confiable, ni necesita revisar por virusen el cdigo. La caja de arena evita que un virus o cdigo no confiable realicenoperaciones maliciosas.

    La caja de arena de Java incluye las caractersticas de seguridad provistas por la JVM,el administrador de seguridad, el cargador de clases y el verificador de archivos class.La caja de arena se puede personalizar en dos de sus componentes, son estos: eladministrador de seguridad y el cargador de clases. El administrador de seguridadpuede ser personalizado al escribir clases definidas por el usuario. Las clases definidas

    por el usuario pueden ser creadas derivando de la clasejava.lang.SecurityManager y sobrescribiendo los mtodos necesarios. Estosadministradores de seguridad personalizados son tiles cuando se quieren cargarclases que no son completamente confiables. No se tienen que escribir nuestra propiacaja de arena personalizada para las aplicaciones y applets Java que se escriben da ada, simplemente se puede usar las cajas de arena estndar que otros crean. Si sequiere ejecutar un applet en un navegador Web, por ejemplo, se usa la caja de arenaque viene con el navegador Web.

    A continuacin se discute el cargador de clases que es el otro componente que puedepersonalizarse de la caja de arena, El cargador de clases carga las clases en la JVM.

    Los cargadores de clases pueden ser de dos tipos: Cargador de Clases Primordial.

    Objetos Cargadores de Clases.

    El cargador de clases primordial es actualmente una parte de la implementacin de laJVM, mientras que el objeto cargador de clase es un objeto que se usa para cargar unaclase. El cargador de clases primordial carga solamente clases confiables, incluyendolas clases definidas en el API Java que estn disponibles en el sistema local. Es posibleescribir objetos cargadores de clases propios, que pueden ser personalizados paracargar clases especficas. El cargador de clases primordial en principio no confa de lasclases cargadas por estos objetos cargadores de clases. Actualmente, estos objetos

    cargadores de clases son slo aplicaciones Java que se ejecutan en la JVM.Considere una clase MiClase que es cargada por un objeto cargador de clases.

    Asuma que MiClase carga otras clases tales como OtraClase1 y OtraClase2.Estas dos clases son actualmente cargadas a travs del mismo cargador de clases queha cargado a MiClase.

  • 5/28/2018 core java espa ol

    31/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 15

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    En Java, las clases son agrupadas dentro de paquetes, es decir, cada paquete tiene unconjunto de clases. El trmino espacio de nombres se refiere a la entidad que mantienelos nombres de las clases. Java usa paquetes para este propsito. Dentro de unespacio de nombres en particular, slo puede existir una clase con un nombre dado. Sinembargo, puede existir cualquier nmero de cargadores de clases dentro de una JVM.Cada cargador de clases puede estar asociado a un espacio de nombre diferente. La

    misma clase puede ser cargada a travs de diferentes cargadores de clases que estnasociados a diferentes espacios de nombres. No puede haber ninguna interaccin entrecargadores de clases que estn presentes en diferentes espacios de nombres, a menosque el cargador de clase expresamente permita esa interaccin.

    Se pueden diferenciar las clases descargadas de la red desde diferentes mquinas endiferentes espacios de nombres. A estas clases se les restringir el acceso a otra claseque est en un nombre de espacios diferente. As, se puede usar esta arquitectura decargador de clase para evitar cualquier dao causado por cdigo malicioso.

    5.2 El API de Java

    El API (Application Programming Interface) de Java es una muy buena coleccin decomponentes de software apropiadas para el desarrollo de programas Java. En Javahay diferentes tipos de programas tales como aplicaciones, applets y Servlets. El API deJava ayuda al desarrollo y ejecucin de estos diferentes tipos de programas medianteuna amplia librera. El soporte de las diversas caractersticas de Java se realiza a travsdel API. stas son bsicamente libreras o paquetes de componentes relacionados. LaFigura 1.6 muestra las caractersticas provistas por el ncleo del API de Java.

    Figura 1.6: Caractersticas Provistas por el Ncleo del API Java

  • 5/28/2018 core java espa ol

    32/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 16

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Se ha visto cmo Java evolucion como una aplicacin de Internet. A continuacin sediscute el impacto que Java ha tenido sobre Internet y la WWW.

    6. Impacto de Java en la WWW

    Los usuarios de la WWW hacen uso de varios tipos de mquinas, y tienen diferentesplataformas. As que el problema clave es hacer que la informacin en la Internet seacompatible con todas las plataformas. Debido a que Java permite la portabilidad, selogra este punto. Usando la caracterstica de portabilidad, el mismo programa puede serejecutado en diferentes plataformas, con resultados predecibles. La informacin nonecesita ser replicada para soportar diferentes plataformas.

    El otro tema principal de los usuarios de la WWW enfrentan es la seguridad. Debido a laamplia difusin de los virus y programas que pueden capturar informacin comopalabras claves y detalles de las tarjetas de crdito del sistema de archivos local, losusuarios hasta hace poco, estaban temerosos de descargar cualquier programaejecutable desde mquinas no confiables.

    Los programas Java no tienen permiso de acceder a cualquier recurso fuera del alcancede la JVM. Por esto, la JVM controla los intentos de romper la seguridad a travs deprogramas Java.

    Java tambin hace la programacin de aplicaciones interactivas muy fcil, las cuales seusan en muchos portales en Internet para atraer clientes.

    Java comenz de una manera modesta al permitir que los programas se ejecutaran enla Internet usando los applets de Java. Sin embargo, esto ha crecido hasta alcanzar unmayor poder de funcionalidad. Existen varias tecnologas basadas en Java que se usanpara obtener funcionalidades especializadas. Por ejemplo, tecnologas como los JavaServlets, Java Server Pages (JSP), Enterprise Java Beans (EJB), etc., han otorgado alprogramador mucho ms poder para construir aplicaciones robustas y escalables paraInternet.

    Considere la Figura 1.7, la cual muestra como las diferentes tecnologas Java se usanpara alcanzar varias funcionalidades en un ambiente Internet.

  • 5/28/2018 core java espa ol

    33/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 17

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Figura 1.7: Tecnologas Java en Internet

    Nota: Todas las tecnologas listadas en la Figura 1.7, excepto la tecnologa applet,estn basadas en la ejecucin sobre la JVM de una mquina en vez de la JVM de unnavegador. Por lo tanto, slo los applets tienen restricciones en acceder los recursos delsistema fuera de la JVM.

    A continuacin se estudian las diferentes clases y objetos en Java.

    7. Clases y Objetos

    Una clase es un prototipo que se usa para definir las caractersticas y loscomportamientos que son comunes a todos los objetos de un mismo tipo. Las variablesse usan para representar las caractersticas de los objetos y los mtodos se usan pararepresentar el comportamiento de los objetos. Se puede declarar una variableespecificando su tipo de datos y el nombre de la variable.

    Similarmente, se puede declarar objetos especificando lo siguiente:

    Tipo (nombre de clase). Nombre de Objeto.

    int a;

    Computador comp;

  • 5/28/2018 core java espa ol

    34/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 18

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    En el fragmento de cdigo anterior, aes el nombre de la variable, e intes su tipo dedatos. Similarmente, compes el nombre del objeto, y Computadores el tipo del objeto,es decir, el nombre de la clase. Se pueden declarar muchas variables del mismo tipo dedatos. Similarmente, se pueden declarar muchos objetos del mismo tipo (muchosobjetos de la misma clase).

    La Figura 1.8, muestra ms de un objeto de una misma clase.

    Figura 1.8: Clases y Objetos Java

    La Figura 1.8 muestra una clase llamada Clientey objetos con los nombres ObjetoA,ObjetoB y ObjetoC de este tipo. La clase Clientees una representacin orientada aobjetos del cliente del mundo real, mantiene los datos del cliente. Tpicamente, la clasetendr variables miembro para mantener informacin, como el ID del cliente, el nombredel cliente, etc.

    Se define una clase en Java usando la palabra reservada class. La sintaxis es lasiguiente:

    class NombreClase {

    // variables miembro

    // funciones miembro

    }

  • 5/28/2018 core java espa ol

    35/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 19

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Considere la clase Computador, que tiene los atributos cpu, monitor, teclado ymouse. Se pueden crear dos instancias de la clase Computadorque tengan diferentesvalores para estos atributos. Estas dos instancias estn representadas por comp1 ycomp2.

    Los objetos en Java se crean usando la palabra clave new.

    La sintaxis es la siguiente:

    NombreClase objecto = new NombreClase();

    Los constructores en Java tienen la misma funcionalidad que en C++. Los constructoresen Java pueden aceptar nombres de variables y tipos de variables como argumentos.

    A su vez, como en C y C++, donde la funcin main() es el punto de inicio delprograma, se tiene que main()es el punto de inicio del programa Java tambin.

    La funcin main()tiene la siguiente declaracin de funcin:

    public static void main(String args[]){

    // El cdigo principal va aqu

    }

    As como en C y C++, los programas Java pueden aceptar parmetros por la lnea decomandos, el main()de Java puede tomar estos argumentos. En C o C++, se puedentener parmetros de la lnea de comandos usando int argc y char* argv[]. EnJava, se toman como un arreglo de objetos String. Adems, mientras en C o C++ esopcional para la funcin main() tomar argumentos desde la lnea de comandos, esobligatorio que los argumentos de la lnea de comandos estn declarados en la funcinmain()de Java.

    Nota: La funcin main() en Java no puede ser global, como en C o C++. En Java,debe estar presente dentro de una clase Java.

    La palabra clave publices un tipo de especificador de acceso en Java. Se vern otrostipos de especificadores de acceso en el Volumen 2, Unidad 1 - Clases, Objetos yReferencias.

    Las variables miembro son conocidos como miembros, y las funciones miembros comolos mtodosde una clase. No se puede tener la declaracin de la clase separada, y ladefinicin de la funcin miembro apareciendo libremente, como en C++. Ambos debenaparecer dentro del bloque de definicin de la clase.

    Observe el Ejemplo 1.1, que tiene el cdigo Java para la clase Computador. En estemomento, la sintaxis del cdigo no es importante, dado que el punto ahora es entenderla relacin entre clases y objetos.

  • 5/28/2018 core java espa ol

    36/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 20

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Ejemplo 1. 1

    El siguiente programa representa una computadora.

    El cdigo Java comienza aqu...

    1. /*Definicion de la clase Computador comienza aqui*/2. class Computador {

    3. boolean cpu, teclado, mouse;

    4. String monitor;

    5. }/*Definicion de la clase Computador termina aqui*/

    6.

    7. /*Definicion de la clase ComputadorEjemplo comienza aqui*/

    8. public class ComputadorEjemplo {

    9. /*El metodo main comienza aqui */

    10. public static void main(String[] args) {

    11. //Crear la instancia de la clase Computer

    12. Computador comp1 = new Computador();

    13. Computador comp2 = new Computador();

    14.

    15. comp1.cpu = true;

    16. comp1.monitor = "Negro";

    17. comp1.teclado = true;

    18. comp1.mouse = true;

    19.

    20. comp2.cpu = true;21. comp2.monitor = "Blanco y negro";

    22. comp2.teclado = true;

    23. comp2.mouse = false;

    24. }/* El metodo main termina aqui */

    25. }/*Definicion de la clase ComputadorEjemplo termina aqui*/

    El cdigo Java termina aqu

    Fin del Ejemplo 1.1Aqu, se tienen dos clases, Computador y ComputadorEjemplo. La claseComputador define el prototipo para un conjunto de objetos que tienen los mismosatributos. La clase ComputadorEjemplo crea dos objetos de tipo Computador, y

  • 5/28/2018 core java espa ol

    37/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 21

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    tambin se muestra que estos dos objetos pueden contener diferentes valores para susatributos.

    Considere la Figura 1.9 para entender mejor el cdigo anterior.

    Figura 1.9: Mltiples Objetos de una Clase

    A continuacin se discuten los principios de la programacin orientada a objetos usadosen Java.

    8. Orientacin a Objetos en Java

    Se sabe que Java brinda soporte a la programacin orientada a objetos. En laprogramacin orientada a objetos, los programadores crean objetos de software, queson modelados como los objetos del mundo real. Se describen los objetos del mundo

    real usando sus atributos y comportamiento. Similarmente se describen los objetos desoftware usando variables y mtodos. Se tiene un prototipo a partir del cual se creanobjetos del mismo tipo del mundo real. Similarmente, se tiene un prototipo llamadoclase, de la cual se pueden crear muchos objetos de software del mismo tipo. Javaimplementa la orientacin a objetos a travs de tres importantes propiedades, que son:

  • 5/28/2018 core java espa ol

    38/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 22

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Encapsulacin.

    Herencia.

    Polimorfismo.

    A continuacin se discuten en detalle cada uno de ellos.

    8.1 Encapsulacin

    La capacidad de presentacin de informacin dentro de un objeto se divide en dospartes bien diferenciadas:

    Interna: la informacin que necesita el objeto para operar y que es innecesariapara los dems objetos de la aplicacin. Estos atributos se denominan privadosy tienen como marco de aplicacin nicamente a las operaciones asociadas alobjeto.

    Externa La que necesitan el resto de los objetos para interactuar con el objetoque definimos. Estas propiedades se denominan pblicas y corresponde a lainformacin que necesitan conocer los restantes objetos de la aplicacinrespecto del objeto definido para poder operar.

    Se puede imaginar la encapsulacin como introducir el objeto dentro de una caja negradonde existen dos ranuras denominadas entrada y salida. Si se introducen datos por laentrada automticamente obtendr un resultado en la salida. No necesita conocerningn detalle del funcionamiento interno de la caja.

    El trmino encapsulacin indica la capacidad que tienen los objetos de construir unacpsula a su alrededor, ocultando la informacin que contienen (aquella que esnecesaria para su funcionamiento interno, pero innecesaria para los dems objetos) alas otras clases que componen la aplicacin.

    Esto se ilustra en la Figura 1.10.

  • 5/28/2018 core java espa ol

    39/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 23

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Figura 1.10: Encapsulacin en una Clase

    Esta caracterstica est disponible en Java y se llama encapsulacin.

    Tome el ejemplo de un ATM, telecajero. Se puede ir a un ATM a retirar dinero, revisar elsaldo de una cuenta, y depositar dinero. Estas son las funcionalidades proporcionadas alos usuarios. Ellos no saben cmo estas funcionalidades estn implementadas, y noestn preocupados por la implementacin. Los usuarios pueden acceder a lainformacin pertinente solo a sus cuentas. Ellos no pueden acceder a la informacin deotros usuarios, a los usuarios no se les da acceso a saber cmo trabaja el ATM.

    Considere la Figura 1.11, que muestra como la encapsulacin se lleva a cabo en unaclase Java. La clase que se muestra es Direccion. Un objeto Direccion esinstanciado y un mtodo es invocado. El cdigo que es privado en la clase Direccionno es visible para la clase ServicioCliente.

  • 5/28/2018 core java espa ol

    40/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 24

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Figura 1.11: Encapsulacin en el Objeto Direccion

    8.2 Herencia

    Considere el ejemplo de un profesor de fsica y uno de matemticas. Ambos pertenecena una categora general llamada profesores. Ellos tienen ciertos atributos ycomportamiento que son comunes a todos los profesores. Adicionalmente, ellos tienen

    ciertos atributos especiales que son comunes a todos los profesores de fsica ymatemticas. Cuando se modela este ejemplo usando objetos de software, se puedetener una clase llamada Profesor que defina todos los atributos y comportamientocomunes a todos los profesores. Subsecuentemente, se pueden definir dos clasesProfesorFisica y ProfesorMatematica, que hereden los atributos ycomportamiento comunes a todos los profesores, desde la clase Profesor. En estecaso, la clase Profesor ser la sper clase de las clases ProfesorFisica yProfesorMatematicay estas sern subclases de la clase Profesor.

    Algunos lenguajes como C++, permiten la herencia mltiple en la cual una clase puedeheredar de varias clases. En Java, una clase slo puede tener una sper clase. Estosignifica que una clase en Java no puede directamente derivar de varias clases. Sin

    embargo, Java soporta herencia mltiple indirectamente usando interfaces. Lasinterfaces sern tratadas en detalle en el Volumen 1, Unidad 5 Clases Abstractas eInterfaces.

    La Figura 1.12 muestra un ejemplo de herencia. De esta figura, se puede deducir queBicicleta, MonoPatin y Moto tienen propiedades que son comunes a todos los

  • 5/28/2018 core java espa ol

    41/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 25

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    vehculos de dos ruedas, mientras que Carro, Autobusy Camiontienen propiedadesque son comunes a todos los vehculos de cuatro ruedas. Adems, los vehculos de dosy cuatro ruedas, a su vez, tienen propiedades que son comunes a los vehculos.

    Figura 1.12: Herencia: Clases Como Especializacin de la SuperClaseVehiculo

    8.3 Polimorfismo

    Se pueden tener muchas situaciones cuando se quieren hacer varias operacionessimilares unas con otras dependiendo de la entrada que se obtenga. Esto se denominapolimorfismo, formado de dos races griegas, poly y morphus. La palabra polysignifica muchos y 'morphus' significa formas.

    En programacin orientada a objetos, polimorfismo significa una sola interfaz y mltiplesimplementaciones. En otras palabras, los nombres de mtodos son los mismos, perotienen diferentes implementaciones basadas en los parmetros que le son pasados, o

    en los objetos sobre los cuales son invocados.

    Suponga que se desea implementar a la clase Mamiferos, suponga tambin que unode los mtodos que se desea implementar para esta clase, es el que permita a talesmamferos desplazarse de forma natural, a este mtodo se le llamar desplazar().Se encontrar entonces conque para algunos mamferos el desplazamiento se realizarpor medio de caminar, como es en el caso de las personas, para otros eldesplazamiento natural ser nadar, como en el caso de los delfines e inclusive paraotros, el desplazamiento se lograr por medio de volar, como sucede con losmurcilagos. Se usa el mismo nombre del mtodo para invocar sus diferentesimplementaciones.

    Ahora, se va a comenzar la programacin en Java escribiendo la aplicacinHolaMundo, que escribe la cadena Hola Mundo en la salida estndar.

    Los Ejemplos 1.2 y 1.3 tienen algunos elementos sintcticos, que no se han visto endetalle hasta ahora. Estos elementos sern cubiertos en las prximas unidades. Estosejemplos simplemente ayudarn a exponer al usuario a la sintaxis Java.

  • 5/28/2018 core java espa ol

    42/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 26

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    9. Ejemplo de una Aplicacin Java

    Observe el Ejemplo 1.2. La aplicacin Java HolaMundo de este ejemplo imprime lacadena de caracteres HolaMundo!en la salida estndar.

    Ejemplo 1.2

    El cdigo Java comienza aqu...

    1. /*Definicion de la clase HolaMundo comienza aqui*/

    2. public class HolaMundo {

    3. /*El metodo main comienza aqui */

    4. public static void main(String[] args) {

    5. System.out.println("Hola Mundo!");

    6. }/* El metodo main termina aqui */

    7. }/*Definicion de la clase HolaMundo termina aqui*/

    El cdigo Java termina aqu

    En este programa, HolaMundoes el nombre de la clase, tienen un mtodo (comparablea una funcin en C o a una funcin miembro en C++) con el nombre main. Este mtodotiene una instruccin que imprime Hola Mundo! en la salida estndar (el monitor)cuando se ejecuta. Esta clase define un prototipo, y se puede crear cualquier nmero deobjetos de este tipo instanciando esta clase.

    Ahora que se tiene el cdigo fuente listo, se debe compilar el programa y ejecutarlo. Elprograma debe ser almacenado en un archivo bajo el nombre HolaMundo.java.Usualmente, el nombre del archivo ser el mismo que el nombre de la clase que

    contiene el mtodo main(), ya que la ejecucin del programa usualmente comienzacon el mtodo main(). El archivo tendr una extensin .java. Todo archivo Javapuede tener solamente una clase, que sea public.

    El prximo paso es compilar el programa para obtener los bytecodes (archivo .class).La compilacin se realiza usando el comando javac, como sigue:

    javac HolaMundo.java

    Esto produce un archivo con el nombre HolaMundo.class, que contiene losbytecodes. Estos bytecodes son interpretados por el interprete Java, y entoncesejecutados. El intrprete Java se inicia usando el comando java, como se muestra acontinuacin:

    java HolaMundo

    La salida del programa en el monitor ser:

    Hola Mundo!

  • 5/28/2018 core java espa ol

    43/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 27

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Fin del Ejemplo 1.2

    En la prxima seccin, se presenta cmo escribir un applet Java que imprime la cadenade caracteres Hola Mundo!.

    10. Ejemplo de Applet JavaEl applet Java HolaMundo que se presenta a continuacin, imprime la cadena decaracteres Hola Mundo! en el rea del applet.

    Ejemplo 1.3

    El cdigo Java comienza aqu...

    1. import java.applet.Applet;

    2. import java.awt.Graphics;

    3.

    4. /*Definicion de la clase HolaMundo comienza aqui*/5. public class HolaMundo extends Applet {

    6. /*El metodo paint comienza aqui */

    7. public void paint(Graphics g) {

    8. // Llamar al metodo drawString

    9. // del objeto Graphics

    10. g.drawString("Hola Mundo!", 25, 25);

    11. }/* El metodo paint termina aqui */

    12.}/*Definicion de la clase HolaMundo termina aqui*/

    El cdigo Java termina aqu

    En este applet Java, primero se tienen las instrucciones import, que se usan paraimportar las clases Applet y Graphics. Estas son esenciales para un programaapplet. Luego, se tiene la definicin de la clase, con el nombre de la clase HolaMundo.Esta definicin de la clase usa la palabra reservada extends, seguida del nombre de laclase Applet. Esto significa que la clase HolaMundohereda sus caractersticas de laclase Applet. Se aprender ms acerca de herencia en el Volumen 2, Unidad 3 -Herencia. Esta clase tiene un mtodo con el nombre de paint, que imprime HolaMundo!. La programacin de Applets ser discutida en el Volumen 6, Unidad 1 -

    Applets.

    El cdigo de este ejemplo tambin muestra el uso de los comentarios en Java. Haybsicamente tres tipos de comentarios que se usan en Java. Son los siguientes:

  • 5/28/2018 core java espa ol

    44/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 28

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Comentarios de Documentacin: Encerrados dentro de /** */. Estos comentarios seusan para generar documentacin en las clases en Java.

    Bloques de Comentarios: Encerrados dentro de /* */. Estos comentarios se usantpicamente antes de un mtodo o clase para describir su funcionalidad.

    Comentarios de Implementacin: Comienzan con //. Estos comentarios se usantpicamente dentro de la implementacin del mtodo para explicar una expresin o unalgica de implementacin compleja.

    Se necesita escribir un archivo HTML para visualizar este applet. El cdigo para elarchivo HTML requerido para ejecutar el applet HolaMundose muestra a continuacin:

    El cdigo HTML comienza aqu...

    Hola Mundo

    El cdigo HTML termina aqu

    El parmetro incluido en la etiqueta se usa para invocar el archivoHolaMundo.class, y ejecutarlo. Este archivo se llamar HolaMundo.html. Senecesita tener ambos el applet(archivo .class) y el archivo HTML en el mismodirectorio, una vez hecho esto, se puede ejecutar el applet usando el siguientecomando:

    appletviewer HolaMundo.html

    La ventana del visualizador de applet se abre, y la salida del applet ser la siguiente:

    Hola Mundo!

    Fin del Ejemplo 1.3

  • 5/28/2018 core java espa ol

    45/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 29

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Resumen

    Ahora, que ha completado esta unidad, usted debe ser capaz de:

    Discutir la evolucin de Java.

    Comparar Java con C++. Mencionar las principales caractersticas de Java.

    Explicar la plataforma Java.

    Describir el impacto de Java en la WWW.

    Definir clases y objetos.

    Explicar los principios de orientacin a objetos en Java.

  • 5/28/2018 core java espa ol

    46/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 30

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Unidad 1: Examen de Autoevaluacin1) Cul de los siguientes lenguajes visualiza los componentes del programa como

    objetos?

    a) Lenguaje Procedimental

    b) Lenguaje Orientado a Objetosc) Lenguaje de Mquina

    d) Ninguno de los anteriores

    2) Cul de las siguientes caractersticas describe la arquitectura del lenguaje Java?

    a) Orientado a Procedimientos

    b) Abstracto

    c) Independiente de Plataforma

    d) Especfico

    3) Cul mtodo deben tener todos los programas de aplicacin Java?

    a) start()

    b) begin()

    c) main()

    d) main(String args[])

    4) Cul es el comando para ejecutar un programa compilado en Java?

    a) javac

    b) javac) run

    d) execute

    5) En Java, una clase puede tener cualquier nmero de sper clases.

    a) Verdadero

    b) Falso

    6) Cules de los siguientes programas puede acceder a recursos fuera de la JVM?

    a) Aplicaciones Javab) Applets Java

    c) Servlets Java

    d) Ninguno de los anteriores

  • 5/28/2018 core java espa ol

    47/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 31

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    7) Cul es la extensin usada para guardar los archivos fuente Java?

    a) .java

    b) .javac

    c) .javax

    d) .src

    8) Cul de los siguientes es usado para referirse a una subclase?

    a) Clase Interna

    b) Clase Anidada

    c) Clase Derivada

    d) Clase Oculta

    9) Cul de las siguientes opciones ha hecho popular a Java a travs de la Internet?

    a) Applets Javab) Aplicaciones Java

    c) Bytecodes Java

    d) Ninguna de las anteriores

    10) Cul de las siguientes afirmaciones es cierta acerca de Java?

    a) Tiene solo un compilador

    b) Tiene solo un interpretador

    c) Tiene ambos un compilador y un interpretador

    d) Interpreta y luego compila

  • 5/28/2018 core java espa ol

    48/267

    Core Java Gua del Estudiante

    Unidad 1: Visin General de Java Libro 1: Core Java 32

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Respuestas a la Unidad 1: Examen de Autoevaluacin1) b

    2) c

    3) d

    4) b5) b

    6) a y c

    7) a

    8) c

    9) a

    10) c

  • 5/28/2018 core java espa ol

    49/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 33

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    Unidad 2: Operadores, Expresiones yControl de Flujo

    Objetivos del AprendizajeAl final de esta unidad, usted ser capaz de:

    Mencionar los tipos de datos primitivos usados en Java.

    Describir la declaracin e inicializacin de variables en Java.

    Discutir los diferentes operadores usados en Java.

    Explicar la precedencia de operadores en Java.

    Definir los tipos de conversiones automticas y explcitas en Java.

    Explicar las diferentes estructuras de control usadas en Java.

  • 5/28/2018 core java espa ol

    50/267

    Core Java Gua del Estudiante

    Unidad 2: Operadores, Expresiones y Control de Flujo Libro 1: Core Java 34

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    1. Introduccin

    En esta unidad, se discute la sintaxis bsica de Java, se encontrarn muchassimilitudes entre la sintaxis de Java y C++.

    Antes de aprender acerca de la sintaxis de programacin de Java, se discuten los tiposde datos que provee el lenguaje Java.

    2. Tipos de Datos en Java

    Los tipos de datos en Java son de dos tipos:

    Tipos Primitivos: Tipos de datos que mantienen valores primitivos como 10, a,12.2 etc.

    Tipos Referencias: Tipos de datos que mantienen valores de referencia comoobjetos y arreglo de referencias.

    Adems de los tipos de datos en Java, tambin existen los genricos que nos permitenespecificar el tipo de elemento de un Coleccin en tiempo de compilacin. En lugar deespecificar una lista, especificamos su contenido, por ejemplo: Double (doble).

    La Figura 2.1 muestra los tipos de datos que Java soporta.

    Figura 2.1: Tipos de Datos en Java

  • 5/28/2018 core java espa ol

    51/267

    Gua del Estudiante Core Java

    Libro 1: Core Java Volumen 1: Fundamentos de Java 35

    Copyright IBM Corp. 2007Los materiales del curso no pueden ser reproducidos total o

    parcialmente sin el previo permiso escrito de IBM.

    En la Figura 2.1, bajo los tipos primitivos, se tienen ocho tipos de datos. Los nombresmostrados en la figura son las palabras claves usadas en Java para denotar estos tiposde datos. Los tres tipos referencia, es decir,arreglos, clases e interfaz, se les colocaidentificadores definidos por el usuario al escribir cdigo Java. Por ejemplo,nombre[20]denotaanombredefinido por el usuario como tipo arreglo.

    A continuacin se ver en detalle los tipos de datos primitivos usados en Java.

    2.1 Tipos Primitivos

    Los tipos de datos primitivos se usan para definir variables en Java. El tipo de datoespecificado junto con un identificador en el momento de la declaracin de la variabledefine el rango de valores que puede ser almacenado en esta variable. Java proveeocho tipos de datos primitivos. La Tabla 2.1 proporciona el nombre del tipo de datoprimitivo y el tamao ocupado por cada tipo de dato primitivo en memoria.

    Tipo de Dato Primitivo Tamao Ocupado en Memoria

    boolean 1 byte

    byte 1 byte

    char 2 bytes

    short 2 bytes

    int 4 bytes

    Long 8 bytes

    Float 4 bytes

    Double 8 bytes

    Tabla 2.1: Tamao Ocupado por los Tipos de Datos Primitivos en la Memoria

    A continuacin se discute cada uno de los ocho tipos de datos en Java, comenzandocon los tipos de datos enteros.

    2.1.1 Tipos de Datos Enteros

    Los tipos de datos enteros se usan para almacenar valores enteros. La Figura 2.1

    muestra cinco tipos diferentes de tipos de datos enteros, estos son: byte, short,int, long, y char. El rango de valores que estos tipos de datos primitivos puedenalmacenar se muestra a continuacin: