You are on page 1of 52

El lenguaje de programacin Java 3 - 1

CAPITULO

El lenguaje de programacin Java


Objetivos

Conocer acerca de los antecedentes del lenguaje, importancia y su diferencia con otros lenguajes. Identificar las principales caractersticas del Java. Ilustrar el ambiente de desarrollo de Java. Reconocer e instalar el JDK. Establecer la diferencia entre Aplicaciones y Applets.

su

Presentar los detalles del proceso de construccin de aplicaciones y de un Applets a fin de conocer su funcionamiento y estructura bsica. Ejecucin de ejemplos de aplicaciones y applets.

Introduccin
El lenguaje de programacin, se usa para darle rdenes a un computador para que al ser ejecutadas por l, logren la solucin de un problema. Con el lenguaje Java aprender rpidamente a resolver problemas fascinantes en el computador, no solo la realizacin de operaciones aritmticas, sino tambin desarrollar ciclos o repeticiones y tomar decisiones lgicas o selecciones. As mismo podr manejar grficos y desarrollar interfaces grficas para hacer interactivos y ms llamativos sus programas. En la unidad conocer acerca de los orgenes del Java, as como de sus

El lenguaje de programacin Java: Introduccin 3 - 2 similitudes o diferencias con otros lenguajes tradicionalmente utilizados en cursos introductorios a la programacin. Tambin se ver la importancia que tiene el lenguaje Java como herramienta de programacin moderna al facilitar el uso de la programacin orientada a objetos. As mismo se dar cuenta de cmo ha sido el impactante crecimiento de la difusin y utilizacin de este lenguaje. Con las instrucciones de instalacin dadas y utilizando el CD que acompaa el curso, podr iniciar desde esta unidad el desarrollo de programas en Java, tanto applets o sea programas que se ejecutan a travs de un navegador, y de aplicaciones, o sea programas cuyos resultados se presentan en la pantalla de comandos. Al final de la unidad se presentan algunos ejemplos de aplicaciones y applets, que como patrones pueden ser tiles para iniciarse en el desarrollo de otras soluciones a problemas. Su estudio detallado brindar un panorama de lo sorprendente que es la programacin moderna con Java.

Orgenes de Java
La consolidacin de la World Wide Web, ha generado cambios en las formas de concebir programas y aplicaciones, creando presiones sobre los lenguajes convencionales. Tal es el caso de la presin ejercida sobre C y su sucesor C++. Desde principios de la dcada pasada, se encontr un lenguaje que mezclando la alta eficiencia de C y el paradigma de objetos, permita el desarrollo de aplicaciones robustas. El lenguaje Java surge as como el producto de las experiencias de su antecesor pero no precisamente para su desarrollo dentro del ambiente de Internet, su principal motivacin cuando fue creado, se centr en la necesidad de un lenguaje de programacin que fuera independiente de la plataforma del hardware y que permitiera el desarrollo de software para interactuar con diversos dispositivos electrnicos de manera inteligente, especialmente domsticos, como hornos microondas, televisores, tostadoras, podadoras, lavadoras etc. Ese lenguaje por tanto debera ser independiente del hardware, portable y obviamente ejecutable en la CPU de diferentes entornos. En Sun Microsystems Inc. en 1991 se concibe por parte de James Gosling un lenguaje denominado inicialmente Oak, en homenaje al rbol que se vea a travs de la ventana de su oficina, como parte del proyecto Green que junto con el equipo conformado por Patrick Naughton, Cris Warth, Ed Frank y Mike Sheridan, estaban construyendo, a fin de dar respuesta con un lenguaje de programacin para dispositivos electrnicos de consumo. El nombre de Java dado a una primera versin, fue anunciado en pblico en 1995. El nuevo lenguaje fu concebido con su impronta como lenguaje orientado a la programacin de objetos, cercano al C++ e independiente del procesador y

El lenguaje de programacin Java: Orgenes de Java 3 - 3 seguro en su desempeo en la red. Posteriormente se centra su atencin en las posibilidades de Java como ncleo para la computacin en redes de comunicaciones. Se conforma entonces por parte de Sun el grupo JavaSoft inicialmente con esos miembros. En el transcurso de tres aos haba crecido a mas de seiscientos empleados desarrollando tecnologas relacionadas con Java. Aquellos que programan en C o C++, encuentran elementos comunes en Java, lo cual llevara a suponer que este nuevo lenguaje es el resultado de una evolucin de aquellos. Sin embargo Java surge para desarrollar otros problemas y muy especialmente los referidos a la red Internet. En este sentido debe entenderse que ante la difusin, globalizacin y diversificacin de Internet, se requera de cdigo portable y confiable, caractersticas que posee Java. Se consolida as como un lenguaje natural para el desarrollo de software para la Web. El cambio del requerimiento inicialmente pensado para Java, basado en su utilizacin en artculos de consumo, se centra entonces en las necesidades de programas independientes de plataforma y que permitan ser distribuidos por Internet. Java trae consigo un nuevo estilo de elaboracin de programas, ya que se fundamenta en forma natural en el paradigma de objetos, lo cual lo convierte indudablemente en un lenguaje de programacin moderno.

Importancia del lenguaje Java


Es muy posible que la mayora de los actuales programadores y docentes de programacin se hayan iniciado en lenguajes como Pascal, creado desde 1970 o lenguaje C, ambos del tipo procedimental, con los cuales se aprendieron los fundamentos de la programacin estructurada desarrollada a principios de la dcada de los 70. Nos encontramos a finales de la dcada del 90, presenciando la consolidacin del paradigma de objetos, como imperante, frente al paradigma de la estructuracin. El lenguaje C evolucionado a lenguaje C++, pretendi dar respuesta a l esa transicin y a las necesidades de desarrollo de aplicaciones orientadas a objetos. El enfoque de los procesos o procedimental basado en la estructuracin, sigue vigente ante la necesidad de organizar la lgica de los mtodos alrededor de la programacin estructurada, pero como parte del nuevo enfoque de la Programacin Orientada a Objetos. Cada vez son mas las aplicaciones que se desarrollan en la orientacin a objetos. Ademas una nueva herramienta de modelaje UML (Unified Modeling Languaje) se ha desarrollado para facilitar y estandarizar las metodologas de desarrollo de aplicaciones basadas en objetos. Por obvias razones se presenta una masiva migracin de aplicaciones desarrolladas en Pascal y C a C++ y Java, o sea de estructurado a objetos. En tanto C++ representa una evolucin del lenguaje C a objetos, Java est

El lenguaje de programacin Java: Importancia del lenguaje Java 3 - 4 plenamente orientado a Objetos, ya que fue diseado con ese propsito. Pascal por su parte fue diseado para el enfoque procedimental o estructurado, lo cual dificulta sino imposibilita la programacin moderna basada en objetos. En lugar de aprender un lenguaje de programacin que se detuvo en la programacin estructurada como Pascal, o que facilit la transicin a objetos a partir de la evolucin de C como es el caso de C++, Java est diseado para el nuevo paradigma de objetos. Java es un autntico lenguaje de programacin orientado a objetos (OOP), ya que bsicamente todo en l es tratado como objetos, inclusive los denominados datos primitivos como integer, pueden ser vistos como objetos, ademas brinda capacidad para aplicaciones cliente-servidor. La programacin orientada a objetos permite que nuevos objetos hereden caractersticas de objetos padres, de tal manera que puedan actuar donde los padres puedan hacerlo y cualquier comunicacin con el hijo no diferencia si es el padre o el hijo; en programacin orientada a objetos, cada hijo conoce todo lo que hace su padre. Por ejemplo en Java se tiene la clase Rectangle, a partir de esta se puede crear una nueva clase EstiraRectangulo, que tendr todas las propiedades de su padre, pero se le pueden agregar especializaciones, por ejemplo su capacidad para ser estirado en cualquiera de sus esquinas. Los objetos en Java como en el mundo real, agrupan operaciones y datos sobre los cuales acta el cdigo. La orientacin de Java a objetos, hace que al igual que en el mundo real los distintos objetos realizan su trabajo simultneamente en colaboraciones y mensajes de unos con otros, en el mundo del computador se puedan ejecutar simultneamente un conjunto de tareas. Java admite la concurrencia. Java permite la utilizacin de cdigo nativo escrito en C y C++, lo que significa que puede integrar en el cuerpo de un programa Java cdigo escrito en esos dos lenguajes. Una vez se tiene la oportunidad de programar en C++ o Java, se entiende que son mucho mas potentes que Pascal o el C. El auge de Java es creciente, un indicador lo constituye la cantidad de libros sobre Java escritos en tan poco tiempo, a la fecha, 1948 segn estadstica en www.JavaWorld.com. Mas de 6 millones de pginas con el enlace del lenguaje Java, en tanto el lenguaje Pascal solo tiene 450 mil pginas y el lenguaje C 608 mil pginas y C++ 68 millones segn www.Altavista.com . Por un lado es cierto que C++ goza de un merecido prestigio y posicionamiento actual, no solo porque fue el lenguaje que impuls la programacin orientada a

El lenguaje de programacin Java: Importancia del lenguaje Java 3 - 5 objetos sino que se ha utilizado para aplicaciones de trabajo pesado y preferido en la industria. Tambin es cierto que Pascal ha sido el lenguaje ideal para el aprendizaje de la programacin estructurada, el aprendizaje de los algoritmos por su casi que literal conversin del seudocdigo a este lenguaje. Java en tanto se perfila cada vez ms como el lenguaje no solo para darle vida a las pginas en Internet, sino que satisface la mayora de las necesidades de la programacin moderna y permite dar resultados novedosos, mas temprano en su proceso de aprendizaje, sobre todo en personas que no son programadores. Para el estudiante no programador es ms importante iniciarse de una vez en la tecnologa de la programacin orientada a objetos, y as evitar la desprogramacin de sus costumbres en un futuro si se inicia solamente con la programacin estructurada. Un primer aprendizaje en la programacin estructurada dificulta en algo el posterior aprendizaje de la programacin orientada a objetos. El aprendizaje de la programacin orientada a objetos iniciada como primer paradigma para no programadores, es ms fcil, en tanto la programacin estructurada se podr ensear posteriormente cuando se trate del desarrollo de los mtodos de los objetos, ya que los mtodos forman parte de los objetos y estos se organizan internamente con el enfoque estructurado. A pesar de las facilidades que brindan C y Pascal, como lenguajes tradicionales introductorios a la programacin, las aplicaciones en la actualidad son cada vez mas exigentes en cuanto a la visualizacin de informacin, color, sonido, animacin, imgenes, vdeo y en general en necesidades multimediadas y de Interfaces Grficas de Usuario (GUI por su sigla en ingls). Las aplicaciones en la actualidad requieren tambin desempearse con seguridad en redes de comunicaciones integradas dentro del ambiente de la Web en general y brindar mejores rendimientos basados en la programacin multihilo. Java provee las facilidades mencionadas. Una caracterstica de la programacin orientada a objetos es la reutilizacin de cdigo, la cual permite no solo desarrollar aplicaciones ms rpido sino con menores errores ya que se utiliza cdigo, en la forma de extensas libreras de clases por ejemplo, que ya se han probado y se encuentran disponibles al dominio pblico. Otra caracterstica propia del lenguaje Java es la portabilidad o de plataformas cruzadas, lo cual es una facilidad de que su programa escrito en Java se pueda ejecutar prcticamente en cualquier plataforma, as como tambin poder ser distribuido a travs de la Web. Quiz una de las ventajas competitivas que brinda Java y que ha contribuido a su difusin y su aceptacin en la comunidad acadmica es que es gratis, disponible

El lenguaje de programacin Java: Importancia del lenguaje Java 3 - 6 en forma libre en la Web, as como su documentacin, y permanente actualizacin, lo cual representa un alivio presupuestal para las universidades, ante los cada vez elevados costos de las licencias de software y lo que representa el nmero de estas para satisfacer las demandas de una numerosa poblacin estudiantil. Obviamente no puede desconocerse que los nuevos desarrollos de software, an sean gratis como el caso de Java, el sistema operativo Linux y el paquete integrado StarOffice, por mencionar los tres ms representativos, crean exigencias y presiones de renovacin y actualizacin de hardware cada vez ms potente.

