You are on page 1of 11

5

C API T U LO

En este capitulo haremos una breve introduccion al lenguaje de Java 1,


mostran-do la relacion entre el modelado en UML 2 y la programacion en Java,
y se des-cribiran algunos aspectos relevantes para el desarrollo de los capitulos
poste-riores del libro.

5.1 Introduccion a Java


Para apreciar el gran movimiento que hay detras de Java, es necesario com-
prender que es mucho mas que un lenguaje, mas bien es un sistema de gran
alcance. En cierta manera, desato un fenomeno parecido al de Smalltalk hace
20 anos, gracias al sistema que tenia alrededor de su lenguaje. For tanto, en
esta seccion analizaremos las caracteristicas principales del lenguaje de Java,
para despues seguir con otros aspectos significativos.

5.1.1 Caracteristicas
El lenguaje de Java tiene caracteristicas que lo han hecho un lenguaje esencial
para la programacion de sistemas de computo, que consta de los siguientes
puntos:

Orientado a objetos. Ante todo Java es un lenguaje orientado a objetos, lo


cual lo pone en la misma categoria que lenguajes como C++ y Smalltalk.
Como parte de esta caracteristica, se cuenta con un ligado dinamico
(dynamic linkage) de clases en tiempo de ejecucion, herencia y polimorfis-
mo; ademas de aspectos de metanivel similares a los de Smalltalk.
Portatil. Un aspecto que ha hecho de Java un lenguaje muy utilizado es su
portabilidad. A diferencia de lenguajes como C y C++, que varfan en su
detalle dependiendo de la maquina en que se ejecuten, Java es exactamen-
te igual en cualquier plataforma. For ejemplo, a diferencia de C y C++,el
tamano de los tipos de datos en Java es fijo, independiente de la maquina. La
importancia de este aspecto es que si se compila el programa en una
plataforma particular, el sistema correra en cualquier maquina, reduciendo
mucho el costo de desarrollo (tiempo y dinero). Para ello, esta el concep-to de
la maquina virtual de Java (Java Virtual Machine, JVM), que debe existir en
cada plataforma donde se ejecute un programa de Java.
Abierto. Este aspecto de portabilidad ocurre gracias a su diseno abierto, que
permite a cualquier compania, e incluso desarrollador, tomar el codi-go
fuente, para adaptarlo a una nueva plataforma donde aun no se ha pro-bado.
Niriguno de los demas lenguajes ofrecen esta caracteristica. Otra razon de la
gran popularidad de Java.
Gratis. Muy de la mano con el aspecto "abierto" esta que el lenguaje se ofrece
gratis, aunque bajo licencia, a cualquier usuario. Esto reduce el costo de la
aplicacion y fortalece la decision de utilizarlo en distintas plataformas, donde
no se incurre en el costo de pagar gran numero de licencias, como es
obligatorio en la mayoria de los demas productos.
Integrado a la web. Este es uno de los aspectos que ha impulsado la gran
difusion de Java, en una epoca donde la Internet ha sido de crucial impor-
tancia. Java es el unico lenguaje, con excepcion de algunos lenguajes scripts,
que viene integrado con los navegadores (browsers) mas utilizados en la Web.

