java 2 manual de programacion

482
7/13/2019 Java 2 Manual de Programacion http://slidepdf.com/reader/full/java-2-manual-de-programacion-5619529016140 1/482 Id Java 2, incluyena

Upload: cuamacaco1

Post on 10-Oct-2015

23 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/13/2019 Java 2 Manual de Programacion

    1/482

    Id

    Java 2, incluyena

  • 7/13/2019 Java 2 Manual de Programacion

    2/482

    JAVA 2

    MANUAL DE PROGRAMACIN

  • 7/13/2019 Java 2 Manual de Programacion

    3/482

    JAVA 2MANUAL DE PROGRAMACIN

    Luis Joyanes Aguilar

    Matilde Fernandez Azuela

    Departamento de Lenguajes y Sistemas Informticos e Ingeniera del SoftwareFacultad 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 SANTAFDE BOGOT SANTIAGO SA0 PAUL0

    SAN FRANCISCO*

    SIDNEYSINGAPUR ST.

    LOUIS TOKIO*

    TORONTOAUCKLAND HAMBURG0 LONDRES

    * MILN

    MONTREAL NUEVADELHI PARiS

  • 7/13/2019 Java 2 Manual de Programacion

    4/482

  • 7/13/2019 Java 2 Manual de Programacion

    5/482

    v i Contenido

    I ,

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

    I , 17. Errores de compi laci ...............................................I ,

    12.2. Errores de e-iecucinI . 12.3. Errores Ibgicos .......................................................

    2527

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

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

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

    2.1. Palabras resercadas .. ......................................................22 . Identi icado res ..... .................................................7.3. Tipos de datos ....................................................

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

    2.6. constantes ................................................. ......................................2.7. La biblioteca d c clases de Java ....................................................7.8. Coiiceptos bis icos sobre e x c e p ...................................................2.9.

    7.10. Las clases Char act er y Bool ean ........................La clase Nxmber y sus subclases ....................................

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

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

    2 .13 . La sentencia d c asignacin .......2.14. Expresiones .................. ..................................................

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

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

    ...............................2.18. Operado res aritmticos ......................... .....................................7.19. Operadores relacionales ................. .........................................2.20.

    Operadores lb&'ICOS ............... .........................................................................................................

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

    32333434

    38414445 464849525253

    54 5555575758 61

    61

    63

    656767

    71

    3..

    La sentencia i f ........... 723 . 3 .

    La sentencia i f- e l s e 733 . 3 . Las sentencias i f e I f- e l s e anidadas 743.4. La sentencia s w i t c h ..................................................... 78

    80.5 . La sentencia f o r ....................3.6. La sen t enc i a break 833.7. La sentencia cont i nue ...... 85

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

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

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

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

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

  • 7/13/2019 Java 2 Manual de Programacion

    6/482

  • 7/13/2019 Java 2 Manual de Programacion

    7/482

  • 7/13/2019 Java 2 Manual de Programacion

    8/482

  • 7/13/2019 Java 2 Manual de Programacion

    9/482

  • 7/13/2019 Java 2 Manual de Programacion

    10/482

    A.

    B.C.

    D.

    E.

    F.

    G .

    Contenido x i

    A P N D I C E S

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

    Prioridad de operadores 447

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

    Paquetes de laplat aforma Java 2 . Versiones 1 .3 y 1 .4 Beta ...............................

    Recursos: libros, revistas y WEB ........................................................................

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

  • 7/13/2019 Java 2 Manual de Programacion

    11/482

    P R L O G O

    Cinco aos despus desu

    lanzamiento, Java se ha convertido enun estndar de la industria, en un lenguaje de programacin paradesarrollo de aplicaciones tanto de propsito general como deInternet, 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 objetosdiseado para distribuir contenidos a travs de una red. Una de susprincipales caractersticas es que permite operar de forma inde7pendiente de laplataforma 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 (equipadacon procesadores Intel y sistema operativo Windows) igual queuna versin creada para Mac slo funciona sobre Power PC oImac y Mac OS o la misma aplicacin desarrollada para Unix, slolo hace sobre plataformas Unix y no hay forma de que funcionesobre 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 Javaquede ligada nicamente a Java, independizada por lo tanto de la

    xi i i

  • 7/13/2019 Java 2 Manual de Programacion

    12/482

    xiv Prlogo

    plataforma. Esta concepcin queda recogida en el concepto de mquina virtualJVM (Java VirtualMachine), un software que interpreta instrucciones para cual-quier mquina sobre la que est corriendo y que permite, una vez instalado, que unamisma aplicacin pueda funcionar en un PC o en un Mac sin tener que tocarla. Hoyen da. cualquier sistema operativo moderno (Windows, Macintosh, Linux, Unix,Solaris. etc.) cuenta con una JVM. As, lo que hace Java en combinacin con estamquina es funcionar como hardware y como sistema operativo virtual, emulan-do en software una CPU universal. Al instalar Java, ste actuar como una capa deabstraccin 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 mismose trate del dispositivo ms pequeo o del ms grande de los servidores. Otra granventaja es que permite que todas las mquinas. plataformas y aplicaciones se comu-niquen entre s accediendo desde cualquier equipo, dondequiera que est situado, alas 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 unlenguaje 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 . Muchascaractersticas 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 Javaen la primavera de 1995.

    Sorprendentemente, la inquietud original para la creacin de Oak no eraInternet. En realidad, se buscaba un lenguaje independiente de la plataforma (esdecir, de arquitectura neutra) que se pudiera utilizar para crear software que seincrustara 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 tipode CPU (Unidad Central de Proceso), se requera, sin embargo, un compilador C++completo que corriese en esa CPU. El problema, en consecuencia, se converta encompiladores caros y en gran consumo de tiempo para crear los programas. Sobre

  • 7/13/2019 Java 2 Manual de Programacion

    13/482

    Prlogo XV

    esas premisas, Gosling y sus colegas comenzaron a pensar en un lenguajeportable,independiente de la plataforma que se pudiera utilizar para producir cdigo que seejecutara en una amplia variedad de CPU y bajo diferentes entornos. Entoncescoinenz6 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 dela programacin de computadoras. y Java.

    a su vez, ha tenido un profundo impactoen Internet. La razn es muy simple: Java extiende el universo de los objetos que semueven libremente en el ciberespacio que forma la red Internet. En una red existendos grandes categoras de ob-jetosque se transmiten entre las computadoras conec-tadas (el servidor y la computadora personal): informacin pasiva y dinmica, pro-gramas activos. Un ejemplo fcil de datos pasivos son los correos electrnicos queusted recibe en su computadora o una pgina web que se baja de la red. Incluso sidescarga un programa, est recibiendo datos pasivos hasta tanto no ejecute dichoprograma. Sin embargo, existewotros tipos de objetos que se transmiten por la red:programas dinmicos autoejecutables que son agentes activos en la computadoracliente.

    Estos programas dinmicos en red presentan serios problemas de seguridad y

    portnhilidad. Java ha resuelto gran cantidad de problemas con un nuevo modelo deprograma: 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 sistemaoperativo 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 hacenidneo para programacin orientada a objetos. Este libro dedica buena parte de sucontenido 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 transmitidapor Internet y ejecutada por un navegador Web compatible con Java. Un applet esrealmente un pequeo programa Java, descargado dinmicamente por la red, talcomo una imagen, un archivo de sonido, un archivo musical MP3 o divX, o unasecuencia de vdeo: pero con una notable propiedad, es un programa inteligente quepuede 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 muyoptimizadas diseadas para ser ejecutadas por un sistema en tiempo de ejecucin

  • 7/13/2019 Java 2 Manual de Programacion

    14/482

    x v i Prlogo

    Java. denominado mquina virtual Java(JUVLI i t + m dMachine,

    JVM) que acta comoun interprete para los bytecodes. La traduccin de un programa en

    cdigo4

    de bytesfacilita la ejecucin del programa en una amplia variedad de e n t o r n a 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 eningls) 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 nombreparece que se deba a que era uno de los tipos de caf que servan en una cafeteracercana al lugar en que

    traba.jaban

    los desarrolladores y sa es la razn de que ellogotipo de Java sea una humeante taza de caf.

    Una de las primeras aplicaciones que lo soportan con especificaciones comunespara 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 tratabade aplicaciones HTML -pginas de puro contenido esttico- y fue evolucionando yadaptndose a Internet y a sus innovaciones tecnolgicas; eso significa que Javasoporta 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 sonnumerosos los grandes fabricantes (IBM. Nokia, Motorola, Hewlett-Packard

    ....)

    quelo soportan con especificaciones comunes;

    J2EM,

    un nuevo estndar para disposi-tivos inalmbricos (mviles, de bolsillo o de mano ( h a n d h r l d s ) )que requieren unaintegracin en dispositivos con poco espacio fsico y memoria de trabajo. J2EE esya 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 detodo 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 conrapidez fue la 1 .O, aunque pronto apareci la versin I . I , que si bien slo cambi elsegundo dgito del nmero, los cambios fueron ms profundos de lo que el nmerosuele indicar en la nomenclatura de los programas de software (modificaciones ypequeas 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 eficienciay calidad Java. Se puede considerar que Sun ha lanzado cinco versiones importan-tes del lenguaje Java:

  • 7/13/2019 Java 2 Manual de Programacion

    15/482

    Prlogo xvii

    Java 1.0. Una pequea versin centrada en la Web disponible uniformementepara 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 nentes den oni nada J u v u Beuns.J u i w 2

    c o t

    SDK 1.2. Una versin ampliada significativamente y lanzada enI Y98 con caractersticas de interfaces grficas de usuario, conectividad de

    bases de datos y muchas otras mejoras.J u w

    2 C O I Z SBK 1.3. Una versin lanzada en el 2000 que aade caractersticasnotables. como multimedia mejorada,

    ms

    accesibilidad y compilacin msrpida.Juvrr

    2 ~ 0 1 1SDK 1.3 hetu. Una versin lanzada a primeros del mes de junio de2001 que, entre otras me.joras. introduce la posibilidad de trabajar con XML. Afinales del 200 1 est prevista la salida de la versin definitiva.

    Adems de los kits de desarrollo de Java, existen numerosas herramientascomerciales de desarrollo para losprogramadores 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.4para crear pro-

    gramas Java a medida que lea este libro, necesita asegurarse que sus herramientasde desarrollo estn actualizadas para soportar Java 2.

    Los programas de este libro fueron escritos y probados con Java SDKv.

    1.3.1, laversin

    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 29de mayo de 2001 la versin Java SDK v. 1.4beta con la cual fueron compilados y

    probados todos los programas de nuevo, por lo que usted no deber tener ningnproblema. Bueno, realmente, s se le presentar un problema como a nosotros,pero que por fortuna nos resolvieron los ingenieros de Sun Microsystems (AndrewBennett 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 elnavegador Web no le funcionarn completamente a menos que utilice unos progra-masplug-in descargados del sitio de Sun.

    Los navegadores existentes normalmente no soportan -como es lgico- la ltimaversin 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 proporcionandounplug-in (aadido/actualizacin o parche).En realidad, cualquier clase aadidaa Java I .2 y posteriores no se encuentra en la implementacin de Java proporcionada

  • 7/13/2019 Java 2 Manual de Programacion

    16/482

    xvi i i Prlogo

    por los navegadores. por lo que se originarn errores al usar las nuevas clases. perono 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 laopcin de coinpilacin por defecto del compilador

    ( j r r i ~ r c . )

    existente en Java 1.3 queiiutotiiticliiiieiite diriga el cdigo a la versin I . 1 de la mquina virtual. Para solu-cionar

    este

  • 7/13/2019 Java 2 Manual de Programacion

    17/482

    Prlogo x ix

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

    ht t p : / / ~a va . s u r ~. . c om/ j ~s e

    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 /

    k t tp :

    / 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

    - t t o: / / ] ava. s un. c om j 2me

    Platufornici

    Jnvtr

    2, Srundurtl

    Edition I:I .4

    P1rrtufi)rmci J a i w 2 Micr o Ecli-

    t ion,

    J2 ME .ri.rtemci.r. naldm

    -

    17rico.r)

    Como motor de bsqueda le recomendamos Google (www. o o g l e . corn) ,Al t avi s t a (www.al a v i s t a . corn) o Ask (www.ask.corn) ,aunquesi 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 obraJ a ~ m

    2.M u t i i d

    de

    progrumacicn

    ha sido diseada y escrita pensando enpersonas que desean iniciarse en el mundo de la programacin de Java tanto paradesarrollo de aplicaciones como para desarrollo de upplets. Tiene como objetivoprimordial ensear a programar en Java para entornos abiertos y entornos deInternet 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 havolcado en el libro tratando de conseguir una obra didctica que pueda servir noslo para su uso en cursos profesionales, sino en cursos de enseanzas regladastales como los mdulos formativos de ciclo superior de la formacin profesional yen losprimeros semestres de estudios universitarios de ingeniera y ciencias. Se habuscado que el libro fuera autosuficiente, aunque el rendimiento mayor del libro se

    http://ldva.sun.cnm/!Zse/lhttp://%21ava.sun._om/72se/1.4http://%21ava.sun._om/72se/1.4http://%21ava.sun._om/72se/1.4http://java.cun.corr/j2ce/l.3/docshttp://java.cun.corr/j2ce/l.3/docshttp://%21ava.sun._om/72se/1.4http://ldva.sun.cnm/!Zse/l
  • 7/13/2019 Java 2 Manual de Programacion

    18/482

    xx

    Prlogo

    conseguir cuando el lector tenga una formacin mnima de fundamentos de teorade progranmacin. Conocimientos de otros lengua.jes de programacin. fundamen-talmente estilo C/C++. ayudar considerablemente al aprendizaje gradual no sloen 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 unsemestre de duracin o cursos profesionales de unas 30-40 horas que y a poseanexperiencia en otros lengua-jesde programacin.

    CONTENIDO

    Siempre que Sun lanza una nueva versin de Java hace un ki t de desarrollo gratisque pone disponible en su Web para soportar a dicha versin. Este libro se hacreado 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, sehan 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 incluirambas 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 sieteapndices (A-G).Unbreve contenido de los captulos y apndices se resea a con-

    tinuacin:

    Captulo 1.Introduccin CI JLiva. En este captulo se realiza una descripcin dela 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 un

    programa Java. Sun tiene disponible en su pgina Web (www.sun.com) el Kit deDesarrollo necesario para la compilacin y ejecucin de programas denominadoJDK (JuiuDevelopment

    K i f )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 apunto de programas por parte del usuario.

    Captulo 2. Caructeri~ricusdel 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 yoperadores. as como una breve introduccin a las clases y bibliotecas de clases deJava.

    Captulo 3. Decisiorzes y bucles. Losprogramas 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 dedecisiones e iteraciones o repeticiones: para ello, se utilizan sentencias de decisiny de iteracin para realizar los bucles o repeticiones de acciones. Se describen

  • 7/13/2019 Java 2 Manual de Programacion

    19/482

    Prlogo xx i

    las sentencias bsicas: i f , ef- el se, f o r , whi l e, do- whi l e, br eak ycont i nue.

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

    para SLI escritura.Captulo 5. Herencicr. Una de las propiedades fundamentales del concepto de

    orientacin a objetos es la herencia. Se explica el concepto, as como el mtodo deimplementar en Java dicha propiedad y sus ventajas e inconvenientes.

    Captulo 6. Eiic~rrp,sirlcin~ieiitoy 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 eneste 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 delistas. 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 decaracteres y las clases especficas necesarias para su manipulacin se analizan en estecaptulo. Tambin se considera el concepto casi siempre necesario en un programadel 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 ofreceal 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 ymanipulacin se describen en este captulo.

    Captulo 11. Applers. Los programas conocidos como applets son, sin gnero dedudas. 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 lenguajeHTML y el modo de realizar applrts son la base del captulo.

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

    Captulo 13. Manqjo dr excepciones. El concepto de excepciones es vital en laprogramacin 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-

  • 7/13/2019 Java 2 Manual de Programacion

    20/482

    xx i i Contenido

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

    Captulo 15. E.struc~tirrn.s e c i r r tos defliiicti.s p o r 01 progrtrniudor: Una vez que elprogramador sabe mane.jar estructuras de datos bsicas como arrays y archivos, sen-tir la necesidad con relativa frecuencia de utilizar estructuras de datos dinmicastales 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 elprogramador tales como: Lisrndo de pa1cihrci.s r-eserva d(is Juvci ( A ) ; f i ihla de prio-riud

    de operadores( B ) ;

    Gua de sintaxis de J L I L Y I2, que facilita la consulta al lec-

    tor en la fase de escritura y depuracin de prograinas ( C ) ;Paquetes de la platuformaJ 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 orientadosci ohjetos

    m r s

    p o p l ~ i r e sen la uc tuc i l idd: C++ y Java ( E ) ;Coriteriido del CD comoelemento 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 ACOMPAAAL LIBRO

    El disco compacto que se adjunta en las tapas de este libro contiene la versinJava 2 y el kit de desarrollo JDK de Sun versiones 1.3.1 y 1.4 para entornosWindows y Linux. As mismo, se han incluido todas las aplicaciones y appletssobresalientes 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 sinexpresar 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 haresultado una inestimable ayuda en el desarrollo de esta obra. Evidentemente com-

    portamientos profesionales como &tos son algunos de los millones de razones parausar Java. As pues, reiteramos nuestro agradecimiento a Sun Microsystems y en

    particular a los ingenieros:

    Andrew BennettEngineering Manager. Sun Microsystems. Inc.

  • 7/13/2019 Java 2 Manual de Programacion

    21/482

    CONTENIDO1

    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 basede Java.

    m 1

  • 7/13/2019 Java 2 Manual de Programacion

    22/482

    2

    Java 2. Manual de programacin

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

    El futuro de la computacin est influenciado por Internet yJava es una parte importante de ese futuro. Java es el lenguaje deprogramacin de lnternet y es una plataforma cruzada, orientadaa objetos, usada en la Red y preparada para multimedia. Desde sunacimiento real en 1995, Java se ha convertido en un .lenguajemaduro 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 adesarrollarlo con el objetivo de crear un lenguaje, independiente de la plataforma ydel sistema operativo, para el desarrollo de electrnica de consumo (dispositivoselectrnicos inteligentes, como televisores, vdeos, equipos de msica, etc.).

    El proyecto original, denominado Green comenz apoyndose enC++,

    pero amedida que se progresaba en su desarrollo el equipo creador de

  • 7/13/2019 Java 2 Manual de Programacion

    23/482

    Introduccin a Java 3

    En diciembre de 1998 Sun lanz la plataforma Java 2 (que se conoci como JDK1.2 durante su fase de pruebas beta). Esta versin de Java ya represent la madurezde 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 otrasutilidades, se denomina oficialmente Java 2 JDK, versin 1.3.

    Los programas Java se pueden incluir (((embeber))o ((empotrar))) en pginasHTML y descargarse por navegadores Web para llevar animaciones e interaccionesa los clientes Web. Sin embargo, la potencia de Java no se limita a aplicacionesWeb, 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 disedesde 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, unenfoque 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 direccinwww .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 ellenguaje Java. AI contrario que los compiladores tradicionales, que convierten el cdi-go fuente en instrucciones a nivel de mquina, el compilador Java traduce elcdigo fuente Java en instrucciones que son interpretadas por la Mquina VirtualJava (JVM,Java VirtualMachine). 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 proyectoInternet y por esta circunstancia es idneo para tareas de programacin de pro-

    psito general y, de hecho, muchas de las herramientas Java estn escritas enJava.

    1.2.1. Java como lenguaje de InternetJava es un lenguaje para programar en Internet que trata de resolver dos problemasclaves con el contenido de Internet:

  • 7/13/2019 Java 2 Manual de Programacion

    24/482

    4

    Java 2. Manualde programacin

    Computadora localSistema operativoNavegador Java

    Mquina virtualJava

    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 JavaCdigo fuente

    En el mundo de la Web, Java es una tecnologa facilitadora que permite a losdesarrolladores crear pginas Web que se entregarn de modo consistente a todoslos 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 especficahardware o sistema operativo, se pueden escribir programas con el conocimiento deque 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 deuna computadora local se conecta con el servidor a travs de Internet mediante unnavegador habilitado para Java, el cdigo fuente se transfiere de la computadoraservidor 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++, delque es un lenguaje derivado. Aade a C++ propiedades de gestin automtica dememoria 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 queC++ ya que las caractersticas

    ms

    complejas de C++ han sido eliminadas de Java:herencia mltiple, punteros (apuntadores) y sentencia go to entre otras.

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

  • 7/13/2019 Java 2 Manual de Programacion

    25/482

    Introduccin a Java 5

    Las iinpleinentaciones de la Mquina Virtual Java pueden ser muy eficaces y esohace posible que losprogramas Java se ejecuten tan rpidamente como losprogramasC++. 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, multihiloy dinmico. Analicemos ms detenidamente cada caracterstica.

    1.3.1. Sencillo

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

    Java ha simplificado la programacin enC++,

    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 programacinen C++ ms complicada son los punteros y la herencia mltiple. Java elimina lospunteros y reemplaza la herencia mltiple de C++ con una estructura nica deno-minada

    interfaz ( i nterface).

    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++.

  • 7/13/2019 Java 2 Manual de Programacion

    26/482

  • 7/13/2019 Java 2 Manual de Programacion

    27/482

    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. Dist r ibu ido

    La computacin distribuida implica que varias computadoras trabajan juntas en lared. Java ha sido diseado para facilitar la construccin de aplicaciones distribuidasmediante una coleccin de clases para uso en aplicaciones en red. La capacidad dered 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 ResourceLocator) de Java puede hacer que una aplicacin acceda fcilmente a un servidorremoto.

    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 ejecutablegenerado por el compilador slo se puede ejecutar en una plataforma Windows. Enel caso de Java, se compila el cdigo fuente una sola vez y el bytecode generado porel compilador Java se puede ejecutar en cualquier plataforma.

    Nota: Losprogramas 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. Innovacionesrecientes en el mundo Java han avanzado sobre las ideas de los intrpretes y hanaparecido compiladores JIT (just-in-time) que leen la representacin en bytecodeindependiente de la mquina de un programa Java, e inmediatamente antes de que

  • 7/13/2019 Java 2 Manual de Programacion

    28/482

    8

    Java 2. Manual de programacin

    la ejecucin traduzca la representacin enb-ytecode

    en instrucciones de la mquinareal del sistema en el que el programa Java se est ejecutando. Dado que losprogra-mas Java se ejecutan a continuacin como instrucciones mquina, pueden ser casitan 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 seha escrito pensando en la verificacin de posibles errores y por ello como un lenguajefuertemente 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 deliberacin explcita de memoria. En lenguajes como C++ es necesario borraro 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 computadorasin 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 paraproducir trastornos apreciables.

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

    de la universidad de Princeton (all imparti clase el f sico universal Einstein)es excelente para estudiar problemas de seguridad informtica, especialmentepara Java,

    ActiveX

    yJavaScript.

    www. cs . pr i ncet on. edu/ s i p/ .

  • 7/13/2019 Java 2 Manual de Programacion

    29/482

    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 escribirun programa que se ejecute en cualquier plataforma con una Mquina VirtualJava.

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

    I I

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

    Comentario: Un programa Java es el mismo si se ejecuta en un PC, unMacintosh, o un sistema Unix. Es distinto de los lenguajes convencionalestales 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 agran velocidad mediante un intrprete incorporado en la mquina virtual Java. Enlas diferentes plataformas existirn mquinas virtuales especficas, y cuando elcdigo byte llegue a esas mquinas virtuales ser interpretado pasndolo al cdigoadecuado para la computadora receptor de la aplicacin. Las mquinas virtuales Javason programas capaces, entre otras cosas, de interpretar el cdigo byte, que pueden

    venir incluidos en los navegadores, proporcionados con el sistema operativo, con elentorno Java o bien obtenerse a travs de Internet (mediante descarga del corres-pondiente programa). Por tanto, los programas Java pueden ejecutarse en cualquierplataforma sin necesidad de ser recompilados; es decir, son muy portables.

  • 7/13/2019 Java 2 Manual de Programacion

    30/482

    10

    Java 2.Manual de programacin

    Pero la portabilidad de Java an va ms all; Java fue diseado de modo quepueda 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. Estacaracterstica es distinta de C o C++, en los que el tamao de los tipos dependerdel 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. Al to rendimiento

    Los coinpiladores de Java han ido mejorando sus prestaciones en las sucesivas

    \ ersiones. Los nuevos compiladores conocidos como J l T @st-in-tirvze) permitenque prograinas Java independientes de la plataforma se ejecuten con casi elmismo rendimiento en tiempo de ejecucin que los lenguajes convencionalescoin pi 1ados .

    1.3.10. Multhilo

    Java es uno de losprimeros lenguajes que se han diseado explcitamente para tenerla 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 elvdeo. La Programacin multihilo est integrada en Java. En otros lenguajes se tieneque 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. Estapropiedad 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.

  • 7/13/2019 Java 2 Manual de Programacion

    31/482

    introduccin a Java 11

    1.3.11. Dinmico

    ComoJava es interpretado, es un lenguaje muy dinmico. En tiempo de ejecucin, el

    entorno Java puede extenderse (ampliarse) mediante enlace en clases que puedenestar localizadas en servidores remotos o en una red (por ejemplo, Intranet/Intemet).Es una gran ventaja sobre lenguajes tradicionales como C++ que enlaza clases antesdel momento de la ejecucin.

    Se pueden aadir libremente nuevos mtodos ypropiedades a una clase sin afec-tar a sus clientes. Por ejemplo, en la clase Cuadr ado se pueden aadir nuevosdatos 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 Cuadr adoper-manece igual. En tiempo de ejecucin, Java carga clases a medida que se necesitan.

    1.4. LA PROGRAMACIN ORIENTADA A OBJETOSCOMO BASE DE JAVA

    La programacin orientada a objetos (POO) es la base de Java y constituye una nuevaforma 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 sedenomina variables de instancia, con las rutinas necesarias para manipularlos, a las que

    se denomina mtodos. Los objetos se comunican unos con otros mediante interfaces biendefinidas a travs depuso de mensajes; en P O 0 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 sedefinen verdaderos objetos, sino clases; una clase es como una plantilla para construirvarios objetos con caractersticas similares. Los objetos se crean cuando se define unavariable de su clase. En las clases pueden existir unos mtodos especiales denominadosconstructores que se llaman siempre que se crea un objeto de esa clase y cuya misines iniciar el objeto. Los destructores son otros mtodos especiales que pueden existir enlas clases y cuya misin es realizar cualquier tarea final que corresponda realizar en elmomento 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 usosindebidos al forzar que el acceso a los datos se efecte siempre a travs de losmtodos del objeto. En Java, la base del encapsulamiento es la clase, donde sedefine la estructura y el comportamiento que sern compartidos por el grupode objetos pertenecientes a la misma. Para hacer referencia a los componentesaccesibles de un objeto ser necesario especificar su sintaxis:

    nombreobjeto. ombreComponente.

  • 7/13/2019 Java 2 Manual de Programacion

    32/482

    1 2

    Java 2. Manual de programacin

    La herencia es la capacidad para crear nuevas clases (descendientes) que seconstruyen 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 laclase base, de la cual hereda suspropiedades.El

    polimorjismo

    consigue que un mismo mensaje pueda actuar sobre diferen-tes tipos de objetos y

    comportarse

    de modo distinto. El polimorfismo adquieresu mxima expresin en la derivacin o extensin de clases; es decir, cuandose obtienen nuevas clases a partir de una ya existente mediante la propiedad dederivacin 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. Lareferencia completa del estndar Java se encuentra en el libro Java LanguajeSpecification, 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 delmismo se encuentra en el sitio Web de internet de Sun

    Las versiones de Java de Sun se incluyen en JDK (Java Deiv lupment Kit), quees 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-t ime)para ejecutar elcdigo Java. El entorno JDK est disponible para Windows9Y98, Windows NT/2000y 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 losprogramas de este libro se pueden compilar y ejecutar en losentornos JDK 1.2, JDK 1.3 y JDK 1.4 y deben poder trabajar con cualquierherramienta de desarrollo que soporte las citadas versiones.

  • 7/13/2019 Java 2 Manual de Programacion

    33/482

    Introduccin a Java 3

    JDK consta de un conjunto de programas independientes cada uno de los cualesse 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. symant ec. comSun Java Workshop www. j avasof . comVisual Age for Java by IBMJFactory

    de Roge Wave www. r ogewave. comJBuilder de lmprise www. i mpr i se. comVisual J++ de Microsoft www. mi cr osof t . comForte de Sun www. sun. com

    www. i bm. com

    Estas herramientas proporcionan un E D (Entorno Integrado de Desarrollo) que

    permite el rpido desarrollo de programas. Le recomendamos utilice herramientasEID para desarrollo de programas y ejecute las tareas integradas en la interfaz gr-fica de usuario, tales como: edicin, compilacin, construccin, depuracin yayuda en linea.

    1.6. APLICACIONES Y APPLETS

    Losprogramas en Java se dividen en dos grandes categoras: aplicaciones y applets.Las aplicaciones son programas autnomos independientes (standalone),tal comocualquier 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 Webcompatible Java; los applets son adecuados para desarrollar proyectos Web.

    Los applets son programas que estn incrustados, ((empotrados))(embedded)enotro 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 Javaque no est incrustado en HTML ni en ningn otro lenguaje y puede ser ejecutadode modo autnomo.

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

    1.6.1 Semejanzas y diferencias entre aplicaciones y applets

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

    http://www.symantec.com/http://www.javasof.com/http://www.rogewave.com/http://www.imprise.com/http://www.microsoft.com/http://www.sun.com/http://www.ibm.com/http://www.ibm.com/http://www.sun.com/http://www.microsoft.com/http://www.imprise.com/http://www.rogewave.com/http://www.javasof.com/http://www.symantec.com/
  • 7/13/2019 Java 2 Manual de Programacion

    34/482

    14

    Java 2. Manualde 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 desarrollarque los upplets, debido a que no necesita crear un archivo HTML y cargarlo en unnavegador Web para visualizar los resultados.

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

    Un aspecto muy importante en el desarrollo de programas es la seguridad. Losupplets necesitan unas condiciones de seguridad para evitar daos en el sistema enel que est funcionando el navegador, por tanto, tienen ciertas limitaciones. Algunaslimitaciones 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 propagarvirus.

    Los upplets no pueden establecer conexiones entre la computadora de un usua-rio y otra computadora, excepto que sea el servidor donde estn almacenadoslos applets'.Los applets no pueden ejecutar programas de la computadora donde reside elnavegador, 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 selas conoce de modo genrico como tecnologas P2P p e e r - r o -p e e r ) .

  • 7/13/2019 Java 2 Manual de Programacion

    35/482

    Introduccin a Java 15

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

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

    upplet, debido a las limitaciones de seguridad de losapplets.

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

    1.7. CREACIN DE PROGRAMAS

    Antes de que una computadora pueda procesar un programa en un lenguaje de altonivel, el programador debe introducir el programa fuente en la computadora y lacomputadora a su vez debe almacenarlo en un formato ejecutable en memoria. Lasetapas 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) ycorregir archivos fuente (escritos en lenguaje Java). El compilador es un programaque 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 objetode especificar qu programas de aplicacin y/u operaciones del sistema debe ejecu-tar la computadora (los sistemas operativos ms utilizados son: Windows9x/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 fuentecorrespondiente 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((Hol a mundo)) de Stroustrup (el autor de C++), modificado para que visualice unmensaje de bienvenida con el nombre de un pequeo pueblo andaluz.

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

  • 7/13/2019 Java 2 Manual de Programacion

    36/482

    16

    Java 2. Manualde programacin

    / / E s t a apl i caci n vi sual i za: Hol a Car chel ej o. Bi enveni do a J ava

    pub l ic class Bi enveni doI

    pub l ic s t a t i c void mai n ( St r i ng[ ] ar gc)t

    Cyc t em out . pr i nt l n( " Hol a

    Car chel ej o. Bi enveni do a J ava" ) ;

    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 programafuente en memoria y lo guarde en la carpeta proyecto como un archivofuente.

    3. Utilizar el programa compiladorpara traducir el programa fuente en byteco-de (cdigo en bytes). Si existen errores de sintaxis (un error gramatical de unalnea 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 estlibre de errores, el compilador guarda su traduccin en bytecode como unarchivo.

    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 instruccionesindividuales.

    Edicin

    Editar el programa Bi enveni do con un editor" escribiendo el texto correspon-diente al programa fuente. Debe darle un nombre al archivo fuente que constituyeel programa ( Bi enveni do.j ava). Por convenio, el archivo del programa fuen-te debe terminar con la extensin j ava. Almacene el programa en la carpetaC : \j dkl . 3 . O

    -

    2\ bi n.

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

    http://edit.com/http://edit.com/
  • 7/13/2019 Java 2 Manual de Programacion

    37/482

    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 class Bi enveni doI

    public st at ic void Mai n ( St r i ng[ ] ar gs )t

    Sys t e m out . pr i nt l n ( " Hol a Car chel ej o. Bi enveni do a J ava") ;

    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 Bi enveni do. ava:

    j avac Bi enveni do. ] ava

    Si no existen errores de sintaxis, el compilador genera un archivo denominado

    Bi enveni do. c las s . El archivo no es un archivo objeto tal como se genera enotros compiladores de lenguajes de alto nivel. Este archivo se llama bytecode. Elbytecode 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 ejecuciny el intrprete Java.

    Nota: Una gran ventaja de Java es que e l cdigobykcode

    puede ejecutarse endiferentes plataformas hardware y sistemas operativos.

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

  • 7/13/2019 Java 2 Manual de Programacion

    38/482

    18

    Java 2.Manual de programacin

    Archivofuente

    Objetosimportados

    Compilador

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

    Ejecucin

    Para ejecutar unprograma 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 Bi enveni do. j ava:

    j ava Bi enveni do

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

    Figura 1.4. La salida del programa Bi enveni do.

    1.8. COMPONENTES DE UNA APLICACIN

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

    Comentarios

    La primera lnea del programa Bi enveni do es un Comentario. LosComentarios sirven para documentar losprogramas y en ellos se escriben anota-

  • 7/13/2019 Java 2 Manual de Programacion

    39/482

    Introduccin a Java19

    ciones sobre cmo funciona el programa o sobre cmo se ha construido. Loscomentarios ayudan a los programadores actuales y futuros o a los usuarios de losmismos 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 deuna nica lnea estn precedidos por dos barras inclinadas ( / /), si se extiendensobre varias lneas estn encerrados entre / * y * / . Cuando el compiladorencuentra 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 coment ar i o r el at i vo/ * a l a S i e r ra de C a z o r l a , escr i t o

    por Mackoy * /

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

    Palabras reservadas

    Las pa labra s reservadas opalabras clave (Keywords) son palabras que tienen undeterminado significado para el compilador y no pueden ser utilizadas para otrosfines. Por ejemplo, la palabra whi le significa que se habr de evaluar la expre-sin que viene a continuacin y, en funcin del valor de la misma, se ejecutarno no se ejecutarn las sentencias siguientes. Otras palabras reservadas son

    pub l i c , s t a t i c , p r i v a t e , que representan modificadores. Otro ejemplo esc l a s s , una palabra reservada muy utilizada, que significa que la palabra queviene a continuacin es el nombre de la estructura clase. Las palabras reservadas

    se resaltarn en los cdigos fuente que aparecen en el libro escribindolas ennegrita.

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

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

  • 7/13/2019 Java 2 Manual de Programacion

    40/482

    20

    Java 2. Manual de programacin

    z = 15;

    z = z+10u;

    / / est a sent enci a asi gna 15 l a/ / a var i abl e z/ / e s t a sent enci a aade 130/ / ai val or de z

    p r i n t l r . ( "Bi enveni do S r . Mackoy" ) ; / / sent enci a de vi sual i zaci n

    Bloques

    Un bloque es una estructura que agrupa sentencias. Losbloques comienzan con unallave de apertura ( { ) y terminan con una llave se cierre ( } ). Un bloque puede estardentro 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 deuna o ms clases y cada una de ellas puede contener declaraciones de datos ymtodos.

    Mtodos

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

    Sys t em out . pr i nt l n( "Bi enveni do a Car chel ej o" ) ;

    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 programadorque define dnde comienza el flujo del programa. El mtodo m a i n tendr siempreuna sintaxis similar a sta:

  • 7/13/2019 Java 2 Manual de Programacion

    41/482

    Introduccin a Java 21

    public static voidma;?

    ( S t r - n q ; :

    a r a s )

    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 paravisualizar applets (applet Viewer),un depurador elemental jdb) y una herramientade documentacin javadoc). Estas herramientas se utilizan para crear, depurar,

    documentar y usar programas Java. Dependiendo de su entorno y suplataforma, losdetalles 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 sitiosde Internet declarados en el apartado ((Especificaciones del lenguaje Java)). Estasherramientas proporcionan un entorno integrado de desarrollo, EID (IDE,

    Integrated Development Environment) y sirven para proporcionar un desarrollorpido 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 deDesarrollo de Java (JDK) es una donacin de Sun Mycrosystem a la que podemosacceder 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 usopor 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 Windows95/98/NT,

    resulta cmodo y eficaz abrirvarias 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 ypoder invocar desde all al compilador y a las dems herramientas del JDK.En una tercera puede tener abierto un archivo con documentacin sobre el APIde Java.

  • 7/13/2019 Java 2 Manual de Programacion

    42/482

    22

    Java 2. Manualde programacin

    Puede usar una cuarta ventana para abrir un navegador con soporte Java, porejemplo 2ilicrosoft

    Explorer

    en versin 4.0 o superior, o el appletviewer para laverificacin del correcto funcionamiento de los applets.

    1.lo. UNA APLICACIN PRCTICA DE JAVA

    Inicialmente se expondr la creacin de programas convencionales, y para ver suestructura bsica as como las fases a las que antes aludamos, necesarias para suejecucin, 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 denominadaT2ri7aOl.

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

    ' L .. I d i ~ . d c w s > c 0 C: \ ; i br o\ t emaOl

    i : \ l i br o\ Tema31> e d i t

    Una vez dentro deEdit

    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 nombreE] empl ol .j ava y salgadel editor.

    ipor

    t j atJ3.i3 . < ;' L u i s

    Joyaner

    &giJi 1ar

    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 [ ] a rg ] {)

    a programar en JA V A " ) ;

    Figura 1.5.

    El archivo creado es el archivofuente, al que en Java tambin se le llama unidad

    de cornpiltrcicn. Dicho archivo debe ser almacenado con el nombreE] empl ol , yaque 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 delejemplo no sera necesario considerar esta situacin, ya que slo hay una clase. Elarchivo fuente debe escribirse dividido en secciones bien definidas, separadas por

  • 7/13/2019 Java 2 Manual de Programacion

    43/482

    Introduccin a Java 23

    lneas en blanco y precedidas por un comentario identificativo de las misinas. Esimportante 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 compilarun programa con el JDK hay que invocar a j a v a c 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 seindica 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 paracompilar, ejecutar depurar y documentar las aplicaciones

    (javac,

    java,,jdhy,jaw-

    doc respectivamente). Esta modificacin deben introducirse en el archivo

    C:

    \au t oexec.a

    t,para que los nuevos valores se establezcan cada vez que searranque la computadora.

    S E T P ATH=%P ATHL&; C: \ j dk l . 3. 1\ bi n

    obien

    SET PATH=OEATHcc ; C: \ ~dk l . 4 \ b i n 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 carpetaactual y el directorio raz. Suponiendo establecidos los anteriores valores para com-pilar E j emplo l .j ava bastara la siguiente orden:

    C: \ l i br o \ TemaOl > j avac Ej er npl ol . j ava

    Por ltimo, ser necesario llamar al intrprete de Java para que el programa conextensin c l a s s surgido en la operacin de compilacin y que contiene el cdigobyte 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 elnombre del programa a ejecutar, sin especificar la extensin del mismo y teniendoen cuenta que, si la clase pertenece a un paquete, el nombre de la misma debe irpre-cedido por el del paquete de la forma siguiente:

    C: \ l i br o \ TemaOl > j ava l i br =. TemaOl . i j emF l ol

    obien.

    C: \ W NDOWS> j ava l i br o . TemaOl . Ej empl o1

  • 7/13/2019 Java 2 Manual de Programacion

    44/482

    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

    :\ l i br o \ T ema O1. Es decir, sepasa como parinetro a j a v a el nombre de la clase especificando el paquete al quepertenece, sin incluir la extensin y distinguiendo entre maysculas y minscu-las. La salida obtenida con la ejecucin del programa es la impresin en pantallade la lnea

    C c r n i e n z o

    a pr ogr amar en J AVA

    Una breve explicacin del cdigo fuente escrito es la siguiente:

    La primera instruccin sirve para indicar el paquete al que pertenecer la claseque est siendo definida. Los paquetes son un mecanismo para organizar lasclases. y cuando se declara que una clase pertenece a un paquete, dicha clasedeber ser almacenada en un subdirectorio o carpeta cuyo nombre coincida conlo especificado como nombre del paquete. En nuestro caso, como el paquete sedenomina 1 b r o .TemaO1, la clase E j emp1o1 deber ser almacenada en lacarpeta 1 br o\ TemaO1.La sentencia i mpor t va seguida por el nombre de un paquete y se utiliza parapoder 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 cl as s permite especificar que se va a definir unaclase, una palabra clave o reservada es una palabra especial con un signifi-cado preestablecido en el lenguaje Java. Para delimitar la clase, se empleanllaves,

    {

    } .

    Para ejecutar el programa, el intrprete de Java comienza llamando al mto-

    do mai n ( ) ; como este mtodo se llama antes de la creacin de un objeto,ha de declararse como st at i c y as se le podr llamar sin tener que refe-rirse a una instancia particular de la clase; como adems se llama por cdigofuera de su clase tambin tiene que ser declarado como publ i c, que es laforma de permitir que un miembro de una clase pueda ser utilizado por cdi-go que est fuera de la misma. La palabra reservada voi d indica que mai nno devuelve nada. St r i ng [ ] args es la declaracin de un array de cade-nas, mediante el que la clase podra tomar un nmero variable de parmetrosen la lnea de comandos, aunque no se use es necesario incluir este parme-tro cuando se define el mtodo mai n ( ) . Se emplean llaves, { } ,para delimi-t a r c I nietodo.

    * I . >I \

    ;I.

    la pantalla de la coinputadora es un objeto predefinido cuya referen-1 . t.

    La clase Syst empertenece al paquete j ava. l ang que%, : , .

  • 7/13/2019 Java 2 Manual de Programacion

    45/482

    - -se importa automticamente y, por tanto, no necesita cualificacin. El mtodo

    p r i n tn

    ( ) toma la cadena que se le pasa como argumento y la escribe en lasalida 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 my S y s t e m son identificadores diferentes.

    .Cir,5*

    I .I I . ESTRUCTURA DE UN PROGRAMA A P L I C A C I ~ NEN 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 ( i mp o r 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 podrcontener:

    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, alas variables de instancia se las denomina as porque cada objeto contendr unacopia 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 modificacinde los valores de las variables de instancia. En consecuencia, un programa muy sen-cillo que se puede crear en Java es:

    public class Eernplo2

    public static void mai n ( Sz r i ng[ l ar gs )

  • 7/13/2019 Java 2 Manual de Programacion

    46/482

    26

    Java 2. Manual de programacin

    formado exclusivamente por una declaracin de clase pblica

    Compilacin; j avac Ej empl o2. j avaEjecucin: j ava Ej empl o2

    Las clases de un programa contienen mtodos, interactan entre s y no necesi-tan contener un mtodo mai n

    (

    ) ,pero ste s ser necesario en la clase que consti-tuya el punto de partida del programa. Tenga tambin en cuenta que las applets noutilizan el mtodo mai n ( ) .

    La declaracin de mtodos en una clase se puede efectuar en cualquier orden ycada 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 voi d cuando el mtodo no devuelva resultados. En la implementacin delmtodo, cuando ste no haya sido declarado voi d, se utilizar la instruccinreturn 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 precedidopor su tipo y separados por comas. Cuando se llama a un mtodo los parmetrosactuales se asignan a losparmetros formales correspondientes. Entre losparme-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 lossiguientes:

    Ejemplo

    tipol

    nombre-funcion (lista de parmetros)

    / / decl ar aci n de var i abl es

    / / sent enci as ej ecut abl es/ / sent enci a r et ur n con el val or a devol ver

    I

    Ejemplo

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

    i

    / /

    decl ar aci n de var i abl es

    / / sent enci as ej ecut abl ec

    I

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

  • 7/13/2019 Java 2 Manual de Programacion

    47/482

    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 unmtodo se crean cuando se ejecuta el cuerpo del mtodo y desaparecen despus. Lasvariables que se declaran fuera del cuerpo de un mtodo son globales a la clase. Lasque se declaran como f i n a l y st at i c son, en realidad, constantes.

    1.1 1I Referencia a miembros de una clase

    En losprogramas 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 fuerondefinidos, para lo que generalmente ser necesario declarar un objeto de la claseadecuada y a continuacin escribir nombr eObj e t o .nombr eComponent e. Noobstante, hay ocasiones en las que se utilizan mtodos y variables de instancia sinnecesidad de efectuar la declaracin de ningn tipo de objeto, especificando para su

    llamadanombr ecl as e. nombr eComponent e.

    Para que esto pueda ocurrir y aun miembro de una clase sea posible llamarlo con el nombre de la clase en la queha sido declarado, sin tener que referirse a una instancia particular de la misma,dicho miembro debe haber sido declarado st at i c (esttico).

    1I

    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 erroresa 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 ejecuciny errores lgicos.

    1I

    2.1. Errores de compi lacin (sintaxis)Los errores de sintaxis ocurren cuando el cdigo viola una o ms reglas gra-maticales de Java. Los errores de sintax is se detectan y visualizan por el c o m -pilador cuando se intenta traducir el programa, por esta razn se denominan

  • 7/13/2019 Java 2 Manual de Programacion

    48/482

    28

    Java 2. Manual de programacin

    tambin errores de compilacin. Los errores de compilacin provienen de er ro-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 fcilesde detectar ya que el compilador suele indicar dnde se producen las posiblescausas.

    Ejemplo

    La compilacin del siguiente programa produce errores de sintaxis:

    / / e s te prograrra cont i ene er r or es de s i nt axi spublic class Demo

    public static void mai n ( St r i ng[ ] args)

    z=50;

    Cys t en. out . pr i nt l n( z +l O) ;

    La ejecucin de este programa produce un error detectado por el compilador delentorno 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 endos sentencias.

  • 7/13/2019 Java 2 Manual de Programacion

    49/482

    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 quese detectan y visualizan durante la ejecucin del programa. Un error de ejecucinse produce cuando el usuario instruye a la computadora para que ejecute una ope -racin no vlida, tal como dividir un nmero por cero o manipular datos indefini-dos o no vlidos en la entrada.

    Un error de entrcrdu ocurre cuando el usuario introduce un valor de entradaimprevisto que el programa no puede manejar. Por ejemplo, si el programa esperaleer un nmero, pero el usuario introduce una cadena de caracteres. En Java, loserrores de entrada hay que declararlos en una clusula t hr ows o bien capturarlosy tratarlos directamente dentro del mtodo en el que se pueden producir (vase elCaptulo 13, ((Manejo de excepciones))).

    Ejemplo

    public classErro rDeE~ecuc ion

    i

    private static int z ;

    static void p r u e b a 0 ,

    i

    1

    public static voidr n a i n ( C t r i n g [ ]

    args)

    i

    z =l O/ z ;

    prueba ( ) ;

    Figura 1.7. Error de ejecucin.

  • 7/13/2019 Java 2 Manual de Programacion

    50/482

    30

    Java 2. Manual de programacin

    AI invocar al mtodo pr ueba ( ) , se produce un error en tiempo de ejecucin:

    j av a. 1ang. Ar i t hmet i c Ex cept i on: / by zero

    que indica un intento de dividir por cero (valor dez),

    operacin no vlida.

    r I

    Nota:Errorde ejecucin: Se intent ejecutar una operacin no vlida que fuedetectada durante la ejecucin del programa.

    1.12.3. Errores lgicos

    Los errores lgicos ocurren cuando un programa realiza un algoritmo incorrectoy no ejecuta la operacin que estaba prevista. Existen muchos tipos de razones

    para que se produzcan errores lgicos. Normalmente los errores lgicos son dif-ciles de detectar, ya que no producen errores en tiempo de ejecucin y no visua-

    lizan mensajes de error. El nico sntoma de que se ha producido un error lgicopuede ser la salida incorrecta del programa. Se pueden detectar er rores lgicoscomprobando el programa en su totalidad y comparando su salida con los resul-tados calculados. La prevencin de errores lgicos se puede realizar verificandoel algoritmo y el programa correspondiente antes de comenzar el proceso de eje-cucin.

    Nota:Error lgico: Es un error producido por un algoritmo incorrecto.

    Por ejemplo, la instruccin

    Sys t em out . pr i nt l n( " Si e de Cazor l a" ) ;

    no muestra la frase que se deseaba, pues no se ha escrito bien:

    Sys t em out . pr i nt l n ( "Si er r a de Cazor l a" ) ;

    pero el compilador no puede encontrar el error ya que la primera sentencia es sin-tcticamente correcta.

  • 7/13/2019 Java 2 Manual de Programacion

    51/482

    CAP I TU

    Caractersticas dellenguaje Java

    CONTENIDO2.1. Palabras reservadas.2.2. Identificadores.2.3. Tipos de datos.2.4. Tipos simples (primitivos).2.5. Variables.2.6. Constantes.2.7. La biblioteca de clases de Java.2.8. Conceptos bsicos sobre excepciones.2.9. La clase Number y sus subclases.2.10. Las Clases Char act er y Bool ean.2.1 Entrada y salida bsicas.

    2.12. Operadores.2.13. La sentencia de asignacin.2.1 4. Expresiones.2.15. Class Mat h.2.16. Paquete j ava. mat h.2.1 7. Conversiones de tipos. Operadores molde.2.18. Operadores aritmticos.2.1 9. Operadores relacio