El ambiente de la Web
Java permite abrir una conexin a una pagina Web, u otra aplicacin Internet, leer y escribir datos, lo cual se logra gracias a las facilidades que brindan sus bibliotecas de clases las cuales incluyen comunicaciones de red, lo que lo convierte en un lenguaje tambin orientado a aplicaciones cliente-servidor. Al ser su ambiente natural el de Internet por un lado, y por el otro, la diversidad de aplicaciones y servicios que se pueden prestar, especialmente de caracter de transacciones comerciales bajo la modalidad de comercio electrnico, se requiere que brinde un fuerte modelo de seguridad, ya que por ejemplo los virus pueden atacar tanto a programas como a contenidos y dispositivos fsicos o los delitos informticos vulneraran los sistemas en general. Cuando se utiliza un navegador compatible con Java, se pueden ejecutar Applets sin temor a modificaciones, infecciones por virus o accesos indebidos. La ejecucin de este tipo de programas est limitada a un entorno especfico de Java, sin tener acceso a otras partes del computador donde se ejecuten. Esta caracterstica es quizs la ms importante y que hace de Java un lenguaje natural para desempearse en aplicaciones en la web. La seguridad y la portabilidad son dos aspectos importantes en el manejo de aplicaciones en Internet y Java lo facilita mediante los denominados Applets, o sea aplicaciones diseadas para ser transmitidas por Internet y ejecutadas por un navegador como Netscape 4.7 o Internet Explorer 4, compatible con Java, en el computador de un cliente o usuario. Una ventaja muy importante del comportamiento de los Applets, es la capacidad que tienen de cambiar dinmicamente ante las intervenciones de sus usuarios, haciendo que las pginas Internet cobren vida. Los Applets son programas auto ejecutables, agentes activos en relacin con la interaccin con usuarios. Prcticamente cualquier pagina de la Web est construida sobre la base de Applets, basta con dar un vistazo con cualquiera de los navegadores indicados antes u otros disponibles. El lenguaje Java se utiliz en primera instancia en las paginas Web, en la forma de Applets, pequeos trozos de cdigo en Java que puede ser descargado al

El lenguaje de programacin Java: El ambiente de la Web 3 - 7 computador o browser del usuario y ejecutada en el rectngulo de una ventana de la pgina respectiva. Las primeras Applets fueron desarrollados para ilustrar mediante efectos de animacin y posteriormente para el manejo de formas ms sofisticadas de computacin. De esta manera a Java se lo puede entender como un lenguaje para escribir datos ejecutables en la Web.

$PELHQWH UHPRWR GH GHVDUUROOR &RGLJR IXHQWH -DYD /LEUHULDVGH -DYD

