trucos java

483
Id Java 2, incluyena

Upload: abieser-peregrino

Post on 26-Mar-2016

280 views

Category:

Documents


8 download

DESCRIPTION

Contiene ejemplos practicos de programacion en java

TRANSCRIPT

  • Id

    Java 2, incluyena

  • JAVA 2 MANUAL DE PROGRAMACIN

  • JAVA 2 MANUAL DE PROGRAMACIN

    Luis Joyanes Aguilar

    Matilde Fernandez Azuela

    Departamento de Lenguajes y Sistemas Informticos e Ingeniera del Software Facultad de Informtica / Escuela Universitaria de informtica

    Universidad Pontificia de Salamanca. Campus Madrid

    Osborne McGraw-Hill

    MADRID BUENOS AIRES CARACAS GUATEMALA LISBOA MXICO NUEVA YORK PANAMA SAN JUAN SANTAF DE BOGOT SANTIAGO SA0 PAUL0

    SAN FRANCISCO * SIDNEY SINGAPUR ST. LOUIS TOKIO * TORONTO AUCKLAND HAMBURG0 LONDRES * MILN MONTREAL NUEVA DELHI PARiS

  • CONTENIDO

    ....

  • vi Contenido

    I , 1 1 . Estructura de un programa aplicacin en Java ................................................ 1 . 1 I . 1. Referencia a miembros de una clase .........................................................

    I , 17. I Errores de compilaci ............................................... I , 12.2. Errores de e-iecucin I . 12.3. Errores Ibgicos .......................................................

    25 27

    I . 12. Errores de programacin ......................................................

    ....................................

    Captulo 2. Caractersticas del lenguaje Java .......................................................... 31

    2.1. Palabras resercadas .. ...................................................... 2 2. Identi icadores ..... ................................................. 7.3. Tipos de datos ....................................................

    ..................

    2.6. constantes ................................................. ...................................... 2.7. La biblioteca dc clases de Java .................................................... 7.8. Coiiceptos bisicos sobre excep ................................................... 2.9. 7.10. Las clases Character y Boolean ........................

    La clase Nxmber y sus subclases ....................................

    .......................... ..................................

    .....................................

    2.13. La sentencia dc asignacin ....... 2.14. Expresiones .................. ..................................................

    .................................................

    2.15. C l a s e M a t h ........... .........................................................

    ............................... 2.18. Operadores aritmticos ......................... ..................................... 7.19. Operadores relacionales ................. ......................................... 2.20. Operadores lb&' 'ICOS ............... ....................................................

    .....................................................

    ...................................................

    32 33 34 34 38 41 44 45 46 48 49 52 52 53 54 55 55 57 57 58 61 61 63 65 67 67

    71

    3. I . La sentencia i f ........... 72 3.3. La sentencia i f - e l s e 73 3.3. Las sentencias i f e I f - e l s e anidadas 74 3.4. La sentencia s w i t c h ..................................................... 78

    80 3.5. La sentencia f o r .................... 3.6. La sentencia break 83 3.7. La sentencia continue ...... 85

    Captulo 3. Decisiones y bucles ................. ............................................

    ................................................... ....................................................

    ............................

    ..................................................... ................................. ...................................

    ...............................................

  • Contenido vi

    3.8. Diferencias entre continue y break ......................................................... 3.9. La sentencia while ...................................................................................... 3.10. La sentencia do-while ................................................................................

    Captulo 4 . Clases. objetos y mktodos ....................................................................... 4.1. 4.2. 4.3. 4.4. 4.5. 4.6. 4.7. 4.8. 4.9. 4 . I O . 4.11.

    Ob-jetos y clases .. Declaracin y crea Acceso a datos y n Utilizacin de intodos Paso de parnietros ......................................................................................... Paso de parrnetros por valor . Paso de parmetro Constructores ...... Modificadores d c private ................................. protected ....................................................................................................

    4.12. public ........................................................................................................... 4 . I3 . Recursividad ................................................................................................... . .

    Captulo 5 . Herencia ................................................................................................... 5 .I .

    5.3. El intodo c l o n e ............................................................................................ 5.4. El mtodo equals 5.5. El mtodo f i n a l 1 ze ..................................................................................... 5.6. El mtodo tostring 5.7. El mtodo getclass .....................................................................................

    Descripcin de herencia ................................................................................... 5.2. La clase Object . ...............................

    5.8. Ventajas de la herencia .................................................... 5.9. Superclases y subclases ................................................................................... 5 . I0 . Modificadores y herencia 5.1 I . Clases abstractas ............................................................................................... 5.12. Mtodos abstractos 5.13. Interfaces ... ............................................................................................ 5.14. Definicin d

    Captulo 6 . Encapsulamiento y polirnorfisrno .......................................................... 6.1. 6.2. 6.3. 6.4. 6.5. 6.6. 6.7. 6.8. 6.9.

    Encapsulainiento .. ............................... Modificadores de c Modificadores de bariables ............................... Modificadores de intodos ............................................................................... Clases internas ..... ............ .......... Paquetes ........................................................................................................... Declaracin de un paquete ....... Paquetes incorporados ..................................................................................... Acceso a los elementos de un paquete

    86 88 91

    95

    96 98

    I o0 1 O0 102 I03 103 104 107 1 ox 109 1 1 1 1 1 1

    117

    118 I19 122 122 127 I73 123 124 124 I25 127 129 134 I35

    141

    142 142 143 144 144 149 150 151 152

  • vi Contenido

    6. I 0 . Importaciii de pacliietes ....... ............... ......... 6. I I , Control de acceso a paquetes 6. 12. Polimortisino ....................................................... ............................ 6.13. Ligadura .......................... _.........

  • Contenido X

    0.5.3. (lase FileDialog .................................................................................. 9.6. Clase Par?el ........................... ......................................... 9.7. Clase Label .................................................................................................... 9.8. Clasc Button ........................ ........................................ 0.0 . Clase T e x t C o r n p o n e n t ................................................................ ~ ................ 0.10. (lase canvas ........................ 9.1 I . Clase Choice .................................................................................................. 9. 12. Clase C h e c kbox ...................

    ............

  • x Contenido

    Captulo 13. Rlanejo de excepciones .........................................................................

    13.1. 13.7. I 3 . -3 . 1.3.4. 13.5. 13.6. 13.7. 13.x.

    C o ii c e p t os gen eral e s . . , . , . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mane.jo de excepciones ......... Captura y tiatanliento de exce ,.

  • A . B .

    C .

    D . E . F .

    G .

    Contenido xi

    APNDICES

    Palabras reservadas Java ...................................................................................... 445

    Prioridad de operadores 44 7

    Gua de sintaxis ..............................................................................

    Paquetes de la plataforma Java 2 . Versiones 1 . 3 y 1 . 4 Beta ...............................

    Recursos: libros, revistas y W E B ........................................................................

    ndice analtico ............................................................................................................ 529

  • PRLOGO

    Cinco aos despus de su lanzamiento, Java se ha convertido en u n estndar de la industria, en un lenguaje de programacin para desarrollo de aplicaciones tanto de propsito general como de Internet, y tambin en un lenguaje para comenzar la formacin en programacin, al tener caractersticas excelentes para el aprendi- zaje.

    Java, desarrollado por Sun Microsystems en 1995, es un mag- nfico y completo lenguaje de programacin orientado a objetos diseado para distribuir contenidos a travs de una red. Una de sus principales caractersticas es que permite operar de forma inde7 pendiente de la plataforma y del sistema operativo que se est uti- lizando. Esto quiere decir que permite crear una aplicacin que podr descargarse de la red y funcionar posteriormente en cual- quier tipo de plataforma de hardware o software. Generalmente, y al contrario, todo programa o aplicacin queda atado a dos cosas: al hardware y al sistema operativo. As, por ejemplo, una aplica- cin Windows slo funcionar en plataforma Wintel (equipada con procesadores Intel y sistema operativo Windows) igual que una versin creada para Mac slo funciona sobre Power PC o Imac y Mac OS o la misma aplicacin desarrollada para Unix, slo lo hace sobre plataformas Unix y no hay forma de que funcione sobre otra mquina.

    La idea de Java, por el contrario, es poner una capa sobre cualquier plataforma de hardware y sobre cualquier sistema ope- rativo que permite que cualquier aplicacin desarrollada en Java quede ligada nicamente a Java, independizada por lo tanto de la

    xiii

  • xiv Prlogo

    plataforma. Esta concepcin queda recogida en el concepto de mquina virtual JVM (Java Virtual Machine), un software que interpreta instrucciones para cual- quier mquina sobre la que est corriendo y que permite, una vez instalado, que una misma aplicacin pueda funcionar en un PC o en un Mac sin tener que tocarla. Hoy en da. cualquier sistema operativo moderno (Windows, Macintosh, Linux, Unix, Solaris. etc.) cuenta con u n a JVM. As, lo que hace Java en combinacin con esta mquina es funcionar como hardware y como sistema operativo virtual, emulan- do en software una CPU universal. Al instalar Java, ste actuar como una capa de abstraccin entre un programa y el sistema operativo. otorgando una total indepen- dencia de lo que haya por debajo; es decir, cualquier aplicacin funcionar en cual- quier mquina e incluso en cualquier dispositivo.

    Otra gran ventaja es que los programadores no tendrn que desarrollar varias versiones de la misma aplicacin, puesto que el modelo de desarrollo es el mismo se trate del dispositivo ms pequeo o del ms grande de los servidores. Otra gran ventaja es que permite que todas las mquinas. plataformas y aplicaciones se comu- niquen entre s accediendo desde cualquier equipo, dondequiera que est situado, a las aplicaciones que residan en una red, ya sea Internet o una intranet o extranet.

    En definitiva, se puede decir que Java es lo ms cercano que existe hoy da a un lenguaje de computacin universal, lo que significa que puede correr en cualquier plataforma siempre y cuando una mquina virtual haya sido escrita para ella.

    LA GENEALOGA DE JAVA

    Java es un descendiente de C++ que a su vez es descendiente directo de C. Muchas caractersticas de Java se han heredado de estos dos lenguajes. De C, Java ha here- dado su sintaxis y de C++, las caractersticas fundamentales de programacin orien- tada a objetos.

    El diseo original de Java fue concebido por James Gosling, Patrick Naughton, Chris Warth, Ed Frank y Mike Sheridan, ingenieros y desarrolladores de Sun Mi- crosystems en 1991, que tardaron 18 meses en terminar la primera versin de tra- bajo. Este lenguaje se llam inicialmente Oak, y se le cambi el nombre por Java en la primavera de 1995.

    Sorprendentemente, la inquietud original para la creacin de Oak no era Internet. En realidad, se buscaba un lenguaje independiente de la plataforma (es decir, de arquitectura neutra) que se pudiera utilizar para crear software que se incrustara en dispositivos electrnicos diversos tales como controles remotos, auto- mviles u hornos de microondas. Aunque el modelo de lenguaje elegido fue C++, se encontraron con que, si bien se poda compilar un programa C++ en cualquier tipo de CPU (Unidad Central de Proceso), se requera, sin embargo, un compilador C++ completo que corriese en esa CPU. El problema, en consecuencia, se converta en compiladores caros y en gran consumo de tiempo para crear los programas. Sobre

  • Prlogo XV

    esas premisas, Gosling y sus colegas comenzaron a pensar en un lenguaje portable, independiente de la plataforma que se pudiera utilizar para producir cdigo que se ejecutara en una amplia variedad de CPU y bajo diferentes entornos. Entonces coinenz6 a aparecer el nuevo proyecto y se decidi llamarle Java.

    Por qu Java es importante para Internet?

    Internet ha ayudado considerablemente a catapultar a Java al cenit del mundo de la programacin de computadoras. y Java. a su vez, ha tenido un profundo impacto en Internet. La razn es muy simple: Java extiende el universo de los objetos que se mueven libremente en el ciberespacio que forma la red Internet. En una red existen dos grandes categoras de ob-jetos que se transmiten entre las computadoras conec- tadas (el servidor y la computadora personal): informacin pasiva y dinmica, pro- gramas activos. U n ejemplo fcil de datos pasivos son los correos electrnicos que usted recibe en su computadora o una pgina web que se baja de la red. Incluso si descarga un programa, est recibiendo datos pasivos hasta tanto no ejecute dicho programa. Sin embargo, existewotros tipos de objetos que se transmiten por la red: programas dinmicos autoejecutables que son agentes activos en la computadora cliente.

    Estos programas dinmicos en red presentan serios problemas de seguridad y portnhilidad. Java ha resuelto gran cantidad de problemas con un nuevo modelo de programa: el upplot.

    Java se puede utilizar para crear dos tipos de programas: aplicaciones y applets. Una aplicucicn es un programa que se ejecuta en su computadora bajo el sistema operativo de su computadora; en esencia, es un programa similar al creado utili- zando C, C++ o Pascal. Cuando se utiliza para crear aplicaciones, Java es un len- guaje de propsito general similar a cualquier otro y con caractersticas que lo hacen idneo para programacin orientada a objetos. Este libro dedica buena parte de su contenido a ensear a disear, escribir y ejecutar aplicaciones,

    Pero Java tiene una caracterstica notable que no tienen otros lenguajes: la posi- bilidad de crear applets. Un applet es una aplicacin diseada para ser transmitida por Internet y ejecutada por un navegador Web compatible con Java. Un applet es realmente un pequeo programa Java, descargado dinmicamente por la red, tal como una imagen, un archivo de sonido, un archivo musical MP3 o divX, o una secuencia de vdeo: pero con una notable propiedad, es un programa inteligente que puede reaccionar dinmicamente a entradas y cambios del usuario.

    Java es un lenguaje idneo para resolver los problemas de seguridad y portabili- dad inherentes a los sistemas que trabajan en red. La razn fundamental de este aser- to reside en el hecho de que la salida de un compilador Java no es un cdigo ejecutable, sino cdigos de bytes (bytecode). Un hvtecode es un conjunto de instrucciones muy optimizadas diseadas para ser ejecutadas por un sistema en tiempo de ejecucin

  • xvi Prlogo

    Java. denominado mquina virtual Java (JUVLI Vi t+md Machine, JVM) que acta como un interprete para los bytecodes. La traduccin de un programa en cdigo4 de bytes facilita la ejecucin del programa en una amplia variedad de entorna y plataformas. La razn es simple: slo es preciso implementar JVM en cada plataforma.

    EVOLUCIN DE LAS VERSIONES DE JAVA

    Java comenz a desarrollarse en 1991 con el nombre de Proyecto Ouk (roble en ingls) que era -segn cuentan sus inventores- el rbol que vean desde su despa- cho. Tras muchas peripecias, Java sali al mercado en 1995 y el cambio de nombre parece que se deba a que era uno de los tipos de caf que servan en una cafetera cercana al lugar en que traba.jaban los desarrolladores y sa es la razn de que el logotipo de Java sea una humeante taza de caf.

    Una de las primeras aplicaciones que lo soportan con especificaciones comunes para las que se comenz a disear Java fue Internet; su objetivo era poder descar- gar en cualquier tipo de mquina aplicaciones residentes en la Web y ejecutarlas para trabajar con ellas contra la propia mquina del usuario. AI principio se trataba de aplicaciones HTML -pginas de puro contenido esttico- y fue evolucionando y adaptndose a Internet y a sus innovaciones tecnolgicas; eso significa que Java soporta XML de modo muy eficiente y las nuevas tecnologas inalmbricas, celula- res o mviles. Dos grandes especificaciones existen actualmente en torno a Java: J2EE (Java 2 Enterprise Edition) y J2ME (Java 2 MicroEdition).

    J2EE, est orientada al desarrollo de aplicaciones de propsito general y son numerosos los grandes fabricantes (IBM. Nokia, Motorola, Hewlett-Packard ....) que lo soportan con especificaciones comunes; J2EM, un nuevo estndar para disposi- tivos inalmbricos (mviles, de bolsillo o de mano (handhrlds)) que requieren una integracin en dispositivos con poco espacio fsico y memoria de trabajo. J2EE es ya un autntico estndar as reconocido por la industria y J2EM va camino de con- vertirse en otro gran estndar. que en este caso est contribuyendo a la revolucin inaltnbrica que est haciendo que Internet llegue a dispositivos electrnicos de todo tipo, como telfonos mviles (celulares), telfonos de sobremesa, electrodo- msticos, decodificadores de TV digital, etc.

    La versin original de Java que comenz a comercializarse y expandirse con rapidez fue la 1 .O, aunque pronto apareci la versin I . I , que si bien slo cambi el segundo dgito del nmero, los cambios fueron ms profundos de lo que el nmero suele indicar en la nomenclatura de los programas de software (modificaciones y pequeas actualizaciones). De hecho, aadi numerosos elementos a la biblioteca. redefini los sucesos (eventos) y reconfigur la citada biblioteca. Posteriormente la versin 2, con sus diferentes kits de desarrollo, ha servido para asentar la eficiencia y calidad Java. Se puede considerar que Sun ha lanzado cinco versiones importan- tes del lenguaje Java:

  • Prlogo xvii

    Java 1.0. Una pequea versin centrada en la Web disponible uniformemente para todos los navegadores Web populares y que se lanz en 1995. J m u 1.1. Una versin lanzada en 1997 con mejoras de la interfaz de usuario, manipulacin de sucesos (eventos) reescrita totalmente y una tecnologa de com po ne n te s de n o ni i nada J u vu Beuns. J u i w 2 co t7 SDK 1.2. Una versin ampliada significativamente y lanzada en I Y98 con caractersticas de interfaces grficas de usuario, conectividad de bases de datos y muchas otras mejoras. J u w 2 COIZ SBK 1.3. Una versin lanzada en el 2000 que aade caractersticas notables. como multimedia mejorada, ms accesibilidad y compilacin ms rpida. Juvrr 2 ~ 0 1 1 SDK 1.3 hetu. Una versin lanzada a primeros del mes de junio de 2001 que, entre otras me.joras. introduce la posibilidad de trabajar con XML. A finales del 200 1 est prevista la salida de la versin definitiva.

    Adems de los kits de desarrollo de Java, existen numerosas herramientas comerciales de desarrollo para los programadores de Java. Las ms populares son:

    Symantec Visual Caf. Borland Jbuilder. IBM Visual Age for Java. Sun Forte for Java.

    Si usted trabaja con alguna herramienta distinta de SDK 1.3 y 1.4 para crear pro- gramas Java a medida que lea este libro, necesita asegurarse que sus herramientas de desarrollo estn actualizadas para soportar Java 2.

    Los programas de este libro fueron escritos y probados con Java SDK v. 1.3.1, la versin ms actual existente durante el proceso de escritura del libro. Sin embargo, durante la fase de pruebas de imprenta de la obra, Sun present oficialmente el 29 de mayo de 2001 la versin Java SDK v. 1.4 beta con la cual fueron compilados y probados todos los programas de nuevo, por lo que usted no deber tener ningn problema. Bueno, realmente, s se le presentar un problema como a nosotros, pero que por fortuna nos resolvieron los ingenieros de Sun Microsystems (Andrew Bennett y Bill Shannon), cuya ayuda y apoyo tcnico destacamos de forma espe- cial. El problema es que al tratar de ejecutar los applets bajo SDK v. 1.4 en el navegador Web no le funcionarn completamente a menos que utilice unos progra- mas plug-in descargados del sitio de Sun.

    Los navegadores existentes normalmente no soportan -como es lgico- la ltima versin de Java y slo cuando ellos realizan la nueva versin es cuando tienen en cuenta esta ltima versin de Java. Sun ha resuelto esta situacin proporcionando un plug-in (aadido/actualizacin o parche). En realidad, cualquier clase aadida a Java I .2 y posteriores no se encuentra en la implementacin de Java proporcionada

  • xvi i i Prlogo

    por los navegadores. por lo que se originarn errores al usar las nuevas clases. pero no debiera haber problemas cuando se est escribiendo cdigo que no usa estas nue- vas caractersticas. No obstante, en Java 1.4 esto no es as. pues se ha eliminado la opcin de coinpilacin por defecto del compilador ( j r r i ~ r c . ) existente en Java 1.3 que iiutotiiticliiiieiite diriga el cdigo a la versin I . 1 de la mquina virtual. Para solu- cionar este

  • Prlogo xix

    visite gradualmente) le daremos unas direcciones de gran inters sobre todo para descargar software y documentacin actualizada.

    http://~ava.sur~..com/j~se

    h t t p : / / l d v a . s u n . c n m / ! Z s e / l . 3

    h t t p : / / ! a v a . s u n . _ o m / 7 2 s e / 1 . 4 /

    h t t p : / / j a v a . c u n . c o r r / j 2 c e / l . 3 / d o c s / .

    n t t p : / / j a v a . c ~ ~ n . c o - / j ~ s e / l . 4 / d o e s /

    kttp: / / j a v a . c n . - c m / i : r ~ - i * ~ t s / p ~ . ~ g i n / l .3. i r . d e x , h t m l

    h t t p : / / ] a v a . s u n . c o m / j ~ s ~ / l . 4 / ~ ~ ~ ~ / ~ ~ ~ ~ ~ / p l u g i n / i n c i e x . h:il

    -tto://]ava.sun.com/j2me

    Platufornici Jnvtr 2, Srundurtl Edition I: I . 4

    P1rrtufi)rmci J a i w 2 Micro Ecli- tion, J2ME (.ri.rtemci.r. inaldm - 17rico.r)

    Como motor de bsqueda le recomendamos Google (www. g o o g l e . corn) , Altavista (www. al t a v i s t a . corn) o Ask (www. ask. corn), aunque si est acostumbrado a otros buscadores (tales como los incluidos en Terra, Ya. StarMedia, Excite ...) es recomendable que haga pruebas prcticas para ver si real- mente le puede ser ventajoso realizar el cambio.

    EL LIBRO COMO HERRAMIENTA DIDCTICA

    La obra J a ~ m 2. M u t i i d de progrumacicn ha sido diseada y escrita pensando en personas que desean iniciarse en el mundo de la programacin de Java tanto para desarrollo de aplicaciones como para desarrollo de upplets. Tiene como objetivo primordial ensear a programar en Java para entornos abiertos y entornos de Internet en niveles de iniciacin y medios. Si bien es un libro pensado en el profe- sional y en el estudiante autodidacto, la experiencia docente de los autores se ha volcado en el libro tratando de conseguir una obra didctica que pueda servir no slo para su uso en cursos profesionales, sino en cursos de enseanzas regladas tales como los mdulos formativos de ciclo superior de la formacin profesional y en los primeros semestres de estudios universitarios de ingeniera y ciencias. Se ha buscado que el libro fuera autosuficiente, aunque el rendimiento mayor del libro se

  • xx Prlogo

    conseguir cuando el lector tenga una formacin mnima de fundamentos de teora de progranmacin. Conocimientos de otros lengua.jes de programacin. fundamen- talmente estilo C/C++. ayudar considerablemente al aprendizaje gradual no slo en el tiempo sino en el avance de contenidos.

    Por todo ello. pensamos que el libro puede servir. adems de aprendimje auto- didacto. para cursos de introduccin a la programacin/progranincin en Java de u n semestre de duracin o cursos profesionales de unas 30-40 horas que y a posean experiencia en otros lengua-jes de programacin.

    CONTENIDO

    Siempre que Sun lanza una nueva versin de Java hace u n ki t de desarrollo gratis que pone disponible en su Web para soportar a dicha versin. Este libro se ha creado utilizando el kit que se denomina Java 2 Software Development Kit, Standard Edition, Versin 1.3 (JDK 1.3). Tras lanzar Sun la versin 1.4 beta, se han probado todas las aplicaciones y applefs con esta nueva versin (JDK 1.4). As mismo, se han actualizado los paquetes de la plataforma Java 2 para incluir ambas versiones y el contenido del CD ad.junto al libro que incluye dichas versio- nes para los entornos Windows y Linux. El libro consta de quince captiilos y siete apndices (A-G). Un breve contenido de los captulos y apndices se resea a con- tinuacin:

    Captulo 1. Introduccin CI JLiva. En este captulo se realiza una descripcin de la historia de Java junto a una breve descripcin de las caractersticas ms notables. Se describe el concepto de aplicacin y de uppler y los mtodos para crear u n programa Java. Sun tiene disponible en su pgina Web (www.sun.com) el Kit de Desarrollo necesario para la compilacin y ejecucin de programas denominado JDK (Juiu Development Kif) y en este captulo se explica este entorno de desarro- llo, as como los errores tpicos que se producen en la fase depuracin y puesta a punto de programas por parte del usuario.

    Captulo 2. Caructeri~ricus del lenguaje Javu. Todo lenguaje de programacin. y Java no es una excepcin, dispone de un conjunto de elementos bsicos que cons- tituyen su ncleo fundamental para la escritura de programas. En el captulo se des- criben: palabras reservadas. identificadores, tipos de datos. variables, constantes y operadores. as como una breve introduccin a las clases y bibliotecas de clases de Java.

    Captulo 3. Decisiorzes y bucles. Los programas requieren siempre de sentencias y estructuras de control para seguir la secuencia de e.jecucin de sus instrucciones. La ejecucin secuencia1 de un programa requiere de modo continuo una toma de decisiones e iteraciones o repeticiones: para ello, se utilizan sentencias de decisin y de iteracin para realizar los bucles o repeticiones de acciones. Se describen

  • Prlogo xxi

    las sentencias bsicas: i f , ef-else, f o r , while, do-while, break y continue.

    Captulo 4. C1usr.s. o h j r r o . s y inPtodos. El concepto de clase y de objeto como instancia o e.jemplar de una clase se analizan con el apoyo de la sintaxis utilizada para SLI escritura.

    Captulo 5. Herencicr. U n a de las propiedades fundamentales del concepto de orientacin a objetos es la herencia. Se explica el concepto, as como el mtodo de implementar en Java dicha propiedad y sus ventajas e inconvenientes.

    Captulo 6. Eiic~rrp,sirlcin~ieiito y polinzorflsmo. Otras dos propiedades fundamen- tales de la orientacin a objetos son el encapsulamiento de la informacin y el con- cepto de polimorfismo. Ambas propiedades. los mtodos y sintaxis se describen en este captulo.

    Captulo 7. Arruys. La informacin bsica manejada por los programas se or- ganiza en estructuras de datos. Se describe el array como representante genuino de listas. tablas o vectores. as como mtodos para ordenar estas estructuras de infor- macin y realizar bsqueda de informacin en las mismas.

    Captulo 8. Cadenus y,fechus. El concepto de cadena como secuencia o lista de caracteres y las clases especficas necesarias para su manipulacin se analizan en este captulo. Tambin se considera el concepto casi siempre necesario en un programa del tratamiento de las fechas como elementos bsicos de medicin del tiempo.

    Captulo 9. iizterfilces ,qrcficn.s de usuario. Una de las grandes virtudes de los lenguajes de programacin actuales, y Java en particular, es la facilidad que ofrece al usuario para construir interfaces grficas sencillas y adaptadas al entorno de tra- bajo.

    Captulo 10. Gestin c c eventos. La programacin mediante eventos o sucesos es otra de las caractersticas sobresalientes que aporta Java al mundo de la progra- macin. El concepto y los tipos de eventos as como mtodos para su gestin y manipulacin se describen en este captulo.

    Captulo 11. Applers. Los programas conocidos como applets son, sin gnero de dudas. el puente ideal para la conexin con el mundo Internet y una de las propie- dades de Java que lo han hecho tan popular. Una breve introduccin al lenguaje HTML y el modo de realizar applrts son la base del captulo.

    Captulo 12. Programucion concurrente: Hilos de ejecucin. Otra propiedad fundamental de Java como lenguaje de tiempo real es la posibilidad de manejar pro- cesos en paralelo. El concepto de hilo (thread), su manipulacin e implementacin se analizan en este captulo.

    Captulo 13. Manqjo dr excepciones. El concepto de excepciones es vital en la programacin moderna. Lenguajes como Ada y C++ lo incorporaron a su sintaxis, y Java, siguiendo los pasos de estos dos potentes lenguajes, ha incluido el trata- miento de excepciones en sus compiladores.

    Captulo 14. Archivos. Las estructuras de datos organizados en torno a archivos o ficheros son pieza fundamental en el proceso de informacin de cualquier orga-

  • xxii Contenido

    nizacin. Su organizacin. diseo y construccin constituyen el contenido funda- mental de este captulo.

    Captulo 15. E.struc~tirrn.s de cirrtos defliiicti.s por 01 progrtrniudor: Una vez que el programador sabe mane.jar estructuras de datos bsicas como arrays y archivos, sen- tir la necesidad con relativa frecuencia de utilizar estructuras de datos dinmicas tales como listas, pilas y colas. Su concepto y mtodos de iinplementacin se expli- can en este ltimo captulo.

    En los apndices. se incluyen herramientas de trabajo complementarias para el programador tales como: Lisrndo de pa1cihrci.s r-eservad(is Juvci ( A ) ; fiihla de prio- riud de operadores ( B ) ; Gua de sintaxis de JLILYI 2 , que facilita la consulta al lec- tor en la fase de escritura y depuracin de prograinas ( C ) ; Paquetes de la platuforma J a i n 3 ms utilizados e incluidos en las versiones de 1.3.1 y 1.4 de los kit de desa- rrollo JDK (0); Una conzpuracicn eritw l o s 1rnguuje.s de progr-armickjn orientados ci ohjetos m r s p o p l ~ i r e s en la uctucilidd: C++ y Java ( E ) ; Coriteriido del CD como elemento de ayuda en el aprendizaje y formacin en Java para el lector y herra- mienta de software complementaria para cursos y seminarios en laboratorios de programacin ( F ) ; Recursos de J u i u : libros, revistas y sitios Web de inters.

    CD QUE ACOMPAA AL LIBRO

    El disco compacto que se adjunta en las tapas de este libro contiene la versin Java 2 y el kit de desarrollo JDK de Sun versiones 1.3.1 y 1.4 para entornos Windows y Linux. As mismo, se han incluido todas las aplicaciones y applets sobresalientes incluidos en el libro con el ob-jetivo fundamental de ayudarle en el proceso de compilacin y ejecucin.

    AGRADECIMIENTOS

    Como ya hemos indicado anteriormente, no podemos terminar este prlogo sin expresar nuestra gratitud a todo el equipo de Sun Microsystems en Palo Alto (Ca- lifornia), su disponibilidad y efectividad a la hora de resolver cualquier consulta ha resultado una inestimable ayuda en el desarrollo de esta obra. Evidentemente com- portamientos profesionales como &tos son algunos de los millones de razones para usar Java. As pues, reiteramos nuestro agradecimiento a Sun Microsystems y en particular a los ingenieros:

    Andrew Bennett Engineering Manager. Sun Microsystems. Inc.

  • CONTENIDO 1 . I . La historia de Java. 1.2. Qu es Java? 1.3. Caractersticas de Java. 1.4.

    1.5. Especificaciones del lenguaje Java. 1.6. Aplicaciones y applets. 1.7. Creacin de programas. 1.8. Componentes de una aplicacin. 1.9. Herramientas de desarrollo Java.

    1 . I O. Una aplicacin prctica de Java. 1 . I I . Estructura de un programa aplicacin en Java. 1 . I 2. Errores de programacin.

    La programacin orientada a objetos como base de Java.

    m 1

  • 2 Java 2. Manual de programacin

    Este captulo introduce al lector en el mundo de Java, su fortaleza y sus debilidades. Describe la programacin en Java y por qu es diferente de la programacin en cualquier otro lenguaje, as como las ventajas que estas diferencias pueden representar en la crea- cin de aplicaciones nuevas y eficientes.

    El futuro de la computacin est influenciado por Internet y Java es una parte importante de ese futuro. Java es el lenguaje de programacin de lnternet y es una plataforma cruzada, orientada a objetos, usada en la Red y preparada para multimedia. Desde su nacimiento real en 1995, Java se ha convertido en un .lenguaje maduro para el desarrollo de aplicaciones crticas y eficientes. Este captulo comienza con una breve historia de Java y sus carac- tersticas ms sobresalientes, as como ejemplos sencillos de apli- caciones y el concepto de applefs Java.

    1.1. LA HISTORIA DE JAVA

    Java no fue creado originalmente para la red internet. Sun Microsystems comenz a desarrollarlo con el objetivo de crear un lenguaje, independiente de la plataforma y del sistema operativo, para el desarrollo de electrnica de consumo (dispositivos electrnicos inteligentes, como televisores, vdeos, equipos de msica, etc.).

    El proyecto original, denominado Green comenz apoyndose en C++, pero a medida que se progresaba en su desarrollo el equipo creador de

  • Introduccin a Java 3

    En diciembre de 1998 Sun lanz la plataforma Java 2 (que se conoci como JDK 1.2 durante su fase de pruebas beta). Esta versin de Java ya represent la madurez de la plataforma Java. Sun renombr Java 1.2 como Java 2.

    El paquete de Java que se utiliza en esta obra, incluye el compilador Java y otras utilidades, se denomina oficialmente Java 2 JDK, versin 1.3.

    Los programas Java se pueden incluir (((embeber)) o ((empotrar))) en pginas HTML y descargarse por navegadores Web para llevar animaciones e interacciones a los clientes Web. Sin embargo, la potencia de Java no se limita a aplicaciones Web, Java es un lenguaje de programacin de propsito general que posee carac- tersticas completas para programacin de aplicaciones independientes o autno- mas. Java, como lenguaje, es fundamentalmente orientado a objetos. Se dise desde sus orgenes como verdadero lenguaje orientado a objetos, al contrario que otros lenguajes, como C++ y Ada, que tienen propiedades de lenguajes procedi- mentales. La programacin orientada a objetos (POO) es tambin, actualmente, un enfoque de programacin muy popular que est reemplazando poco a poco a las tc- nicas tradicionales de programacin procedimental o estructurada.

    La ltima versin lanzada por Sun es Java 2 JDK 1.4 Beta. En la direccin www . s u n . corn se pueden encontrar todas las versiones para Windows9x, Windows 2000/NT, UNIX, Unix (Solaris), Macintosh, ...

    1.2. QU ES JAVA?

    El significado de Java tal y como se le conoce en la actualidad es el de un len- guaje de programacin y un entorno para ejecucin de programas escritos en el lenguaje Java. AI contrario que los compiladores tradicionales, que convierten el cdi- go fuente en instrucciones a nivel de mquina, el compilador Java traduce el cdigo fuente Java en instrucciones que son interpretadas por la Mquina Virtual Java (JVM, Java Virtual Machine). A diferencia de los lenguajes C y C++ en los que est inspirado, Java es un lenguaje interpretado.

    Aunque hoy en da Java es por excelencia el lenguaje de programacin para Internet y la World Wide Web en particular, Java no comenz como proyecto Internet y por esta circunstancia es idneo para tareas de programacin de pro- psito general y, de hecho, muchas de las herramientas Java estn escritas en Java.

    1.2.1. Java como lenguaje de Internet

    Java es un lenguaje para programar en Internet que trata de resolver dos problemas claves con el contenido de Internet:

  • 4 Java 2. Manual de programacin

    Computadora local Sistema operativo

    Navegador Java Mquina virtual Java

    En la actualidad, el contenido de la WWW es pasivo y esttico. La entrega (Deliverry) del contenido WWW es dependiente de la configura- cin de cada navegador Web de usuario.

    Computadora servidor (host)

    Cdigo

    fuente Java . Cdigo fuente

    En el mundo de la Web, Java es una tecnologa facilitadora que permite a los desarrolladores crear pginas Web que se entregarn de modo consistente a todos los usuarios con un navegador habilitado para Java y con independencia de la pla- taforma hardware y el sistema operativo que se est utilizando'. Dado que el cdi- go fuente se interpreta, si existe un intrprete Java para una plataforma especfica hardware o sistema operativo, se pueden escribir programas con el conocimiento de que sern tiles en esa plataforma.

    La Figura 1 . 1 muestra cmo el cdigo fuente Java se transfiere en Internet. En la computadora servidor (host) se almacena el cdigo fuente. Cuando un usuario de una computadora local se conecta con el servidor a travs de Internet mediante un navegador habilitado para Java, el cdigo fuente se transfiere de la computadora servidor a la computadora local.

    1.2.2. Java como lenguaje de propsito general

    A medida que Java se populariza en desarrollos de Internet, gana tambin como len- guaje de propsito general. Java es totalmente portable a gran variedad de platafor- mas hardware y sistemas operativos.

    Java tiene muchos conceptos de sintaxis de C y C++, especialmente de C++, del que es un lenguaje derivado. Aade a C++ propiedades de gestin automtica de memoria y soporte a nivel de lenguaje para aplicaciones multihilo. Por otra parte, Java, en principio a nivel medio, es ms fcil de aprender y ms fcil de utilizar que C++ ya que las caractersticas ms complejas de C++ han sido eliminadas de Java: herencia mltiple, punteros (apuntadores) y sentencia g o t o entre otras.

    ' En Cohn et al., Java. DeveloperS Reference, Indianapolis: Sams Net. 1996. se describen las caracte- rsticas fundamentales del lenguaje Java original.

  • Introduccin a Java 5

    Las iinpleinentaciones de la Mquina Virtual Java pueden ser muy eficaces y eso hace posible que los programas Java se ejecuten tan rpidamente como los programas C++. Esta caracterstica clave de Java, unida a sus fortalezas como lenguaje de Internet, lo hacen muy adecuado para desarrollos en sistemas clienteiservidor, soporte masivo de los sistemas informticos de la mayora de las empresas y organizaciones.

    Las propiedades que se vern ms adelante hacen a Java doblemente idneo para desarrollos cliente/servidor y para desarrollos de Internet.

    1.3. CARACTERISTICAS DE JAVA

    Java ha conseguido una enorme popularidad. Su rpida difusin e implantacin en el mundo de la programacin en Internet y fuera de lnea (offline) ha sido posible gra- cias a sus importantes caractersticas. Los creadores de Java escribieron un artculo, ya clsico, en el que definan al lenguaje como sencillo, orientado a objetos, distri- buido, interpretado, robusto, seguro, arquitectura neutra, alto rendimiento, multihilo y dinmico. Analicemos ms detenidamente cada caracterstica.

    1.3.1. Sencillo

    Los lenguajes de programacin orientados a objetos no son sencillos ni fciles de utilizar, pero Java es un poco ms fcil que el popular C++*, lenguaje de desarrollo de software ms popular hasta la implantacin de Java.

    Java ha simplificado la programacin en C++, aadiendo caractersticas funda- mentales de C++ y eliminando alguna de las caractersticas que hacen a C++ un len- guaje difcil y complicado.

    Java es simple porque consta slo de tres tipos de datos primitivos: nmeros, boolean y arrays. Todo en Java es una clase. Por ejemplo, las cadenas son objetos verdaderos y no arrays de caracteres. Otros conceptos que hacen la programacin en C++ ms complicada son los punteros y la herencia mltiple. Java elimina los punteros y reemplaza la herencia mltiple de C++ con una estructura nica deno- minada interfaz ( i n te r face).

    Java utiliza asignacin y recoleccin automtica de basura (garbage collection), aunque C++ requiere al programador la asignacin de memoria y recoleccin de basura.

    Otra caracterstica importante es que la elegante sintaxis de Java hace ms fcil la escritura de programas.

    En C++. Inicicicin y Refereiicia (McCraw-Hill, 1999). de Luis Joyanes y Hctor Castn, podr encon- trar una gua de iniciacin con enfoque similar a esta obra. si usted necesita iniciarse en C++.

  • 6 Java 2. Manual de programacin

    1.3.2. Orientado a objetos

    La programacin orientada a objetos modela el inundo real, cualquier cosa del inundo puede ser inodelada cotno u n ob-jeto. As u n a circunferencia es u n objeto, un autoiiih i I es u n &jeto, una ventana es un objeto, un libro cs un ob.jeto e incluso un prstamo o una tarjeta de crdito son objetos. U n prograina Java se denomina oricii- t t r t io LI o i ? j c ' / o . s debido a que la programacin en Java se centra en la creacin, mani- pulacin y coiistruccih de objetos.

    U n objeto tiene p i ~ ) p i ~ & ~ i c ~ , s ( u n estado) y un coniportainieiito. Las propiedades o el estado se detinen iitilinndo datos y el coinportainiento se define utilizando mtodos. Los ob-jetos sc detitien utilizando clases en Java. Una clase es similar a una plantilla para construir objetos. Con la excepcicn de los tipos de datos primiti- \ o s . todo en Ja\.a es uti ob.jeto. En Java, al contrario de lo que sucede en C++, no hay fuiicioiies globales: todas las iiinciones se in\,ocan a tra\,Cs de tin objeto.

    Por e-jeinplo, se puede definir u n objeto c u a d r a d o mediante una clase c u a d r a d o (Fig. l .2), con u n l a d o (propiedad) y caliularSuperficie como el mt.todo qiie encuentre o calcule la superficie del cuadrado.

    Clase Instanoar I I d d T 1 lnstanciar

    cuadrado de lado 1 O

    cuadrado de lado 25

    Figura 1.2. Dos objetos , ~ d l rCr i c de lados 10 y 25 Se crean a partir de la clase r, i a j r ~ i

    Un objeto es una realizacin concreta de una descripcin de una clase. El pro- ceso de creacicn de objetos se denomina i i~7~ f~1~1~ . i~rc , i i? (crear instancias) de una clase.

    AI i i u f c r w i t n . una clase. se crean objetos. As. es posible crear un objeto c u a - d r a d ~ instaiiciando la clase con un lado determinado. por ejemplo se puede crear u n cuadrado de lado I O y otro cuadrado de lado 25. Se puede encontrar cl rea de los respecti\ os cuadrados usando el inktodo c a l c u l a r S u p e r f Lcie.

    Uti programa consta de una o ms clases que se disponen en una jerarqua en modo rbol, de modo qiie una clase hija puede heredar propiedades y comporta- mientos de su clase padrc (ascendente). Java con u n conjunto de clases pre- dctinidas, agrupadas en paquetes que se pueden utilizar en los programas,

  • Introduccin a Java 7

    La programacin orientada a objetos proporciona mayor flexibilidad, modulari- dad y reusabilidad. En la actualidad est ya muy implantado este tipo de programa- cin y Java se convertir en breve plazo en uno de los lenguajes ms usados de propsito general.

    1.3.3. Distribuido

    La computacin distribuida implica que varias computadoras trabajan juntas en la red. Java ha sido diseado para facilitar la construccin de aplicaciones distribuidas mediante una coleccin de clases para uso en aplicaciones en red. La capacidad de red est incorporada a Java. La escritura de programas en red es similar a enviar y recibir datos a y desde un archivo. La utilizacin de una URL (Uniform Resource Locator) de Java puede hacer que una aplicacin acceda fcilmente a un servidor remoto.

    1.3.4. Interpretado

    Java es interpretado y se necesita un intrprete para ejecutar programas Java. Los programas se compilan en una Mquina Virtual Java generndose un cdigo inter- medio denominado bytecode. El bytecode es independiente de la mquina y se puede ejecutar en cualquier mquina que tenga un intrprete Java.

    Normalmente, un cornpilador traduce un programa en un lenguaje de alto nivel a cdigo mquina. El cdigo slo se puede ejecutar en la mquina nativa. Si se eje- cuta el programa en otras mquinas, ste ha de ser recompilado. As por ejemplo, cuando un programa escrito en C++ se compila en Windows, el cdigo ejecutable generado por el compilador slo se puede ejecutar en una plataforma Windows. En el caso de Java, se compila el cdigo fuente una sola vez y el bytecode generado por el compilador Java se puede ejecutar en cualquier plataforma.

    Nota: Los programas Java no necesitan ser recompilados en una mquina des- tino. Se compilan en un lenguaje ensamblador para una mquina imaginaria, denominada mquina virtual.

    Sin embargo, los intrpretes Java tienen una seria desventaja sobre los sistemas convencionales. Son, normalmente, mucho ms lentos en ejecucin. Innovaciones recientes en el mundo Java han avanzado sobre las ideas de los intrpretes y han aparecido compiladores JIT (just-in-time) que leen la representacin en bytecode independiente de la mquina de un programa Java, e inmediatamente antes de que

  • 8 Java 2. Manual de programacin

    la ejecucin traduzca la representacin en b-ytecode en instrucciones de la mquina real del sistema en el que el programa Java se est ejecutando. Dado que los progra- mas Java se ejecutan a continuacin como instrucciones mquina, pueden ser casi tan rpidos como programas compilados en lenguajes ms convencionales para pla- taformas de hardware especficas y mantener la portabilidad de la mquina virtual.

    1.3.5. Robusto

    Robusto significa fiable. Ningn lenguaje puede asegurar fiabilidad completa. Java se ha escrito pensando en la verificacin de posibles errores y por ello como un lenguaje fuertemente tipificado (con tipos). Java ha eliminado ciertos tipos de construcciones de programacin presentes en otros lenguajes que son propensas a errores. No soporta, por ejemplo, punteros (apuntadores) y tiene una caracterstica de manejo de excepcio- nes en tiempo de ejecucin para proporcionar robustez en la programacin.

    Regla: Java utiliza recoleccin de basura en tiempo de ejecucin en vez de liberacin explcita de memoria. En lenguajes como C++ es necesario borrar o liberar memoria una vez que el programa ha terminado.

    1.3.6. Seguro

    Java, como lenguaje de programacin para Internet, se utiliza en un entorno distri- buido y en red. Se puede descargar un applet Java y ejecutarlo en su computadora sin que se produzcan daos en su sistema, ya que Java implementa diversos meca- nismos de seguridad para proteger su sistema de daos provocados por un progra- ma stray. La seguridad se basa en la premisa de que nada debe ser trusted.

    Naturalmente la seguridad absoluta no existe, pero, aunque se encuentran pro- blemas de seguridad en Java, stos no son lo suficientemente notables como para producir trastornos apreciables.

    Nota: Existen numerosos sitios en la Red para informacin sobre seguridad de computadoras. Este sitio

    de la universidad de Princeton (all imparti clase el fsico universal Einstein) es excelente para estudiar problemas de seguridad informtica, especialmente para Java, ActiveX y JavaScript.

    www.cs.princeton.edu/sip/.

  • Introduccin a Java 9

    1.3.7. Arquitectura neutral

    Una de las caractersticas ms notables de Java es que es de arquitectura neutral, lo que tambin se define como independiente de la plataforma. Se puede escribir un programa que se ejecute en cualquier plataforma con una Mquina Virtual Java.

    Se pueden ejecutar applets de Java en un navegador Web; pero Java es algo ms que escribir upplets de Java, ya que se pueden tambin ejecutar aplicaciones Java autnomas (stand-alone) directamente en sistemas operativos que utilicen un intr- prete Java.

    I I Importante: Utilizando Java, los desarrolladores necesitan escribir una nica versin para ejecutarse en todas las plataformas, dado que los bytecodes no se corresponden a ninguna mquina especfica y trabajan en todas las mquinas.

    Comentario: Un programa Java es el mismo si se ejecuta en un PC, un Macintosh, o un sistema Unix. Es distinto de los lenguajes convencionales tales como C/C++

    1.3.8. Portable

    Java es un lenguaje de alto nivel que permite escribir tanto programas convencio- nales como aplicaciones para Internet (applets). Dado que Internet es una red for- mada por equipos muy diferentes interconectados por todo el mundo, resulta fundamental para los programas que rueden en ella su independencia de la plata- forma en la que van a ser ejecutados. Dicha independencia se obtiene en Java gra- cias a que el compilador Java genera un cdigo intermedio, bytecode (cdigo byte), no ejecutable por s mismo en ninguna plataforma, pero que puede ser ejecutado a gran velocidad mediante un intrprete incorporado en la mquina virtual Java. En las diferentes plataformas existirn mquinas virtuales especficas, y cuando el cdigo byte llegue a esas mquinas virtuales ser interpretado pasndolo al cdigo adecuado para la computadora receptor de la aplicacin. Las mquinas virtuales Java son programas capaces, entre otras cosas, de interpretar el cdigo byte, que pueden venir incluidos en los navegadores, proporcionados con el sistema operativo, con el entorno Java o bien obtenerse a travs de Internet (mediante descarga del corres- pondiente programa). Por tanto, los programas Java pueden ejecutarse en cualquier plataforma sin necesidad de ser recompilados; es decir, son muy portables.

  • 10 Java 2. Manual de programacin

    Pero la portabilidad de Java an va ms all; Java fue diseado de modo que pueda ser transferido a nuekas arquitecturas.

    En Java todos los tipos de datos primitivos son de tamaos definidos con inde- pendencia de la mquina o sistema operativo en el que se ejecute el programa. Esta caracterstica es distinta de C o C++, en los que el tamao de los tipos depender del coinpilador y del sistema operativo.

    Nota: El tamao fijo de los nmeros hace el programa portable.

    I I Regla: El entorno Java es portable a nuevos sistemas operativos y hardware. El compilador Java est escrito en Java.

    1 I

    1.3.9. Alto rendimiento

    Los coinpiladores de Java han ido mejorando sus prestaciones en las sucesivas \!ersiones. Los nuevos compiladores conocidos como JlT @st-in-tirvze) permiten que prograinas Java independientes de la plataforma se ejecuten con casi el mismo rendimiento en tiempo de ejecucin que los lenguajes convencionales coin pi 1 ados .

    1.3.10. Multhilo

    Java es uno de los primeros lenguajes que se han diseado explcitamente para tener la posibilidad de mltiples hilos de ejecucin; es decir, Java es multihilo (multith- reudit7g). Multihilo es la capacidad de un programa de ejecutar varias tareas simul- tneamente. Por ejemplo, la descarga de un archivo de vdeo mientras se graba el vdeo. La Programacin multihilo est integrada en Java. En otros lenguajes se tiene que llamar a procedimientos especficos de sistemas operativos para permitir mul- tihilo.

    Los hilos sincronizados son muy tiles en la creacin de aplicaciones distribui- das y en red. Por ejemplo, una aplicacin puede comunicarse con un servidor remo- to en un hilo, mientras que interacta con un usuario en otro hilo diferente. Esta propiedad es muy til en programacin de redes y de interfaces grficas de usuario. Un usuario de Internet puede or una emisora de msica mientras navega por una pgina Web y un servidor puede servir a mltiples clientes al mismo tiempo.

  • introduccin a Java 11

    1.3.1 1. Dinmico

    Como Java es interpretado, es un lenguaje muy dinmico. En tiempo de ejecucin, el entorno Java puede extenderse (ampliarse) mediante enlace en clases que pueden estar localizadas en servidores remotos o en una red (por ejemplo, Intranet/Intemet). Es una gran ventaja sobre lenguajes tradicionales como C++ que enlaza clases antes del momento de la ejecucin.

    Se pueden aadir libremente nuevos mtodos y propiedades a una clase sin afec- tar a sus clientes. Por ejemplo, en la clase Cuadrado se pueden aadir nuevos datos que indiquen el color del polgono y un nuevo mtodo que calcule el perme- tro del cuadrado. El programa cliente original que utiliza la clase Cuadrado per- manece igual. En tiempo de ejecucin, Java carga clases a medida que se necesitan.

    1.4. LA PROGRAMACIN ORIENTADA A OBJETOS COMO BASE DE JAVA

    La programacin orientada a objetos (POO) es la base de Java y constituye una nueva forma de organizacin del conocimiento en la que las entidades centrales son los objetos. En un objeto se unen una serie de datos con una relacin lgica entre ellos, a los que se denomina variables de instancia, con las rutinas necesarias para manipularlos, a las que se denomina mtodos. Los objetos se comunican unos con otros mediante interfaces bien definidas a travs de puso de mensajes; en PO0 los mensajes estn asociados con mto- dos, de forma que cuando un objeto recibe un mensaje, ejecuta el mtodo asociado.

    Cuando se escribe un programa utilizando programacin orientada a objetos, no se definen verdaderos objetos, sino clases; una clase es como una plantilla para construir varios objetos con caractersticas similares. Los objetos se crean cuando se define una variable de su clase. En las clases pueden existir unos mtodos especiales denominados constructores que se llaman siempre que se crea un objeto de esa clase y cuya misin es iniciar el objeto. Los destructores son otros mtodos especiales que pueden existir en las clases y cuya misin es realizar cualquier tarea final que corresponda realizar en el momento de destruir el objeto. Las propiedades fundamentales de los objetos son:

    El encapsulamiento, que consiste en la combinacin de los datos y las opera- ciones que se pueden ejecutar sobre esos datos en un objeto, impidiendo usos indebidos al forzar que el acceso a los datos se efecte siempre a travs de los mtodos del objeto. En Java, la base del encapsulamiento es la clase, donde se define la estructura y el comportamiento que sern compartidos por el grupo de objetos pertenecientes a la misma. Para hacer referencia a los componentes accesibles de un objeto ser necesario especificar su sintaxis:

    nombreobjeto. nombreComponente.

  • 12 Java 2. Manual de programacin

    La herencia es la capacidad para crear nuevas clases (descendientes) que se construyen sobre otras existentes, permitiendo que stas les transmitan sus pro- piedades. En programacin orientada a objetos, la reutilizacin de cdigo se efecta creando una subclase que constituye una restriccin o extensin de la clase base, de la cual hereda sus propiedades. El polimorjismo consigue que un mismo mensaje pueda actuar sobre diferen- tes tipos de objetos y comportarse de modo distinto. El polimorfismo adquiere su mxima expresin en la derivacin o extensin de clases; es decir, cuando se obtienen nuevas clases a partir de una ya existente mediante la propiedad de derivacin de clases o herencia.

    1.5. ESPECIFICACIONES DEL LENGUAJE JAVA

    Los lenguajes de computadoras tienen reglas estrictas de uso que deben seguirse cuan- do se escriben programas con el objeto de ser comprendidos por la computadora. La referencia completa del estndar Java se encuentra en el libro Java Languaje Specification, de James Gosling, Prill Jorg y Grey Steele (Addison Wesley, 1996).

    La especificacin es una definicin tcnica del lenguaje que incluye sintaxis, estructura y la interfaz de programacin de aplicaciones (API, application pro- gramming interfuce) que contiene clases predefinidas. El lenguaje evoluciona rpi- damente y el mejor lugar para consultar las ltimas versiones y actualizaciones del mismo se encuentra en el sitio Web de internet de Sun

    Las versiones de Java de Sun se incluyen en JDK (Java Deivlupment Kit), que es un conjunto de tierramientas que incluyen un cornpilador, un intrprete, el entor- no de ejecucin Java, el lenguaje estndar Java y otras utilidades.

    En la actualidad existen cuatro versiones JDK. Este libro es compatible con JDK 1.4 Beta, que es una mejora sustancial de las versiones anteriores JDK 1 .O y JDK 1.1. La nueva versin JDK 1.3 incluye un compilador JIT (jusf-in-time) para ejecutar el cdigo Java. El entorno JDK est disponible para Windows9Y98, Windows NT/2000 y Solaris, pero existen muchos entornos de desarrollo para Java: JBuilder de Borland, Visual Age Windows de IBM, Visual J++ de Microsoft, Visual Caf de Symantec, etc.

    Nota: Todos los programas de este libro se pueden compilar y ejecutar en los entornos JDK 1.2, JDK 1.3 y JDK 1.4 y deben poder trabajar con cualquier herramienta de desarrollo que soporte las citadas versiones.

  • Introduccin a Java 13

    JDK consta de un conjunto de programas independientes cada uno de los cuales se invoca desde una lnea de rdenes. Las herramientas de desarrollo ms impor- tantes se pueden encontrar en los siguientes sitios de Internet:

    Caf de Symantec www.symantec.com Sun Java Workshop www.javasof.com Visual Age for Java by IBM JFactory de Roge Wave www.rogewave.com JBuilder de lmprise www.imprise.com Visual J++ de Microsoft www.microsoft.com Forte de Sun www.sun.com

    www.ibm.com

    Estas herramientas proporcionan un ED (Entorno Integrado de Desarrollo) que permite el rpido desarrollo de programas. Le recomendamos utilice herramientas EID para desarrollo de programas y ejecute las tareas integradas en la interfaz gr- fica de usuario, tales como: edicin, compilacin, construccin, depuracin y ayuda en linea.

    1.6. APLICACIONES Y APPLETS

    Los programas en Java se dividen en dos grandes categoras: aplicaciones y applets. Las aplicaciones son programas autnomos independientes (standalone), tal como cualquier programa escrito utilizando lenguajes de alto nivel, como C++, C, Ada, etc.; las aplicaciones se pueden ejecutar en cualquier computadora con un intrpre- te de Java y son ideales para desarrollo de software. Los applets son un tipo espe- cial de programas Java que se pueden ejecutar directamente en un navegador Web compatible Java; los applets son adecuados para desarrollar proyectos Web.

    Los applets son programas que estn incrustados, ((empotrados)) (embedded) en otro lenguaje; as cuando se utiliza Java en una pgina Web, el cdigo Java se empo- tra dentro del cdigo HTML. Por el contrario, una aplicacin es un programa Java que no est incrustado en HTML ni en ningn otro lenguaje y puede ser ejecutado de modo autnomo.

    Naturalmente, a primera vista parece deducirse que las aplicaciones son ms grandes (y en principio ms complejas) que los applets. Sin embargo, esto no es necesariamente verdad.

    1.6.1 Semejanzas y diferencias entre aplicaciones y applets

    Una de las primeras preguntas que suele hacerse el programador principiante en Java es: ;Cundo debo utilizar una aplicacin y cundo un applet? La respuesta no

  • 14 Java 2. Manual de programacin

    siempre es fcil, pero ineludiblemente pasa por conocer las semejanzas y diferen- cias que tienen ambos tipos de programas. Gran parte del cdigo de las aplicacio- nes y los upplets es el mismo, presentndose las diferencias al considerar los entornos de ejecucin de los programas.

    Regla: Las aplicaciones se ejecutan como programas independientes o autnomos,

    Los upplets deben ejecutarse en un navegador Web. de modo similar a cualquier otro lenguaje de alto nivel.

    El desarrollo de las aplicaciones Java suele ser algo ms rpido de desarrollar que los upplets, debido a que no necesita crear un archivo HTML y cargarlo en un navegador Web para visualizar los resultados.

    Sugerencia: Si su programa no necesita ejecutarse en un navegador Web, elija crear aplicaciones.

    Un aspecto muy importante en el desarrollo de programas es la seguridad. Los upplets necesitan unas condiciones de seguridad para evitar daos en el sistema en el que est funcionando el navegador, por tanto, tienen ciertas limitaciones. Algunas limitaciones a considerar son:

    Los applets no pueden leer o escribir en el sistema de archivos de la computa- dora, pues en caso contrario podran producir daos en archivos y propagar virus. Los upplets no pueden establecer conexiones entre la computadora de un usua- rio y otra computadora, excepto que sea el servidor donde estn almacenados los applets'. Los applets no pueden ejecutar programas de la computadora donde reside el navegador, dado que podran originar daos al sistema.

    Por el contrario, las aplicaciones pueden interactuar directamente con la compu- tadora sobre la que se ejecutan, sin las limitaciones anteriormente mencionadas.

    Esta actividad comienza ya a desarrollarse con las tecnologas Napster creadas por Fanning, un estu- diante norteamericano a primeros del ao 2000. Otras tecnologas similares con Gnutella, Scour, etc., y se las conoce de modo genrico como tecnologas P2P (peer-ro-peer).

  • Introduccin a Java 15

    Notas: En general, se puede convertir un applet Java para ejecutarse como una apli-

    Una aplicacin no siempre se puede convertir para ejecutarse como un cacin sin prdida de funcionalidad.

    upplet, debido a las limitaciones de seguridad de los applets.

    En este libro aprender fundamentalmente a escribir aplicaciones Java, aunque tambin dedicaremos atencin especial a desarrollar applets.

    1.7. CREACIN DE PROGRAMAS

    Antes de que una computadora pueda procesar un programa en un lenguaje de alto nivel, el programador debe introducir el programa fuente en la computadora y la computadora a su vez debe almacenarlo en un formato ejecutable en memoria. Las etapas clsicas en un lenguaje tradicional son: edicin, compilacin, enlace, ejecu- cin y depuracin de un programa.

    Las herramientas fundamentales empleadas en el proceso de creacin de programas son, por tanto: editor, compilador, depurador y, naturalmente, el sistema operativo.

    El editor es un programa utilizado para crear, guardar (salvar o almacenar) y corregir archivos fuente (escritos en lenguaje Java). El compilador es un programa que traduce un programa escrito en un lenguaje de alto nivel a un lenguaje mqui- na. El depurador es un programa que ayuda a localizar errores en otros programas. El sistema operativo es el programa con el que interacta el usuario con el objeto de especificar qu programas de aplicacin y/u operaciones del sistema debe ejecu- tar la computadora (los sistemas operativos ms utilizados son: Windows 9x/NT/2000, Linux, Unix, Solaris y Mac)'.

    1.7.1 Etapas para crear un programa

    La creacin de un programa debe comenzar con la escritura del cdigo fuente correspondiente a la aplicacin. Cada programa Java debe tener al menos una clase. Un ejemplo de una aplicacin Java sencilla que sirva de modelo es el popular ((Hola mundo)) de Stroustrup (el autor de C++), modificado para que visualice un mensaje de bienvenida con el nombre de un pequeo pueblo andaluz.

    ' Microsoft ha anunciado el lanzamiento de la arquitectura .NET y el sistema operativo Windows XP para el segundo trimestre de 200 I .

  • 16 Java 2. Manual de programacin

    //Esta aplicacin visualiza: Hola Carchelejo. Bienvenido a Java

    publ ic class Bienvenido I

    publ ic s t a t i c void main (String[] argc) t

    Cyctem.out.println("Hola Carchelejo. Bienvenido a Java") ;

    Las etapas que preparan un programa para su ejecucin son:

    1. Crear una carpeta de proyecto en la que se recojan todos los archivos signi- ficativos, incluyendo clases que se desean incluir.

    2. Utilizar un programa editor que introduzca cada lnea del programa fuente en memoria y lo guarde en la carpeta proyecto como un archivo fuente.

    3. Utilizar el programa compilador para traducir el programa fuente en byteco- de (cdigo en bytes). Si existen errores de sintaxis (un error gramatical de una lnea en un programa Java), el compilador visualiza esos errores en una ven- tana.

    4. Utilizar el programa editor para corregir esos errores, modificando y vol- viendo a guardar el programa fuente. Cuando el programa fuente est libre de errores, el compilador guarda su traduccin en bytecode como un archivo.

    5 . El intrprete Java (JVM) traduce y ejecuta cada instruccin en bytecode. 6. Si el cdigo no funciona correctamente se puede utilizar el depurador para

    ejecutar el programa paso a paso y examinar el efecto de las instrucciones individuales.

    Edicin

    Editar el programa Bienvenido con un editor" escribiendo el texto correspon- diente al programa fuente. Debe darle un nombre al archivo fuente que constituye el programa (Bienvenido. j ava). Por convenio, el archivo del programa fuen- te debe terminar con la extensin java. Almacene el programa en la carpeta C : \ jdkl. 3 . O - 02\bin.

    Los editores que se han utilizado en la preparacin de este libro son Edit.com y Notepad.exe (se tra- baj bajo Windows 98).

  • Introduccin a Java 17

    Error tpico: Palabras mal escritas: Java es sensible a las letras maysculas y minsculas y el siguiente programa dara error:

    I

    public c lass Bienvenido I public s t a t i c void Main (String[] args)

    t System.out .println ("Hola Carchelejo. Bienvenido a Java") ;

    pues m a i n debe escribirse slo en minsculas.

    y Los nombres de mtodos y variables con una letra minscula. Los nombres de las clases comienzan normalmente con una letra mayscula

    Compilacin

    La orden siguiente compila Bienvenido. j ava:

    javac Bienvenido.]ava

    Si no existen errores de sintaxis, el compilador genera un archivo denominado Bienvenido. c l a s s . El archivo no es un archivo objeto tal como se genera en otros compiladores de lenguajes de alto nivel. Este archivo se llama bytecode. El bytecode es similar a las instrucciones mquina, pero su arquitectura es neutral y se puede ejecutar en cualquier plataforma que tenga el entorno en tiempo de ejecucin y el intrprete Java.

    Nota: Una gran ventaja de Java es que el cdigo bykcode puede ejecutarse en diferentes plataformas hardware y sistemas operativos.

    El cornpilador enlazar el archivo del cdigo fuente en Java y objetos impor- tados.

  • 18 Java 2. Manual de programacin

    Archivo fuente

    Objetos importados

    1 Compilador 1 Figura 1.3. El cdigo fuente de un programa se compila en bytecode.

    Ejecucin

    Para ejecutar un programa Java, se debe ejecutar el bytecode del programa en cual- quier plataforma que soporte un interprete Java. La siguiente orden ejecuta el cdi- go bytecode del programa aplicacin Bienvenido. j ava:

    j ava Bienvenido

    La salida de este programa se muestra en la Figura 1.4.

    Figura 1.4. La salida del programa Bienvenido.

    1.8. COMPONENTES DE UNA APLICACIN

    En un programa aplicacin, destacan los siguientes elementos: Comentarios, 4 Palabras reservadas, Sentencias, Bloques, Clases, Mtodos, el mtodo ma in.

    Comentarios

    La primera lnea del programa Bienvenido es un Comentario. Los Comentarios sirven para documentar los programas y en ellos se escriben anota-

  • Introduccin a Java 19

    ciones sobre cmo funciona el programa o sobre cmo se ha construido. Los comentarios ayudan a los programadores actuales y futuros o a los usuarios de los mismos a comprender el programa. En Java, como en todos los lenguajes de pro- gramacin, los comentarios no son sentencias de programacin y son, por consi- guiente, ignorados por el cornpilador. En Java, los comentarios que constan de una nica lnea estn precedidos por dos barras inclinadas ( / /), si se extienden sobre varias lneas estn encerrados entre / * y * / . Cuando el compilador encuentra un comentario del tipo / / ignora todo el texto que viene a continua- cin hasta el final de lnea, y cuando el compilador se encuentra con un comen- tario de la forma / * y * / ignora todo el texto entre ambos juegos de caracteres. Ejemplos de comentarios:

    / / Esto es un comentario relativo / * a l a S i e r r a de C a z o r l a , escrito

    por Mackoy * /

    Existen tambin otra clase de comentarios, denominados comentarios de docu- rnentacion, que pueden ser extrados a archivos HTML utilizandojavadoc. Es nece- sario introducirlos entre los smbolos / * * . . . * / .

    Palabras reservadas

    Las palabras reservadas o palabras clave (Keywords) son palabras que tienen un determinado significado para el compilador y no pueden ser utilizadas para otros fines. Por ejemplo, la palabra wh i l e significa que se habr de evaluar la expre- sin que viene a continuacin y, en funcin del valor de la misma, se ejecutarn o no se ejecutarn las sentencias siguientes. Otras palabras reservadas son p u b l i c , s t a t i c , p r i v a t e , que representan modificadores. Otro ejemplo es c l a s s , una palabra reservada muy utilizada, que significa que la palabra que viene a continuacin es el nombre de la estructura clase. Las palabras reservadas se resaltarn en los cdigos fuente que aparecen en el libro escribindolas en negrita.

    Precaucin: Java es sensible a las maysculas, por consiguiente, w h i l e es una palabra reservada y While no es palabra reservada,

    Sentencias

    Una sentencia representa una accin o una secuencia de acciones. Cada sentencia termina con un punto y coma (; ). Ejemplos de sentencias son:

  • 20 Java 2. Manual de programacin

    z = 15;

    z = z+10u;

    //esta sentencia asigna 15 la //a variable z //esta sentencia aade 130 //ai valor de z

    printlr. ("Bienvenido Sr. Mackoy") ; //sentencia de visualizacin

    Bloques

    Un bloque es una estructura que agrupa sentencias. Los bloques comienzan con una llave de apertura ( { ) y terminan con una llave se cierre ( } ). Un bloque puede estar dentro de otro bloque y se dice que el bloque interior est anidado dentro del exte- rior o que ambos bloques estn anidados:

    z = 15; z = 2+100; if (z > 225) !

    z = 2-5;

    Clases

    La clase es la construccin fundamental de Java y, como ya se ha comentado, constituye una plantilla o modelo para fabricar objetos. Un programa consta de una o ms clases y cada una de ellas puede contener declaraciones de datos y mtodos.

    Mtodos

    Un mtodo es una coleccin de sentencias que realizan una serie de operaciones determinadas. Por ejemplo:

    System.out .println ("Bienvenido a Carchelejo") ;

    es un mtodo que visualiza un mensaje en el monitor o consola.

    Mtodo ma i n ( I

    Cada aplicacin Java debe tener un mtodo m a i n declarado por el programador que define dnde comienza el flujo del programa. El mtodo m a i n tendr siempre una sintaxis similar a sta:

  • Introduccin a Java 21

    public static void ma;? (Str-nq;: aras)

    1.9. HERRAMIENTAS DE DESARROLLO JAVA

    El JDK viene con un conjunto de herramientas tal como se coment anteriormente: un compilador Java javac), una Mquina Virtual Java java), una herramienta para visualizar applets (applet Viewer), un depurador elemental jdb) y una herramienta de documentacin javadoc). Estas herramientas se utilizan para crear, depurar, documentar y usar programas Java. Dependiendo de su entorno y su plataforma, los detalles reales de cmo instalar JDK o cualquier conjunto de herramientas Java, difieren de unos fabricantes a otros y lo ms recomendable ser seguir las instnic- ciones que nos ofrezcan ellos.

    Las herramientas de desarrollo ms importantes se pueden encontrar en los sitios de Internet declarados en el apartado ((Especificaciones del lenguaje Java)). Estas herramientas proporcionan un entorno integrado de desarrollo, EID (IDE, Integrated Development Environment) y sirven para proporcionar un desarrollo rpido de programas de modo eficiente y productivo.

    1.9.1. El entorno de desarrollo JDK

    La creacin de un programa en Java, ya sean applets o aplicaciones convenciona- les, necesita la instalacin de las herramientas de desarrollo de Java. El Kit de Desarrollo de Java (JDK) es una donacin de Sun Mycrosystem a la que podemos acceder visitando el sitio que posee Sun en la Red. Como JDK es gratuito y las ver- siones que se pueden bajar de la Red estn actualizadas, es muy frecuente su uso por los programadores, no obstante la existencia de los entornos de desarrollo inte- grados que pretenden facilitar las tareas de edicin, compilacin, ejecucin y depu- racin, haciendo todas ellas directamente accesibles desde los mismos.

    Para trabajar con JDK en Windows 95/98/NT, resulta cmodo y eficaz abrir varias ventanas, y usarlas de la forma siguiente:

    En una ventana abrir un editor, como Edit o Notepad, donde se ir escribien- do el cdigo. Otra ventana le ser necesaria para tener acceso al indicador (prompt) del siste- ma y poder invocar desde all al compilador y a las dems herramientas del JDK. En una tercera puede tener abierto un archivo con documentacin sobre el API de Java.

  • 22 Java 2. Manual de programacin

    Puede usar una cuarta ventana para abrir un navegador con soporte Java, por ejemplo 2ilicrosoft Explorer en versin 4.0 o superior, o el appletviewer para la verificacin del correcto funcionamiento de los applets.

    1 .lo. UNA APLICACIN PRCTICA DE JAVA

    Inicialmente se expondr la creacin de programas convencionales, y para ver su estructura bsica as como las fases a las que antes aludamos, necesarias para su ejecucin, seguiremos el siguiente ejemplo: Considere que trabaja con el JDK ins- talado en un PC bajo Windows 9x y cree la carpeta libro en el directorio raz de su disco de arranque. Despus, situndose dentro de libro, cree otra denominada T2ri7aOl.

    Abra una ventana DOS, trasldese a la carpeta Terna01 y llame al editor (Edit):

    'L. - . \ I d i ~ . d c w s > c0 C: \;ibro\temaOl i:\libro\Tema31> e d i t

    Una vez dentro de Edit copie el texto incluido en la Figura 1.5 fijndose atenta- mente para no omitir en su copia ninguno de los caracteres ni signos de puntuacin que aparecen en l. AI terminar, gurdelo con el nombre E] emplol . j ava y salga del editor.

    ipor t j atJ3. i i3 . f< ; ' L u i s Joyaner &giJi 1 ar Jl 1a;s E j e r n p l c i f

    n u t i l i t s t a t i c w i d main ( s t r i n g [ ] arg] { ) a programar en JAVA");

    Figura 1.5.

    El archivo creado es el archivo fuente, al que en Java tambin se le llama unidad de cornpiltrcicn. Dicho archivo debe ser almacenado con el nombre E] emplol, ya que en Java el cdigo siempre ha de estar dentro de una clase y el nombre del archi- vo debe coincidir con el de la clase que tiene el mtodo m a i n ( ) . En el caso del ejemplo no sera necesario considerar esta situacin, ya que slo hay una clase. El archivo fuente debe escribirse dividido en secciones bien definidas, separadas por

  • Introduccin a Java 23

    lneas en blanco y precedidas por un comentario identificativo de las misinas. Es importante guardar dicho archivo con la extensinjava. Con estos pasos habr ter- minado la fase de edicin del programa.

    A continuacin, el programa debe ser compilado, es decir, traducido a bytecode (cdigo byte), que es el lenguaje que entiende el intrprete de Java. Para compilar un programa con el JDK hay que invocar a javac y especificar el nombre del pro- grama a compilar sin olvidar reflejar su extensin java). Ahora debe tener en cuen- ta que para efectuar la compilacin y ejecucin de sus programas tal y como se indica a continuacin debe modificar la variable de entorno p a t h , aadiendo al p a t h anterior el subdirectorio o carpeta donde se encuentran los programas para compilar, ejecutar depurar y documentar las aplicaciones (javac, ,java, ,jdh y ,jaw- doc respectivamente). Esta modificacin deben introducirse en el archivo C: \a u t oexec. ba t, para que los nuevos valores se establezcan cada vez que se arranque la computadora.

    S E T PATH=%PATHL&;C:\jdkl.3.1\bin

    o bien

    SET PATH=OEATHcc;C:\~dkl.4\bin (para trabajar Con la 1.4 Beta)

    As mismo, es conveniente adaptar el contenido de c l a s s p a t h para que .lava pueda localizar siempre lais claseis creadais.

    SET CLASSEATH=.;C:\

    El valor asignado a CLASSPATH hace que Java busque las clases en la carpeta actual y el directorio raz. Suponiendo establecidos los anteriores valores para com- pilar E j emplol . j ava bastara la siguiente orden:

    C:\libro\TemaOl> javac Ejernplol.java

    Por ltimo, ser necesario llamar al intrprete de Java para que el programa con extensin c l a s s surgido en la operacin de compilacin y que contiene el cdigo byte pueda ser ejecutado. Para ello, cuando se dispone del JDK, en la lnea de rde- nes o ventana de mandatos del sistema se escribir la palabra j ava seguida por el nombre del programa a ejecutar, sin especificar la extensin del mismo y teniendo en cuenta que, si la clase pertenece a un paquete, el nombre de la misma debe ir pre- cedido por el del paquete de la forma siguiente:

    C:\libro\TemaOl> java libr=.TemaOl.ijemFlol

    o bien.

    C:\WINDOWS> j a v a libro.TemaOl.Ejemplo1

  • 24 Java 2. Manual de programacin

    dado el valor establecido para la variable CLASSPATH, que hace que el intr- prete de Java busque en el directorio raz y a partir de ah en aquellos cuyo nom- bre coincida con los elementos del paquete C : \ libro\TemaO 1. Es decir, se pasa como parinetro a java el nombre de la clase especificando el paquete al que pertenece, sin incluir la extensin y distinguiendo entre maysculas y minscu- las. La salida obtenida con la ejecucin del programa es la impresin en pantalla de la lnea

    Ccrn ienzo a programar en JAVA

    Una breve explicacin del cdigo fuente escrito es la siguiente:

    La primera instruccin sirve para indicar el paquete al que pertenecer la clase que est siendo definida. Los paquetes son un mecanismo para organizar las clases. y cuando se declara que una clase pertenece a un paquete, dicha clase deber ser almacenada en un subdirectorio o carpeta cuyo nombre coincida con lo especificado como nombre del paquete. En nuestro caso, como el paquete se denomina 1 i b r o . Tema O 1, la clase E j emp 1 o 1 deber ser almacenada en la carpeta 1 ibro\TemaO 1. La sentencia import va seguida por el nombre de un paquete y se utiliza para poder referirse ms adelante a clases pertenecientes a dicho paquete sin nece- sidad de cualificarlas con un nombre de jerarqua de paquetes. En el ejemplo, no existe aplicacin posterior. La tercera lnea es un comentario (comentario de una lnea) La palabra reservada class permite especificar que se va a definir una clase, una palabra clave o reservada es una palabra especial con un signifi- cado preestablecido en el lenguaje Java. Para delimitar la clase, se emplean llaves, { } . Para ejecutar el programa, el intrprete de Java comienza llamando al mto- do main ( ) ; como este mtodo se llama antes de la creacin de un objeto, ha de declararse como static y as se le podr llamar sin tener que refe- rirse a una instancia particular de la clase; como adems se llama por cdigo fuera de su clase tambin tiene que ser declarado como public, que es la forma de permitir que un miembro de una clase pueda ser utilizado por cdi- go que est fuera de la misma. La palabra reservada void indica que main no devuelve nada. String [ ] args es la declaracin de un array de cade- nas, mediante el que la clase podra tomar un nmero variable de parmetros en la lnea de comandos, aunque no se use es necesario incluir este parme- tro cuando se define el mtodo main ( ) . Se emplean llaves, { } , para delimi- t a r c I nietodo.

    * 0 !I .!>I\ ;I. la pantalla de la coinputadora es un objeto predefinido cuya referen- 1 . t. La clase System pertenece al paquete j ava. lang que " % , : , .

  • -- se importa automticamente y, por tanto, no necesita cualificacin. El mtodo p r i n t I n ( ) toma la cadena que se le pasa como argumento y la escribe en la salida estndar. Todas las sentencias en Java deben terminar en ; . Tenga en cuen- ta que Java es sensible a las maysculas, por lo que considera distintos los identi- ficadores si se cambian maysculas por minsculas o viceversa, es decir, s y s t e m y S y s t e m son identificadores diferentes.

    . Cir,5*

    I .I I . ESTRUCTURA DE UN PROGRAMA APLICACI~N EN JAVA

    Para crear programas en Java hay que tener en cuenta que toda implementacin que se realice se efectuar encapsulada en una clase. Un programa aplicacin fuen- te en Java se podra considerar formado por las siguientes partes:

    Una sentencia de paquete (package) que tambin puede ser omitida. Una, ninguna o varias sentencias de importacin ( impor t ) . Una serie de comentarios opcionales colocados en diversos lugares del pro-

    Declaraciones de las clases privadas deseadas; puede no haber ninguna. Una declaracin de clase pblica.

    grama.

    A su vez una declaracin de clase comenzar con la sentencia c l a s s y podr contener:

    Declaraciones de variables de la clase (estticas). Declaraciones de variables de instancia. Definiciones de constructores. Definiciones de mtodos.

    Dado que una clase es un modelo y las instancias son los objetos de esa clase, a las variables de instancia se las denomina as porque cada objeto contendr una copia propia de dichas variables, de forma que los datos de un objeto se encontra- rn separados de los de otro objeto, utilizndose los mtodos para la modificacin de los valores de las variables de instancia. En consecuencia, un programa muy sen- cillo que se puede crear en Java es:

    public class E J ernplo2

    public static void main (Szring[l args)

  • 26 Java 2. Manual de programacin

    formado exclusivamente por una declaracin de clase pblica

    Compilacin; javac Ejemplo2.java Ejecucin: java Ejemplo2

    Las clases de un programa contienen mtodos, interactan entre s y no necesi- tan contener un mtodo main ( ) , pero ste s ser necesario en la clase que consti- tuya el punto de partida del programa. Tenga tambin en cuenta que las applets no utilizan el mtodo main ( ) .

    La declaracin de mtodos en una clase se puede efectuar en cualquier orden y cada una de ellas se compone por una cabecera y un cuerpo. La cabecera del mto- do debe contener su nombre, una lista de parmetros y el tipo de resultado. Se espe- cificar void cuando el mtodo no devuelva resultados. En la implementacin del mtodo, cuando ste no haya sido declarado void, se utilizar la instruccin return para devolver un valor al punto de llamada del mtodo. La lista de par- metros consistir en cero o ms parmetros formales cada uno de ellos precedido por su tipo y separados por comas. Cuando se llama a un mtodo los parmetros actuales se asignan a los parmetros formales correspondientes. Entre los parme- tros actuales (los de la llamada) y formales (los de la declaracin) debe existir con- cordancia en cuanto a nmero, tipo y orden. Formatos de mtodos pueden ser los siguientes:

    Ejemplo

    tipol nombre-funcion (lista de parmetros)

    / / declaracin de variables

    / / sentencias ejecutables / / sentencia return con el valor a devolver

    I

    Ejemplo

    void nombre-procedimien to (tipo4 nombre-par3, t i p o 5 nombre-par4) i

    / / declaracin de variables

    / / sentencias ejecutablec

    I

    En el primer ejemplo, t i p o 1 representa el tipo de dato devuelto por 'el mto- do; cuando el mtodo no devuelve ningn valor se especificar void como tipo

  • Introduccin a Java 27

    devuelto. La lista de parmetros es una secuencia de parejas tipo-identificador sepa- radas por comas. Observe el formato expuesto en el segundo ejemplo.

    En Java es posible agrupar sentencias simples, encerrndolas entre una pareja de llaves para formar un bloque o sentencia compuesta; las variables declaradas den- tro de un bloque slo son vlidas en dicho bloque y, si ste tuviera otros anidados, en los interiores a l. En un programa Java se podrn declarar variables tanto den- tro como fuera de los mtodos. Las variables declaradas dentro del cuerpo de un mtodo se crean cuando se ejecuta el cuerpo del mtodo y desaparecen despus. Las variables que se declaran fuera del cuerpo de un mtodo son globales a la clase. Las que se declaran como final y static son, en realidad, constantes.

    1.1 1 .I. Referencia a miembros de una clase

    En los programas escritos en Java se har referencia a los miembros de una clase, mtodos y variables de instancia, desde otras distintas de aquellas en las que fueron definidos, para lo que generalmente ser necesario declarar un objeto de la clase adecuada y a continuacin escribir nombreObj e t o . nombreComponente. No obstante, hay ocasiones en las que se utilizan mtodos y variables de instancia sin necesidad de efectuar la declaracin de ningn tipo de objeto, especificando para su llamada nombreclase. nombreComponente. Para que esto pueda ocurrir y a un miembro de una clase sea posible llamarlo con el nombre de la clase en la que ha sido declarado, sin tener que referirse a una instancia particular de la misma, dicho miembro debe haber sido declarado static (esttico).

    1 .I 2. ERRORES DE PROGRAMACIN

    Los errores de programacin son inevitables, incluso para programadores experi- mentados. El proceso de corregir un error (bug en ingls) se denomina depuracin (debugging) del programa. Cuando se detecta un error en Java, se visualiza un men- saje de error que devuelve la posible causa del error. Desgraciadamente los errores a veces no se detectan y los mensajes de error no son siempre fciles de interpretar. Existen tres tipos de errores: errores de compilacin (sintaxis), errores de ejecucin y errores lgicos.

    1 .I 2.1. Errores de compilacin (sintaxis)

    Los errores de sintaxis ocurren cuando el cdigo viola una o ms reglas gra- maticales de Java. Los errores de sintaxis se detectan y visualizan por el com- pilador cuando se intenta traducir el programa, por esta razn se denominan

  • 28 Java 2. Manual de programacin

    tambin errores de compilacin. Los errores de compilacin provienen de erro- res en la construccin del cdigo tales como escribir mal una palabra reserva- da, omitir algn signo de puntuacin o bien utilizar, por ejemplo, una llave de apertura sin su correspondiente llave de cierre. Estos errores suelen ser fciles de detectar ya que el compilador suele indicar dnde se producen las posibles causas.

    Ejemplo

    La compilacin del siguiente programa produce errores de sintaxis:

    //este prograrra contiene errores de sintaxis public class Demo

    public static void main (String[] args)

    z=50; Cysten.out.println(z+lO) ;

    La ejecucin de este programa produce un error detectado por el compilador del entorno JDK.

    Figura 1.6. El compilador del JDK detecta un error de sintaxis.

    El error de sintaxis es la no declaracin previa de la variable z, que se utiliza en dos sentencias.

  • Introduccin a Java 29

    Nota: Error de sintaxis: Es una violacin de las reglas de gramtica de Java, detectada durante la traduccin del programa.

    1 . I 2.2. Errores de ejecucin

    Los errores de ejecucin son errores que producen una terminacin anormal y que se detectan y visualizan durante la ejecucin del programa. Un erro