Ciencias Basicas e Ingenieria
Computaciun
Primer Prototipo para
la
Generación del
Coeficiente
de
P a ~ ~ c ~ p a ~ ~ ~ ~
POR
Delgado Varela, Carmina.
Otvera Lbpez, Leodegario.
Peña Rodriguez, Luis Miguel.
AGRADECIMlENTOS
...
I
CONTENIDO
...
111
PRESENTACI~N
...
x
AVANCE
...
Xlll
Lo que se hizo...
x111I d o que falto
...
xivCAPíTULO
I
.
ANALISIS
Y
DISEÑO ORIENTADO A OBJETOS CON
RATIONAL ROSE
...
3
...
1.1. 1.1.1. 1.1.2. 1.1.3. 1.1.4. 1.1 5 . 1.2. 1.2.1. 1.2.2 1.2 3 1.3. 1 3 . 1 . 1.3.2. Diagrama de Use Case...
3Use Case . . . 4
Actor . . . 4
Relaciones ... 3
Estereotipos . . . 4
Ejemplo . . . 5
Diagrama de Estados
...
6Estado . . . 7
7 ranslclon de estado . . . 7
Ejemplo . . . 7
. . . .
Diagrama de Clases...
9Clase . . . 9
1.4- Modelo ~ ~ ~ 1 ~ r ~ ~ ~ ' r i e ~ ~ ~ ~ ~ (de tres capa?)
...
1.3I *B* ~~~~~~~~ dc componenles
...
18I I, ! C'omponcnt t. . . . .1%
I
b
:
ite1;ti:icm.x . . . IC! I.
8. rhumen...
38TS
...
39
2.1. .Applets ... 39
2 i i . Ejemplo . . . . . . 40
" I ? litiquetar: bitsicas en las p a s j r m ; i1TML que itrzitlyerl q1pict5 . . 4 Y 11
r
.4 . I:11:rryh4::
. . . . . . . . . . L 2 - Q'arnctrristicas de los appletv...
43z+s
.
(I:iCIo d t. vidir d e [IN rpplr&...
44Proyecto de Investigación II
CAPITULO 3
.
HERRAMIENTAS DE JDK
...
47
3.1. Comando SET
...
473.2. Comando PATH
...
473.3. Estructura de archivos de Java Developer’s Kit (JDK)
...
483.4. Estableciendo la ruta de clases
...
483.4.1. Descnpclon ... 49
3 4.2. Entendiendo la ruta de clases y los paquetes ... 49
3 4.3. Directorios y clases empaquetadas . . . SO 3.4.4. Diferentes especificaciones ... SO . ., 3.5. Herramientas bLieas
...
503.5.1 . javac.exe ... 50
3.5.1 . 1 . Sinopsis ... SO 3.5. 1 . 2. Descnpclon . . . 51
3.5.1.3. Opciones ... 51
3 . S . 1.4. Ejemplos ... 52
3.5.2. java-exe ... 54
3.5.2.1 . Sinopsis ... 54
3.5.2.2. Descnpcmn 54 3.5.2.3. Opciones . . . 54
. I,
. .
r ... 3.5.3. appletviewer.exe ... 553.6. Resumen
...
55CAPíTULO
4
.
CONOCIMIENTOS BÁSICOS DEL TRABAJO EN RED (EN
INTERNET)
...
57
4.1. Puertos
...
58CAPíTULO 5
.
THREADS
...
61
5.1. ¿Qué es un thread?
...
615.1.1. Caractenstlcas de
. .
los hilos . . . 625 . 1.2. LJn ejemplo practico
. .
. . . 625.2. Creaclon de thread
...
635.2.1. Implementacton ... 63
5.2.2. Herencia . . . 04
..
.. 5.3. Estados de un thread...
655.3.1. Cxeacion ... 65
5.3.2 Activo o ejecutable . . . 66
5.3.3. Dormido ... 66
5.3.4. Muerto ... 68
S 3.5. E-jemplo practlco . . . ~ ... 68 1 . .
. .
5.4. t'rioridades de los threads ... 70
5.1. i Tratamiento de las pritrridades . . . .70
A
P
I
6
.
~
SERVLETS
~
~
...
~
9~G.1. Intrtrducclbn a los Setvlrls
...
..,.oa...Is
90 h I . i i 41 Scrdet Sencillo . . . 0 1 tr I 2 . .%rquitectwa del Paqucte Scrvic? . . . 0 1 6.3. El Ciclo de Vicia de UII Servlel...
986:
I m(i' oinicializar cm Serviet . . . 90t> 7 2 Dest tuir- un Scn Ici . . . 99
6 - 4 Grabar el Estada del ..6.el.t....
...
1016-4 I Sepin~ier~to de Sesibn . . . . . 102
b 4.' Corno utilizar r'clokiet; . . . . . . 105
CAPíTULO
7
.
PROCESO
BE
ANikLISIS
...
-719
. . Proyecto de Investigación II
.___ ~ ~~~~ ~
7 1.2. Modelo de interfaz ... 140
7.1.3. Modelo del dominio del problema ... 148
7.2. Resumen
...
150CAPíTULO
8
.
LOS APPLETS DEL PROYECTO
...
151
8.1. Establecimiento de las variables de ambiente
...
1518.2. Diseño para la clase de interfaz cIPrincipal
...
1528.2.1. Primer propuesta ... 153
8.2.1 . I . Jerarquía de clases y relaciones ... 153
8.2.1.2. Jerarquía de componentes y dependencias. . . 155
8.2.1.3, lngenrerm hacia delante ... 157
8.2.1.4. Programaclon y compdacmn 158 8.2.1 .S. Pagina HI”L y corrida ... 162
8 2.1.6 Ingenlerla hacia atrás 163 . . . / . . , ... . . . . ... 8.2.2. El diseño obtenido para la clase cIPrincipa1 ... 164
8.3. Diseño del resto de los applets
...
1678.3 1 . La clase de interfaz clFolioDocOficial ... 167
8.3.2. La clase de interfaz clConsulta ... 169
8.3.3. La clase de interfaz clRegistraSo1 ... 171
8.3.4. La clase de control cCValida ... 173
8.3.5. Todas las clases ... 174
8.4. 8.4.1. 8.4.2. 8.4.3. 8.4.4. 8.4.5. 8.4.6. 8.4.7. 8.4.8. 8.5. 8.5. 1 . 8.5.2. 8.53. 8.5.4. 8.5.5. 8.5.6. 8.5.7. Mejoras en el diseño
...
175La clase de control cCRegistraURL ... 176
La clase de control cCValida . . . 177
La clase abstracta ClaseDelntert’az . . . 177
La clase de interfaz cIPrincipal ... 179
La clase de intertaz clFolioDocOficial ... 179
La clase de interfaz cIConsulta ... 180
La clase de interfaz clRegistraSo1 . . . 181
Todas las clases ... 1X2 Ingeniería hacia delante y los fuentes
...
~...
1X4 Archivo ClaseDelnterfxz.java ... 184Archivo clRegistraSo1. java . . . 187
Archivo clPnnclpal.Java. . . 1X9 Archivo clFolioDocOfwal.java ... 191
Archivo clConsulta.java . . . 193
Archivo cC1Vahda.Java 195 Archivo cCRegistraURL.java ... 196
. . . . . . . . . . . 8.6. Cornpilacton. archivos . .
.
html y corrida...
1978.7. Resumen
...
200...
"201
8.1. Script d e definicibn de la Rase de datos.,,
...
2OIA. CONCEPTOS DE JAV
...
223
...
22-1.h.2. Bloque de sentencias,
...
233-4.2 I Scntmeia if' . . . 2 1 3
A . 2 2 Serlterlcia switch . . . .2.13
/I 2 7 Sentencia whi!e . . . . . . . 2 34
A 2 4 Sentencia do-tuhiíc . . . " . 2 14
A 2 . 5 Sentencia tbr . . . 234
ta 3 b Sentencias brcaii y cnnttnue . . . 2 i 4
B. C
O
~
F
~
PARA
~
~
SERVLETS
R
A
~
...
~
~
~
235
CONCLUSIONES
...
....241
""... " Proyecto de Investigación I1
" ~~~~ .. -~~~ ~~ ~~ ""
... ... ... ... ... ... ...
Servidores WEB indispensables para el proyecto
...
243Bibliografia usada por el proyecio
...
244 Servidores WEB interesantes...
244Servlets 244
Servidores Web que soportan Servlets ... 246
Otros sltros 248
...
. . . . .
Bibliografia interesante
...
...
249Servlets y Bases de Datos 249
Otros Libros 251
...
. . .
Revistas interesantes
...
252Proyecto de Investigación II
Incluyéndose un apartado que explica a detalle la construcción y las etiquetas de una página HTML.
Capítulo 3. Herramientas de JDK.
Solo hacemos mención de las herramientas (comandos de Java) que usamos en el proyecto; destacando una descripción, sintaxis y opciones de cada una. Incluimos ejemplos diversos.
Capítulo 4. Conocimientos básicos del trabajo en Ked (en Internet).
Decidimos agregar este capítulo por interesante, pues trat.a de los protocolos TCP/IP y UDP. Se da una descripcih, uso, semejanzas y diferencias de dichos protocolos.
Capítulo 5. Threads.
Debido a que los multiprocesos cada vez son más frecuentes, incluimos este capít.ulo. Para que el interesado en continuar con este proyecto encuentre en este documento información sobre los hilos.
Capítulo 6. Servlet
s.
Capítulo indispensable para el desurollo del proyecto. Este capitulo e s u n curso completo acerca de los Servlets. Con ellos puede construirse las clases de control y de datos para tener acceso al servidor y a las BD.
Capítulo 7. Proceso de análisis.
A partir de este capítulo comienza la segunda parte de este documento, el de- sarrollo del proyecto. Este capítulo fue el primero en construirse. En é1 se in- cluye la descripción del proyecto acompañado de una entrevista que da res- puesta a todas las dudas que nos surgieron en un principio, el levantamiento de los requisitos, el desarrollo de los diagramas de UCs., los diagramas de co- laboración, secuencias, estados, clases estáticas y el modelo de interfaz.
Capítulo 8.
Los
applet,s del proyecto.Una vez levantados los requisitos y construidos cada uno de los diagramas de a n a i s i s comienza la programación. Las ventanas que
se
usan como interfaz en el proyecto son los applets y es en este capítulo donde se dan las ramnes de su implantación y su construcción. L a construcción de los applets comien- za en Rational Rose, posteriormente se codifican los mét.odos en u n edit,or de textos, yse
compilan y corren con J D K 1.2.1. De modo que el andisis de estas ventanas y su programación se incluyen en este capítulo.Capítulo 9. Definición de la BD. y los Servlets tiel proyecto.
En este capitulo se incluye el "script" que define a la HZ). junto con el código de cuatro Serv1et.s que se encargan de consultarla.
Aphndice A. Conceptos de Java.
t'ara tener el documento completo hemos agregado este apendicc que servir-&
de consulta rápida.
ne
esta forma le evitamos al lector que tenga que levan- l.arse a buscar otro libro, evitando con ello la dist.racción.Apéndice
B.
Configuracibn para Servlets.~ ~ ~~ ~ ~"
Presentación "
Uno de los objetivo de este proyecto dice: u A l c a ~ z a r la generación de u n primer prototipo que sirva de punto de partida para las siguientes generaciones de estudiantes interesadas en el análisis y diseño de un segundo prototipo." El objetivo e s claro y aparentemente simple sin embargo no
es
tan sencillo como parece, ya que el obstáculo con el que nos encontramos todo el tiempo fue: laFalta de experiencia. Si, la experiencia en proponer un buen andisis, la programación Orientada a Objetos, el uso de la herramienta visual ,JHuildcr, la herramientas CASE Rational Rose, en fin. De modo que tuvimos que emplear mris tiempo de lo programado, p aun así, nos falt6. Sin embargo cubrimos gran parte de los objetivos iniciales.
Lo
que
se
hizo
u
U
o
U
u
Se creo u n capitulo que muestran el uso y configuración d e Rational Rose.
Se incluyeron lecturas y cursos referentes a la programación Chientada a Objet.os con Java.
Se indicaron las distintas configuraciones hechas a lo largo dc todo el proyecto: establecimiento de va_riables de ambiente en el autoexec.bat, y configuración de ServletRunner y Java Web Server para la e-jecución d e Servlets.
El Anidisis y Diseño para l a obtención del Coeficiente tie Participaciih
Se definió la base de datos para el sistema a traves de InterRase.
Se hizo la conexión a la base de datos para realizar distintas consultas.
Parte de la codificación st' hizo con JHuilder2 y parte con
JDK
1.2.1. i,a codificacion hecha con ,JI)K 1.2.1 está perfectamente documentada.Se generó una extensa bibliografia y enlaces a sitios W E B indispensables para la creación del proyecto.
l.
Kational Kose es una herramienta CASE' que permite el Análisis y Diserio Orientado a Objetos, ADOO, a partir del uso de diferentes vistas del problema permitiendo modelar diferentes diagramas de: Use Cases, estados, colabora- ción, secuencia y de clases. Además de permitir la organización del proyecto a través de una jerarquía de paquetes y componentes. En donde u n paquete re- presenta a un directorio y un componentes a un xrchivo de texto, el cual con- tiene código fuente pwa una o más clases. Rose tiene la capacidad de usar not.ación U M V , Roach:: y OMT4.
Lo interesante de esta herramienta son dos cosas: Primero; le permite al ana- lista la identificación de los objetos d i n h i c o s , clasificar los ohjetos dinámi- cos, e identificar las asociaciones dinámicas entre objetos. Segundo, lo más interesante, una vez que se ha hecho un buen anklisis se tiene la opción de generar código; en nuestro caso, en Java.
Antes de comenzar a modelar el problema real, Coeficiente de f'articipación, comenzare recordando u n poco de la not.aci6n que maneja Kose.
,l.
Diagrama
de
Use
Case
4
.I
-2.
ACTOR
Diagrama de
Use
Case. ~ ~~ . . " . .. . . .. ~
uso, B. El estereotipo ((usan indica que un caso del UC. A tambiin in- cluirá el comportamiento como
es
especificado por R.1
.I
-5.
EJEMPLO
i j
I
Almacenista
I I
Entrada de Articulos
i
(\ I
Entrada por Compra
'I
Almacenista
Actualización de Existencias
Entrada por Dewlución Entrada por transferencia
La flecha con punta de triángulo es la de generalización, mientras que la otra e s u n a asociación simple.
Este diagrama ilustra la relación que existe entre los diferent.es elementos del modelo que podrían existir en cualquier almackn en donde el Almacenista re- gistra los artículos que llegan al almacen; los artículos pueden llegar por que u n cliente los devolvió, porque se compraron o porque llegaron de otra sucur- sal. 'Panbien se puede ver que el UC. Entrada de Artículos usa el UC. Actuali- zación de Existencias, o dicho de otra forma el UC. Actualización de Existen- cias es parte del UC. Entrada de Artículos. Lo que significa que cualquier en- trada de artículos hace uso de la actuali7~ción de existencias.
Como es sabido, del curso de ADOO, cada UC. cuenta con u n a serie de tran- sacciones. L a s transacciones para el UC. Entrada de articulos por Compra son las siguientes?
' I ' H A N S A C C I ~ N DESCRIPCI~N
~~ ."___ ""~ -~ ___.
I El Almacenista sclecciom la orden de compra correspondiente a la en- trada.
2 El Almacenista v e r i J w que la entrega corresponda a los artículos y a
las cantidades descritas en la Orden de Compra.
1, .
1'ahl;r cvtraida dc las notas dcI profcsor I.UIS Castro Cal.wp
Diaarama de Estados
1.2.1. ESTADO
Un estado de un objeto representa una parte de su comportamiento; dicho de otra Forma, e s u n a d e las posibles condiciones en que el objeto puede estar. S u representación grX1ca es u n rectangulo con esquinas redondas.
Un objeto r e d i m acciones inmediatamente despues que es generado, durante su tiempo de vida, y justo ant.es de ser destruido. De modo que en nuest.ro diagrama podemos tener un estado que ejecute acciones para iniciar al objeto, un conjunto de estados que realicen acciones durante el tiempo de vida del objeto, y otro estado que ejecute acciones justo antes de que cl objeto sea destruido.
1.2.2.
TRANSICION
DE ESTADOEs un cambio de un estado inicial a un estado final en donde el estado inicial y el estado final bien pueden ser el mismo. La representación gráfica e s me- diante una flecha que inicia en el estado inicial y termina e n el estado final.
A las transiciones se les pueden agregar eventos, acciones y condiciones. E s decir, para que haya u n a transición de un estado a otro, necesariamente t.uvo que haber un evento que estimule esa transición, o bien u n a condición que obliga a que haya una tr,ansición de estado. A esa transición se le puedc aso- ciar, si es necesario, u n a acción.
1.2.3.
EJEMPLO
Supongamos que el analista es usted y su cliente es el gerente de una mueble- ría. El diálogo sería algo así:
r3esput;s de los buenos días y haber comentado el partido del domingo.
Analista.-He estado pensando en su sistema y la parte que tiene que ver con la entrada de artículos se verá así:
Anal!sta. - A ! hacer CIIC en el boton
1.3.
Debido a lo simple del problema solo tengo una ventana por cada UC. Para poder ilustrar los eventos agmparl tres UC.: Principal, que no est.á en el dia- grama, Entrada de Artículos y Entrada por Devolución en el super UC. EN- TKADA DE ARTÍCULOS. Ahora sí, el Diagrama de Estados para el super UC. ENrRADA DE AKTiCULOS sería:
i
1 Entrada de Artículos‘ 1
i J
REGISTRO
REGRESAR
Por Dewlución
I t
Ventana Entrada de Artículos Ventana Por Dewlución1
!
I<
I !do: Registrar articulos I iREGRESAR
Ilustración 6. L)ragmma de Estados para ENTRADA DE ARTÍCULOS.
De la Ilustración 6 podemos ver que cada objeto representa una ventana y que podemos pasar de una a otra debido a eventos provocados por el usuario, haciendo clic en los botones señalados. En el objeto Ventana Por Devolución se registran artículos a través del evento IiEGISTRO y se sale de ella con cl evento REGKESAK.
Diagrama de Clases
~~ .. . ..- _______ . . ~ ~ ~ _ _ _
Para cada UC. se obtiene un Diagrama de Clases en donde el objetivo es esta- blecer las clases que construirán al sistema y las relaciones que existen entre ellas. De esta fonna se ataca el problema en pequeñas partes. Una vez que se h a creado cada Diagranm de Clases se puede tener el Diagrama de Clases completo, que seria u n a recopilación de lo s pequeños diagramas. La ventaja de trabajar con pequeñas partes del problema e s que uno tiene mayor control de la situación.
Para cada clase se deben establecer sus atributos, métodos y relaciones entru clases así como tambiln la cardinalidad y tipo de relación.
1.3.1.
CLASEUna clase captura la estructura y comportamiento común de un con.junt.0 de objetos. Una clase e s u n a abstracción de cosas del mundo real. Cuando csas cosas existen en el mundo real, se les llama instancias de la clase, y se refiere uno a ellas como un objeto.
La representación grX1ca de una clase es una caja cuadrada con tres divisio- nes. En la división superior se escribe el nombre de la clase, en la división de en medio v a u n lista de atributos, y en la división inferior va una lista de mi.- todos.
Diaarama de Clases
se hijo se puede saber quien es su padre, pues un hijo solo tiene un patire. En eambio, si tomo a una instancia de la clase padre y se desea referir a uno de s u s hijos, hay que precisar a que hijo
se
refiere.1
PadreI
1 I
1
Hijo
I
1.3.2.2.
Agregación
Una relación de agregación e s u n a relación del todo y s u s partes.
i
FacturaI
I
~
1
DetalleFacturaIlustradón 1 l . Relacicin de agregacicin.
1.3.2.3.
Generalización
L a relación de generalización es usada cuando se desea que las subclases he- reden el comportamiento de la superclase.
En la Ilustración 127 los métodos de la clase camion tienen acceso a los mi:-
todos de la clase vehic..c;met exactamente igual que si se hubiesen declarado dentro de camion. Si embargo, los métodos de las subclases no tienen acceso a la parte privada de vehic-carret.
Capitulo 1. Análisis y Diseno con Rational Rose
1.3.3.
EJEMPLO
A continuacibn muestro el Diagrama de Clases para el UC. Entrada de artí- culos por Compra. La ticnica para obtener los atributos, metodos y relaciones está explicada claramente en los apuntes del profesor Luis Castros.
re
.. _-
1.4.
Modelo Three-Tiered (de tres
canas)
~~~ ~~ n . - I ~~~~~
Antes dc seguir adelante es preciso hablar de este modelo.
Modelo Three-Tiered (de tres capas)
CONTROL O NEGOCIOS
L"".
DATOS
1.5. Diagramas
~ ~~~de
Secuencia
"~y
Colaboración
~Estos diagramas le son útiles al diseñador para el diseno de procedimientos pues con ellos logra:
Identificar a los objetos dinámicos. Clasificar a los objetos din5micos.
Identificar a las asociaciones dinámicas entre los objetos.
Objeto dinámico. Aquel cuyo tiempo de vida mAximo es el tiempo de ejecu- ción del UC; por ejemplo, calcula la nómina de empleados.
Objeto estático. Aquel que perdura más haya del tiempo de ejecucicin del
programa; por ejemplo, las I3ases de Datos.
Algo importante es clue estos diagramas ilustran al diseñador solo un escena- rio de todo el conjunto de posibilidades que pueden existir en u n UC. Esto e s de gran ayuda, pues no hay condiciones, se trata de un caso específico. El es- cenario que se modela representa un caso que puede ocurrir; así que el dise- ñador puede elaborar cualquier cantidad de estos diagramas para entender mejor el problema.
1.5.1.
DIAGRAMA
DE SECUENCIAUn diagrama de secuencia muestra una interacción ordenada en el tiempo. En particular, muestra los objetos que participan en la interacción por s u s "líneas de vida" y los mens+jes que ellos intercambian ordenados en secuencias de tiempo. No muestra la asociación entre los objetos.
5.3.
EJEMPLODiaaramas de Secuencia Y Colaboración
7.- Fin.
Una vez terminado el diagrama se tiene nuevas clases con nlCtodos propios (los mensajes).
3: seleccrona(
' I, :
c
'I
IEntradaPorCompra1
~
: Almacenista 2: solicitaOrdenes( )
S \
IistaDePendientes
oCFormateaPendientes : cCEntradaPotCompra
I
p 4
1 : OrdenesDeCompra( )pendiente
i
oDOrdenDeCompra 1 c ~1
DEntadaPorCornpra ~I
En la Ilustración 16 podemos ver componentes nuevos que explicaremos en seguida.
Los rectangulos representan a los objetos y como podernos vcr se apegan al modelo de tres capas, los objetos están clasificados y cada u n o hace su tarea ademhs de que tienen el prefijo de su tipo. El primer objeto e s
un
ot)jeto de interfaz llamado oIOrdenesDeCompra el cual pertenece (se utilizan los dos puntos como en la notación de Pascal) a u n a clase de interfaz, a A m - : c l E n -tradaPorCompra.
Las líneas que se encuentran entre los objetos son los enlaces y su funcibn es marcar el canlino por donde fluirán los mensajes y los datos.
L a flecha sin círculo indica que el mensaje es para la clase a la cual apunta. Si esto se convirtiera en código lo clue tendríamos es u n rnktodo que pertenece a.
la clase que es apuntada por la flecha. Por ejemplo, la clase c,IEntrad- cl
P
os-Compra tiene ( o debe tener) un mitodo llamado selecciona().
La flecha con círculo indica el tlujo de los datos obtenidos, en otras palabras e s lo que devuelve la función. I k s d e luego que este dato devuelto e s utilizado por el método que hizo la llamada, pos eso el sentido de la flecha.
L a numeracibn de los mensajes e s importante, y a que indica el orden en que son llamados los mitodos de los objetos respect.ivos.
Un sistema puede estar compuesto por diferentes módulos de software de di- ferentes tipos. Cada módulo de software e s representado por
un
componente en el modelo. Para distinguir entre diferentes tipos de componentes pueden usarse estereotipos (programa principal, paquete, subprograna, tarea, ejecu- table, DLL).Típicamenk, el nombre de un componente es el nombre de u n archivo que el componente representa. A cada componente se le asigna un lenguajjt: de pro- gramación.
Debido a que un componente bien puede ser un archivo con código fuente, hay que indicarle que clases se desean tener en dicho componente. Se puede tener un componente por clase o bien u n componente puede tener cualquier número de clases. L a forma de agregar clases a los conlponent.es es simplc solo hay que crear un componente, darle el nombre con el cual se quiere eti- quetar el futuro archivo y arrastrar las clases deseadas al componente. No hay que olvidar que en J a v a u n archivo fuente puede tener cualquier número de clases pero solo u n a debe se pública y el resto deben ser privadas o de imple- mento. Otra cosa que hay que tener presente es que el archivo debe llamarse idintico a la clase pública contenida en él.
1.6.2.
RELACIONES
h e d e n dibujarse relaciones de dependencia de un componente a otro. La re- lacicin de dependencia significa que las clases contenidas en el componente cliente pueden heredar clases del componente servidor. Cuando se genere
cci-
digo en Java de este componente se agregará una línea import, la cual i r r -
portará el componente especificado por el componente servidor.
V
En la Ilustración 19 el componente Applet sime al componente cliente miApplet. Al generar código en Java para miApplet tendríamos la siguient.e lí- n ea:
Import java.applet.Appiet;
I.
7.
I . 1.
Pasos para establecer la variable de ambiente CLASSPATH
1 . - Asegurarse de que Rose Java" Edition esté instalado.
2.- Configurar la variable de ambiente CIASSPATH para que apunte a la bi- blioteca de clases y archivos fuente .java:
3 En Windows 95, agregar la variable de ambiente CLASSPATH en el archivo AUTOEXECBAT. U s a r el siguiente formato.
s e t CLASSPATH=RutaArchivosClass;R~t~ArchivosJdva;
Set e s u n comando del sistema operativo que se usa para tijar variables de ambiente, enseguida va un espacio en blanco seguido de una gran cadena sin espacios en blanco, CLASSPATH debe escribirse con mayúsculas, se c o n c a t e na el signo igual, se concatena la ruta en donde se encuentra la biblioteca de clases seguido por un punto y coma, se concatena la ruta donde se encuen- tran nuestros archivos .jam seguido por un punto y coma.
Para que los cambios tengan efecto hay que re iniciar la computadora.
Una vez reiniciada la coInput.adora podemos verificar si realmente cont: a n o s con la variable de ambiente usando el comando set del sistema operativo.
Ejemplo.
En mi caso agregué la siguiente línea en el archivo AUTOEXEC.BAT.
s e t CLASSPATH=C:\jdkl.%.l\clases;D:jluism\Pr~~~~t~~
A CLASSPATH se le está indicando que la biblioteca de clases se encuentra en la ruta C:bdkl.2.l\clases y
que
mis archivos, . j a w y .class, se encuentran en la ruta D:\luism\Proyecto2.3 En Windows NT hay que ir a Control Panel->System->Environment
para establecer la variable de ambiente.
1.7.1.2.
Pasos adicionales requeridos
antes de Forward o Reverse Engi-
neering
1
.-
Para establecer el directorio del proyecto seleccionar Options...
del me-2.- En el campo de texto m e seleccionar Proyect.
3 . - En la ventana Model Doperties reescribir en la columna valor del campo
Directory por la ruta en donde deseamos guardar nuest.ros archivos. Esta ruta debe coincidir con la que fijamos en la variable de ambient.e, en mi caso seria remplazar el valor AUTO GENERATE por mi directorio de trabajo: D:\luism\Proyecto2. Clic en Aplicar y posteriormente en Aceptar.
4.- Para cada paquete que se desee generar código, crear un subdirect,orio en el que se arrojarán los archivos fuente.
nú
Tools
y seleccionar la pestaña Java.1.7.2.
COMANDOS DEJAVA
DEVELOPMENT
KIT,
JDK,
NECESARIOSPara escribir programas Java se necesita u n editor de textos, como el editor de MS-DOS o el bloc de notas de Windows, para teclear el código; un compilador Java para este código, el cual generará archivos .class (conocidos como byte-
ONFIGURACIdN DE 1 4 RUTA DE BúSQUEDA
Generación de código
"" ~~~ .
I .
7.3.1.Pasos para actualizar la variable de ambiente
PATH
1.- Abrir el archivo AUTOEXEC.BAT con el editor de M S - D O S o el bloc de
2.- Busque la línea que fija la variable de ambiente PATH y concatene la notas de Windows.
nueva ruta. Ejemplo.
Posiblemente en su AUTOEXE:C.BAT tenga la siguiente línea:
Suponiendo que J D K esta instalado en el directorio C: Udkl.2.1, entom ces los comandos de Java se encuent,ran en el directorio
C : b d k l . 2 . l \ b i n (de no ser así, tiene que usar la ruta en donde decidió instalar J D K ) . Ponga un punto y coma y agregue la nueva ruta (todo esto sin dejar espacios en blanco). Debe verse de la siguiente forma:
Nota: Si en su AUTOEXEC.BAT no aparece la variable de ambienle PATFi
no se preocupe, al final del archivo agregue la siguiente línea (sill espacios e n blanco):
Siempre y cuando C:\dkl.2.1 sea la unidad y el directorio donde instaló JDK.
3.- Guarde el archivo, cierre todas la aplicaciones que tenga abiertas y re inicie la computadora para que los cambios tengan efecto.
4.- Desde la línea de comandos y desde un directorio que no sea C:Udkl.2.l\bin (suponiendo que .JDK lo instalo en C:Udkl.lL.l) verifi- que que se ha actualizado la variable de ambiente PATH. Teclee:
C:Uavac y pulse se Intro. Debe aparecer una ayuda para el compilador de Java
5.- Si apareció la ayuda para el comando Java, hemos terminado; de lo contrario revise el AUTOEXEC.BAT, posiblemente escribió una letra por otra, o peor todavía: los comandos de Java no se encuentran en la ruta que estableció. Si estableció u n a r u t a equivocada, corrijala y repita los pasos del 1 al 5.
PATH=C:\>WINDOWS;C:\>WINDOWS\COMMANI)
PATH=C:\>WINDOWS;C:\>WINDOWS\COMMAND;C:\
jdkl.2.1P A 7 ' ~ € ~ o / o P f l T H ~ ~ ; ~ : ~ d ~ ~ ~ . 2 . 1 /bin
1.7.4.
FORWARD
YREVERSE
ENGINEERING
Se utiliza ingeniería hacia delante para generar código en Java a partir de una clase o u n componente, e ingeniería hacia atrAs para generar componentes de andisis a partir de código fuente.
1.7.4.
l.
Pasospara generar
ccidigofuente en Java (Forward Ertgineerirzg)
1 .- Seleccionar la clase o el componente que
se
desea codificar.2.- De la barra de menú seleccionar Tools->Java->Generate Java.
3 . - Eso es todo.
1.7.4.2.
Pasos para generar componentes de arzalisis
a
partir de co'digo
fuente (Reverse Engineeríttg)
1.- De la barra de menú seleccionar ~ools->Jav8->Reverse Engineering Ja- va.
Ilustración 2 1. Fijación de In ruta de trafmjo.
Las clases que existen deben agruparse en
un
paquete antes de generar códi-go.
Dentro de 1,oOgical View generaremos un paquete llamado vehiculo y arrastra- remos las t.res clases a i l .
. Generación de código
Usando cualquier editor de textos podemos abrir el archivo y examinarlo. 151 código fuente generado es el siguiente:
/ / S o u r c e f i l e : d:/luismiPri)yect.o2/ve~iculo/vehi~:_i:arr.et..:jav;l
Generación de código
-~ . . "" ". ~ .~
Como puede vcrse
se
h a generado código para las clases y s u s comporta- mientos (métodos). El siguiente paso e s meterle m a n o a este código para codi- ficar cada uno de los métodos, agregar comentarios, tal vez nuevas clases y metodos.1.7.5.2. Modtjicncimes
al
nrchivo vehic-cnrreLjavuLI Codificación de cada uno de los métodos.
U Agregaremos una nueva clase, la cual será una subclase de al clase vehic-caret. La nueva subclase
se
llamar5 motocicleta y no conten- drá ningún atributo ni métodos solo l a agregaremos para ilustrar los cambios al aplicar la ingenieria hacia atrás.u
Agregaremos comentarios.il Personalizaremos la indentación e interlineado del código.
/ / S o u r c e fi! e : d : / l u i s m / P r o y e c t o 2 / . J e h i c u l o / v e h i c ." c a r ret. java
/ * t c t t * * t t * * * 1; * * /
En el cuadro de dialogo que aparece tomamos el archivo vehic._carret.java. Y
se
hace clic en el botón Reverse. Para cerrar el cuadro de didogo, pulsar el bot.cin Cancel.Generación de códiao
Ilustración 28. Visor de componentes d e s p 6 s d e aplicar Eain.gmieria hacia atrcis.
Como puede verse en la Ilustración 28, la clase motocicleta que
se
agregó en el cbdigo fuent.e se refleja grkfkamente.En la siguiente ilustración puede verse el diagrama de clases actualizado.
Nota:
E s probable que después de aplicar la ingeniería hacia nfr& se huyadesdibujudo la de herencia adermis de. que no logra uerse la nueuu clase. Purn corregir esto hay que seleccionar Ins clases que aparecen e n el diagrama d e clases y borrarlas can. la tecla S u p - y volverlas a cxdocnr nuevamente, arras--
trando y soltando desde el Visor d e componentes hnstn el diagruma de clases.
Capítulo l. Análisis y Diseño con Rational Rose _ _ _ _ ~ ". "." __
que queremos compilar tenemos u n a linea de código que nos indica a qur: pa- quete pertenece el componente vehic .carnet. L a linea es:
package v e h i c u L o ;
Hemos dado toda esta explicación porque surgieron problemas al interprctar el bytecode vehic-carret.class, y eso tiene que ver con la linea package vehi- culo;. El problema lo resolvimos de la siguiente manera:
PASOS 1.- 2.- 3.- 4.- 5.- 6.-
Hicimos u n a copia de vehic-carret.java en la ruta. que
se
fijo en CLASS- PATH. En nuestro caso I):\luism\I-Zroyecto2Abrimos vehic_carret.java y borramos l a linea package vehiculo;
Compilamos vehic_-carret.java usando el comando javac.ext. En nuestro caso:
El:> \luism\Proyecto2bavac vehic._carret.java
Es necesario escribir el nombre del archivo completo, nombre y exten- sión
Borramos el archivo vehic-carret.java (ya no
se
necesik. El original esta dentro del directorio vehiculo)Interpretamos el archivo vehic-carret.class usando el comando javaxse. E:n nuestro caso:
Aqui solamente va el nombre del bytecode, sin extensión. Eso
es
todo. La salidaes
la siguiente:ruedas: 18 pasajeros: 2
capacidad de carga en metros cúbicos: 3 2
ruedas: 6 pasajeros: 3
capacidad de carga en metros cúbicos: 12
ruedas: 4 pasajeros: 6 tipo: furgoneta
D : ~ \ l u i s m \ P r o ~ e c t o Z ~ j a v a vehic.-carret
Nota: Los archivos .class puede moverlos (11 directorio vetuculo solo que si desea
voluer Q interpretar al bytecode vehic-curet hay que modificar CLASSPAT€€ o
poner una opción. al contando jnrnexe. La op&n que dehe poner es la nifa en
donde se encuentran los byteeode. Ejemplo.
D:\luism\Proyecto2\vehiculo~~java -cp D:\luism\Proyecto2\vehiculo
vehic-carret
Donde:
jnva es el interprete d e bytecode
-cp es Ia opción d e CLASSPATH
I):\luism\Proyecto2\vehiculo es In CLASSPATH
y
vehic-carret es el bytecode principul.
Capitulo
2
Los objetos de interfaz son ventanas los cuales tienen como únicas funciones: mostrarse, ocultarse, recibir datos de entrada y enviar información al usuario. Otra característica de estos objetos es que a s u s component.es (botones, cam- pos de texto, menús, etc.) se les pueden asociar eventos, donde estos eventos son llamadas a otros objetos.
La interfaz que usaremos para comunicarnos, en este proyecto, con la com- putadora s e r h los applets. Los applets pueden utilizarse como v e n t m a s para recibir datos del usuario y enviar mensajes al mismo.
El presente capítulo pretende ser una introducción a estas clases.
Un applet es un programa d i n b i c o interactivo que se puede ejecutar dentro de una página Web, desplegada por u n visualizador con capacidad ,Java como HotJava, Netscape 2.0 o superior, Internet Explorer 4.0 o superior, etc.
Algo importante respecto a los visualizadores: hay que estar seguro que el vi- sualiymdor que se ha elegido soporta código en Java, de lo contrario nuestro applet no será mostrado. Por ejemplo, la versión alfa de HotJava no mostrarA applets 1.0. Por desgracia, entre la versión alfa y la 1 .O, se hicieron cambios significativos en cuanto cómo se escriben los applets. El resultado e s que no se puede ver applets 1.0 en la versión alfa de HotJava, ni tampoco se puede ver applets alfa en visualizadores que esperan applets 1.0. El que u n visuali- xador muestre
o
n o un applet depende de que el visualizador soporte el código que est& en el applet. Si no se cuenta con ningún visualizador, J U K propor- ciona el comando appletvjewer.2.1.1.
EJEMPLQ
j avdc holaMundo. j ava
En este momento hemos creado el bytecode, un archivo con el mismo nombre con extención .class. Los bytecode son u n conjunto de instrucciones muy pa- recidas al código máquina, pero que no son específicas para algún procesador.
El siguiente paso consiste en crear u n a página HTML que incluya a nuestro applet. En el siguiente subcapítulo indicaré como construir la página.
2.1.2.
ETIQUETAS
BASICAS
EN LAS PAGINASHTML
QUE INCLUYEN APPLETSPara incluir el applet en u n a pagina Web, hay que referirse a el en el código HTML para dicha página. De modo que el paso tres será crear un archivo
HTML
en el mismo directorio que holaMundo.java (El archivo puede tener cualquier nombre. En este caso lo llamar6 holaMundo.htm1). El listado sería el siguiente (nuevamente, la numeración no debe incluirse):1 . < H T M L >
2. I!lECIU:',
3
.
,_, "ITLF", . .,f:x i eri;rer applet ! <:/':'L'1'LE:'
4 . </HEAD>. 5.
6 . <:uoIl',;>
-1
.
e
.
/ I i R >~, -1EN1,?:K;..:l-il;.Mi r . ar'plet. ~ i ( ~ ~ : ~ : / ~ ~ l ~ ~ ~ í ~ ~ ~ N ' ~ ~ ~ ~ , >
E)
.
-cKPPLE'1' COOE=-"h(lrlaMundo.rylass" WI3TfI-700 ~IEIGIiT-30O>~/APF'!,E;';?L O . < H R >
1.1
.
< / R O I ) Y ;, I 2.
c /HTMI,:.A continuación explica2 cada una de las líneas.
Las palabras que vemos encerradas entre corchetes angulares son conocidas como etiquetas. Generalmente veremos que las secciones están delimitadas por etiquevas del mismo nombre, en donde el fin de una sección t,endr5 e l nombre de la etiqueta precedida de u n a diagonal,
/.
En las líneas 1 y 12 alcanzamos a ver las etiquetas <HTML;. y < / H m r , > . Esto
nos indica que el texto que esVA entre ellas es
u n
docurnento HTML.Un documento HTMI, tiene una estructura que lo separa en dos partes: cuer- po y cabecera. En la primera estará la página en si, mientras que en la srgun- d a incluiremos algunas c0sa.s que no
se
ven al principio pero que pueden Ile- gar a ser muy importantes. IN primero que hay que incluir en el código e s la cabecera. En las líneas 2 y 4 podemos ver las etiquet-as <:ÍI~:A.I):,> y .:/HEAT>,.Dent.ro de la cabecera, línea 3 , s d o hay otra etk1uct.a. Es la única imprescin- dible: el título de la piigina. Es lo que veremos como título de la ventana en los navegadores que lo permit.an. Es como se conocer% nuestra pggina en algunos buscadores y en la agenda de direcciones (booknzurks) de los usuarios.
El contenido estará en el cuerpo de nuestro documento, para ello hacemos uso del las etiquetas .CBOIIY > y ':/BODY>, líneas 6 y 1 1 .
En línea 7 tenemos u n a leyenda que
es
escrita con u n estilo de encabezado 1 o título 1 el cual es puesto en el centro de l a pggina. L a s etiquetas ,CHI> yinterpretaremos como si se tratara de un directorio) holaMundo, tememos que agregar la siguiente línea al principio de nuestro archivo:
package holahlundo;
Tenemos que volver a compilar. Desde la línea de comandos JT e l directorio MisPaquetes debe teclearse lo sigue:
j avac holaMundo\hoiaMllndc. j ava
El cambio que hay que hacer en holaMundo.htm1 e s e n la línea 8. Substi- tüyala por la siguiente:
8 . ,cAUPLET C O D E = ” h o l a M L n d o . hol.aMundo
.
ciass” W l DTH=7OOt I E i G H T = S O O > c / A P P L E T r
Como puede verse, el directorio y el archivo .class no están separados por una diagonal invertida, sino por
un
punto.Para ver el applet usando el comando appletviewer.exe desde la linea de co-
mandos y el directorio MisPaquetes debe t,eclear los siguiente:
a p p l e t v i e w e r hol-aMundo. h t m l
Eso es todo.
2.2.
Características
de los applets
””~~~ _ _ _ _ _ _ ~ ~ ~ ~
Como se mencion6 en la sección anterior, un applet
es
u n programa que se carga en una prigina HTML. A diferencia de las aplicaciones que son progra- m a s J a v a individuales que se e-jecutan al utilizar s610 el intérprete java ciesdc la línea de comandos.],os applets no hacen uso del método ma i I-. ( i
,
en vez de ello utilimn los mito-dos i n i . 0 , s t a r t . ( ) , s t o p ! ! , d e s t . r s k . 0 y p a i n t . ( ) .
Cuando un usuario, al ejecutar un visualizador que soporta ciidigo Java, car- ga una página Web con u n applet. en ella, el visualizador despliega ese applet
desde un servidor Web y lo ejecuta en el sist,ema local (donde
se
ejecuta el vi- sualizador).Y a que los applets Java
se
ejecutan dentro de un visualizador, tienen la ven- taja de la estructura que este les ofrece: una ventana, un contexto de mancjo de eventos y gráficos, y la Interfaz de Usuario (IU) que lo rodea.Sin embargo, la ventaja que los applets tienen sobre las aplicaciones en ter- minos de estructura v capacidades IU, están obstaculizadas por las restriccio- nes impuestas por lo que los applets pueden hacer. Ya que los applets pueden desplegarse desde cualquier parte y ejecutarse en un sistema cliente, las res--- tricciones son necesarias para evitar que un applet cause daños al s i s k m a c)
rupturas en la seguridad. Las restricciones son las siguientes:
U No pueden leer o escribir en el sistema de archivos del lector, a ex-
cepcion de directorios específicos (los cuales se definen por el usuario mediante una 1ist.a de control de ~ C C C S O
que,
de manera dcterrninada,est& vacía).
0 Por lo general, no pueden comunicarse con u n servidor ademks del que tenía almacenado en forma original el applet.
0 No pueden ejecutar algún programa en el sistema del lector.
/ / Destruye el applet.
p - u b l i c void d e s t - r o y ( ) {
guarda:.'Fuest.ra ( " P r e p r a n d 3 p a r a descargar. Adios. .
.
" ) ;/ / S e u t i l i z a p a r a dibcjar e n el app;et:.
public v o i d p a i n t ( G r a p h i c s g : t
/ / Dibuja u n r e c t 6 n c g u l o al r e d e d o r del a p p l e t
g
.
d r a w x e c t (O, C ,y e t . S i z e ( j . w i d t ? l - 1,
getsize ( j .height - lj ;
I
Si le interesa ejecutar est.e applet, cópielo
y
guárdelo en un archivo llamado actividades.java; compílelo usando el comando javac.exe; genere el archivo actividades.htn11 y véalo con el comando appletviewer.exe (puede verse con Internet Explorer 4.0, pero en este caso aconsejo que se utilice appletviewer para ver en la ventana de MS-DOS la salida estándar que se genera en las distintas etapas).La primer actividad de un applet es inicializarce, de modo que en la salida estandar se escribirh: Inicializando.. , . Inmediatamente despues que se inicial- za comienza su ejecución, así que en la salida estandar se escribir& Comen- zando
....
Como la ventana. de MS-DOS se encuentra de tras del applet; hay que minimizar el applet, en el momento que minimice el applet estese
deten- drá- De modo que, en la ventana de MS-DOS verá las líneas:; . n i c i a l i 7 a ~ d o . .
.
C o m e n z a n d o .. .
De t e n i e n d o . . .
Para cerrar el applet maximice el applet y luego ciérrelo. En el momento que se maximiza, vuelve a comenzar, y cuando se cierra, primero
se
detiene y lue- go se destruye. Ahora en la ventana de MS-DOS tendrg la salida:I n i ~ c i a l i ¿ : a n d o .
.
. Comer.zando.. .
De t e n i e n d o ..
.C o m e c z a n d o . . .
D e t e n i e n d o .
.
.P r e p a r a n d o para d e s c a r g a r . A d i o s .
. .
Nota: Todos los applets reulimn estas acfivicíades. I!o que se hizo en el p r o g m -
mt anterior-&e sobre poner cada uno d e los mc?todos, esto e s una veniaja, yu
que uno puede agregar el código que desee en el mktodo que uno desee. Por
2.4.
Reswmen
En el capítulo de A D O 0 con Rational Rose y en el de applets se explicti como usar los comandos javacxxe, java.exe y appletviewe.exe. Tambikn se explic6 como configurar las variables de ambiente PATH y CLASSPATH. Pues bien, este capítulo pretende ser una explicaci6n que complemente estos mismos temas.
Antes de entrar
a
las herramientas de J U K recordcarernos dos comandos inter- nos de MS-DOS: set y path3.1. Comando SET
Comando interno de MS-DOS.
Muestra, establece o quita variables de entorno Windows.
SET (variabk=[cadena]j
variable Especifica el nombre de la variable de entorno.
cadena Especifica u n a serie de caracteres para asignar a la variahle.
Escriba SET sin parametros para ver las variables de entorno actuales.
3.2. Comando
PATH
Comando interno de MS-DOS.
Muestra o establece una ruta de búsqueda para los archivos ejecutables.
PATH [[unidad:]ruta[; ...]I
PATH ;
Escriba PATH ; para borrar todas las rutas de hüsyueda establecidas y hacer
que Windows busque stilo en el directorio actual.
I
b m
Estableciendo la ruta de clases
~ ~ ~-~ ~
C:>set CLASSPATH=rutai;ruta%
. . .
Cada ruta termina con el nombre de un archivo o el nombre de un direct.orio dependiendo de los siguiente:
U Para archivos .zip o .jar que contienen archivos .class, la ruta termi- n a con el nombre del archivo .zip o .jar.
u
Si el archivo .jam que se v a a compilar no contiene la línea package n o d r e P a q u e t e ; , entonces la ruta termina con el directorio que con- tiene el archivo .jaw.u
Si el archivo .java que se v a a compilar si contiene la línea package n o n t h r e ~ a y u e t e ; , entonces la ruta termina con el directorio que con- tiene la "raiz" del paquete.t'wa
múltiples rutas de búsqueda hav que separarlas con punto y coma. Conel comando SET, e s importante no dejar espacios en los dos extremos del sig- no igual. Las herramientas J D K pueden ser java, j a v a c , etc.
3.4.1.
DESCRIPCI~N
L a ruta de clases le dice a las aplicaciones Java donde encontrar la biblioteca de clases y las clases definidas por el usuarjo esto es, clases que no son una extensión de Java o parte de la plataforma Java. En J D K 1.2, la J a v a Virtual Machine (JVM) y otras herramientas de JDK encuentran clases buscando en la biblioteca de la plataforma, en cualquie extensión de la biblioteca, y en la ruta de clases, en
ese
orden.Se necesita establecer la ruta de clases cuando se desea cargar una biblioteca de clases que (a) no está en el directorio actual y (b) o no est& en la localiza- ción especificada por el mecanismo de extensión.
Si s e d e c i d e e s t - a b i e c e r ? a r u t a d e c l a s e s , e s d e l a ; s i g a i e ~ t ~ e forma:
C : ;.set CLASSPATH=rutdl;ruicr?
. .
.Esta línea podría agregarse en el autoexec.bat para que se establezca cada vez que se encienda la computadora.
Suponiendo que la biblioteca de clases se encuentra en el directorio:
C: : , J o k l . 2
-
1 \(:lasesEn el autoexec.bat podríamos agregar la siguiente línea:
C : ;.set CT,ASSPATH=jd!cl. 2 . l \ . c l a s e s
3.4.2.
ENTENDIENDO
LA RUTA DE CLASES Y LOS PAQUETESLas clases J a v a est.án organizadas en paquet,es los cuales son mapeados a d - rectorios en el sistema de archivos. Pero, a diferencia del sistema de archivos, donde usted especifique el nombre de un paquete, especifique el nombre com- pleto del paquete -jamas parte de él. Por ejemplo, el nombre del paquete para
1 dva . a w t . RIlt,to:l siempre es especificado como j dva. -3wt.
Por e,jemplo, suponga que desea compilar el archivo fuente ordena,iava q u e se
encuentra en el directorio C : \ j a v a \ M i sC:'ases\r:t.i L i d a d e s \ m i s A l ? ~ i c a c i n n e s y
posteriormente desea que Java, en el momento de ejecucion, encuentre la cla-
3.4.3.
DIRECTORIOS Y CLASES EMPAQUETADAS3.4.4.
DIFERENTES ESPECIFICACIONES3.5.1
mjavac.exe
Herramientas básicas
3.5.1.2.
Dwcripcidn
La herramienta javac lee clases y definición de interfaces, escritas en el len- guaje de programación Java, y los compila en un archivo .class.
3.5.1.3.
Opcimes
-classpath ruta de clases
Fija la ruta de clases. Sobre escribe a la variable de ambiente CLASPATH. Si
-
classpath ni CLASSPATH son usadas, la ruta de clases será el actual directo- rio (.).Si la opción -sourcepath no es especificada, la ruta de clases se utiliza para realizar la búsqueda de archivos .jam así como tambikn de archivos .class.
-d directorio
Fija el directorio destino para los archivos .class. Si una clase es parte de un paquete, javac pone el archivo .class en u n subdirectorio reflejando el n o m l m del paquete, creando los directorios que necesite. Por ejemplo, si usted especi- fica -d c:\misclases y la clase es Ilamada com.mipacpete.MiClase, entonces el archivo de clase e s llamado c:\misclases\corn\mipaquete\MiC1;-lse.class.
Si -d no es especificada, javac coloca el archivo .class en el mismo directorio que el archivo fuente.
-deprecation
Muestra los mktodos desactualizados de una clase. Sin esta opción, javac
muestra los archivos que usan mktodos no desactualizados.
-sourcepath ruta de fuentes
Especifica la ruta del cbdigo fuente a explorar para definición de clases o in- terfaces. Al igual que la ruta de clases, las entradas para la ruta de fuentes son separadas por (;) y pueden ser directorio, ,archivos J A R , o archivos ZIP. Si son usados paquetes
-verbose
Incluye información de cada clase cargada y cada archivo fuente compilado.
-X
Muestra información de opciones no comunes
-Xstdout
Envía mensajes de compilacibn a System.out. De manera predefinida los men- sajes son enviados a System.err.
Compilanda
un
ejemplo sencillo
Mandando
los
errores
a
un archivo
de
texto
Compilando múltiples archivos
Especificando
la
ruta de
clases de un usuaria
Herramientas básicas
Y a que saludos.Hi se refiere a otra clase en el paquete saludos, el compilador necesita encontrar esas otras clases. El ejemplo anterior trabaja, porque la ruta de clases predefinida del usuario pasa a ser el directorio que contiene el directorio paquete. Pero suponiendo que deseamos recompilar este archivo sin preocupamos en que direct.orio estemos. Entonces necesitarnos agregar
\ejemplos
a
la ruta de clases del usuario.C:\ejemplos?javac -c:lasspat.h '\ejemplos \~e~jemplos\:;aludos\Hi.':'lvj
Si camhimnos saludos.Hi nuevamente, para u s a r u n a utilidad banner, esa utilidad tdlnbiin debe ser alcanzada por la ruta de clases del usuario.
C:\ejen~,lLos:~~avac -c:lasspa!-h \ \ e - j e m p l o s : \ ; i S \ B a n n e r s . j a r \
\e~empios\s?ludos\Hi. j a v a
Para ejecutar una clase en saludos, necesitamos tener acceso tanto a saludos y a las clases en uso.
C:\ejemp:os>java - c l a s s p a t h \ejemplos;\,lI.t,\~anr?ers. jar salcdo:;.H?
Compilando una lista de archivos
Se pueden listar todos los archivos fuente a compilar en un archivo de texto llamado archivosFuete. Este archivo se podría ver de la siguiente forma:
miclase 1 .jam
rniClase2.java
rniClase3.java
La compilación sería de la siguiente forma:
C:>javac ? a r c h i - u o s F : l e n t e
Separando archivos .java
y
archivos .class
Con frecuencia tiene sentido tener separados archivos .java y archivos .class en direct.orios separados, específicamente en un proyecto. Se u s a la opción -d para indicar el directorio destino del archivo .class. Y a que los archivos fuente no están en la ruta de clases del usuario, usamos la opción -sourcepath para ayudar al cotnpilador a encontrarlos.
C : > dir
c l a s e s \ lib\ f u e n t e s \ < C:> d i r fuentes
despedidas\
C: %: d i r fuentes\despe~.i.das
E a s e . j a v a adios. j a v a
C:> d i r lib
Banners. j ar
C:;, d i r clases
C : > javac -sourcepath t'1,uentcs - c c l a s s p a t h c l a s e s : ;ib\Ba.:lne;rs. j :lr '\
f n e n t . e s \ d e s p o d i d a s \ '
.
' J ~T J-6 ~ c l a s e s ( 2 : ; d i r clasesdespedidas?
C:;. d i r clases\despedidas F3zse. c i j s s adtos . c l a s s
3.5.2. java.exe
Herramientas básicas
3-53.
appletviewer.exe
El comando appletviexver permite correr applets fuera del contexto de un vi-
SOI- World-Wide Web.
Sinopsis
appletviewer 1 opciones j mris
. . .
Descripción
El comando appletviewer conecta al documento o al medio designado indica- do por la url y muestra cada applet referenciado por el documento en su pro- pia ventana.
Nota: si el documento referido p o r la url no hace referencia a ningún appkt con
En etiqueta OBJECT, EMBED, o APPLE3T, el cornnrzdo appletviewer no hnce m -
da
Opciones
-debug
Inicia el visor de applets en el depurador de ,Java, jdb, con esto le permite de- purar e l applet. en el documento.
-encoding nombre codificado
Especifica el archivo HTML con nombre codificado.
-J opciónJava
A traves de la opción Java se pasa un solo argumento para el interprete J a v a el cual corre el appletviewer. El argumento no debe contener espacios. Para múltiples argumentos, cada uno debe comenzar con el prefijo -J, el cual es quitado. Esto es ittil para ajustar el ambiente de ejecución del compilador o uso de memoria.
3.6.
Resumen
Se comenzi, recordando la definición y sint.axis de dos comandos internos de MS-DOS, SET y PATH, útiles para la configuración de las variables de ambiente,
PATH 9 CLASSPATH.
Enseguida incluimos la jerarquía de directorios, archivos y clases más usadas del software JDK, pues consideramos que esta informacicin le e s de gran utili- dad al programador para desarrollar s u s aplicaciones y applets.
Posteriormente se toco un tema demasiado importante: el que tiene q u e ver con el establecimiento de la ruta de clases, así como tambiin, se marcaron las diferencias y semejanzas entre los directorios y los paquetes. Explicación acompañada dc un buen ejemplo.
Finalmente se dio u n a explicación más fonnal de las tres herramientas que se u t i l h = o n d u r a n t e el proyecto, javac, Java y appletviewer. En esta explicación
Capitula
4
Cuando sc escriben programas Java que se comunican a traves de la Red, se
está programando en la capa de aplicación. Típicamente, no se necesita tra- bajar con las capas TCP y UIIP, en su lugar se puede utilizar las clases del paquete java.net. I3sta.s clases proporcionan comunicacibn de Red indepen- diente del sistema. Sin embargo, necesitas entender la diferencia entre TCP y U D P para decidir que clases Java deberían utilizar tus programas.
Cuando dos aplicaciones
se
quieren conlunicar una. con otra de forma confia- ble, establecen una conexión yse
envían datos a través de la conexión. Estoes parecido a hacer una llamada de telefono,