Simple. Otro aspecto es su similitud con C y C++, en relacion con las ex-
presiones basicas del lenguaje. Esto ha permitido a los programadores apren-
der Java de manera mas rapida, a diferencia de lenguajes como Smalltalk que
requieren un cambio en la manera de pensar de los programadores ya
acostumbrados a C y C++. Sin embargo, Java se considera maspwro que C++,
ya que no contiene mas que clases, lo que simplifica el programa y al pro-pio
compilador. Java disminuye la complejidad de C++, como es la aritmeti-
ca de apuntadores, que a su vez agrega complejidad a la administracion de
memoria. Se elimina la complejidad adicional de tipos como estructuras y el
uso de asociaciones de tipo, a traves de typedefs, junto con el preprocesa-dor
de C++ con palabras reservadas como #define, ^include y #ifdef. Otro aspecto
que se elimina es la sobreescritura de operadores. Tambien se eli-minan
aspectos de manejo complicado como la herencia multiple.
Robusto. En contraste con C++ y, en especial, con C, Java esta fuertemen-te
tipificado, lo que ayuda a encontrar con mayor facilidad los errores de
programacion durante la etapa de compilacion. Java tambien incluye mane-jo
de excepciones y recoleccion de basura, con objeto de lograr programas mas
robustos.
Seguro. Debido a la eliminacion de los apuntadores de C y C++, Java logra un
modelo de manejo de memoria mucho mas seguro, que ademas se apoya en el
modelo de verificacion de codigo en tiempo de ejecucion, como ve-remos mas
adelante en la descripcion del modelo completo de Java.
Eftciencia. En la actualidad, Java esta considerado como un lenguaje efi-
ciente. Aunque nunca llegue a la eficiencia de C, en este aspecto se le compara
con C++. Esta eficiencia se basa en que cuenta con un compila-dor para
generar el codigo en contraste con aquellos lenguajes completa-mente
interpretados, donde el rendimiento es menor. Ahora Java cuenta con un
compilador incremental (Just-in-Time Compiler, JIT), que ayuda a lograr estos
objetivos.
130 130 CAP. 5 PROGRAMACION
ORIENTADA A OBJETOS CON JAVA
Bibliotecas. Otro aspecto que ha hecho de Java un lenguaje muy aceptado es la
riqueza de sus bibliotecas o paquetes (package). Esto esta en contras-te radical
con C y C++, donde las bibliotecas realmente no existen. En cam-bio Java
contiene un gran numero de bibliotecas que facilitan la creacion de programas,
ademas de asegurar una estandarizacion entre aplicaciones. Exis-ten
bibliotecas para el manejo de estructuras de datos avanzadas, manejo de
multimedia, manejo de redes como TCP/IP, procedimientos remotos y con-
currencia mediante multiples hilos deprocesamiento (multiple threads), estos
ultimos tambien conocidos como procesos finos o Hvianos. En la actualidad,
aprender el lenguaje de Java como tal es solo 10% del esfuerzo, 90% restan-te
se enfoca a aprender a utilizar sus bibliotecas. Obviamente se estudian solo
aquellas que se desea conocer. Por ejemplo, una biblioteca importante es la del
sistema de ventanas que puede correr bajo cualquier plataforma. Existe el
Abstract Window Toolkit (AWT) desde la primera version de Java, y se cuenta
en la actualidad con las bibliotecas Java Foundation Classes (JFC), tambien
conocidas como SWING. Ademas de estas existen bibliotecas de ma-nejo de
graflcas en dos y tres dimensiones. Incluso existen versiones para correr en
plataformas moviles, como asistentes personales.
Tecnologia. Existe un gran numero de productos y tecnologia desarrolla-dos
alrededor de Java. Aparte de este lenguaje se cuenta con productos tales como
Enterprise JavaBeans (EJB), Java Server Pages (JSP), Java Servlets y Java
Data Base Connectors (JDBC). Ademas, existen productos relaciona-dos con
estandares tales como Common Object Request Brower Architec-ture
(CORBA) y extended Markup Language (XML). En la actualidad hay tres
ediciones principales Java: Java2 Enterprise Edition (J2EE), Java2 Stan-dard
Edition (J2SE) y Java2 Micro Edition (J2ME).

5.1.2 Procesamiento
La figura 5.1 ilustra el procesamiento de un programa escrito en Java. Del lado
izquierdo se muestran los pasos para la compilacion de un programa en Java,
mientras que del derecho estan los pasos para su ejecucion.

Figura 5.1 Procesamiento de un programa escrito en Java.

INTRO
DUCCI
ON A
m
COMPILACION

