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:
Top Related