6HUYLGRU :(% 3DJLQD +70/ &yGLJR %\WH GH -DYD :RUOG :LGH :HE

0DTXLQD YLUWXDO -DYD /ODPDGDV DO 62 QDWLYR 62 QDWLYR &OLHQWH -DYD


Figura 1 Flujo de un programa ejecutado em forma remota

$FFHVLELOLGDG GH -DYD 8WLOLGDGHV GH DFFHVR 3DQWDOODV GH DFFHVR

En la figura anterior vemos el flujo de un programa Java remoto, aplicacin o applet, corriendo en un computador local desde el ambiente del desarrollador hasta el del usuario. El ambiente de desarrollo se utiliza para construir el cdigo de bytes de la aplicacin o applet de Java, a partir de su cdigo fuente y el de las libreras. El cdigo de bytes es almacenado en un servidor Web, de donde es descargado en una red a la mquina del usuario, para ser ejecutado localmente en lo que se denomina una Mquina Virtual de Java. Aunque mediante Java se pueden realizar aplicaciones locales, o autosuficientes, con acceso a los recursos del equipo del cliente, su popularidad en la red para 1993, hizo que Sun colocara a Java para ejecutarse dentro de navegadores (browsers) Web. En 1994 se crea un navegador que pudiera ejecutar applets de Java. De esta manera el navegador demostr dos aspectos de Java, por un lado

El lenguaje de programacin Java: El ambiente de la Web 3 - 8 lo que poda ofrecer a Internet y por el otro el tipo de programas que se podan crear. Ese primer navegador escrito en Java creado por Patrick Naughton y Johnathan Payne se denomin inicialmente WebRunner y posteriormente se denomin HotJava. A pesar de que tanto Java como el navegador HotJava tuvieron una buena acogida dentro de la comunidad de Internet, solo cuando Netscape lo licencia para ser utilizado dentro de su navegador en agosto de 1995, es cuando Java se proyecta con todo su potencial como en lenguaje para la Web. Posteriormente Sun centra sus esfuerzos de desarrollo de Java mediante la creacin de una subsidiaria con el nombre de JavaSoft, que con cientos de empleados est encargado de continuar el desarrollo y expansin de Java. La siguiente figura ilustra como una pgina Web en una direccin especifica URL, ejecuta tres applets mediante la invocacin de su cdigo en bytes.

$SSOHW $

  

85/
$SSOHW % $SSOHW &
Figura 2 Estructura de una pgina Web con applets

Para que los applets puedan operar es necesario colocarlos en la Web a travs de una pgina HTML, la cual debe contener una etiqueta del tipo < APPLET>. Ya que Java se ejecuta en cualquier plataforma, el applet desarrollado solo podr aparecer e interactuar en la ventana en la pantalla del computador del usuario o cliente, cuando se est utilizando un navegador con capacidad de soporte de aplicaciones Java. En el siguiente ejemplo se ilustra como se incluye el applet PrimerApplet, dentro del cuerpo de un cdigo HTML, mediante la utilizacin de la etiqueta <APPLET>, dentro de la cual se llama al archivo PrimerApplet.class en cdigo de bytes, para que se ejecute dentro de una ventana de tamao 200 pixeles de ancho por 200 pixeles de altura:
<HTML> <BODY>

&yGLJR GH %\WHV

El lenguaje de programacin Java: El ambiente de la Web 3 - 9


<APPLET CODE= PrimerApplet.class WIDTH= 200 HEIGHT=200> <APPLET> </BODY> </HTML>

De esta manera, realmente simple, se incluye un applet de Java dentro de una pgina Web, haciendo de este lenguaje un genuino lenguaje de programacin en la red, ampliando el universo de herramientas, objetos y software reutilizable, para el desarrollo de cada vez ms excitantes aplicaciones. Se considera por uno de sus autores, Patrick Naughton, como uno de los ms significativos avances en el medio ambiente del desarrollo de software en los ltimos 20 aos. Ante el crecimiento de Internet y sus mltiples y variadas aplicaciones, el paso de informacin esttica a dinmica mediante el HTML, le brind a Java la posibilidad de explosionar con contenidos interactivos de informacin por toda la Web.

Principales caractersticas
Lo millones de applets que circulan por la Web y le dan vida a tantas pginas, han sido escritos en Java por programadores en este lenguaje, pero usados generalmente por no-programadores para animar sus pginas. Sabemos que para disear pginas en la Web no se requiere ser programador. Cada comportamiento de un applet se ha codificado en Java en una forma lgica, organizada en la estructura de un tipo de programa denominado Clase, la cual es usada para definir el objeto que define el comportamiento del applet. Cada imagen de una animacin es un objeto y la coleccin de stas define otro objeto, y estos en agregacin definen otros objetos, formando estructuras jerrquicas de clases. Estos aspectos se tratarn en detalle en una unidad posterior, cuando se hayan definido formalmente los conceptos y elementos de los objetos y las clases, y sus jerarquas de herencias, por ejemplo. Aunque se han mencionado aspectos muy relevantes acerca del Java, su importancia y su evolucin, es importante sealar ahora las principales caractersticas establecidas por el equipo que desarroll este lenguaje:

Simple y potente
Si los conceptos asociados con la programacin orientada a objetos (OOP) han sido comprendidos, el aprendizaje de la programacin en Java se facilita, sin querer esto decir que no se puedan resolver problemas que no necesariamente estn orientados a objetos. Est diseado para que programadores lo aprendan fcilmente, especialmente si tienen experiencia en C++, ya que hereda de este caractersticas orientadas a objetos, presentndolas de una manera ms clara y

El lenguaje de programacin Java: Principales caractersticas 3 - 10 agradable. Si bien es cierto que ofrece toda una gama de herramientas y posibilidades para el programador experto, tambin permite abordar tareas especificas con un numero reducido de formas o patrones claros para los noprogramadores que se inician en la programacin con este lenguaje. Se ver ms adelante en esta Unidad, como a partir de unos patrones relativamente simples se puede incursionar en el desarrollo de los primeros programas en Java: aplicaciones y Applets.

Confiable y Seguro
Muchos de los problemas de seguridad en los sistemas computacionales se deben a que la mayora de ellos no fueron diseados para su trabajo en la red. El comercio electrnico por ejemplo, requiere de seguridades para sus transacciones, los sistemas de proteccin contra los caballos de Troya o gusanos y los diferentes virus, as como de los ataques de los maleantes informticos. Java responde muy apropiadamente, puesto que sus principios fundamentales de diseo son la seguridad y proteccin dentro del trabajo en la red. Otras formas diferentes a los virus o a los ataques, lo constituyen los programas diseados para recoger informacin privada de los usuarios de la red, como nmero de tarjetas de crdito, cuentas bancarias, palabras de acceso, o algo no menos grave, para analizar el contenido de los sistemas de archivo de su computadora local. Para estas dos situaciones Java responde creando lo que se denomina un cortafuegos (o firewall) entre la aplicacin en red y la computadora local.

Orientado a Objetos
El equipo diseador de Java tuvo la oportunidad de partir desde cero en la construccin del nuevo lenguaje al no hacer su cdigo fuente compatible con otro lenguaje, ni derivado directamente de alguno. Aunque con obvias influencias de sus predecesores, C y C++ el resultado fue una aproximacin limpia y pragmtica a los objetos. El modelo de objetos en Java es simple y fcil de extender, con un mecanismo de clases y modelos intuitivos de interfaces dinmicas cuando se requiera. Si se entiende el estilo de la programacin orientada a objetos, se ha superado el mayor obstculo para aprender a programar con Java y todas sus facilidades.

Robusto
Java permite virtualmente eliminar los problemas de asignacin de memoria y manejo de condiciones de excepcin (errores en tiempo de ejecucin) como divisin por cero, no encontrar un archivo por ejemplo, mediante sistemas de administracin, recoleccin de basura (garbage collection) y manejo integrado de excepciones orientadas a objetos. Esto hace que el programador sea mas productivo, liberndolo de causas de error en la programacin, ya que al ser un

El lenguaje de programacin Java: Principales caractersticas 3 - 11 lenguaje fuertemente tipado (typed) permite comprobar el cdigo fuente en la compilacin y en la ejecucin. En un programa Java escrito correctamente todos los errores de ejecucin deben ser controlados y administrados por el mismo programa. Tener la seguridad que una aplicacin se comportar de igual manera en diversas situaciones y condiciones, es una de las caractersticas mas importantes de Java. El entorno multitarea de la red exige bastante de un programa, ya que debe exhibir el mismo comportamiento en diferentes y variados sistemas. Esto hace de Java un lenguaje para crear programas robustos. Para brindar confianza y fiabilidad el lenguaje le restringe a unas cuantas reas para obligarle a encontrar lo ms pronto posible los errores que se producen al desarrollar su aplicacin.

Interactivo
La interactividad es un indicador del desarrollo moderno de aplicaciones. Los diseadores establecieron en Java un lenguaje que permite la creacin de programas interactivos en red, como funcionan los objetos en el mundo real, interactuando mediante mensajes, y realizando el comportamiento solicitado. El problema de hacer ms de una cosa a la vez, es hacer que todas las partes dependan unas de otras en forma sincronizada, {para ello} Java proporciona la programacin multihilo, la cual permite escribir programas que hacen varias cosas a la vez. El lenguaje Java permite sincronizar mltiples procesos con lo cual hace posible construir sistemas interactivos mediante la programacin multihilo. La utilizacin sencilla de mltiples hilos (threads) le permite al programador centrarse en el comportamiento especifico del programa a desarrollar en lugar de pensar en un subsistema para el manejo global de la multitarea

Arquitectura neutral
Con la evolucin permanente de las tecnologas informticas, no hay garanta que un programa hecho hoy pueda correr maana, incluso en la misma mquina. Los problemas de longevidad y portabilidad que obligaban las actualizaciones de los sistemas operativos, de sus procesadores y de recursos bsicos, es resuelto por Java. Los diseadores de Java decidieron cambiar esta situacin logrando su principal objetivo de escribir una vez y ejecutar donde quiera, cuando quiera y para siempre. El programador se debe preocupar de escribir un buen programa y Java se encarga de que trabaje en cualquier plataforma.

Tendencia y perspectiva del Java


El uso de Java como lenguaje para escribir applets para la pginas Web se ha consolidado y la tendencia es a continuar su expansin. Actualmente se utiliza

El lenguaje de programacin Java: Tendencia y perspectiva del Java 3 12 como lenguaje para sistemas distribuidos. Los applets se comunican con aplicaciones en servidores remotos para usos cada vez ms complejos, difcilmente realizados por otra herramienta, ms an si es para trabajar en plataformas cruzadas. Recientemente Sun ha liberado la red JavaStation, cuyo sistema operacional est escrito totalmente en Java. La tendencia para Java es que cada vez ms aplicaciones y usos se desarrollarn en mas plataformas, as como diferentes implementaciones de la Mquina Virtual de Java. As mismo se ha anunciado por parte de Sun el JavaChip, un procesador RISC que ejecuta directamente cdigo byte (bytecode) de Java. La utilizacin en trabajos de oficina, donde no se requieren computadores poderosos, lleva a que se incremente el desarrollo de herramientas basadas en Java en todo tipo de organizaciones. La idea original de Java, de trabajo en equipos electrnicos de consumo, es posible que prximamente se realice y con su versin de Sistema Operacional JavaOS empiece a ser utilizado en fotocopiadoras, sistemas de comunicacin celular, etc. Esto no es ms que una ligera aproximacin del escenario donde Java se est desempeando y del futuro que se espera de sus desarrollos. Es la razn fundamental para declarar a Java el lenguaje de programacin de la Web. A fin de conocer como se difunde Java y en qu grado es aceptado y adoptado por la comunidad tanto acadmica como de programadores, as como la industria del sector, Sun presenta algunas estadsticas recolectadas en Agosto de 1997, las cuales muestran en su conjunto que Java ha sido adoptado mas rpidamente que cualquier otro anterior ambiente de programacin o plataforma de computacin. Se han liberado cuatro versiones principales del JDK (Java Development Kit) : Java 1.0 a principios de 1996

Java 1.1.7 Versin de 1998, con mejoras en el manejo de interfaces grficas de usuario, y manejo de eventos. Java 1.2 Liberada en diciembre de 1998, mejor conocida por el nombre de Java2, con mejoras sustanciales en el desempeo grfico y nuevas caractersticas como el Swing para crear interfaces grficas de usuario, transferir

El lenguaje de programacin Java: Tendencia y perspectiva del Java 3 13 interactivamente informacin entre aplicaciones distintas, y mejoras en las caractersticas de audio. Se han descargado del sitio sun.com, 3486751 copias de esta versin a septiembre 15 del 2000 Java 1.3 Liberada en 1999, aunque tiene un numero de versin superior a la anterior, su nombre genrico es Java2. Ademas del JDK, o sea la herramienta de Sun para desarrollo de Java, se encuentra un nmero considerable de herramientas comerciales de desarrollo de Java, entre las cuales se pueden mencionar:
L L L L L L L

VisualAge Java de IBM Java WorkShop de SunSoft Visual Cafe de Symantec JBuilder de Borland JFactory de Rogue Wave Natural Intelligence Roaster Code Warrior de MetroWerks

En todas ellas se debe tener claro cual es la versin que soporta de Java. En la actualidad la mayora de herramientas de desarrollo estn encaminadas a soportar la versin Java 1.2 o Java2. La versin Java 1.0 liberada a principios de 1996, en menos de 800 das haba logrado obtener la siguiente cobertura:
L L L L

Ms de 70 millones de lugares donde ejecutar programas Java. Ms de 400,000 programadores desarrollando programas Java. Ms de 1,000 despachos de aplicaciones. Ms de 100 compaas que haban licenciado el Java VM (Maquina Virtual de Java). Ms de 200 universidades ofreciendo cursos de programacin en Java. Ms de 25 ambientes de desarrollo para Java. Ms de 800 libros en programacin y computacin en Java.

L L L

Otro aspecto de relevancia presentado por Sun tiene que ver con herramientas

El lenguaje de programacin Java: Tendencia y perspectiva del Java 3 14 para desarrollo en Java, en trmino de unidades despachadas para el ao de 1996: Herramienta Java C++ Otros 01/01/96 3000 60000 190000 01/02/96 49000 20000 145000 01/03/96 25000 20000 115000 01/04/96 145000 20000 95000

Sun expresa que, con datos de esta naturaleza, queda claro que la tecnologa de Java esta adquiriendo un gran impacto en cmo se escribe software para computadores y cmo se escribir por los prximos aos. Dadas sus caractersticas de funcionalidad, el ncleo de sus clases, las mejoras en rendimientos y tiempos de ejecucin, as como la gran variedad y cantidad de computadores como de equipos electrnicos de consumo, en los cuales Java se encuentra inmerso, es posible asegurar que la tecnologa de Java estar en uso por un largo tiempo.

El JDK (Java Development Kit)


Para crear programas en lenguaje Java se requiere de un compilador que convierta las declaraciones del cdigo fuente en Java, escritas por el programador, en cdigo de maquina virtual, o en ceros y unos, o cdigo de bytes para poder ser desplegada en un visualizador o navegador. Afortunadamente este compilador no hay que comprarlo, su distribucin de acuerdo a las licencias de uso es gratuita y est disponible para ser bajado por el programador en el sitio Web de Sun Microsystem http://java.sun.com. Tanto la informacin de documentacin como los programas requeridos para trabajar con Java se encuentran en ese sitio. En el CD que acompaa este texto est incluida la version JDK1.2.1 con lo cual se facilita su instalacin y se evita su descargue va Internet, la mayora de las veces bastante lento en nuestro medio. La versin a utilizar en el texto es la JDK1.2.1 que trae cambios sustanciales en el desarrollo de programas sobre su predecesora, la versin JDK1.1; permite desarrollar fcilmente las habilidades y destrezas en la construccin de sus primeros programas y brinda adems, un soporte muy adecuado y novedoso para la implementacin de interfaces grficas y programacin por componentes, elementos fundamentales en la programacin moderna de computadores, especialmente en el manejo de componentes Swing. Versiones anteriores como la JDK1.1.x podrn utilizarse para los primeros

El lenguaje de programacin Java: El JDK (Java Development Kit) 3 - 15 programas y el desarrollo de interfaces grficas sencillas, permitindole tambin al principiante desarrollar habilidades desde los primeros programas.

Instalacin del JDK


En el CD que acompaa el material se encuentran los programas para instalar Java en sus dos versiones: el JDK1.1 en java\java1.1\jdk117-win32.exe y el JDK1.2.1 o denominada Java2, en java\java1.2.1\jdk1_2_1-exe para la versin en Windows. Para la versin en Linux se encuentra en el directorio java\linux\jdk1.2pre-v2.tar.bz2.z. Ejecute el programa indicado para instalar la versin deseada segn el sistema operacional a usar. Una vez se instale segn las instrucciones, en su disco C por ejemplo, se tendr la estructura de directorios de Java2 en C:\jdk1.2.1, para la versin en Windows. El espacio en disco requerido para la instalacin del JDK es al menos de 30MB, y otros 30MB para la documentacin, aunque esta se puede consultar en linea en la direccin de Sun. Se encuentran en el CD tambin los respectivos tutoriales, en el directorio \java\java1.1\doc para la versin jdk1.1 y en \java\java1.2.1\doc para la versin Java1.2. Esta documentacin se recomienda descomprimirla al directorio del mismo nombre en el disco donde se ha instalado Java. Si desea utilizar una versin mas reciente del JDK de Java2, por ejemplo la JDK1.3 se puede descargar de la direccin http://java.sun.com/ en donde encontrar vnculos que los llevan al Kit de desarrollo de Java (Java Development Kit). Cualquiera de los dos mtodos permiten la instalacin del JDK en su disco duro. Configuracin de la instruccin path A fin de que Java pueda encontrar las clases es necesario configurar la variable de entorno PATH. Bajo ambiente Windows se debe modificar con un editor de texto o el programa sysedit la variable PATH del archivo Autoexec.bat, agregndole c:/jdk1.1.7/bin/ si se ha instalado la versin Java1.1.7 o c:/jdk1.2.1/bin/ si se ha instalado la versin Java1.2.1. Los siguientes pasos corresponden a la versin de Windows 98: 1. Pulse el ratn en el men de inicio. 2. Seleccione ejecutar 3. Escriba sysedit y presione OK. Muestra el Editor de Configuracin del Sistema, que se utilizara para modificar el archivo autoexec.bat u otros.

El lenguaje de programacin Java: El JDK (Java Development Kit) 3 - 16 4. El archivo que aparece en la primera ventana del frente es el autoexec.bat por defecto. 5. Como ultima lnea de este archivo agregue:
SET 1.1.7 SET 1.2.1 PATH=C:\JDK1.2.1\BIN;%PATH% para Java PATH=C:\JDK1.1.7\BIN;%PATH% para Java

6. En el men Archivo seleccione Guardar y luego Salir 7. Reinicie el computador para que los cambios surtan efecto

Ahora ya podr ejecutar java, javac o el appletviewer desde cualquier directorio en ambiente Windows. Para ambiente Linux bajo el shell bash se debe establecer la variable de ruta del compilador javac y del interprete de la Maquina Virtual java:
$export PATH=/usr/local/apps/jdk1.2.2/bin:$PATH

Configuracin de su directorio de trabajo


Habiendo agregado la ruta correspondiente a fin de llamar los programas java, javac y appletviewer desde cualquier directorio, ahora es necesario crear su directorio de trabajo para el desarrollo de sus propios programas en Java. Con el explorador de su sistema o mediante el DOS cree una carpeta en su disco duro, con el nombre trabajoJava. En ese directorio podr crear una carpeta para sus programas fuente en Java, por ejemplo ejemplos.
C:/trabajoJava/ejemplos/

Con su editor de textos proceda a digitar sus programas fuente, asignndoles el nombre segn sea el caso, recuerde que la extensin para los programas es .java. Proceda a la compilacin mediante el llamado a javac, y luego su ejecucin con java si son aplicaciones, o mediante el appletviewer o un navegador para el caso de applets, para estas deber crear un archivo HTML que tenga la etiqueta <applet> a fin de poderlas ejecutar en una ventana. Bajo el sistema Linux en modo grfico, (despues de haber hecho login y

El lenguaje de programacin Java: El JDK (Java Development Kit) 3 - 17


password en su cuenta, ejecute $startx, para entrar a linux modo grfico),

cree un directorio de trabajo con el nombre Java, por ejemplo. Abra un editor de texto para que copie sus programas y almacnelos en su directorio de trabajo. Para la ejecucin de sus programas presione el icono Terminal (Konsole) y abra una ventana terminal para compilar programas (javac), otra para ejecutar el interprete (java) y otra para ejecucin de sus applets (appletviewer).

Programas de prueba
Para comprobar que su sistema est funcionando adecuadamente, puede ejecutar utilizando un navegador como Netscape o Internet Explorer, en sus recientes versiones, algunas applets que se encuentran dentro del JDK. Por ejemplo, utilizando un navegador abra el archivo html en la siguiente ruta:
c:/jdk1.2.1/demo/applets/arctest/example1.html

Ensaye con los diferentes ejemplos que hay en la carpeta de applets. En el ejemplo anterior encontrar los siguientes archivos en la carpeta arctest:
ArcCanvas.class ArcControls.class ArcTest.class ArcTest.java example1.html

El archivo con extensin .java, es el programa fuente en Java, el cual se compila con el llamado a javac. Si la compilacin es exitosa, se generan los archivos .class de las clases que conforman el programa, en este caso ArcCanvas.class, ArcControls.class, y la clase principal ArcTest.class. Debido a que ArcTest.java hace referencia a un programa tipo applet, en ejemplo1.html est el cdigo HTML, con la etiqueta apara llamar el applet ArctTest.class. Tanto el programa ArcTest.java como el cdigo de ejemplo1.html, pueden ser vistos y modificados con un editor. Si modifica ArcTest.java deber compilarlo nuevamente. Si modifica ejemplo1.html, no afecta el programa java. Ensaye la ejecucin del applet a partir de la ejecucin del appletviewer. Para tal caso debe entrar al DOS y en la linea de comando pasar al directorio donde se encuentra el applet ArcTest, y ejecutar la siguiente instruccin:
c:/jdk1.1.2/demo/applets/arctest/appletviewer example1.html

El lenguaje de programacin Java: Programas de prueba 3 - 18 El resultado obtenido deber ser el mismo que con el navegador utilizado antes. Ensaye con otras applets del directorio demo, siguiendo las instrucciones dadas.

Herramientas de desarrollo del JDK


Observando el directorio donde se ha instalado el Java se dar cuenta de la existencia de gran cantidad de archivos y herramientas, tanto de documentacin, del compilador Java, as como utilidades y de clases. Al examinar el directorio donde se instala el JDK encontrar varios archivos, como readme.html que podr ejecutar con un navegador y en donde est toda la documentacin del Java y es el punto de partida en su utilizacin. Tambin encontrar en ese directorio los siguientes flderes: flderes bin demo
docs include lib

descripcin contiene las herramientas ejecutables del JDK, para, desarrollar, ejecutar, depurar y documentar programas escritos en Java. contiene applets listas para ejecucin, as como muestras de cdigo para las Clases de Java (Java Foundation Classes).
completa documentacin acerca de Java y enlaces a paginas Web. archivos de encabezamientos de C y C++ requeridos para construccin del entorno Java. bibliotecas y archivos en formatos .lib, .zip, .jar, utilizados por el JDK.

El JDK dispone de los siguientes programas y herramientas:

programas
java javac javadoc javah javap jdb

descripcin
Interpretador que se usa para ejecutar programas autnomos o aplicaciones El compilador Java, con el cual se generan los archivos binarios de clases Para la generacin de la documentacin de clases Java. Generador de archivos C++ de encabezados y archivos fuente para la definicin de clases. Desensamblador de clases Java. Depurador Java.

appletviewer Para visualizar las ventanas del applets en la ventana de comandos.

El compilador Java: javac Es quiz la ms importante de las herramientas del JDK, el compilador Java compila el cdigo fuente de Java y lo convierte en cdigo de bytes, o sea en

El lenguaje de programacin Java: Programas de prueba 3 - 19 instrucciones para la mquina virtual de Java, (Java Virtual Machine) o JVM segn su sigla en ingls. La siguiente figura ilustra los elementos en un proceso de ejecucin de una aplicacin Java.

Cdigo Fuente
Compilador Java

Archivo de clase 01101001101 10011010101 00111100101 10100111010 Interpretador Mquina Virtual de Java Pantalla del usuario

Otros archivos de clase 11101001101 11011010101 11001100101 10111100010

El cdigo fuente es el programa escrito en Java, el cual debe estar contenido en archivos con la extensin .java y que se compila con el programa javac, o sea el compilador de Java. Se generan los archivos de bytes con extensin .class correspondientes y luego la ejecucin se hace por medio del programa java el cual mediante la Mquina Virtual de Java, se encarga de llamar otras clases que se requieran, permitiendo entonces producir resultados en la pantalla del usuario. Si el programa fuente comprende varias clases, cada una de estas clases compiladas con su extensin .class se sitan en el mismo directorio donde se ha guardado el archivo fuente Java. Cuando se vaya a utilizar clases que no estn en el cdigo fuente de su programa y localizadas en otro directorio, es necesario utilizar la opcin classpath para especificarle al compilador el directorio donde las debe localizar. La forma general de la instruccin para ejecutar javac es la siguiente:
javac [opciones] archivo.java archivo.java, es el nombre del archivo fuente a compilar. Las opciones

pueden ser las siguientes:


-classpath path especifica el path o ruta de javac debe buscar las clases.

Esta definicin sobrescribe la dada por defecto en la variable de entorno path

El lenguaje de programacin Java: Programas de prueba 3 - 20 del autoexec.bat. Si hay ms de un directorio, se separan por punto y coma.
directorio permite que los archivos de clase generados por el programa fuente sean almacenados en el directorio . -d -g activa la opcin de generacin de tablas de depurado, que contienen

informacin sobre los nmeros de lineas y las variables locales.


-nowarm desactiva la generacin de advertencias en la compilacin. -o optimiza el cdigo compilado incluyendo los mtodos finales y privados,

lo cual puede hacer que por otro lado el tamao de clases aumente de tamao.
-verbose permite que el compilador y el enlazador impriman los mensajes acerca de los archivos fuente que se estn compilando y los archivos .class

que se estn cargando. Para verificar la instalacin de javac y su funcionamiento, pase a la lnea de comandos en DOS y sitese en su directorio de trabajo y escriba javac. Debe aparecer una lista de opciones disponibles para javac. Si la indicacin es que no existe, pues debe verificarse la variable PATH en su autoexec.bat para ver si contiene la direccin de la carpeta bin del JDK. El interprete de Java: java Una vez se han generado los archivos .class se tendrn que ejecutar utilizando la Mquina Virtual de Java. Para poder ejecutar la aplicacin se requiere del java que viene en el JDK. La mayora de las veces necesitar usar el intrprete de Java conocido como java, el cual examina la respectiva clase para localizar un mtodo llamado main(), declarado como public y static. La forma general para llamar al interprete de Java es:
java [opciones] nombreclase <argumentos> nombreclase es el nombre de la clase que se va a ejecutar. El intrprete busca en la clase a ejecutar la existencia del mtodo main(), si el intrprete encuentra

este mtodo, entiende que se trata de una aplicacin y no de una applet, entonces le transfiere el control y se ejecuta la aplicacin. La ejecucin se realiza en ventana de comandos mediante una llamada a este programa, seguida del nombre de la clase principal (o sea la que contiene el mtodo main()) y opcionalmente del directorio o ruta donde se encuentran las otras clases si las hay, requeridas por la aplicacin, si no estn en el mismo directorio donde se ha compilado el programa Java.

El lenguaje de programacin Java: Programas de prueba 3 - 21 La clase a ejecutar debe contener el mtodo main() definido de la siguiente forma, por ejemplo del cuerpo de una clase llamada ClasePrincipal:
class ClasePrincipal{ public static void main(String arg[]){ ..... } }

Los <argumentos> despus del nombreclase que aparecen en el llamado a java en la lnea de comandos son pasados al mtodo main() de la clase por medio del arreglo arg[] de valores tipo String en el llamado al mtodo main().Algunas de las opciones a utilizar son las siguientes:
-classpath especifica el path o ruta que debe utilizar java para encontrar las

clases. Sobre escribe el definido en el autoexec.bat.


-debug, hace que el depurador de java se incluya en la sesin actual. -cs, -checksource, permite que cuando se carga una clase compilada, la

fecha de modificacin de los cdigos de bytes sea comparada con la del archivo fuente. Si el archivo fuente de la clase ha sido modificado, se procede a recompilarlo y a generar los nuevos cdigos de bytes. La forma javaw del intrprete se utiliza para la plataforma Windows, asignndole a la aplicacin una ventana de consola de Java para mostrar los resultados. La forma jrew del intrprete (Java Run Time Environment Windows), no visualiza una consola sino que hace que su aplicacin tenga un aspecto de aplicacin tradicional. El visualizador de Applets (Appletviewer) Este comando permite ejecutar applets por fuera del contexto brindado por los navegadores de la Web, como Netscape, Internet Explorer, o Hot Java. Es la manera ms rpida y fcil de probar los applets mediante su visualizacin en la ventana del appletviewer, que se comporta como un navegador, permitiendo un solamente un tipo de etiqueta <applet> dentro del cuerpo del archivo HTML respectivo. A pesar de esta restriccin, es muy til para el trabajo de desarrollo de applets. Para hacer pruebas con el appletviewer, debe pasar a modo DOS y desde la carpeta donde estn sus archivos de clases de las applets, ejecutar el appletviewer. La forma general es:
appletviewer [opciones] archivoHTML

El lenguaje de programacin Java: Programas de prueba 3 - 22 Muestra en la ventana el applet referenciado dentro del cuerpo del archivoHTML, mediante una etiqueta <applet>. Una de las opciones del appletviewer es: -debug, la cual permite arrancar el visualizador dentro del depurador de Java, el jdb, permitiendo as la depuracin de las applets. Para ilustrar el funcionamiento del appletviewer, en el directorio demo del JDK1.2.1 sealado antes, puede ejecutar los diferentes ejemplos como se ha indicado. En ese directorio estn los cdigos fuente del applet TicTacToe.java, su archivo de clases TicTacToe.class y un archivo HTML encargado de cargar el archivo de clase, example.html. Escriba en la ventana de comandos del DOS la siguiente instruccin:
cd C:\JDK1.2.1\demo\applets\TicTacToe\ appletviewer example.html

Se debe ver una ventana con el famoso juego, siga adelante con las opciones que le brinda este applet. Puede pasar a otros ejemplos del directorio demo para ver funcionando diferentes applets a partir del appletviewer. Para el caso de Linux, abra una ventana terminal (Konsole) y ejecute
$appletviewer /directorio/example.html

El depurador de cdigo java: jdb Es una herramienta que permite examinar las variables en un programa durante el tiempo de ejecucin, es decir permite la depuracin de sus programas. En el JDK esa herramienta se llama jdb. Se puede introducir en la lnea de comandos jdb, su funcionamiento lo indica con el mensaje Initializing jdb, seguido de un signo mayor que (>). Los comandos se pueden ver con help, para salir del programa se escribe exit. El generador de documentacin: javadoc Mediante el programa javadoc se generan pginas de documentacin HTML, a partir del cdigo fuente, si est adecuadamente comentado con /** de cada archivo .java de su paquete y otra por todo el paquete en su conjunto. Tambin genera la jerarqua de clases (tree.html). Puede probar javadoc con alguno de los ejemplos que acompaan los demos, o con algunos ejemplos del texto.

Plataforma del Java


Una plataforma es un ambiente hardware/software en que un programa se

El lenguaje de programacin Java: Plataforma del Java 3 - 23 ejecuta. Entre las plataformas ms famosas se encuentran actualmente, Windows 2000, Linux, Solaris, y MacOS. La mayora de las plataformas se pueden entender como una combinacin de sistema operativo y hardware. La plataforma de Java se diferencia de las dems plataformas en que es una plataforma solo basada en software y que se ejecuta por encima de las dems plataformas basadas en hardware. La plataforma de Java se conforma de dos componentes:
L L

La Maquina Virtual de Java (Java Virtual Machine ) o Java VM. La Interfaz de programas de aplicacin (Java Application Programming Interface) o Java API.

La Mquina Virtual de Java (JVM)


La Mquina Virtual de Java es la piedra angular de el lenguaje de Programacin Java de Sun. Es el componente responsable de facilitar el comportamiento del Java en plataformas cruzadas, independiente del hardware, as como del tamao relativamente pequeo del cdigo compilado y de la habilidad de proteger el programa del usuario contra otros programas maliciosos o con errores. La Mquina Virtual de Java es una mquina abstracta de computacin, que posee tal como una mquina real de computacin, un conjunto de instrucciones y usa diferentes reas de la memoria del computador. No es el nico caso de implementacin de un lenguaje de programacin utilizando una mquina virtual, se tiene el caso de la mquina virtual P-Code del Pascal UCSD. La JVM no conoce nada acerca del lenguaje de programacin Java, solamente acerca de un archivo de tipo especial de formato class, el cual contiene bsicamente las instrucciones del JVM (o cdigo de bytes) y una tabla de smbolos. El cdigo de bytes, o la forma binaria como quedan las clases despus de la compilacin, es ejecutado dentro de la llamada Mquina Virtual de Java (Java Virtual Machine VM), la cual provee los servicios como anfitrin, para la aplicacin o applet de Java. Los servicios comprenden el manejo de memoria, recoleccin de basura, entrada/salida, y manejo de grficos y ventanas. As mismo la seguridad, previniendo que el cdigo Java pueda interactuar directamente con el hardware del husped. Los navegadores ms comunes tienen capacidades de VM de Java. La JVM contiene un cargador de clases que es el responsable de buscar y descargar todas las clases utilizadas por el applet. Luego antes de ejecutar el archivo de clase comprueba su contenido mediante un verificador de cdigo

El lenguaje de programacin Java: Plataforma del Java 3 - 24 byte. Finalmente la clase se ejecuta bajo la supervisin del Administrador de seguridad de la VM En un navegador el cdigo de bytes viaja a travs de la red envuelto en las applets de las paginas Web. Estas applets se le entregan a la JVM del navegador que se encarga de ejecutarlas. Se hacen llamados por parte de la VM al navegador, para accesar varias rutinas de la interfaz de usuario del Sistema Operativo anfitrin, as como rutinas grficas. Estas son devueltas a la pantalla por el Sistema Operativo, especficamente a travs de un manejador o driver. Adicionalmente la Mquina Virtual de Java tambin maneja las entradas y salidas por red, asignacin de memoria, manejo del mouse y otros.

El API de Java
Es una gran coleccin de componentes de software listos para usar, que proveen muchas capacidades tiles en el desarrollo de programas, como interfaces grficas de usuario (GUI graphical user interface). El API de Java se conforma de paquetes relacionados de clases e interfaces agrupados en libreras. Estas libreras tienen el nombre de paquetes. En unidades posteriores se tratar el tema de uso y creacin de sus propios paquetes. La siguiente figura ilustra un programa que se ejecuta en la plataforma Java. Como se puede observar, tanto la Mquina Virtual, como el API de Java aslan el programa de la estructura del hardware.

miPrograma.java Api de Java Maquina Virtual Java Plataforma hardware Plataforma de Java

Cdigo nativo, es aquel que como resultado de la compilacin, se puede ejecutar en una plataforma especfica de hardware. En el caso de la plataforma de Java, por ser independiente de la plataforma de hardware, la ejecucin del cdigo de bytes generado en la compilacin, puede ser ms lento que en el caso del cdigo nativo.

El lenguaje de programacin Java: Plataforma del Java 3 - 25

El AWT
Cada Mquina Virtual de Java contiene el Abstract Windows Toolkit - AWT, el cual permite el manejo bsico del sistema de ventanas, como su creacin, cajas de dilogos, manejo de textos, botones, listas de chequeo, botones de graduacin, as como primitivas grficas para dibujo de lneas, uso de color, seleccin, etc. Virtualmente las ms sofisticadas herramientas grficas para interfaces de usuario se encuentran disponibles. Una Interfaz Grfica de Usuario (User Interface) o UI es un trmino que se refiere a todas las formas de comunicacin entre un programa y su usuario, incluyendo no solo lo que ste ve en la pantalla, sino tambin lo que se oye o siente. La misma velocidad con la que un programa interacta con el usuario es un elemento de la UI de un programa. Informacin sobre las clases del AWT se encuentra junto con la documentacin de JDK en el directorio donde se ha instalado el Java. Para informacin ms detallada se puede consultar la direccin de Sun acerca del AWT:
http://java.sun.com/products/jdk/awt

El JFC
El software Java Foundation Classes (JFC) extiende el Abstract Windowing Toolkit (AWT) original, suministrando un conjunto de libreras de clases para el manejo avanzado de interfaces grficas de usuario.

El Java Foundation Classes (JFC) es un paquete que contiene entre otros las primitivas para proveer una mayor funcionalidad que AWT en el manejo de ventanas, como por ejemplo componentes para botones, listas de chequeo, etc., incluyendo un manejo grfico de alta calidad, a este paquete se le denomina como Clases Swing (Swing Classes). Informacin sobre las clases JFC se encuentra en
http://java.sun.com/products/jfc .

Componentes Swing
Los componentes Swing estn escritos en Java sin un cdigo de manejo de un sistema especfico de ventanas. Esto facilita el manejo de apariencias deseables por el usuario sin tener que referirse a sistemas nativos de manejo de ventanas, simplificando el desarrollo de aplicaciones. Las clases Swing fueron desarrolladas conjuntamente Sun y Netscape, diseadas enteramente en Java y tienen el visto bueno de IBM y Apple. Swing est incorporado en el JDK 1.2.1 como un paquete del JFC (javax.swing). El Swing corre tanto en Netscape como en Internet Explorer. El tema de las clases

El lenguaje de programacin Java: Plataforma del Java 3 - 26 Swing se tratar al final del libro. Informacin sobre Swing se puede encontrar en detalle en la siguiente direccin,
http://java.sun.com/products/jfc/swingdoc-current/.

En la carpeta docs de su directorio donde ha instalado el Java, se encuentra la pgina index.html, la cual invocada desde un navegador pone a su disposicin la documentacin que acompaa el JFC bajo el nombre, Java 2 SDK, Standard Ediction Documentation Versin 1.2.1, para el caso de la versin Java2. La misma se encuentra en el respectivo directorio para la versin Java1.1. En el texto se trabajar preferencialmente con los conponentes Swing.

Java Beans
Es una tecnologa de componentes de software, como OLE para Windows y OpenDoc para Macintosh, la cual facilita la movilidad desde el foco de la aplicacin al foco del documento, con los datos dentro del documento que contiene el cdigo para manipularlo. Los Java Beans son objetos reutilizables que pueden ser conectados en aplicaciones Java existentes y usadas directamente sin prcticamente integracin alguna por parte del programador. Estn disponibles dentro del ambiente de desarrollo de Java. Informacin detallada sobre Java Beans est en
http://java.sun.com/beans/spec.html.

RMI (Remote Method Invocation)


Es un tecnologa que provee a la Mquina Virtual de Java, de comunicaciones locales y remotas. RMI se ha diseado para soportar computacin distribuida con persistencia de objetos a travs de la red. Informacin detallada sobre RMI puede encontrarse en la siguiente direccin,
http://java.sun.com/products/JDK/1.1/docs/guide/rmi

Primeros programas
En esta parte se presentan las bases para la edicin y ejecucin de programas en Java, desde el punto de vista de su estructura general, en sus dos modalidades: como aplicaciones independientes para ser ejecutadas en la computadora local y como applets para ser visualizadas en un navegador o mediante el appletviewer.

El lenguaje de programacin Java: Primeros programas 3 - 27 El desarrollo de un programa en un lenguaje de programacin es una de las fases de la solucin de problemas usando el computador. Es importante tener en cuenta su anlisis y el modelaje brindado por el Lenguaje Algortmico antes de iniciar la elaboracin de cdigo alguno. An en el desarrollo de prototipos, se requiere de un componente aunque sea mnimo, de anlisis. Java es un lenguaje de programacin, con el cual los desarrolladores pueden crear software autnomo, como el que se hace con C++ para ejecutarse en una mquina, o para correr dentro de un navegador o explorador en la Web. Obviamente estos ltimos denominados Applets son los que acaparan la mayor parte del cdigo Java, por su misma caracterstica de estar inmersos en el ciberespacio y lo que ste representa para las organizaciones en general. Como ya se ha establecido antes, previo a la elaboracin mediante cdigo de algn problema, se debe hacer su anlisis y modelacin en seudo cdigo para su posterior codificacin en el lenguaje en este caso Java. Aqu se presenta el resultado en trminos del cdigo fuente Java tanto para la estructura correspondiente a la aplicacin como para el applet, para dos casos sencillos, que permiten ilustrar los procesos de edicin, compilacin y ejecucin de programas en Java.

Ejecucin de Java
Los programas desarrollados en Java, applets o aplicaciones, se escriben en lenguaje fuente, mediante un editor de texto plano, luego de almacenarlo, ste se compila para generar el cdigo de bytes ( cdigo de Mquina Virtual de Java), el cual se almacena en un servidor (o en un computador local). Para poder ejecutar una aplicacin o un applet el usuario llama a la mquina virtual de Java (VM) que ejecuta lenguaje en forma de cdigo de bytes de Java. Al ser un lenguaje independiente de la plataforma, hace que pueda ser ejecutado en cualquier procesador. Respecto de su posibilidades en Internet, todos los navegadores como Netscape
Navigator, Internet Explorer y HotJava, tienen la Maquina Virtual de Java, para poder tratar los applets.

Para poder desarrollar tanto aplicaciones como Applets se debe haber instalado y probado el JDK que se encuentra en el CD que acompaa el texto, aqu se utilizar el directorio C:\trabajoJava\ejemplos\ para trabajo en el curso bajo Windows.

Normas acerca de la escritura de cdigo


Sun sugiere algunas convenciones en cuanto a la escritura de nombres en Java. Notacin similar a la seguida en el Lenguaje Algortmico. Al compilador no le importa como se llamen las clases y mtodos, pero si se sigue estas convenciones su cdigo puede ser ms fcil de mantener y compartir con otros

El lenguaje de programacin Java: Primeros programas 3 - 28 usuarios. Debe tambin recordarse que Java es un lenguaje sensible a las maysculas y minsculas. Las recomendaciones son las siguientes:
L

Los nombres de clases usan una mezcla de maysculas y minsculas, empezando con mayscula. Si el nombres es compuesto de varias palabras, se inicia con mayscula cada una de las diferentes palabras, por ejemplo EstaEsMiPrimeraClase, que es un nombre vlido de clase. Los mtodos se inician con minscula y las dems palabras (si las hay) como en el caso de las clases. Por ejemplo, miPrimerMetodo() Los datos miembros de una clase se rigen por la misma convencin de los mtodos. Por ejemplo un dato puntoSuperior, valorPagado, etc. Las constantes se escriben con maysculas, PI en lugar de pi.

Los trminos clase, mtodos y datos miembros , corresponde a la terminologa de objetos que ser objeto de estudio ms adelante, en donde se darn las definiciones correspondientes.

Aplicaciones
Una aplicacin en Java es un programa que se ejecuta en un computador local y consta de una o ms clases, las cuales pueden ser tan grandes y complejas como se requiera. Una de esas clases es la clase principal, la cual contiene el mtodo main(). Aunque el ejemplo que se ver en seguida es muy simple, con las aplicaciones se pueden usar ventanas, grficos y elementos de interfaz de usuario como se hace con las applets.Este tipo de software se ejecuta autnomamente en el computador local, mediante el uso del programa java.exe, que es el interpretador de Java y permite el desarrollo de aplicaciones como se haran en C, C++, o Pascal, por ejemplo. Los pasos para el desarrollo de una aplicacin, una vez se haya analizado y se hayan generado las soluciones algortmicas requeridas y las del modelamiento de objetos y sus clases para el caso de problemas modelados en orientacin a objetos, comprende: escritura en cdigo fuente mediante un editor, compilacin y ejecucin. Si se encuentran errores, se harn las correcciones en el cdigo fuente y se repite el proceso.

Cdigo fuente
En el texto los programas fuente se han escrito en el tipo de letra Courier New 10 puntos. El siguiente cdigo corresponde a una aplicacin en Java que presenta en la ventana de comandos un mensaje de bienvenida. Ejemplo 1: Desarrollar un programa en Java tipo aplicacin que presente el

El lenguaje de programacin Java: Aplicaciones 3 - 29 mensaje Bienvenido a Java, vamos a aprender!! en la lnea de comandos.
/* Este es el primer programa en Java: su propsito es escribir un mensaje. El nombre del archivo fuente es Ejemplo01.java */ public class Ejemplo01 { // El programa se inicia llamando a main() public static void main(String args[]) { System.out.println(Bienvenido a Java, vamos a aprender!!); } }

El resultado del programa anterior una vez compilado y ejecutado con los comandos correspondientes da el resultado:

Entre el programa escrito en el papel y los resultados obtenidos en la lnea de comandos, se han realizado los siguientes pasos:
L

Introducir al computador el cdigo fuente en Java, es decir, mediante un editor de texto como el NOTEPAD en Windows, o el EDIT en DOS, se toma el cdigo anterior y se digita, guardndolo en su carpeta de ejemplos en su directorio de trabajo TrabajoJava, bajo un archivo con el nombre:
Ejemplo01.java

La extensin .java denota una archivo fuente en Java. Obsrvese que el nombre del archivo corresponde al de la clase Ejemplo01, definida en el programa.
L

Ahora se puede llevar a cabo la compilacin (o sea la deteccin de errores de sintaxis y otros por parte del compilador de Java), para lo cual debe abrirse una ventana de comandos para introducir la siguiente instruccin para invocar a javac,

El lenguaje de programacin Java: Aplicaciones 3 - 30


C:\trabajoJava\ejemplos>javac Ejemplo01.java

Obsrvese que el nombre del archivo debe coincidir plenamente con el de la clase respectiva, ya que es sensible a las maysculas-minsculas. Al ejecutar JAVAC pueden presentarse las siguientes situaciones:
L

No se encuentra JAVAC por parte del interpretador de comandos, en este caso del DOS. Comprobar que la variable PATH tiene la carpeta bin de su directorio JDK1.2.1 en su ruta de acceso. El compilador emite uno o mas avisos (warnings) los cuales deben examinarse para corregirlos. El compilador lista uno o mas errores (errors) de codificacin.

Si se presenta alguna de las situaciones anteriores, se debe proceder a corregir el cdigo si es el caso, con el editor de texto y proceder nuevamente a su compilacin. Antes de la ejecucin del programa se debe haber corregido todos los errores y avisos que se hayan presentado. Si bien es cierto que, los avisos permiten la ejecucin del programa, son una indicacin que algo anda mal en su programa. Por ejemplo se puede tener el aviso del uso de un mtodo no vigente (deprecated) en la versin actual del JDK, para lo cual la indicacin del compilador, en este caso, es compilar de nuevo con el parmetro -deprecation despus del nombre del archivo en la instruccion de ejecucin, para averiguar exactamente cul es el problema. Los mtodos desaprobados o no vigentes, son aquellos que se han actualizado para la versin actual del Java y para los cuales se deben utilizar las versiones recomendadas en la misma documentacin. Si el programa ha sido compilado exitosamente la lnea de comando aparecer
C:\trabajoJava\ejemplos>

Si se observa el contenido de la carpeta ejemplos, se tiene que adems del archivo Ejemplo01.java aparece un nuevo archivo generado durante la compilacin, con el nombre Ejemplo01.class, que contiene el cdigo binario (bytecode) del programa compilado. Es un estado intermedio del programa, ya que contiene las instrucciones (en binario), que el intrprete de Java o sea la Mquina Virtual de Java puede ejecutar. Puede listarse el respectivo directorio para observar la existencia del nuevo archivo. Una vez se obtiene la unidad de compilacin o cdigo binario, se puede ejecutar pasndole el nombre de la clase, que se encuentra en Ejemplo01.class, al

El lenguaje de programacin Java: Aplicaciones 3 - 31 interpretador de java en la ventana de comandos :


C:\trabajoJava\ejemplos>java Ejemplo01.class

La lnea de comandos exhibir entonces el siguiente estado:


Bienvenido a Java, vamos a aprender!!

Explicacin del cdigo fuente


Aqu se trata en detalle el significado de cada una de las lineas de la aplicacin Ejemplo01.java ya que a pesar de ser una aplicacin bastante pequea, tiene todos los elementos que comprenden la estructura de una aplicacin cualquiera. A partir de estructura usted podr escribir programas mas complejos.
L

Lneas 1-3: La lnea que se inicia con /* corresponde al inicio de un comentario que se extiende hasta la lnea que contiene */ que cierra el comentario. De esta forma, un comentario que se extienda por ms de una lnea se puede definir como est indicado en el listado adjunto.

1./* 2. Este es el primer programa en Java: su propsito es escribir un mensaje. El nombre del archivo fuente es Ejemplo01.java 3.*/
L

Lineas 4-9: En la siguiente parte del programa se define la clase principal, correspondiente al ejemplo cuyo nombre es Ejemplo01 y cuyo cuerpo va entre los corchetes externos.

4.public class Ejemplo01 { 5.// El programa se inicia usando main() 6. public static void main(String args[]) { 7. System.out.println(Bienvenido a Java, vamos a aprender!!); 8. } 9.}
L

Lnea 4: La clase Ejemplo01 ha sido declarado como public (publica), lo cual significa que cualquiera puede tener acceso a ella. Cuando se escribe una aplicacin se declara la clase principal como public, as el entorno de Java la localiza y ejecuta su mtodo main(). Una aplicacin puede tener muchas clases, en las cuales se crean y utilizan diferentes instancias de cada clase mientras se ejecuta la aplicacin, pero una sola de ellas contiene al mtodo main().. Lnea 6: Dentro del cuerpo de la clase se llama al mtodo main(), el cual se lo declara como public (pblico), significando que este mtodo esta disponible para otras clases u objetos. A diferencia de C++, que puede

El lenguaje de programacin Java: Aplicaciones 3 - 32 definir funciones y datos por fuera de cualquier clase, en Java se define una clase como punto de partida de la aplicacin. El usuario llama al mtodo main() de aquella clase, para iniciar el trabajo de la aplicacin con esa clase. La siguiente palabra reservada es static (esttico), lo cual significa que es un mtodo de clase. Mtodos y variables de la clase principal se definen como static. La siguiente palabra reservada es void lo cual significa que el mtodo main() no tiene ningn valor de retorno a otras clases, sin embargo los resultados los produce en la pantalla de comandos. Los mtodos que retornan algn valor utilizan la palabra reservada return y no tiene void en su definicin. Ahora si se observan los parmetros de main() se v que tiene uno solo, args[ ] del tipo cadena (String). Este parmetro es un arreglo o conjunto elementos del tipo de datos String, en donde cada elelemento es una cadena de caracteres. Este es el mecanismo a travs del cual se le pueden introducir parmetros a una aplicacin.
L

Lnea 7: Se llama al mtodo println de la clase System. que permite escribir en la pantalla de comandos. Es el mtodo clsico de escritura en aplicaciones. Lnea 8: corchete con el que se delimita el cuerpo del mtodo main(). Lnea 9: corchete que delimita el cuerpo de la clase Ejemplo01.

L L

Aplicaciones con lectura de datos


No todas las aplicaciones generan resultados sin lectura de datos, es necesario implementar las formas de introducir datos a este tipo de programas a fin de hacerlos generales y que respondan a las diferentes necesidades de lectura del usuario. Como se indic antes, dentro del cuerpo de parmetros del mtodo main(), se encuentra el arreglo args[], el cual contendr los valores que se digiten por la consola de comandos en el momento de ejecucin de la aplicacin. Paso de argumentos a una aplicacin Java Aunque las aplicaciones son programas autnomos, es necesario a veces pasarles argumentos u opciones. El paso de argumentos a una aplicacin Java se hace a travs de la ventana de comandos y como se indica a continuacin, para el caso de ejecutar una aplicacin llamada LeeEscribe, que leer una serie de cadenas de caracteres y las escribir en la misma ventana de comandos:
C:\trabajoJava\ejemplos>java LeeEscribe Chia Cali Buga Bogota

En este llamado a la aplicacin MiPrimerPrograma se le estn entregando como argumentos las cadenas, Cali, Buga, Bogota, Chia las cuales se separan por

El lenguaje de programacin Java: Aplicaciones 3 - 33 espacios y son pasados a la aplicacin mediante el arreglo de cadenas del llamado a main(). En el siguiente caso se tiene una aplicacin que permite que se introduzca cadenas de caracteres y los muestra en la lnea de comandos. Ejemplo 2: Desarrollar un programa en Java tipo aplicacin, que permita leer cadenas de carcteres y escribirlas por la lnea de comandos.
1.class LeeEscribe { 2. public static void main(String argumento[]) { 3. for (int i = 0; i < argumento.length; i++) 4. {System.out.println(Argumento +i + : +argumento[i]);} 5. } 6. }

7. Ejecute el programa anterior, obviamente despus de compilarlo con la siguiente instruccin en la linea de comandos:
C:\trabajoJava\ejemplos>java LeeEscribe Cali Buga Bogota Chia
L L

Lnea 1: declaracin de la clase LeeEscribe. Lnea 2: Declaracin del mtodo main(), cuyo argumento para entrada de datos es un arreglo de tipo String llamado argumento[].

Cuando la aplicacin se ejecuta, los argumentos ledos en la linea de comandos se almacenan en el arreglo que se ha definido como tipo String, de la siguiente manera:
argumento[0] guarda la cadena Cali o primer argumento. argumento[1] guarda la cadena Buga o segundo argumento. argumento[2] guarda la cadena Bogota o tercer argumento. argumento[3] guarda Chia o cuarto argumento.

As sucesivamente si se introducen mas argumentos, en este caso, nombres de ciudades. Debe anotarse que, en Java los arreglos se inician desde el indice elemento cero. Por eso se puede guardar en argumento[0], primera posicin del arreglo de argumentos, el valor que se lee primero que es la cadena Cali.
L

Lnea 3: es la instruccin de repeticin o ciclo, la cual indica que se debe repetir el conjunto de instrucciones que se encuentran dentro del par de llaves siguientes. El nmero de veces que se repite el ciclo est indicado por el numero de valores que la variable i (llamada ndice del ciclo o contador del ciclo),

El lenguaje de programacin Java: Aplicaciones 3 - 34 toma desde un valor inicial cero, i=0, hasta un valor de i menor que el nmero de elementos guardados en argumento[]. Si se introdujo cuatro cadenas, Cali, Buga, Bogot y Chia, el numero de elementos es cuatro, por tanto i tomar valores desde cero hasta tres. La siguiente expresin dentro de la declaracin del ciclo for es i++, lo cual indica que i se incrementa de uno en uno. De esta manera se asegura que i tomar los valores 0, 1, 2 y 3. Cuando tome el valor 4 no realiza el ciclo, pues la condicin de que i sea menor o igual que el numero de elementos de argumento[] es falsa. La expresion i < argumento.length, es una expresion lgica que toma el valor true siempre y cuando i sea menor que cuatro. La invocacin argumento.length, es un llamado al mtodo length que permite calcular el tamao o numero de elementos de un arreglo dado, en este caso del arreglo argumento[].
L

Lnea 4. Es el cuerpo del ciclo, formado en este ejemplo por una sola instruccin, con la cual se escribe en la lnea de comandos la palabra Argumento, seguida del valor de i,en el ciclo y del contenido del elelemento en la posicin i del arreglo de argumentos, o sea argumento[i]. Los siguientes son los resultados obtenidos para el ejemplo indicado:

Como se ha podido observar, los argumentos o datos a introducir en una aplicacin, se separan por al menos un espacio. Si se desea introducir una cadena compuesta por varias palabras, como uno de los argumentos, se debe delimitar con comillas. Por ejemplo si en lugar de Cali, se desea introducir su nombre completo que es Santiago de Cali, las intrucciones y resultados para las dos primeras ciudades serian como sigue:

El lenguaje de programacin Java: Aplicaciones 3 - 35

Applets
Un applet es un programa basado en operaciones de manejo de ventanas, por tanto su arquitectura es diferente de la de los programas normales o aplicaciones, como la vista anteriormente, la cual interacta con una consola o lnea de comandos. Estos programas tipo applet escritos en Java, pueden ser accedidos por un servidor Internet, distribuidos sobre la red, automticamente instalados y ejecutados en el sitio del usuario en un documento Web. Una vez el applet est en el equipo del usuario, tiene acceso limitado a los recursos locales, de tal manera que se puede generar una complicada interfaz multimedia, hacer complejas operaciones sin el menor riesgo de un virus ataque o se pierda la integridad de datos del sistema. Java contiene el paquete java.applet y tiene algunos mtodos que permiten gestionar las Applets. Para estas, la gestin de entrada y salida se hace a travs de la interfaz de la biblioteca bsica de Java y de palabras reservadas del lenguaje. Igual que en el caso del desarrollo de una aplicacin, para el caso de las Applets, una vez se la haya analizado y generado las soluciones algortmicas requeridas y las del modelamiento de objetos y sus clases para el caso de problemas modelados en orientacin a objetos, se contina con la escritura en cdigo fuente, la compilacin y la ejecucin. El siguiente cdigo corresponde a una aplicacin que presenta en la ventana del Applet un mensaje de bienvenida, lo mismo que haca la primera aplicacin. Ejemplo 3: Desarrollar un programa en Java tipo applet, que permita mostrar el mensaje Bienvenido a Java, vamos a aprender!! en la la posicin 10, 50 de una ventana de tamao 300 de ancho (width) por 200 de altura (height), en la pantalla.
import java.applet.Applet; import java.awt.Graphics; public class Bienvenido extends Applet { public void paint(Graphics elGrafico) { elGrafico.drawString(Bienvenido a Java, vamos a aprender!!, 10, 50); } }

Para poder ejecutar el Applet anterior, se debe compilar con javac, generando

El lenguaje de programacin Java: Applets 3 - 36 el archivo Bienvenido.class, el cual luego se incluye en la etiqueta Applet dentro del cuerpo de un archivo HTML, como se ilustra a continuacin y ejecutar el appletviewer con el llamado al archivo HTML creado. La figura siguiente ilustra el resultado de la ejecucin del Applet con el appletviewer del JDK.

Entre el Applet escrito en papel y el resultado exhibido en la ventana del Applet se han realizado los siguientes pasos:
L

Introducir el cdigo fuente, es decir, mediante un editor de texto como el NOTEPAD en Windows, o el EDIT en DOS, se toma el cdigo anterior y se digita, guardndolo en un archivo con el nombre:
Bienvenido.java

La extensin .JAVA denota una archivo fuente en Java. Obsrvese que el nombre del archivo corresponde al del Applet o clase Bienvenido, definida arriba.
L

Ahora se debe ejecutar la compilacin, para lo cual debe abrirse una ventana para introducir comandos e invocar a JAVAC, de igual manera que para el caso de las aplicaciones.
C:\trabajoJava\ejemplos>javac Bienvenido.java

Se genera un archivo Bienvenido.class si no se presenta aviso o error durante la compilacin. Se puede verificar en el directorio la existencia de este archivo. El siguiente paso debera ser la ejecucin, sin embargo por la misma naturaleza de la applet, esta solo se la puede ver en un visualizador como el Appletviewer o en un navegador, para lo cual debe llamarse dentro del cuerpo de un archivo HTML:
<HTML>

El lenguaje de programacin Java: Applets 3 - 37


<BODY> <APPLET CODE = "Bienvenido.class" WIDTH = "300" HEIGHT = "200"> </APPLET> </BODY> </HTML>

Para codificar lo anterior, ejecute un editor de texto, el Note Pad o el Edit, digite las lneas mostradas y almacene el archivo en el mismo directorio de su clase, con el nombre Bienvenido.html El cdigo anterior es la plantilla en HTML que se utiliza para incluir un applet Bienvenido.class en una pagina HTML. Observe que con los parmetros WIDTH y HEIGHT, se est definiendo el tamao de la ventana del applet.
L

El paso final es su visualizacin en la pantalla de la ventana del Applet. Puede hacerlo con un navegador abriendo la pgina respectiva. El JDK trae el visualizador Appletviewer para este archivo, el cual se ejecuta mediante las siguiente instruccin en la ventana de comandos:
C:\trabajoJava\ejemplos>appletviewer Bienvenido.html

Explicacin del cdigo fuente


1.import java.applet.Applet; 2.import java.awt.Graphics; 3.public class Bienvenido extends Applet 4.{ public void paint(Graphics elGrafico) 5. { 6. elGrafico.drawString(Bienvenido a Java, vamos a aprender!!, 0, 50); 7. } 8.}
L

Lineas 1-2: importacin de clases. En los Applets se usan y se crean objetos a partir de Clases predefinidas. El objeto applet es una extensin de la clase Applet, del paquete applet del Java, as mismo el Applet Bienvenido utiliza el ambiente grfico de la clase Graphics, del paquete AWT. Para facilitar el uso de clases existentes, bien las de Java o las elaboradas por los programadores, stas se organizan en paquetes. Dos de esos paquetes deben ser importados al applet mediante las primeras dos lneas de cdigo, con las cuales se le indica al compilador que el applet usar las libreras de clase awt y applet: La clase awt contiene las subclases y sus mtodos que permiten el manejo de operaciones de ventanas e interfaces grficas en general. De igual manera en la

El lenguaje de programacin Java: Applets 3 - 38 clase applet estn las que permiten que el explorador ejecute el applet. El uso de las libreras de clase en Applet, tanto de las de Java trae como las escritas por otros usuarios o el mismo programador, en las applets requiere del uso de la instruccin import para que el compilador use el cdigo requerido. En la compilacin, el compilador incluir automticamente el cdigo requerido y lo almacena en el cdigo de mquina virtual que se guarda en el archivo .class del applet. Las libreras de clase son archivos que contienen cdigo que se puede utilizar dentro de un applet, para realizar operaciones especficas. Las libreras de clase de Java se encuentran en el subdirectorio JAVA\LIB, abreviatura de librera y dentro de ste, carpetas que contienen los archivos de libreras de clase especficas.
L

Lnea 3: definicin de la clase Bienvenido. Cuando se crea una applet nueva, por ejemplo el applet Bienvenido, sta se hace a partir de una extensin (herencia) de la clase (u objeto) Applet del Java. El cuerpo del applet va entre el par de corchetes externos, los cuales indican agrupamiento. La estructura de la definicin de cualquier applet sigue la forma de la primera lnea, en donde lo que se cambia para otros casos es el nombre de Bienvenido por el requerido. Para el caso de la aplicacin presentada antes, se cre la clase Ejemplo01,en este caso la clase Bienvenido.
3.public class Bienvenido extends Applet 4.{ public void paint(Graphics elGrafico) 5. { 6. elGrafico.drawString(Bienvenido a Java, vamos a aprender!!, 10, 50); 7. } 8.}

Con la declaracin de la Lnea 3, se le est indicando al compilador la creacin de una nueva clase (del tipo applet) extendiendo o ampliando la clase applet ya existente. Esto se indica mediante la palabra reservada class para sealar la clase y extends para indicar que ampla por extensin a Applet. En la terminologa de objetos, la nueva clase hereda todas las caractersticas y mtodos de la superclase Applet. En pocas palabras, una clase de Java suministra una plantilla u horma, que definen las caractersticas (tanto datos del objeto como sus operaciones sobre stos datos) de los objetos. La palabra public le permite al navegador o visualizador ejecutar el applet. De esta manera la lnea 3 est indicando que se crea una nueva clase llamada Bienvenido a partir de la clase Applet ya existente y que se puede ver en un navegador o visualizador, ya que se declara como pblica. El cuerpo del Applet va entre corchetes.

El lenguaje de programacin Java: Applets 3 - 39


L

Lnea 4: Definicin del mtodo paint(), con el cual se dibuja la salida del applet en la ventana. Como se ver ms adelante, todas las applets, excepto las ms simples sobrescriben mtodos que suministran las operaciones bsicas mediante las cuales el navegador o el visualizador de applets puede controlar su funcionamiento, debido a la extensin de las clases. Algunos de esos mtodos son init(), start(), stop(), destroy() definidos en la clase Applet, y paint() definido en la clase Component del AWT. Todas las applets deben implementar al menos uno de los mtodos siguientes: init(), start(), paint(), adems de los mtodos que opcionalmente agregue el programador. El applet Bienvenido, solo implementa el mtodo paint(). Se tratar ms adelante, cada uno de estos mtodos en la Unidad sobre Applets. Al contrario de las aplicaciones, las applets no requieren implementar el mtodo main(). Las applets pueden implementar cualquier nmero de mtodos, as como mtodos del programador y mtodos que sobreescriben los mtodos implementados por las clases superiores de Applet. El mtodo paint() tiene como parmetro un objeto, elGrafico de tipo Graphics, el cual representa el contexto del dibujo en la pantalla del applet.

Lnea 6: Es el cuerpo del mtodo paint(). Est formado por un llamado al mtodo drawString(), que tiene como parmetro la cadena de caracteres de la bienvenida y la posicin (x,y) de la esquina inferior izquierda (10,50) del texto en la pantalla, dentro de la ventana del applet. Las coordenadas empiezan en (0,0), que corresponde a la esquina superior izquierda de la

El lenguaje de programacin Java: Applets 3 - 40 ventana del applet.

La figura anterior muestra la salida del applet Bienvenida llamando el archivo Bienvenido.html por el navegador Netscape. Para el caso de Linux, si no est en ambiente grfico, ejecute $startx y luego ejecute el navegador disponible abriendo la pgina indicada por el archivo Bienvenido.html.

Problemas resueltos
Los siguientes son algunos ejemplos de aplicaciones y applets de Java, que a ttulo de ilustracin muestran la forma como se trabaja en los dos tipos de programas. As mismo, a partir de esas estructuras de programa el estudiante puede hacer modificaciones que se ajusten a requerimientos de otros problemas, como los propuestos como ejercicios para desarrollar al final de la unidad. Problema 1: Modificar la aplicacin Ejemplo01, de tal manera que permita escribir varios mensajes.
/* Este version del primer programa en Java permite escribir varios mensajes. El nombre del archivo fuente es Ejemplo01a.java */ public class Ejemplo01a { // El programa se inicia llamando a main() public static void main(String args[]) { System.out.println(Bienvenido a Java, vamos a aprender!!); System.out.print(Este mensaje es otra linea); System.out.println( Y este en la misma!!); } } Su ejecucin da como resultado:

El lenguaje de programacin Java: Problemas resueltos 3 - 41

Problema 2: Modificar el programa anterior de tal manera que se escriban los mensajes con una sola instruccin.
/* Este version del primer programa en Java permite escribir varios mensajes con una sola instruccion. El nombre del archivo fuente es Ejemplo01b.java */ public class Ejemplo01b { // El programa se inicia llamando a main() public static void main(String args[]) { System.out.println("Bienvenido\na\nla\nProgramacion\nen\n
Java");

} }

El resultado es el siguiente:

Problema 3: Desarrollar un programa Java tipo aplicacin que permita leer y escribir cantidades numericas de tipo entero. La siguiente aplicacin es una modificacin de la clase LeeEsrcibe presentada antes. Aqu los datos que se escriben en la lnea de comandos se tratan en forma de enteros dentro del programa, mediante su conversin con el mtodo Integer.parseInt(). La expresin argumento.length, permite calcular el tamao del arreglo que contiene los parmetros de entrada, en este caso es el tamao del arreglo argumento[] de tipo String.
/* Esta aplicacion permite leer valores numericos y escribirlos en la linea de comandos */ class LeeEscribeInt {

El lenguaje de programacin Java: Problemas resueltos 3 - 42


public static void main(String argumento[]) { for (int i = 0; i < argumento.length; i++) { int num = Integer.parseInt(argumento[i]); System.out.println("Argumento " +i + " : " +num);} } }

Ejecute la aplicacin despus de compilarla, debe dar los resultados indicados :

Problema 4: Desarrolle un programa Java tipo aplicacin que permita leer valores enteros y calcular su suma. Ahora se tomar el ejemplo anterior y se modificar para que calcule la suma de los valores enteros suministrados por la lnea de comandos.
class LeeSumaInt{ public static void main(String argumento[]) { int suma = 0 ; for (int i = 0; i < argumento.length; i++) { int num = Integer.parseInt(argumento[i]); System.out.println("Argumento " +i + " : " +num); suma = suma + num; } System.out.println("La suma de los valores es: "+suma); } }

Al ejecutarse la clase compilada, da los resultados indicados:

El lenguaje de programacin Java: Problemas resueltos 3 - 43

Problema 5: Desarrollar una aplicacin Java que permita leer tres valores enteros diferentes, mayores que cero y menores que 100. Calcular su suma, el mayor valor y el menor valor de los tres.
class SumMayMen{ public static void main(String arg[]) { int suma = 0 ; int menor = 100; int mayor = 0; for (int i = 0; i < 3; i++) { int num = Integer.parseInt(arg[i]); if(num <= menor) menor = num; else if (num >= mayor) mayor = num; System.out.println("Argumento " +i + " : " +num); suma = suma + num; } System.out.println("La suma de los valores es: "+suma); System.out.println("El menor valor es = "+menor); System.out.println("El mayor valor es = "+mayor); } }

Al compilarse y ejecutarse, da los resultados indicados:

El lenguaje de programacin Java: Problemas resueltos 3 - 44

Problema 6: Desarrollar un programa en Java tipo applet que permita dibujar varios mensajes en diferentes partes de una ventana de 300 de ancho por 100 de alto.
import java.applet.Applet; iimport java.awt.Graphics; public class Bienvenidoa extends Applet { public void paint(Graphics elGrafico){ elGrafico.drawString("Mensaje No. 1", 10, 50); elGrafico.drawString("Mensaje No. 2", 20, 70); elGrafico.drawString("Mensaje No. 3", 30, 90); } }

Una vez compilado se invoca a partir del siguiente archivo HTML,


<HTML> <BODY> <APPLET CODE = "Bienvenidoa.class" WIDTH = "300" HEIGHT = "100"> </APPLET> </BODY> </HTML>

Dando el siguiente resultado en la ventana del appletviewer

El lenguaje de programacin Java: Problemas resueltos 3 - 45

Problema 7: Desarrollar un applet que permita leer valores enteros y calcular su suma acumulada cada vez que se lea un valor, exhibiendo el resultado en la barra de estado del applet.
1.// Programa para sumar enteros 2.import java.awt.*; // importa el paquete java.awt 3.import java.applet.Applet;// importa el paquete java.applet.Applet 4.public class SumaEnteros extends Applet { 5. Label mensaje; // mensaje de entrada 6. TextField entrada; // entrada de valores 7. int numero; // almacena numero entrado 8. int suma; // almacena suma de los enteros 9. 10. // inicializa componentes de la interface grafica del usuario 11. // se inicializan variables 12. public void init() 13. { 14. mensaje = new Label( "Digite un entero y presione Enter:" ); 15. entrada = new TextField( 10 ); 16. add( mensaje ); // coloca el mensaje en el applet 17. add( entrada ); // coloca la entrada en el applet 18. suma = 0; // asigna cero a la suma 19. } 20. 21. // procesa las acciones del usuario en el texto entrada 22. public boolean action( Event evento, Object objeto ) 23. { 24. numero = Integer.parseInt( objeto.toString() ); 25. // obtiene numero 26. entrada.setText( "" ); // limpia campo de

El lenguaje de programacin Java: Problemas resueltos 3 - 46


entrada 27. suma = suma + numero; // agrega el numero a suma 28. showStatus( Integer.toString( suma ) ); 29. // muestra resultado 30. return true; // la accion del usuario se ha procesado 31. } 32.} 33.

Aqu se ha usado la versin depreciada (deprecated) del manejo de eventos, por lo cual dara un mensaje de advertencia (warning) al ser compilado, sin embargo el programa se ejecuta correctamente. Luego de su compilacin, se ejecuta el appletviewer, invocando el siguiente archivo HTML, que define un tamao de ventana para el applet SumaEnteros de 300 por 30.
<html> <applet code="SumaEnteros.class" width=300 height=30> </applet> </html>

Se presenta el siguiente resultado en la ventana del appletviewer o en un navegador, despues de haberse suministrado algunos valores.

Por la relativa complejidad de este ejemplo, se explicarn en detalle los diferentes aspectos de este programa. Tambin es necesario aclarar que su tratamiento es de tipo informativo y que no se pretende agotar los diversos temas tratados en este ejemplo. Los diferentes casos sern tratados con su debida profundidad en unidades posteriores. Sin embargo, este ejemplo y los dems le pueden permitir al estudiante utilizarlos como patrones para desarrollar otros ejemplos:
L

Lnea2-3: Con la instruccin import se importa el paquete java.awt con

El lenguaje de programacin Java: Problemas resueltos 3 - 47 todas sus clases ya que se manejar el ambiente grfico de la interfaz grfica de usuario, como la ventana de texto y el mensaje que se escribe. Igual se importa java.applet.Applet, puesto que se esta creando una applet.
L

Lnea 4-32: Es el cuerpo de la clase SumaEnteros, que hereda o sea que toma todas las caractersticas provenientes de Applet. Se forma de dos mtodos: init() y accion(). Lneas 5-8: Esta creando las variables mensaje de tipo Label o etiqueta, entrada de tipo TextField o campo de texto, numero y suma de tipo entero. Lneas 12-12: Es el cuerpo del mtodo init(), el cual es un mtodo propio de las applets y se utiliza para inicializar variables y hacer referencias que se usarn en el applet. Este mtodo se invoca automticamente cuando se inicia la ejecucin del applet y se garantiza que es el primer mtodo invocado.

La primera lnea del mtodo init()siempre es public void init(), que indica que es un mtodo publico y que no devuelve informacin (void).
L

Lnea 14: Se crea un objeto mensaje del tipo Label, que contiene la cadena Digite un entero y presione Enter:. Esta cadena es el ttulo que aparece al lado izquierdo del campo texto entrada donde se introducen los datos. Lnea 15: Se crea un objeto entrada de tipo TextField de tamao 10 posiciones o caracteres, que es donde se digitarn los datos a leer por el applet. Lneas 16-17: Colocan los objetos mensaje y entrada en la ventana del applet, a fin que el usuario pueda interactuar con estos. Lnea 18: Inicializa la variable suma en cero. Lneas 22-31: Es el cuerpo del mtodo action(Event e, Object o), declarado pblico y que devuelve un valor booleano (true o false), cuando se termina su trabajo, por eso no tiene la opcin void. Este es un mtodo propio del JDK, que aqu se sobreescribe, para procesar la accin del usuario. Corresponde al modelo de manejo de eventos por propagacin, propio de la versin JDK1.0. En la versin JDK1.2.1 se maneja alternativamente el modelo de delegacin de eventos que se tratar en la Unidad sobre manejo de eventos. Los dos argumentos de este mtodo son: un evento ( Event) y un objeto (Object). Con el evento se determina que evento sucede en el applet y con objeto s dispone la informacin para ese evento. Por ejemplo, cuando se teclea Enter despus de teclear el valor en el campo de texto, el argumento objeto contiene el campo que esta en el campo texto, o sea el digitado.

L L

El lenguaje de programacin Java: Problemas resueltos 3 - 48 Nota: al compilarse este ejemplo saldr un mensaje (warning) indicando que el mtodo action() esta depreciado (deprecated en ingles), puesto que en la versin JDK1.2.1 se utiliza otro sistema para el manejo de eventos, en este caso para el teclado, sin embargo el programa funciona.
L

Lnea 24: Entre parntesis se llama al mtodo toString, para convertir el objeto ledo en una cadena de caracteres, mediante la invocacin objeto.toString. Ahora esa cadena se convierte a entero mediante un
llamado al mtodo Integer. parseInt. Se guarda ese valor en la variable

numero.
L Lnea 26: Se limpia el campo de

entrada utilizando el mtodo setText de la clase TextField, asignndole la cadena vaca , o sea ningn caracter al campo de entrada. Esto borra el texto que haba introducido el usuario. numero a la variable suma.

L Lnea 27: Agrega el valor de

L Lnea 28: Aqu se escribe el resultado almacenado en la variable

suma, en la barra de estado, del applet, que se encuentra en la parte inferior de la ventana del appletviewer. En los navegadores se encuentra en la parte inferior de la pantalla. Se utiliza el mtodo showStatus de la clase Applet para colocar una cadena (String) en la barra de estado.

El parmetro de este mtodo es Integer.toString(suma), que convierte el valor entero de suma en una cadena (String).
L Lnea 30: Es el valor que devuelve el mtodo

accion(), indicando que se ha procesado las acciones del usuario y queda listo para otro proceso de lectura.

Problema 8: Desarrollar un applet Java que permita leer el valor del radio de una esfera y calcular su volumen. El resultado se debe dar en la barra de estado del applet.
import java.applet.Applet; import java.awt.*; public class VolEsfera extends Applet{ Label solicitud; TextField entrada; public void init() { solicitud = new Label ("Digite el radio de la esfera"); entrada = new TextField(10); add(solicitud); add(entrada); } public boolean action(Event e, Object o) { Double valor = new Double(o.toString());

El lenguaje de programacin Java: Problemas resueltos 3 - 49


double radio = valor.doubleValue(); showStatus("El volumen de la esfera es "+ Double.toString(volumen(radio))); return true; } public double volumen(double radio) { double volumen; volumen =(4/3)*Math.PI*Math.pow(radio,3); return volumen;
} }

El archivo VolEsfera.html siguiente se utiliza para llamar al applet mediante el appletviewer:


<html> <applet code="VolEsfera.class" width=390 height=70> </applet> </html>

El resultado obtenido es el siguiente para un valor del radio de 12:

Problema 9: Desarrollar un programa Java tipo applet que permita dibujar en la ventana del applet 100 circunferencias de diametro 20 pixeles ( es la unidad de medida en la panatlla en modo grfico) en posiciones generadas aleatoriamente. Este ejemplo trae elementos de alguna complejidad como es el de dibujar figuras geomtricas y la utilizacin del mtodo random() de la clase Math. Se utiliza el mtodo getSize() para tomar el valor del parmetro width y height, del applet de tal manera que el rea de graficacin de los circulos est dentro de estos limites.
import java.applet.Applet; import java.awt.Graphics;

El lenguaje de programacin Java: Problemas resueltos 3 - 50


import java.awt.Color; public class Circulos extends Applet{ public void paint (Graphics g){ int posi, posj, i; for (i = 1; i <= 100;i++){ posi = (int)(Math.random()*(getSize().width-20)); posj = (int)(Math.random()*(getSize().height-20));

g.drawOval(posi, posj, 20,20); } } }

El cual al ser compilado e invocado por el siguiente programa HTML,


<html> <applet code = "Circulos.class" width = 400 height = 200> </applet> </html>

Da el siguiente resultado en la pantalla:

El lenguaje de programacin Java: Recapitulacin 3 - 51

Recapitulacin
Se han presentado los elementos que caracterizan al lenguaje de programacin Java, como un lenguaje moderno de programacin, desarrollado para operar en la red y para permitir el desarrollo de programas bajo el enfoque de Objetos. Se ha presentado la estructura del JDK as como la manera de cargarlo para hacerlo operativo. De igual manera se ha resaltado la importancia del Java en trminos de su rpida evolucin y cobertura. Se ha caracterizado la diferencia entre Aplicaciones y Applets, las cuales se ilustran con la secuencia de pasos requeridos para hacerlas operativos en el computador o a travs de un navegador. Se han includo algunos ejemplos a ttulo de ilustracin que bien pueden ser tomados como plantillas o patrones para desarrollar otros ejercicios similares, por cuenta del estudiante. Co estos ejemplos el estudinte podr hacer modificaciones para crear nuevos programas.

Ejercicios
Los siguientes ejercicios pueden llevarse a cabo tomando como patrones para su desarrollo los ejemplos resueltos presentados esta unidad as como los ejemplos resueltos en lenguaje Java presentados en la Unidad 02. El prposito es que el estudiante se vaya familiarizando con el entorno y las caractersticas brindadas por el lenguaje de programacin Java. 1. Desarrollar una aplicacin Java que permita dibujar una figura rectangular formada con asteriscos de tamao 10x15 asteriscos. 2. Desarrollar una aplicacin que genere la tabla de multiplicar de cualquier numero entre 1 y 100. Se debe suministrar el numero de la tabla, por ejemplo para la tabla del 7, se debe suministrar el valor 7. La tabla generada es el resultado de multiplicar dicho numero por los digitos del 1 al 10. 3. Desarrollar una aplicacin que permita calcular la hipotenusa de un tringulo rectngulo dados sus dos catetos. 4. Desarrollar una aplicacin que permita ller las coordenadas de dos puntos P1 y P2 en el plano cartesiano y calcular la longitud del segmento que los une y la pendiente de la recta que pasa por esos dos puntos. 5. Elabore una applet que permita calcular el valor de S expresado segun la siguiente serie, tomando los N primeros trminos. El valor de N debe ser

El lenguaje de programacin Java: Ejercicios 3 - 52 ledo por pantalla. S = 1 3 + 5 7 + 9 -11 + 13 ....... 6. Desarrolle una aplicacion que permita evaluar la funcion f(x) = x*x 6 , en el intervalo a= 1 y b= 5, a incrementos dx= 0,5. Se debe escribir el valor de la funcion y el de la ordenada x. 7. Desarrolle una applet para el ejercicio anterior, en donde los valores a y b se leen por pantalla y el resultado se da en la barra de estado. 8. Desarrolle una applet que permita calcular y visualizar en pantalla la suma de los N primeros terminos de la serie:

( 1) n +1 1 1 1 1 1 +/ + Sn = 1 + + ( 2 n 1)! 3! 5 ! 7 ! 9 ! 11!
El valor de N debe ser elido por pantalla. 9. La serie de Fibonacci est definida por: u0 = 0 u1 = 1 u = u + u para n entero mayor o igual a 1 n n 1 n +1 Desarrolle una applet que permita generar los primeros N trminos de la serie y su suma. El valor de N debe leerse por pantalla. 10.Desarrolle una aplicacin que permita leer los nombres de 5 artculos diferentes con sus respectivos precios y calcular el de menor valor, escribiendo su nombre y su valor. Asi mismo calcular el de mayor valor, escribiendo su nombre y su valor. 11.Desarrolle una aplicacin que permita evaluar la funcin f(x) = x*x 6 , en el intervalo a= 1 y b= 5, a incrementos dx= 0,5 y ecribir solamente el intervalo donde la funcin cambia de signo. 12.Consulte la documentacin del Java, localice la clase Graphics y averigue la forma de dibujar diferentes figuras geometricas. Modifique el problema 9 para dibujar otro tipo de figuras.

You might also like