Se escribe un programa en codigo Java utilizando el sufijo ".Java", el cual se compila


mediante cualquiera de los compiladores de Java en alguna de las dis-tintas
plataformas. En general, debe haber un archive ".Java" por cada clase que exista en el
programa, donde el archive tendra el mismo nombre que la clase contenida. El
compilador genera el codigo final, conocido como bytecode, a ser interpretado por la
maquina virtual de Java. El programa generado tiene como extension el sufijo ".class".
Se origina un archivo ".class" por cada clase que se tenga en la aplicacion.

Por ejemplo, si se tiene una clase llamada "ej", el nombre del archivo debe ser
"ej.java". El archivo se compilaria mediante algun ambiente de desarrollo o utilizando
el comando j avac que viene incluido en los kit de desarrollo de Java como Java
Development Kit (JDK) o Standard Development Kit (SDK). Por ejem-plo, para
compilar el archivo anterior se ejecutaria

javac ej.Java

Esta compilation resultaria en el archivo "ej.class".

EJECUCION
Durante la ejecucion se obtiene el bytecode, guardado en los archives ".class", que
puede estar ya en la plataforma actual o haber sido enviado por la red, como en el caso
de un browser. El bytecode se carga en la maquina virtual por el cargador de clases. A
continuacion este codigo es procesado por el verifica-dor de bytecode y, dependiendo
del hardware con que se cuenta, puede ser in-terpretado y ejecutado por el procesador
virtual de la maquina o traducido al codigo de un procesador de Java mediante el
generador de codigo.

Existen dos maneras de ejecutar (y estructurar) un programa dependiendo de su


ambiente de ejecucion. En el caso de una aplicacion "normal" (stan-dalone), se
ejecuta mediante el siguiente interpretador de Java, llamado sim-plemente Java:

Java ej2

En el caso de una aplicacion que se ejecuta desde un navegador web (web


browser), llamado applet, el contenido de los archives .class que estan al-
macenados en el servidor, se transmiten a traves de la red y se ejecutan en la
maquina cliente (que puede ser la misma maquina que el servidor). Dado que un
browser solo comprende archivo .html, el applet debe ser relacio-nado con un
archivo llamado, por ejemplo ej. html. Este archivo debe con-tener la siguiente
linea:

<applet code=ej .class width=200 height=200x/applet>

Ya que pueden haber multiples archives .class, solo el principal es el que se incluye en
la linea anterior. Otra forma adicional de ejecutar el applet es me-diante el comando
appletviewer, de la siguiente forma:

appletviewer ej.html

132 130 CAP. 5 PROGRAMACION


ORIENTADA A OBJETOS CON JAVA
A lo largo del capitulo iremos describiendo con mayor detalle el desarrollo de
programas en Java junto con ejemplos.

5.1.3 Bibliotecas
Java lleva a un nuevo nivel el concepto de bibliotecas o paquetes, estos pro-veen una
amplia funcionalidad para crear nuevas aplicaciones de Java.Ademas de servir como
bibliotecas, definen una Application ProgramInterface (API)[in-terface de aplicacion
de programa], que permite al desarrollador extender las clases de estos paquetes para
adaptarlos a las necesidades basicas de un pro-grama. Java organiza estos paquetes en
componentes jerarquicos a partir de dos directorios principales. El primero es Java,
que es parte esencial de lo que ac-tualmente se conoce como el API 1 de Java. Los
paquetes de este API se mues-tran en la tabla 5.1.

Tabla 5.1 Paquete:


Contenido
Paquete
Clases para implementar applets, correspondientes a aplicaciones
Java.
que corren en los browsers.
applet
Clases para graficas, componentes Graphic User Interface (GUI) y
administradores de control de ventanas, ademas de clases mas
Java.awt especializadas como para procesamiento de imagenes Abstract
Window Toolkit (AWT).
Clases e interfaces para construir JavaBeans,
Java.
correspondientes a GUI independientes de plataformas.
beans
Clases para control de entradas y salidas, tales como
java . i archives y streams. Clases que componen el nucleo del

o lenguaje.

java.la Clases para aritmetica avanzada, incluyendo manejo de


precision numerica arbitraria.
ng
Clases relacionadas con el manejo de redes, tales como
Java.
datagramas y sockets. Clases para el manejo de metodos remotos.
math
Clases para aspectos de seguridad, tales como criptograffa.
Clases para acceso a base de datos con el lenguaje Standard Query
java.net 1
Language (SQL).
Java. rmi Clases para internacionalizacion del idioma, independiente del lenguaje
Java. particular.
security Clases adicionales, tales como estructuras de datos avanzadas y
compresion de datos.
java.sql

Java. text
java.util

En la actualidad se cuenta con el API 2 de Java, mejor conocido como Java2, el cual
incluye ademas del paquete Java, el paquete javax, donde se encuen-tran componentes
mas avanzados, como se muestra en la tabla 5.2.
En Java, cada clase debe ser parte de un paquete (package), y puede ser refe-rida por
su nombre completo "calificado", el cual consiste en la jerarquia del paquete y el
nombre de la clase, todos separados por puntos. Los propios nom-bres de los paquetes
generalmente estan compuestos de multiples componen-

INTRODUCCION A JAVA
W
Tabla 5.2 Paquetes extendidos de Java.
g javax. rmi javax.
Paquete
sen/let javax. sql
j avax .
accessi javax. swing
bi 1 i ty
javax. transaction
javax.
activation
javax.ejb
j
a
v
a
x
.

j
m
s

j
a
v
a
x
.

m
a
i
l

j
a
v
a
x
.

n
a
m
i
n
Contenid n de los componentes de
o JavaBeans.
Clases Clases para el manejo de
que Enterprise Java Beans (EJB).
definen Clases para el manejo de Java
contratos Message Server (JMS).
entre
Clases para el manejo de
compone correo.
ntes de
interface Clases para el acceso de los
servicios de nombres.
s de
usuario y Clases para la invocacion de
una metodos remotos incluyendo
tecnologi CORBA.
a Clases para el manejo de
asistente servlets y Java Server Pages
que (JSP).
provee Clases para el acceso a base
acceso a de datos conSQL.
esos Clases que proveen un
compone conjunto de componentes para
ntes.
GUI que trabajan en cualquier
Clases plataforma.
que
definen Clases para el manejo de
activacio transacciones entre
componentes.

tes separados por puntos. For ejemplo, la


clase PixelGrabber que se encuentra en el
paquete java.awt.image se ingresaria
mediante:

j ava.awt.i mage.Pi xelGrabber

Vale la penar notar que los paquetes se


guardan en distintos directories, donde el
"." realmente corresponde a "/" ("\" en la
PC), donde se traduce, por ejem-plo Java.
awt. image a j ava/awt/i mage. Por tanto,
la clase PixelGrabber estaria guardada
dentro del directorio anterior.

Ademas de los paquetes mencionados en


las tablas 5.1 y 5.2, existe un nume-ro
muy extenso de productos adicionales
desarrollados por Sun y otras compa-nias,
como los paquetes para graficas en dos y
tres dimensiones que son tam-bien parte
de Java, y los paquetes para acceso a
bases de datos de Oracle y Sybase.
5.2 Programacion
basica
En las siguientes secciones se describen
algunos de los conceptos basicos de la
programacion en Java.

5.2.1 Aspectos generates


COMENTARIOS

El primer aspecto que debe conocerse en


cualquier lenguaje es como distinguir
entre codigo y comentarios. En Java
existen tres tipos distintos para la especi-
flcacion de comentarios, como se
muestra en la tabla 5.3.
134 CAP. 5 PROGRAMACION ORIENTADA A OBJETOS CON JAVA

You might also like