Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Servidor Apache-Tomcat
Servidor Apache-Tomcat
Introducción
A lo largo de este tema iremos adquiriendo los conceptos necesario para conocer fondo el servidor
t
ne
e.
in
nl
ao
ul
ia
m
c.
ci
cic.miaulaonline.net
1 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Objetivos
t
ne
e.
in
nl
ao
ul
ia
m
c.
ci
cic.miaulaonline.net
2 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Mapa Conceptual
[[[Elemento Multimedia]]]
t
ne
e.
in
nl
ao
ul
ia
m
c.
ci
cic.miaulaonline.net
3 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Instalación y Configuración
Para instalar Tomcat utilizaremos el instalador de Windows para realizar fácilmente la instalación.
Su interfaz y funcionalidad es similar a otros instaladores basados asistente, con sólo unos pocos
elementos de interés.
t
ne
Para comenzar la instalación debemos de bajarnos primero Java JRE para Windows 32/64 bit:
https://www.java.com/es/download/ie_manual.jsp
e.
in
nl
ao
ul
ia
m
c.
ci
A continuacion debemos descargar el paquete de instalación de tomcat apache para Windows 32-
cic.miaulaonline.net
4 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
http://tomcat.apache.org/download-80.cgi
t
ne
e.
in
nl
ao
ul
cic.miaulaonline.net
5 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
in
nl
Seleccionamos los componentes:
ao
ul
ia
m
c.
ci
cic.miaulaonline.net
6 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
in
nl
Aquí le indicamos donde se ecuentra el fichero JRE para la virualización:
ao
ul
ia
m
c.
ci
cic.miaulaonline.net
7 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
in
nl
Una vez finalizada la instalación nos aparecerá el siguiente mensaje:
ao
ul
ia
m
c.
ci
Si pulsamos en finalizar se ejecutará apache Tomcat. Si todo ha ido bien podremos acceder a la
cic.miaulaonline.net
8 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
in
nl
ao
ul
ia
m
c.
ci
cic.miaulaonline.net
9 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Un JDK|SDK ofrece las herramientas para compilar y ejecutar programas en Java. Podemos
compilar las clases sin necesidad de tener un entorno gráfico sobre el que desarrollar, pero dicha
tarea sería muy costosa dependiendo del tipo de proyecto, ya que existen multitud de
configuraciones posibles dependiendo del tipo de aplicación empresarial que estemos desarrollando.
Un IDE o entorno de trabajo de Java, ofrece un ambiente de trabajo para proyectos complejos,
t
es decir, si compilamos una o dos clases en un paquete o individualmente, es posible que el
ne
comando javac ofrecido en los JDK/SDK sea suficiente, pero si nuestros proyecto está
compuesto por 100 o 200 clases, javac sería muy lento y costoso.
e.
Los IDE's (Integrated Development Environment) ofrecen un entorno gráfico en el que se tiene
in
acceso a mayor número de herramientas no ofrecidas en los SDK's.
nl
Ofrece complidarores más elaborados, check-points dentro de la compilación, creación de WAR's
Vamos a comenzar con una introducción de Java, para después continuar con el procedimiento del
Introducción
cic.miaulaonline.net
10 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
simultáneamente todos los problemas que se planteaban a los desarrolladores de software por la
t
ne
Estos problemas se han agravado aún más con la expansión de Internet en la cual debe comunicarse
plataformas heterogéneas, y donde las aplicaciones distribuidas son el corazón del sistema.
e.
El éxito de Java reside en su arquitectura y las características que esta arquitectura le confiere.
[[[Elemento Multimedia]]]
in
nl
Transcripción de audio:
ao
cic.miaulaonline.net
11 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
se otorga al uso de esta tecnología, es que amplía la tecnología Java, permitiendo el uso
de cualquier biblioteca de Java en una aplicación JavaFx, además de permitir el
mantenimiento de un eficaz flujo de trabajo entre diseñador y desarrollador. Su
lanzamiento fue en dicimiento de 2008 y a partir de Java Se7, Oracle JavaFx forma parte
de la implantación de Java Se de Oracle, de manera, que para poder ejecurtar las
aplicaciones realizadas con JavaFx es necesario tener JRE, es decir, Java Runtime
environment o máquina virtual de Java y JavaFx Runtime instalado, ya que JavaFx es
compilado a código Java.
t
ne
La creación de aplicaciones JavaFx se hace a través del lenguaje encriptado JavaFX Script,
desarrollado por Same Microsystem, al que originalmente se le llamó F3, Fond Follow
e.
Function y se convirtió en código abierto en la conferencia de desarrolladores Java One en
in
mayo de 2007. Entre las características de JavaFx Script podemos destacar que se trata
de un lenguaje scripting compilado, detipado, estático y declarativo que proveé
nl
ocultamiento de datos automáticos y que soporta modo de gráficos vectorizados, vídeos y
componentes swing a través de los apis de JavaFx.
ao
En las propias palabras del padre de lenguaje Java, James Gosling, la mayoría de
ul
lenguajes de script están orientados a la página web, este está orientado a las interfases
que son altamente animadas.
ia
En conclusión, podemos decir que JavaFx al estar orientado con Java Runtime
m
Environment JRE se puede ejecutar en cualquier navegador con soporte JRE como
c.
también en móviles que dispongan de Java ME, que es la tecnología creada para paliar las
limitaciones asociadas a la creación de aplicaciones para pequeños dispositivos con
ci
cic.miaulaonline.net
12 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
in
nl
ao
Los programas se compilan a un fichero (*.class) intermedio, en un lenguaje creado por Sun
ul
(bytecodes). Este fichero luego es interpretado por una máquina virtual java (JVM). Por tanto,
java es compilable-interpretable.
ia
m
Una máquina imaginaria implementada mediante la emulación por software en una máquina real. El
código para la máquina virtual Java se almacena en archivos .class, cada uno de los cuales contiene,
La especificación de la máquina virtual java proporciona las especificaciones de hardware para las
que se compila toda la tecnología java. Esta especificación permite al software en java ser
independiente de la plataforma ya que la compilación se hace para una máquina genérica conocida
cic.miaulaonline.net
13 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
como la máquina virtual java (JVM). Esta puede ser emulada por software para poder ser ejecutada
A partir del código fuente el compilador genera bytecodes. Estos bytecodes son instrucciones de
código máquina para la JVM. Cada intérprete de java tiene una implementación de la JVM.
t
ne
Registros del sistema.
e.
Pila.
Garbage-collected heap.
Área de memoria.
in
nl
El Garbage collector
ao
ul
ejecución. El proceso de reserva de memoria varía según la sintaxis del lenguaje, pero siempre
ia
Una vez la memoria reservada deja de necesitarse (el puntero que la referencia esta "out of scope"),
c.
memoria. Esta es una tarea complicada a veces porque no siempre se sabe a priori cuando se puede
liberar la memoria. Los programas que no liberan la memoria utilizada pueden generar errores de
ejecución cuando ya no queda memoria disponible en el sistema. Se dice que estos programas tienen
una hebra de ejecución, o proceso en paralelo, a nivel de sistema que rastrea las operaciones de
reserva de memoria. Durante los ciclos muertos de la JVM, la hebra de "garbage collector" verifica
cic.miaulaonline.net
14 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
programa java, eliminando la necesidad de liberar memoria y evitando las pérdidas de memoria. Sin
embargo, la implementación del gestor de "garbage collection" puede variar sustancialmente en las
t
ne
Ya hemos visto que el código fuente de Java se compila en el sentido de que se convierten a un
e.
conjunto de bytecodes.
in
En el momento de la ejecución, los diferentes archivos bytecodes que componen el programa a
El entorno de ejecución que ejecuta el código compilado para una JVM realiza tres tareas
principales:
ul
El cargador de clases:
ci
Además, mantiene separadas aquellas clases cargadas a partir del sistema de archivos local y
aquellas otras cargadas a través de los recursos de la red. Esto permite limitar la acción de posibles
aplicaciones dañinas, ya que las clases locales son las primeras en ser cargadas.
Una vez que todas las clases han sido cargadas, se determina el mapa de memoria de la aplicación.
En este momento se asigna direcciones de memoria reales a las referencias simbólicas del código y
cic.miaulaonline.net
15 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Verificador de bytecode:
El código de java se verifica mediante diferentes test antes de ejecutarse en la máquina. La JVM
verifica el formato de los diferentes fragmentos de bytecode en busca de código ilegal - código que
utilice punteros, que viola los permisos de acceso de los objetos o intenta cambiar los tipos de los
t
objetos. Todas las clases importadas por la red pasan obligatoriamente por el verificador de
ne
bytecode.
e.
viola la integridad del sistema. Si la verificación se completa con éxito, se puede asegurar lo
in
siguiente:
nl
Las clases cumplen con el formato de archivo de clase de la especificación JVM.
ejecución.
ia
objetos.
m
Introducción:
ci
La arquitectura presentada en el punto anterior proporciona unas características a Java que ningún
Robusto:
Java realiza verificaciones en busca de problemas tanto en tiempo de compilación como en tiempo de
ejecución. En tiempo de compilación no tiene ningún misterio porque todos los lenguajes realizan
esas verificaciones, sin embargo, en tiempo de ejecución, la JVM, que realiza la interpretación de los
cic.miaulaonline.net
16 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
bytecodes, detecta cuando existe algún problema en la ejecución del programa, y lanza excepciones
que pueden ser recogidas por el programador con el propósito de recuperarse de dichos errores.
máquina (bytecodes), tan solo necesitamos utilizar el intérprete adecuado para que nuestro
programa funcione sobre cualquier plataforma. El lema de Sun es "escribir una vez, ejecutar en
t
cualquier parte".
ne
Seguro:
e.
Como toda la ejecución la realiza la JVM, los programas Java pueden ser sometidos a muchas
in
El código se pasa a través de un verificador de ByteCodes que comprueba el formato de los
nl
fragmentos de código y detecta fragmentos de código ilegal (código que falsea punteros, viola
ao
El cargador de clases separa el espacio de nombres del sistema de ficheros local del de los
ul
recursos procedentes de la red. Esto limita cualquier aplicación del tipo Caballo de Troya, ya
que las clases se buscan primero entre las locales y luego entre las procedentes del exterior.
ia
ByteCodes, que hace que cualquier programa pueda ser convertido a código fuente a partir de
sus bytecodes. Utilizando javap no se obtiene el código fuente original, aunque si desmonta el
c.
programa mostrando su estructura. Este problema de seguridad del código fuente es algo
ci
Portable:
Más allá de la portabilidad básica por ser de arquitectura independiente, Java implementa otros
Java construye sus interfaces de usuario a través de un sistema abstracto de ventanas de forma que
cic.miaulaonline.net
17 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Para poder desarrollar software con Java necesitamos una serie de herramientas que nos
Al igual que el lenguaje natural que utilizamos para comunicarnos, ya sea de forma oral o por
escrito, cualquier lenguaje de programación dispone de unos elementos y reglas que deben
t
conocerse a la hora de programar.
ne
Los elementos del lenguaje natural nos permiten designar cosas (nombres), expresar cualidades de
e.
esas cosas (adjetivos), expresar acciones (verbos), etc.
in
Las reglas sintácticas (estructura) y semánticas (significado) permiten el entendimiento entre las
Aunque todos los conceptos que aprenderemos a continuación aparecen en todos los lenguajes de
m
posible lo que significa cada una de las órdenes que forman parte del programa, con el propósito de
poder recordar en un futuro la función que realiza cada una de ellas, y facilitar su estudio a personas
ajenas al programa.
Identificadores:
En todo lenguaje de programación surge la necesidad de utilizar una serie de elementos que
cic.miaulaonline.net
18 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
ELEMENTO DESCRIPCIÓN
- Elementos utilizados para referenciar posiciones de memoria dónde podremos
Variables
almacenar datos necesarios para el programa.
- Elementos utilizados para referenciar posiciones de memoria dónde reside el código
Funciones
del programa.
- Elementos que encapsulan variables (propiedades) y funciones (métodos) de manera
Objetos que resulta más sencillo modelar los problemas que queremos resolver simplificando
el diseño de programas complejos.
- Conforme avancemos iremos conociendo más elementos de los lenguajes de
etc.
t
programación.
ne
A la hora de asignar nombre a todos estos elementos hay que seguir unas reglas.
e.
El modelo mental más sencillo que se puede tener de una aplicación informática es el de una caja
in
negra que recibe unos datos de entrada, los procesa y entrega unos datos de salida representados de
nl
alguna manera.
ao
Estos datos de entrada, los cuáles deben ser albergados en memoria y referenciados mediante
Cada lenguaje de programación dispone de unos tipos de datos básicos a los cuáles nos tenemos que
amoldar a la hora de realizar el análisis de los datos que necesitamos en nuestra aplicación.
ia
Variables:
m
Este elemento juega un papel muy importante en el programa porque es el mecanismo que pone a
c.
nuestra disposición el lenguaje de programación para gestionar de una manera sencilla los datos de
ci
la aplicación.
Al declarar una variable en el programa estamos reservando una zona de memoria para
posteriormente albergar un dato. Existen lenguajes que necesitan que especifiquemos el tipo de dato
En todo momento tenemos que tener presente que al usar la variable realmente estamos usando el
cic.miaulaonline.net
19 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Operadores:
Una de las primeras aplicaciones de los ordenadores fue el cálculo de matemático y, aunque ahora
ha pasado a un segundo plano, los lenguajes de programación ofrecen una serie de elementos que
t
lógicas, comparaciones, etc.
ne
Sentencias de control:
e.
Sin embargo, la característica que confiere al ordenador su potencia es la capacidad de
in
procesamiento de la que dispone.
nl
Aunque esto nos pueda asustar, el tipo de procesamiento que puede realizar es muy básico,
limitándose a:
ao
una o varias condiciones (sentencias de decisión). En dichas condiciones siempre estarán implicados
Alterar el flujo de ejecución normal del código del programa (sentencias de salto o bucles). También
m
La combinación adecuada de este tipo de sentencias es la que definirá la estructura que resuelve un
determinado problema.
ci
Hemos visto el uso de variables como mecanismo básico para almacenar y acceder a datos en
queda corto por ser demasiado simple y necesitamos a sistemas de almacenamiento más complejos
Uno de estos sistemas, que aparece en todos los lenguajes de programación, es el de los Arrays.
cic.miaulaonline.net
20 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Excepciones:
Todos los lenguajes de programación avisan de los errores que cometamos en tiempo de
compilación, pero pocos son los que han sido diseñados para seguir avisando de posibles errores en
tiempo de ejecución. Las aplicaciones Java, gracias a que se ejecutan bajo la supervisión de la
máquina virtual (JVM), están siendo controladas constantemente. En caso de que ocurra algún error
de ejecución, se lanza una excepción que puede ser recogida y tratada por el programador en su
aplicación. De esta manera, lo que antes solía terminar en una ejecución anormal del programa, con
t
java puede ser resuelto.
ne
Objetos:
e.
Java es un lenguaje de programación orientado a objetos. La importancia de este tema es tal que le
in
dedicamos el siguiente capítulo entero.
nl
ao
Para poder desarrollar software con Java necesitamos una serie de herramientas que nos
ul
Existen otras empresas, como IBM y Microsoft, que también tienen entornos de programación
m
para Java. Salvo el de Microsoft, todos son compatibles al 100% con las especificaciones que
[[[Elemento Multimedia]]]
ci
Transcripción de audio
problema: ¿cómo reutilizar el software para los dintintos sistemas que existen? Presisamente, con la
idea de resolver este problema, surge Java. Este lenguaje, asume que las aplicaciones creadas se
terminan de compilar en la máquina en la que se van a ejecutar, con lo que es en ese momento, en el
que se genera el fichero en lenguaje máquina en el que se ejecutará, para eso, se incorpora la idea
cic.miaulaonline.net
21 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
de máquina virtual de Java, que es propia de cada sistema. De este modo, un programador escribe
compilado que no es ejecutable aún. Para obtener el ejecutable, cogemos ese programa compilado
dentro de la máquina del usuario final y será ahí donde se realice la última adaptación que creará el
programa para que ese usuario concreto lo pueda ejecutar. Ahora bien, para que este proceso
funcione correctamente, ¿qué debemos tener instalado? Pues bien, en esta exposición hemos
hablado de dos figuras, en primer lugar, desde el punto de vista de los desarrolladores de software,
necesaremos instalar un paquete denominado JDK que es el quit de desarrollo de Java que incluye el
t
ne
compilador de Java, todas las librerías de Java, la máquina virtual de Java y el entorno de ejecución.
Con este paquete, y un editor de texto, ya podríamos comenzar a escribir aplicaciones Java. Lo
e.
normal, será que usemos algún entorno de desarrollo como Eclipse que facilitarán la escritura de
aplicaciones Java. Por su parte, los usuarios finales deben tener instalado el paquete llamado JRE o
in
entorno de ejecución de Java que contiene la máquina virtual de Java más las librerías y
propietaria de Java.
ul
siguiente dirección:
c.
http://java.sun.com/
ci
cic.miaulaonline.net
22 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
A continuación, describimos los directorios y ficheros más importantes:
e.
Directorios
in
nl
bin: en este directorio se encuentran todos los ficheros ejecutables del JDK. En su interior se
encuentran los ficheros más importantes para el desarrollo de la tecnología Java. Los más
ao
importantes son:
ul
javac.exe (Es el compilador de Java, permite compilar los ficheros con extensión java y crear
ia
java.exe (Intérprete (JVM). Permite poder ejecutar los ficheros compilados (extensión class) y
m
ejecutarlos).
jdb.exe (Depurador).
ci
Los programas de este directorio los usaremos conforme los vayamos necesitando.
demo: En este directorio hay una serie de ejemplos que Sun ha desarrollado con propósitos
Applets.
JFC --> Java Foundation Classes. En la plataforma Java 2 (última versión de Java), Sun.
cic.miaulaonline.net
23 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
docs: En este directorio está la documentación del API de Java. No viene por defecto con el JDK y
lib: En este directorio se encuentran las clases de Java proporcionadas por Sun, y que conforman el
API que utilizaremos en nuestros programas. las clases que nos interesan están comprimidas en un
tools.jar
t
jre: Java Run Environment. Entorno de Ejecución de Java proporciona las herramientas básicas para
ne
la ejecución de aplicaciones Java, sin incluir todas las herramientas que se proporcionan para su
e.
Configuración del sistema.
in
El JDK no necesita ninguna configuración específica, sin embargo, si queremos que nuestras
nl
aplicaciones funcionen debemos configurar unas variables de entorno que dependerán del
ao
sistema operativo sobre el que estemos trabajando. Vamos a configurar las variables de
PATH: En esta variable debemos poner el camino hasta los ejecutables del JDK
ia
m
El propósito de hacer esto es el poder ejecutar los ficheros ejecutables (javac, java...) desde
cualquier directorio.
c.
CLASSPATH: Debe aparecer el camino hasta las clases que importemos en nuestros programas. En
ci
El propósito es que el compilador (javac) encuentre las clases que importemos en nuestros
programas.
Vamos a mostrar como instalar y configurar las variables de entorno de Java para poder utilizar el
cic.miaulaonline.net
24 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
in
A continuación y cada vez que queramos compilar y ejecutar nuestras prácticas debemos de realizar
nl
la siguiente configuración.
ao
Nos aparecerá la consola de Windows ahora debemos de asignarle el valor a path y classpath
Debemos recordar que cada vez que iniciemos la consola para compilar y ejecutar las prácticas
cic.miaulaonline.net
25 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Antes de explicar el proceso de creación de un programa, conviene explicar que en Java vamos a
Aplicación en modo texto: En este tipo de aplicaciones la interacción con el usuario (entrada
de datos y presentación de resultados) se realiza en modo texto (no existirán cajas de texto,
botones,...). El ratón no tendrá uso en estas aplicaciones. Son las aplicaciones que realizaremos
en el primer bloque donde nuestro objetivo será aprender los conceptos básicos de Java.
También es interesante cuando realizamos los prototipos de nuestros programas debido a que
t
ne
la depuración es más sencilla.
e.
Aplicación en modo gráfico: En este tipo de aplicaciones la interacción con el usuario se
realiza en modo gráfico. Estas aplicaciones pueden ser de todo tipo y no hay que pensar solo en
Internet:
in
nl
Procesador de texto, bases de datos, entorno de programación, tratamiento de
gráficos...
ao
ul
independiente sino que necesitan el soporte de un navegador. Estos programas están pensados
ia
para que sean invocados desde una página HTML, viajen a través de la red y se ejecuten en la
m
Crear el código fuente: Para crear el código fuente de Java podemos utilizar:
ci
Compilar el código fuente: La compilación del código fuente se realizará a través del compilador
proporcionado por Sun en su JDK (Java Development Kit). El compilador se llama javac.exe y la
cic.miaulaonline.net
26 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
C:\javac.exe FicheroFuente.java
NOTA: El fichero llamado FicheroFuente.java debe llamarse igual que la clase y es imprescindible
La compilación se realiza desde una ventana de MS-DOS o desde el propio entorno que estemos
usando, el cual nos ocultará la ejecución de javac. El proceso de compilación requiere que el sistema
t
tenga configurada adecuadamente las variables de entorno para el correcto funcionamiento del
ne
comando anterior. Como resultado de la compilación obtenemos el fichero de bytecodes que tiene
extensión ".class".
e.
Ejecutar la aplicación: Para ejecutar el fichero de bytecodes es necesario pasarlo por el
in
intérprete adecuado. El intérprete depende del tipo de programa java que hayamos
implementado:
nl
Miniaplicaciones (applets) ( Es el navegador el intérprete y nosotros tenemos que
ao
Aplicación (texto o gráfica) ( Utilizaremos el intérprete proporcionado por el JDK de Sun que se
ul
C:\java.exe FicheroBytecodes.class
m
extensión "class", solamente debemos escribir el nombre del fichero compilado, pero manteniendo la
JAVAC es el compilador, debemos indicarle toda la ruta y el nombre del fichero con extensión ".java"
JAVA es el intérprete de archivos con extensión class, debemos decirle toda la ruta y el nombre del
cic.miaulaonline.net
27 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
NOTA: Para poder probar este primer ejemplo debemos tener configuradas las variables de entorno
que nos llevan al JDK de java y nos permiten compilar los ficheros.
Todos los ficheros de Java son clases. Dentro de dichas clases escribiremos el código para crear
Para comenzar, utilizaremos un método llamado main que es el "arranque" de las clases no gráficas
de Java. Simplemente esto quiere decir que toda "lógica" tiene un entorno y un lugar para probar
t
dicho entorno, por ejemplo, si queremos hacer una página Web, el entorno para dicha clase web
ne
sería un navegador de Internet. Pues en nuestro caso, nuestro entorno será la ventana de Ms-Dos y
para probar las aplicaciones necesitamos crearnos un método main para arrancar dicho entorno y
e.
generar nuestra lógica en la clase.
in
Como podemos comprobar, vamos a hacer un ejemplo sencillo para visualizar nuestra primera
{
m
{
ci
Debemos recordar que Java es un lenguaje de programación "Case Sensitive", es decir, diferencia
entre mayúsculas y minúsculas, por lo que escribiremos literalmente el contenido de nuestro primer
cic.miaulaonline.net
28 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
A continuación vamos a guardar el fichero de nuestro bloc de notas con la extensión ".java" en la
ubicación que vayamos a probar nuestros ejemplos. Es recomendable crearnos una carpeta para
poder ubicar todas nuestras prácticas. Podemos utilizar cualquier otro editor de caracteres, pero es
imprescindible que solo almacene texto, no nos valdrían editores de texto del estilo Word o
WordPad, ya que almacenan más información además del texto escrito, un ejemplo de estos editores
puede ser UltraEdit o algún bloc de notas "free" que existen por internet y que tienen más
t
características que el bloc de notas tradiciones de Windows.
ne
El nombre de nuestro fichero "java" debe tener el mismo nombre que nuestra clase, incluida la
e.
diferenciación de mayúsculas y minúsculas, en nuestro ejemplo debemos llamarlo ClaseJava.java.
in
Voy a crear una carpeta en la unidad C:\ llamada PracticasJava y almacenaré las prácticas en dicha
ubicación. En el bloc de notas seleccionaremos como Tipo: "Todos los archivos" y escribiremos la
nl
extensión ".java" para nuestra primera clase.
ao
NOTA: Podremos guardar las prácticas en cualquier ubicación, pero es conveniente guardarlas en
alguna "ruta" fácilmente accesible ya que posteriormente tendremos que escribir dicha ruta en
ul
cic.miaulaonline.net
29 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
A continuación abriremos una nueva ventana de comandos de Ms-dos. Para ello nos iremos al Inicio
de Windows y pulsaremos sobre "Ejecutar" y escribiremos el comando cmd.exe. Esto depende del
sistema operativo en el que estemos trabajando. Se nos abrirá una nueva ventana de comandos.
Ahora debemos tener unas nociones básicas de Ms-Dos para trabaja y poder compilar nuestras
clases de Java.
Recordar que debemos asignar los valores a path y classpath como vimos anteriormente.
t
Sobre la ventana de comandos escribimos:
ne
cd C:\PracticasJava
e.
Con el comando cd de Ms-Dos podremos entrar en cualquier directorio, según nuestra práctica yo
in
he almacenado el fichero "java" de nuestra clase en dicha ubicación. Debemos posicionarnos en
dicha ubicación. También podemos escribir "cd.." o "cd\" para ir a la raíz dónde hayamos
nl
almacenado los ficheros. Si queremos cambiar de unidad, bastaría con escribir la letra de la unidad
ao
seguida de dos puntos: "D:". Con el comando "dir" veremos todos los ficheros que existen dentro de
un directorio, aunque podemos complementar nuestras prácticas con las ventanas propias de
Windows.
ul
Ya estamos posicionados sobre el lugar dónde tenemos almacenada la clase ".java", ahora debemos
ia
utilizar el compilador javac.exe para poder compilar la clase. Escribiremos la llamada al compilador
m
C:\PracticasJava>javac ClaseJava.java
ci
Si no existen errores en la clase, no nos dará ningún mensaje y simplemente volverá a aparecer el
cic.miaulaonline.net
30 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Ahora veremos que nos ha creado un fichero con extensión ".class", que es el resultado de un fichero
compilado con extensión ".java", podemos verlo fácilmente si nos posicionamos en Windows dentro
t
ne
e.
in
También podemos escribir el comando "dir" desde la ventana de comandos de Ms-Dos.
nl
ao
ul
ia
m
c.
java.exe. Para poder ejecutarlo debemos escribir desde la ruta dónde se encuentre la clase
ci
java ClaseJava
cic.miaulaonline.net
31 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
[[[Elemento Multimedia]]]
El programador debe conocer cuál es su situación respecto a la máquina que va a programar y qué
personajes, junto con él, son importantes a la hora de desarrollar una aplicación. Cada uno de estos
t
ne
Desarrollador del lenguaje de programación. Su conocimiento de la máquina es profundo debido a
que debe desarrollar la aplicación que ayudará al programador a realizar su trabajo. En un principio
e.
se desarrollaban los lenguajes de programación utilizando el lenguaje de ensamble del
in
Posteriormente, estos lenguajes se han podido utilizar para el desarrollo de tecnologías de
nl
programación más potentes como C++, y éste a su vez es el que se ha utilizado en el desarrollo de
utiliza para el desarrollo de sus aplicaciones. No necesita conocer la máquina tan en profundidad
ia
como el desarrollador de lenguajes de programación, sin embargo, ese conocimiento extra ayuda a
m
comprender lo que se está realizando y, por tanto, facilita el desarrollo de aplicaciones. Su función
principal es utilizar todas las herramientas que le ofrece un lenguaje de programación para
c.
Usuario. Su conocimiento del ordenador suele ser escaso, por no decir nulo, y su función es la de
Un ejemplo puede aclarar todo lo expuesto anteriormente. Veamos cómo realiza el acceso a la hora
Desarrollador del lenguaje de programación. Este personaje conoce la manera que se ha diseñado en
la máquina para contabilizar el tiempo. El reloj de tiempo real (RTC) incorpora un contador dónde se
almacenan los milisegundos que han transcurrido desde el 1-1-1970 a las 00:00:00 hasta este
cic.miaulaonline.net
32 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
momento. Conocido el origen de coordenadas y los milisegundos que han transcurrido, se puede
obtener mediante la aplicación de un algoritmo matemático el día, mes y año en el que nos
encontramos, y la hora con una precisión de milisegundos. Por tanto, el desarrollador de un lenguaje
de programación, para acceder hasta la hora del sistema, tendría que acceder al dato almacenado en
el RTC mediante la lectura del puerto dónde está situado e implementar el algoritmo de conversión,
t
código de más bajo nivel para acceder a la hora del sistema, puede ofrecer este código al
ne
programador para simplificarle la forma de acceso. Una parte fundamental de un lenguaje de
e.
desarrollado el desarrollador del lenguaje de programación y que puede utilizar el programador en
in
sus aplicaciones. La evolución de las tecnologías de programación ha dado lugar a dos tipos de
API orientado a objetos. Por ejemplo, el objeto Date es que se debe utilizar para acceder a la
Usuario. Simplemente visualizará la hora del sistema tal y como el programador haya realizado la
representación en la aplicación.
m
ofrezcan.
Clases
cic.miaulaonline.net
33 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
A la hora de plantear el análisis del problema que se quiere resolver por software, todas las
tecnologías han optado por dividir dicho problema en parte más pequeñas. La estrategia a seguir es
conseguir una estructura en la que cada una de esas partes realice una tarea única e indivisible,
coordinadas por una parte principal que obtiene la información de lo que hay que hacer de su
interacción con el usuario. En la actualidad esta interacción se realiza a través de un entorno gráfico
t
referencia el código. Cada una de esas partes se denomina subrutina, procedimiento o función
ne
dependiendo del lenguaje en el que nos encontremos.
e.
En los lenguajes orientados a objetos, la estructura se realiza tomando como referencia los datos.
in
En Java una clase se suele representar con la siguiente estructura:
nl
public class NombreClase{
ao
// Definición de propiedades --> Características del elemento que describimos con la clase.
ul
}
m
En este primer ejemplo podemos observar que creamos una clase coche.
ci
Las propiedades de la clase representan características del coche: estado, velocidad actual,
velocidad máxima,...
Los métodos representan acciones que podemos realizar sobre el coche: montar, bajar, salir,...
import java.io.BufferedReader;
cic.miaulaonline.net
34 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
import java.io.InputStreamReader;
import java.io.IOException;
t
static int VMAXIMA=120;
ne
public static void menu(){
e.
System.out.println("1.- Montar en el coche");
System.out.println("2.- Comenzar");
in
nl
System.out.println("3.- Parar");
ao
System.out.println("");
ia
}
c.
if (estado==false){
estado=true;
else{
cic.miaulaonline.net
35 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
menu();
if(estado==false){
t
System.out.println("Primero sube al coche");
ne
}
e.
else if (velocidad== VMAXIMA){
else{
ul
++velocidad;
ia
}
c.
menu();
ci
if (velocidad==0){
else{
cic.miaulaonline.net
36 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
velocidad=0;
menu();
t
public static void salirCoche(){
ne
if(estado==false){
e.
System.out.println ("No te has subido y ya te bajas");
}
in
nl
else if(velocidad!=0){
ao
}
ia
else {
m
}
ci
menu();
String opcion;
menu();
cic.miaulaonline.net
37 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
do{
opcion=i.readLine();
try{
switch(Integer.parseInt(opcion)){
case 1: montar();
t
break;
ne
case 2: comenzar();
e.
break;
case 3:parar();
in
nl
break;
ao
System.exit(0);
ia
}
c.
}
ci
}while (true);
cic.miaulaonline.net
38 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Tipos de clases
abstract
Una clase abstract tiene al menos un método abstracto. Una clase abstracta no se instancia, sino que
t
final
ne
Una clase final se declara como la clase que termina una cadena de herencia. No se puede heredar
de una clase final. Por ejemplo, la clase Math es una clase final.
e.
public
in
Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son
nl
accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes,
ao
synchronizable
ul
Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir,
ia
que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de
colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se
m
puedan modificar las mismas variables sin que haya problemas de que se sobrescriban.
c.
Variables de instancia
ci
La declaración de una variable dentro de la definición de una clase por defecto es una variable de
instancia. Con esto queremos decir que todo objeto que instanciemos de esa clase contiene su propia
Nombreobjeto.nombrevariabledeinstancia
Estas variables deben ser declaradas fuera de los métodos y dentro de la clase, y son del tipo global
cic.miaulaonline.net
39 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
por lo que las pueden utilizar cualquier método no estático de esa clase, pero para acceder desde
Variables estáticas
Si al definir una variable le anteponemos la palabra static conseguimos que todos los objetos de
dicha clase compartan dicha variable. Es decir existe una única copia de dicha variable, por tanto, si
algún objeto modifica la variable, quedará modificada para todos los objetos.
t
Si queremos acceder a una variable de clase no es necesario instanciar ningún objeto de dicha clase,
ne
basta con usar:
e.
Nombredeclase.nombredevariableestática
in
En este ejemplo definimos una variable estática para la velocidad máxima a la que puede ir un
coche, accederemos al valor de la variable sin necesidad de crear una variable de instancia:
nl
public class Coche{
ao
...
ul
...
ia
...
m
...
ci
...
...
cic.miaulaonline.net
40 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
System.out.prinln(Coche.VMAXIMA);
Variables finales
En Java se usa la palabra clave final para indicar que una variable debe comportarse como si fuese
una constante. Por tanto, no se permitirá su modificación una vez que sea declarada e inicializada.
t
Poniendo la palabra final con una variable o clase estática, se crean constantes de clase.
ne
Si intentamos modificar el valor de la variable nos dará error.
e.
En este ejemplo intentaremos modificar la velocidad máxima a la que puede ir un coche. Como la
variable que controla la velocidad máxima es final comprobaremos que nos saltará un error:
...
ul
...
ia
...
c.
...
ci
...
Coche.VMAXIMA=180;
cic.miaulaonline.net
41 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
System.out.prinln(Coche.VMAXIMA);
Métodos de clase
Los métodos son funciones que pueden ser llamados dentro de la clase o por otras clases.
t
La implementación siempre será de dos partes: la declaración y el cuerpo:
ne
[ModificadoresAcceso] TipoRetorno nombreMétodo ([lista_de_argumentos]) [excepciones]{
e.
CuerpodelMétodo
}
in
nl
La lista de argumentos es opcional. Los parámetros o argumentos se usan para pasar información al
ao
El tipo de retorno es obligatorio e indica el tipo de dato que devuelve tras realizar su tarea. Si no
ul
devuelve nada se indica mediante la palabra void. Lo recibe la aplicación que realizó la llamada.
ia
Pueden ser invocados sin necesidad de que haya que instanciar ningún objeto de la clase.
NombreClase.nombreMétodo(...)
Los métodos estáticos solo tienen acceso a variables de clase o estáticas; no tienen acceso a las
variables de instancia a no ser que se cree un objeto y se acceda a las variables de instancia a través
de ese objeto.
cic.miaulaonline.net
42 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
En Java es posible definir dos o más métodos dentro de la misma clase que compartan el mismo
nombre pero las declaraciones de sus parámetros deben ser diferentes. A esto es a lo que se conoce
programación orientada a objetos es la capacidad que tienen los objetos de una clase de responder
t
En este ejemplo definimos una clase con 3 métodos sobrecargados:
ne
class Principal{
e.
public void Metodo1()
in
{
nl
System.out.println("Metodo sin Argumentos");
ao
{
ia
}
ci
public void Metodo1(double edad, double año, double mes) //Sobrecarga con tres parámetros
System.out.println(" edad= " +edad+ " año= " + año + " mes= " + mes );
cic.miaulaonline.net
43 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
class Prueba{
Principal objeto= new Principal(); //Se crea un Objeto de nombre Objeto para llamar a los Métodos
t
Sobrecargados
ne
objeto.Metodo1();
e.
objeto.Metodo1(30);
objeto.Metodo1(30.2,76.0,8.6);
in
nl
}
ao
Variables
ul
ia
Dentro de cualquier lógica de negocio necesitamos almacenar información para poder realizar una
m
aplicación. Dicha información se almacena en variables, que son espacios en la memoria y que
c.
Para trabajar con variables existen múltiples tipos de datos, dependiendo de lo que necesitemos
realizar, pudiera ser que necesitemos realizar operaciones, por lo que almacenaríamos números, o
pudiera ser que nuestro dato sea un nombre, por lo que almacenaríamos textos. Existen varios tipos
Además, al igual que el lenguaje natural que utilizamos para comunicarnos, ya sea de forma oral o
por escrito, cualquier lenguaje de programación dispone de unos elementos y reglas que deben
cic.miaulaonline.net
44 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Los elementos del lenguaje natural nos permiten designar cosas (nombres), expresar
En los lenguajes de programación también encontramos unas reglas sintácticas que debemos
t
problema que queremos programar.
ne
Java tiene como todos los lenguajes de programación sus propias características para describir
e.
Un elemento importante en el momento de crear una clase es comentar las acciones que estamos
in
realizando. Dichos comentarios nos van a servir para dos propósitos, comprender las acciones que
nl
estamos realizando y documentar dichas acciones.
ao
implementar algunas características. Si no hemos puesto comentarios de las acciones que estamos
ul
realizando, la tarea de volver a revisar las acciones o de "saber" para qué sirve cada acción puede
Otra de las ventajas de incluir comentarios se debe a que podemos encontrarnos con un código que
m
qué orden. Si el programador ha documentado su código, nos será mucho más sencillo adaptarnos a
c.
Para poner comentarios en nuestro código fuente java tenemos tres opciones:
Comentario Descripción
//.......... Comentario para una sola línea.
/* ........ */ Comentario de una o más líneas
/** ........*/ Comentario de documentación de una o más líneas.
Una línea de comentario que empiece por //
// Esto es un comentario
cic.miaulaonline.net
45 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
/* Todo esto
también es un
comentario */
t
System.out.println ("Hola mundo");
ne
Por último, podemos hacer varias líneas de comentario entre /** y */
e.
/** Todo esto
es un
in
nl
comentario de documentación */
ao
}
m
La diferencia entre el comentario que empieza por /** y el que empieza por /* es que el primero sale
documentación a partir del código. El comentario que empieza por /* no sale en la documentación y
ci
Hay unos detalles, sin embargo, que hay que tener en cuenta para comentarios que van a salir en la
documentación. Conviene poner uno de estos comentarios delante de cada clase, cada método y
package Mates;
/**
cic.miaulaonline.net
46 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
e integrales */
t
/** Constante PI.
ne
Valor de PI=3.141618 */
e.
public static final double PI = 3.1416;
in
/** Devuelve el seno del ángulo que se le pasa como parámetro.
nl
El ángulo debe estar en radianes y es un double. */
ao
{
ia
return 19.21;
m
}
c.
}
ci
Una vez que tenemos la clase escrita, podemos utilizar la herramienta javadoc para crear la
javadoc.exe ClaseMatematicas.java
cic.miaulaonline.net
47 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
Veremos que nos ha creado en el directorio donde hemos creado la clase, una serie de páginas html
e.
y css que "copia" el formato de documentación de la API de Java.
in
Si pulsamos sobre el fichero ClaseMatematicas.html, veremos la documentación ya creada:
nl
ao
ul
ia
m
c.
ci
Es importante tener en cuenta que dentro de cada comentario, la primera frase -hasta el primer
cic.miaulaonline.net
48 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
punto- saldrá como resumen de la clase, método o atributo. Conviene, por tanto, que esa frase tenga
o función, indican que ese comentario ha de ser colocado en la documentación que se genera
Identificadores
t
ne
En todo lenguaje de programación surge la necesidad de utilizar una serie de elementos que
e.
debemos designar con algún nombre, por ejemplo:
in
ELEMENTO DESCRIPCIÓN
- Elementos utilizados para referenciar posiciones de memoria dónde podremos
Variables
almacenar datos necesarios para el programa.
nl
- Elementos utilizados para referenciar posiciones de memoria dónde reside el código
Funciones
del programa.
ao
Palabras reservadas
En la siguiente tabla tenemos las palabras claves proporcionadas por la documentación de SUN y
cic.miaulaonline.net
49 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
Convenios para asignar nombres de las clases, variables y métodos.
in
Existe un convenio, no obligatorio, a la hora de nombrar las clases, las variables y métodos. Es
nl
recomendable seguirlo debido a que ayuda a dar claridad a los programas.
ao
Métodos - Mismo regla que en clases pero poniendo con minúscula la primera letra de
verbo. Se aconseja no usar el símbolo de subrayado.
ia
- En mayúsculas.
Constantes - Si se usan varias palabras se aconseja separarlas mediante el símbolo de
subrayado.
m
Separadores
cic.miaulaonline.net
50 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
in
nl
Existe un convenio, no obligatorio, a la hora de nombrar las clases, las variables y métodos:
ao
Java utiliza cuatro tipos de elementos para abarcar todos los posibles datos básicos que podemos
m
La siguiente tabla lista los tipos de datos primitivos soportados por Java, sus tamaños y su formato.
cic.miaulaonline.net
51 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
(Texto)
Un único carácter o carácter aislado.
char Carácter Unicode de 16 bits sin signo. - Un valor tipo char debe ir entre
comillas simples.
- No es un dato primitivo sino una clase
pero por su naturaleza lo incluimos
como tipo de dato.
- Se utiliza para representar secuencias
Cadena de caracteres codificados en
String de caracteres y suele traducirse como
Unicode.
cadena.
- Un dato de este tipo se delimita entre
comillas dobles.
t
"Nombre \t Pepe"
ne
(Lógicos)
boolean true o false Un valor booleano (true or false).
e.
in
nl
ao
ul
ia
m
Al definir una variable se debe indicar su tipo y se deben respetar las siguientes normas con
c.
Nos vamos a declarar una serie de variables e imprimiremos el resultado en una ventana de Ms-Dos.
cic.miaulaonline.net
52 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
byte b=-128;
short s=32767;
int i=-2147483648;
long l=9223372036854775807L;
t
System.out.println("El valor de b es: " + b);
ne
System.out.println("El valor de s es: " + s);
e.
System.out.println("El valor de i es: " + i);
}
ul
El alcance de una variable viene acotado por la zona entre llaves { } en la cual se ha definido la
cic.miaulaonline.net
53 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
in
Dependiendo dónde voy a declarar una variable, la variable tendrá una "visibilidad" u otra.
nl
Vamos a ver un ejemplo en el que declararemos una variable en la clase y otra en el método main:
ao
{
ia
int i = 25;
m
{
ci
int i=19;
Podemos comprobar que las dos variables pueden coexistir a pesar de que su nombre sea el mismo
cic.miaulaonline.net
54 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Si declarásemos la misma variable dentro del mismo método main produciría una excepción
t
public class ClaseAmbitoVariables
ne
{
e.
public static void main(String args[])
{
in
nl
int i = 25;
ao
int i=19;
}
ia
}
m
c.
ci
Declarando variables
Al declarar una variable de un tipo e inicializarla con un valor, el compilador normalmente sabe de
cic.miaulaonline.net
55 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
qué tipo se trata. Sin embargo, hay ocasiones en la que el tipo es ambiguo y hay que guiar al
t
ne
e.
in
nl
ao
ul
ia
Ahora, podemos ver cómo se declara una variable de tipo int, es decir, contiene un entero:
cic.miaulaonline.net
56 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
Java utiliza cuatro tipos de datos para almacenar enteros, cada uno con su propio número de bytes
ne
alojados en memoria: byte (un byte), short (dos bytes), int (cuatro bytes) y long (ocho bytes).
e.
Utilizar un tipo de dato entero u otro depende de los valores de datos que deseamos almacenar, así
in
Vamos a mostrar un ejemplo práctico en el que utilizamos todos los tipos de datos enteros y
nl
posteriormente mostramos su valor por pantalla:
ao
{
ia
{
c.
byte byte1;
ci
short short1;
int int1;
long long1;
byte1 = 1;
short1 = 100;
int1 = 10000;
cic.miaulaonline.net
57 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
long1 = 100000000;
t
}
ne
}
e.
Y el resultado de la aplicación:
in
nl
ao
ul
ia
Java incluye dos tipos de variables en coma flotante, cada uno con su propio número de bytes para
aplicar en memoria. Los dos tipos que tenemos son float (cuatro bytes) y double (ocho bytes).
c.
Vamos a visualizar un ejemplo en el que vamos a declararnos los tipos de datos float y double para
ci
cic.miaulaonline.net
58 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
float float1;
double double1;
float1 = 21.1231157111;
double1 = 19.11437687311E+9;
t
System.out.println("Valor de double1 = " + double1);
ne
}
e.
}
Resultado de la compilación
in
nl
ao
ul
ia
m
Podremos comprobar que en la compilación nos aparece una excepción que indica que podemos
c.
perder precisión en los datos. Esto sucede porque en Java todos los tipos de datos con decimales son
double. Si queremos especificar un tipo de dato float, debemos hacerlo con F al final del número a
ci
asignar.
cic.miaulaonline.net
59 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
float float1;
double double1;
float1 = 21.1231157111F;
double1 = 19.11437687311E+9D;
t
System.out.println("Valor de double1 = " + double1);
ne
}
e.
}
perder precisión en los datos. Esto sucede porque en Java todos los tipos de datos con decimales son
ao
double. Si queremos especificar un tipo de dato float, debemos hacerlo con F al final del número a
asignar.
ul
{
m
{
ci
float float1;
double double1;
float1 = 21.1231157111F;
double1 = 19.11437687311E+9D;
cic.miaulaonline.net
60 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
in
Declaración de variables de tipo carácter char
nl
Se pueden declarar variables de tipo carácter con la palabra reservada char.
ao
Los posibles valores que se pueden almacenar en una variable char son caracteres Unicode del 0 al
65535, pero el código ASCII sólo tiene caracteres dentro del rango de 0 a 255.
ul
Para asignar un dato carácter a un char, se realiza mediante el símbolo de la comilla simple.
ia
Vamos a comprobar una aplicación en la que asignaremos valores de tipo carácter e int a un tipo de
datos char. Comprobaremos que el resultado es la "traducción" del código ASCII a una
m
char1 = 88;
cic.miaulaonline.net
61 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
char2 = 'B';
t
Y vemos que como resultado de la compilación muestra el carácter X como resultado del valor del
ne
código ASCII 88.
e.
in
nl
ao
Las variables de tipo verdadero o falso se declaran con la palabra clave boolean.
ia
En Java, las variables de tipo booleano sólo pueden tener dos valores: verdadero o falso, no pudiendo
m
Dichas variables se utilizan para almacenar información y poder realizar un análisis de nuestro
ci
código dependiendo del resultado de verdadero o falso. Se utilizan para realizar bifurcaciones en
nuestro código, de forma que el código no sea lineal, sino que entre por alguna de las bifurcaciones.
Vamos a visualizar un ejemplo en el que asignaremos valores a dos variables de tipo boolean:
cic.miaulaonline.net
62 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
boolean1 = true;
boolean2 = false;
t
System.out.println("Valor de boolean1 = " + boolean1);
ne
System.out.println("Valor de boolean2 = " + boolean2);
e.
}
}
in
nl
Y el resultado de la compilación es:
ao
ul
ia
m
Como hemos ido aprendiendo a lo largo del módulo, podemos declararnos variables para almacenar
valores simples (números, letras, decimales). Pero el problema lo podemos encontrar si deseamos
almacenar algo más complejo, por ejemplo, los datos de una factura o los datos de un determinado
registro de compra.
Dentro de dicho supuesto, una factura está compuesta por múltiples valores simples que conforman
cic.miaulaonline.net
63 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Gracias a la tecnología de Java, podemos declararnos objetos, llamados Clases, que nos permiten
almacenar gran cantidad de objetos simples desde un mismo lugar, o lo que es lo mismo, nos
permite definir un objeto compuesto para manejar y utilizar sus objetos simples.
A lo largo del módulo vamos a aprender a crearnos objetos propios y a manejar un objeto ya creado
t
ne
Una clase es una agrupación de datos (miembros o campos) y de funciones (métodos) que operan
e.
sobre esos datos.
in
La definición de una clase se hace de la siguiente forma:
nl
public class NombreClase
ao
}
ia
La palabra public es opcional, si no se pone, la clase tiene la visibilidad por defecto, esto significa
m
que solo es visible para las demás clases del package. Todos los métodos y variables deben ser
Las clases son la definición de los elementos de un objeto, mientras que los objetos son variables
NombreClase MiObjeto;
Todas las variables y funciones de Java deben pertenecer a una clase. No hay variables y
cic.miaulaonline.net
64 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Java tiene una jerarquía de clases estándar de la que pueden derivar las clases que crean los
usuarios.
Una clase solo puede heredar de una única clase (en Java no existe herencia múltiple). Si al
declarar una clase no se especifica de qué clase deriva, por defecto dicha clase hereda de
En un fichero se pueden definir varias clases, pero en un fichero no puede existir más que una
t
ne
clase public. Dicho fichero se debe nombrar como la clase public que contiene con extensión
*.java. Con algunas excepciones, lo normal es escribir una sola clase por fichero.
e.
Si una clase incluida en un fichero no contiene el ámbito public, no es imprescindible que el
in
Los métodos de una clase pueden referirse de modo global al objeto de esa clase al que se
aplican por medio de la palabra clave this. Dicha palabra clave hace referencia al objeto sobre
nl
el que se está creando la clase.
ao
Las clases se pueden unir en packages, incluyendo una sentencia al principio del fichero
Todos estos conceptos nos llevan a la creación de objetos de referencia, dichos objetos de referencia
m
Para crearnos objetos de referencia no se realiza sobre la propia clase Factura, digamos que la clase
Factura es una definición de clase y para su utilización se realiza sobre cualquier otra clase de Java.
ci
Para visualizar un objeto de referencia vamos a mostrar un ejemplo y su utilización. Nos vamos a
crear una nueva clase llamada Factura. Una factura está compuesta por un nombre de titular, un
cic.miaulaonline.net
65 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
Acabamos de crearnos una clase en la que podemos almacenar una serie de datos primitivos en su
ne
conjunto. Dicha clase contiene una serie de miembros que almacenará cada objeto creado de ese
e.
Cada objeto Factura, es decir cada instancia de la clase, tiene su propia copia de las variables
in
miembro. Las variables miembro de una clase (también llamadas campos) pueden ser de tipos
nl
primitivos (boolean, int, long, double) o referencias a objetos de otra clase (composición).
ao
En nuestro ejemplo, hemos creado cinco variables miembro de la clase factura, dichas variables
miembro son elementos que pertenecen a la clase Factura y solo pueden ser utilizadas por objetos
ul
de la clase Factura. Cada Factura que creemos tendrá unos valores diferentes para cada miembro.
{
m
f1.ConceptoFactura = "IPad";
f1.Precio = 540;
f1.Iva = 30;
cic.miaulaonline.net
66 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
f1.Total = 570;
t
System.out.println("Iva: " + f1.Iva);
ne
System.out.println("Total: " + f1.Total);
e.
System.out.println("-------------------------------------");
f2.ConceptoFactura = "PSP";
ul
f2.Precio = 169;
ia
f2.Iva = 15;
m
f2.Total = 184;
c.
cic.miaulaonline.net
67 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Como podemos comprobar, cada objeto referenciado de la clase factura contiene unos datos
diferentes para cada elemento. Es decir, cada miembro de la instancia de Factura almacena unos
t
ne
e.
in
nl
ao
Un aspecto muy importante del correcto funcionamiento de los programas es que no haya datos sin
inicializar. Por eso las variables miembro se inicializan siempre de modo automático, incluso antes
ul
de llamar al constructor. Sin embargo, lo más adecuado es inicializar las variables miembro dentro
del constructor.
ia
Un constructor, como veremos más adelante, es un método de inicio de la clase. Cuando llamamos a
m
la palabra clave new al crear la instancia, estamos llamando al constructor de la clase sobre la que
c.
Un constructor se define con el mismo nombre de la clase y es el primer lugar que el código lee en
Para hacer referencia a los objetos que pertenecen a la clase sobre la que estamos escribiendo se
utiliza la palabra clave this. Dicha palabra hace referencia a cualquier elemento declarado en la
clase.
cic.miaulaonline.net
68 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
//CONSTRUCTOR DE FACTURA
ne
public Factura()
e.
{
this.Precio = 0.0;
ia
this.Iva = 0.0;
m
this.Total = 0.0;
c.
}
ci
Si ahora utilizamos un objeto de la clase Factura, solamente instanciando un objeto, los valores
cic.miaulaonline.net
69 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
System.out.println("Precio: " + f1.Precio);
ne
System.out.println("Iva: " + f1.Iva);
e.
System.out.println("Total: " + f1.Total);
}
in
nl
}
ao
Una clase puede tener variables propias de la clase y no de cada objeto. A estas variables se les
llama variables de clase o variables static. Las variables static se suelen utilizar para definir
constantes comunes para todos los objetos de la clase o variables que solo tienen sentido para toda
la clase.
cic.miaulaonline.net
70 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Las variables de clase se crean anteponiendo la palabra static a su declaración. Para llamarlas se
Las variables static se llaman desde la clase y no pueden hacer referencia al objeto, es decir, no
pueden utilizar la palabra this, debido a que todas las instancias de la clase tendrán el mismo valor.
Como ejemplo, podemos visualizarlo fácilmente incluyendo una variable static dentro de nuestro
t
ejemplo de factura:
ne
public class Factura
e.
{
...
ul
}
ia
{
ci
cic.miaulaonline.net
71 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
}
ne
}
e.
Como podemos comprobar, las variables miembro tienen un valor diferente para cada instancia del
in
objeto, mientras que la variable static TipoIva no hace referencia a ninguno de los dos objetos (f1 y
f2), sino que hace referencia directamente sobre la clase, lo que quiere decir que todos los objetos
nl
de la clase Factura tendrán el mismo valor. Si modificamos el contenido de la variable static, se
ao
Las variables miembro static se crean en el momento en que pueden ser necesarias: cuando se va a
crear el primer objeto de la clase, en cuanto se llama a un método static o en cuanto se utiliza una
variable static de dicha clase. Lo importante es que las variables miembro static se inicializan
cic.miaulaonline.net
72 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Una variable de un tipo primitivo declarada como final no puede cambiar su valor a lo largo de la
Java permite separar la definición de la inicialización de una variable final. La inicialización puede
hacerse más tarde, en tiempo de ejecución, llamando a métodos o en función de otros datos.
La variable final definida es constante, pero no tiene por qué tener el mismo valor en todas las
t
Además de las variables miembro, también las variables locales y los propios argumentos de un
ne
método pueden ser declarados como final.
e.
Para declarar una variable constante, bastaría con incluir la palabra final en la declaración de la
variable:
{
ia
//CONSTRUCTOR DE FACTURA
cic.miaulaonline.net
73 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
public Factura()
this.PI = 3.1416;
t
this.ConceptoFactura = "sin concepto";
ne
this.Precio = 0.0;
e.
this.Iva = 0.0;
this.Total = 0.0;
in
nl
}
ao
}
ul
Como podemos comprobar, hemos declarado una variable final y la hemos inicializado en el
{
ci
cic.miaulaonline.net
74 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
Constructores
e.
in
Es un tipo específico de método que siempre tiene el mismo nombre de la clase y se utiliza para
Para inicializar un objeto basta con llamar a su constructor después de la palabra reservada new y
asignarlo a una referencia declarada previamente. Un constructor es un método que se ejecuta cada
c.
vez que se crea un objeto, el propósito de este procedimiento es el de inicializar los datos del objeto.
Declaración
class facturar {
cic.miaulaonline.net
75 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
class facturar {
t
Varios constructores
ne
class facturar {
e.
int total, importe;
in
facturar () { total=0; importe=0; } // el constructor
nl
facturar (String cliente) { total=0; importe=0; }
ao
}
ul
Herencia
ia
m
Java permite el empleo de la herencia, característica muy potente que permite definir una clase
tomando como base a otra clase ya existente. Esto es una de las bases de la reutilización de código y
c.
especialización.
ci
Dentro de un mismo tipo de objetos (por ejemplo, los empleados), existe una variedad de modelos
(administrativos, programador, gerente, etc) que dificulta la definición de la clase genérica. Por
ejemplo, si defino los métodos incentivos() y vacacionesNavidad(), estos métodos solo se podrán
Para resolver este tipo de problemas, la programación orientada a objetos hace uso de la herencia.
La herencia consiste en definir una clase a partir de otra ya existente. De esta forma podemos
definir un empleado genérico y mediante herencia crear otras clases más especializadas que
cic.miaulaonline.net
76 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
tiene límite.
Una clase sólo puede heredar de una única superclase directamente (no existe la herencia múltiple).
t
ne
String rut;
String nombre;
e.
boolean perfil;
String colorperfil; in
nl
Empleado()
ao
{
ul
}
ia
Empleado(String nombre){
m
this.nombre = nombre;
c.
}
ci
return this.nombre;
cic.miaulaonline.net
77 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
this.nombre = nombre;
t
String apellido;
ne
public Programador() {
e.
super();
}
in
nl
public Programador(String nombre)
ao
{
ul
super(nombre);
ia
}
m
this.apellido = apellido;
ci
cic.miaulaonline.net
78 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Programador.setNombre("Pepe");
Programador.setApellido("Gómez");
ProgramadorDos.setApellido("Pillos");
System.out.println("Programador 1 ->\t"+Programador.getNombre());
t
System.out.println("Programador 2 ->\t"+ProgramadorDos.getNombre());
ne
}}
e.
Variables y métodos en las subclases
in
nl
Las subclases heredan el estado (propiedades) y el comportamiento (métodos) de la superclase.
ao
Sin embargo, las subclases no están limitadas al estado y comportamiento de la superclases. Las
subclases pueden añadir variables y métodos que las diferenciaran de las otras subclases.
ul
Además, las subclases pueden sobrescribir los métodos que heredan de la superclases, si lo
ia
necesitan, para especializar más su funcionalidad. Para sobrescribir un método basta con definir en
m
la subclase uno que se llame igual, tenga el mismo tipo de retorno y la misma lista de parámetros.
c.
Clases abstractas
ci
Una clase abstracta es una clase que ha dejado alguno de sus métodos definido pero no lo ha
argumentos de entrada.
cic.miaulaonline.net
79 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
public abstract void pagas();
ne
}
e.
Otros métodos sí pueden estar implementados.
in
Si una clase tiene un método abstracto, ella también tiene que ser declarada abstracta.
nl
De una clase abstracta no se pueden crear objetos porque el compilador no sabría qué hacer con los
ao
Las clases abstractas no pueden tener métodos estáticos porque hemos visto que estos quedan tal
ul
No tiene sentido declarar variables privadas en una clase abstracta porque no se podrán usar nunca.
m
Paquetes
c.
ci
Cuando se necesita establecer seguridad, o simplemente cuando el número de clases que aparecen
es muy grande, resulta necesario organizarlas de alguna manera que no sea el puro azar.
Java utiliza para ello los paquetes. Un paquete es un conjunto de clases e interfaces relacionados
Los programadores pueden determinar fácilmente que clases e interfaces están relacionados.
cic.miaulaonline.net
80 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Sintaxis
Para decirle al compilador que una clase o un interface pertenece a un paquete en concreto, basta
t
ne
package Empleados
En este ejemplo agrupamos las clases empleado y programador en un paquete llamado empleados.
e.
package empleado;
package empleado;
ul
}
m
Modificadores de acceso
c.
cic.miaulaonline.net
81 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
- Este método no tiene cuerpo y las clases que
ne
abstract deberá ser implementado en las - No está permitido. tienen alguno de
subclases. sus miembros
abstractos.
e.
Interfaces
in
nl
Un interface declara lo métodos de una clase sin implementarlos (nombres de métodos, listas de
argumentos, tipos de retorno) los cuales serán implementados por otra clase.
ao
La diferencia entre una interface y una clase abstracta es que la interface es simplemente una lista
Una clase solamente puede derivar extends de una clase base, pero puede implementar varios
interfaces. Los nombres de los interfaces se colocan separados por una coma después de la palabra
c.
reservada implements.
ci
Creación interface
En este ejemplo creamos una interface con los métodos que queremos que se implementen.
interface InterfazCoche{
cic.miaulaonline.net
82 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
}
ne
Implementación de la interface
e.
Si una clase quiere implementar un interface debe usar la palabra clave implements. Si queremos
in
heredar e implementar al mismo tiempo, debemos colocar primero extends seguido del nombre de la
//Cuerpo de la clase
ia
}
m
Ejemplo:
c.
..............
cic.miaulaonline.net
83 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
aplicaciones.
t
ne
e.
Las características más importantes de esta plataforma son:
in
Heterogénea: Debe permitir múltiples plataformas, sistemas operativos y lenguajes de
nl
desarrollo.
Fácil mantenimiento: Debe ser fácil mantener el sistema mediante la actualización de sus
m
componentes.
c.
Servlet
cic.miaulaonline.net
84 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
JavaServer Faces
JDBC API
t
ne
Java Naming and Directory Interface (JNDI)
e.
Definir la tecnología servlet
in
nl
[[[Elemento Multimedia]]]
ao
Los servlets (al igual que los applet) se ejecutan en una caja restringida (sandbox) lo que protege al
servidor de cualquier mal funcionamiento del servlet. Esto permite a los proveedores de Internet que
sus clientes depositen servlets sin temor de que sean maliciosos. Se incrementa la seguridad
ul
Al estar escritos en Java, tienen todas las ventajas de este lenguaje (pueden hacer uso de cualquier
m
paquete de Java). Como es un lenguaje altamente escalable surgirán paquetes de una forma muy
rápida.
c.
Los servlets son portables entre plataformas ("escribir una vez, ejecutar en cualquier lugar"). Los
ci
Los servlets son componentes de la parte del servidor de Java EE, encargados de generar respuestas
En la mayoría de las páginas Web se van a introducir los llamados formularios, los cuales sirven para
recoger datos aportados por los clientes. Estos formularios van a ser una mezcla de código HTML y
los datos que el cliente ha introducido a través de un formulario y, en base a ellos, construir una
cic.miaulaonline.net
85 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
página dinámicamente para responder a la petición. Estas páginas se llaman dinámicas porque no
van a existir en el disco duro del servidor sino que se van a generar como respuesta a una petición
Se van a encontrar en el servidor por lo que son totalmente independientes del navegador que
use el cliente.
t
La respuesta que generar va a ser mucho más rápida debido a su ubicación en el servidor.
ne
La seguridad aumenta mucho debido a que los programas van a correr bajo el control directo
e.
Los Scripts más extendidos son los denominados CGI (Common Gateway Interface). Estos CGI
tienen una gran desventaja: son poco eficientes debido a que el servidor ejecuta una copia de
in
los mismos por cada petición que le llega. Así, si el sitio Web es bastante popular, supone una
nl
pérdida considerable de rendimiento. Para solventar este problema, los fabricantes han
Los Servlets no se van a ejecutar en un proceso separado, por lo que no necesita ejecutarse cada vez
ia
Una vez que se ha invocado, quedan almacenados en memoria por lo que consumen menos recursos,
aunque se le esté invocando constantemente. Esto significa que una sola instancia de un Servlet
c.
responde a todas las peticiones con lo que, además del ahorro de recursos, se pueden gestionar, de
ci
Los Servlets van a ser aplicaciones que van a ser ejecutados, al igual que los Applets de Java, por un
motor Servlet en una caja restringida (lo que se conoce con el nombre de Sandbox) por lo que se
aumenta la seguridad enormemente. Los proveedores de Internet, debido a este motivo, no van a
tener ningún temor a que los usuarios puedan introducir Servlet en el servidor, ya que se
Al estar escritos en Java, tienen todas las ventajas de este lenguaje (pueden hacer uso de cualquier
cic.miaulaonline.net
86 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
paquete de Java). Como es un lenguaje altamente escalable surgirán paquetes de una forma muy
Los Servlets son portables entre plataformas (siguen la premisa de Java "escribir una vez, ejecutar
en cualquier lugar"). Netscape, Apache e IIS, los tres servidores Web más populares, soportan los
Servlets.
t
ne
e.
in
nl
ao
ul
ia
Las sentencias import indican al compilador de Java la inclusión de todas las clases públicas e
m
La clase extiende (extends), es heredera de la clase HttpServlet. Esta clase proporciona la interfaz
c.
para que el servidor le pase las peticiones al servlet y el mecanismo para controlar el ciclo de vida
ci
del servlet.
[[[Elemento Multimedia]]]
Las JavaServer Pages (JSP) permiten separar la parte dinámica de tus páginas de la parte HTML
cic.miaulaonline.net
87 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Encerrar el código Java que genera la parte dinámica de la página entre unos delimitadores
t
ne
e.
En esta imagen podemos apreciar las directivas que utilizaremos en aplicaciones JSP:
in
nl
ao
ul
ia
m
c.
ci
Una página JSP cuando se ejecuta el servidor de base de datos genera un servlet. El ejemplo
cic.miaulaonline.net
88 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
in
El motor de las páginas JSP está basado en los servlets de Java -programas en Java destinados a
nl
ejecutarse en el servidor-, aunque el número de desarrolladores que pueden afrontar la
ao
programación de JSP es mucho mayor, dado que resulta mucho más sencillo aprender que los
servlets.
ul
ia
En JSP creamos páginas de manera parecida a como se crean en ASP o PHP -otras dos tecnologías
de servidor-. Generamos archivos con extensión .jsp que incluyen, dentro de la estructura de
m
etiquetas HTML, las sentencias Java a ejecutar en el servidor. Antes de que sean funcionales los
archivos, el motor JSP lleva a cabo una fase de traducción de esa página en un servlet,
c.
implementado en un archivo class (Byte codes de Java). Esta fase de traducción se lleva a cabo
ci
habitualmente cuando se recibe la primera solicitud de la página .jsp, aunque existe la opción de
precompilar en código para evitar ese tiempo de espera la primera vez que un cliente solicita la
página.
JSTL
JSTL es una biblioteca que implementa funciones de uso frecuente en aplicaciones JSP. En concreto,
cic.miaulaonline.net
89 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
páginas.
Procesamiento de XML.
t
ne
Un lenguaje de expresión para referenciar objetos y sus propiedades sin necesidad de código
Java.
e.
Validadores de bibliotecas de etiquetas (Tag Library Validators, TLVs).
Un EJB (Enterprise JavaBean) es un objeto seguro, transaccional y quizás persistente, pueden ser
ul
remoto o local, oculta las APIs de seguridad, transacciones y persistencia ,usa IIOP e
Customer.java: es en este ejemplo el "remote interface" que define los métodos de negocio que
c.
puede invocar el cliente. En este caso podéis comprobar que existen sólo un método
ci
CustomerHome.java: es en este ejemplo el "home interface" que define los métodos que le
permiten al cliente crear, buscar y eliminar el bean. En este caso podéis comprobar que esta
interfaz proporciona un método que permite crear el bean a partir de los datos asociados a un
de esta forma se crea un nuevo usuario en nuestro sistema que se almacenará de manera
persistente en la base de datos. En esta interfaz también existe un método que permite buscar
cic.miaulaonline.net
90 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
una instancia del bean a partir de la clave primaria, que en este caso es el nombre del usuario.
CustomerBean.java: es en este ejemplo el código del "enterprise bean" que implementa los
métodos de negocio definidos en el interfaz remoto Customer, además de todos los métodos
una clase serializable ya que el método de negocio definido en la interfaz remota devuelve un
t
ne
Definir la tecnología Struts
e.
Struts inicialmente pertenecía al proyecto Jakarta de la fundación Apache, pero se independizó y
in
pasó a conocerse como Apache Struts. Básicamente, se presenta como un framework de soporte de
interfaz de usuario y la lógica de cada uno de las entidades conceptuales que la forman, en tres
web, siendo uno de los más fuertes pilares sobre los que se sustentan actualmente las buenas
prácticas de diseño de aplicaciones software para la web donde la vista se centra al HTML de la
ia
Bajo esta idea, Struts se presenta como un enorme aliado a la hora de construir aplicaciones web de
c.
una forma elegante y con un diseño basado en una de las corrientes más influyentes dentro de las
El desarrollo de una aplicación web mediante Struts se puede subdividir en varias tareas, en primer
lugar tendremos que definir la lógica de control de una entidad, persistente o no, que necesitemos
para implementar la funcionalidad del servicio o aplicación que estemos desarrollando. Por ejemplo,
podremos ser capaces de identificar que necesitamos una serie de objetos o entidades en nuestra
aplicación capaces de representar los conceptos que manejamos en ese dominio, como pueden ser
cic.miaulaonline.net
91 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
una entrada, un evento o el mismo usuario de la web que actuará de comprador, y que estos a su
vez, deberán almacenar la información necesaria para representar eficazmente a cada uno de ellos.
Una vez implementados estos elementos como clases Java con sus correspondientes constructores, y
métodos de acceso y consulta a los atributos de estas, los conocidos como getters y setters,
necesitaremos mantener una relación con la base de datos que soportará el almacenamiento de cada
uno de los registros que se adecuen a esas entidades persistentes. Por lo que generaremos, si es
necesario, las correspondientes clases para tal fin, una buena práctica es hacer uso de patrones
DAO. El cómo la arquitectura apunta a un determinado JDBC para acceder a una base de datos se
t
ne
lleva a cabo mediante la configuración de un simple fichero de properties.
e.
in
nl
ao
ul
ia
m
c.
ci
JavaServer Faces (JSF) es una tecnología y framework para aplicaciones Java basadas en web que
simplifica el desarrollo de interfaces de usuario en aplicaciones Java EE. JSF usa JavaServer Pages
(JSP) como la tecnología que permite hacer el despliegue de las páginas, pero también se puede
cic.miaulaonline.net
92 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
JSF incluye:
estado, manejar eventos, validar entrada, definir un esquema de navegación de las páginas y
t
Dos bibliotecas de etiquetas personalizadas para JavaServer Pages que permiten expresar una
ne
interfaz JavaServer Faces dentro de una página JSP.
e.
Administración de estados.
Beans administrados.
in
nl
El objetivo de la tecnología JavaServer Faces es desarrollar aplicaciones web de forma parecida a
como se construyen aplicaciones locales con Java Swing, AWT (Abstract Window Toolkit), SWT
ao
Tradicionalmente, las aplicaciones web se han codificado mediante páginas JSP (JavaServer Pages)
que recibían peticiones a través de formularios y construían como respuesta páginas HTML (Hiper
ia
Text Markup Language) mediante ejecución directa o indirecta -a través de bibliotecas de etiquetas-
m
de código Java, lo que permitía, por ejemplo, acceder a bases de datos para obtener los resultados a
mostrar amén de realizar operaciones marginales como insertar o modificar registros en tablas
c.
de trabajo (framework) vía web que gestiona las acciones producidas por el usuario en su página
HTML y las traduce a eventos que son enviados al servidor con el objetivo de regenerar la página
En definitivas cuentas, se trata de hacer aplicaciones Java en las que el cliente no es una ventana de
Como el lector puede imaginar, cualquier evento realizado sobre una página JSF incurre en una
cic.miaulaonline.net
93 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
carga sobre la red, ya que el evento debe enviarse a través de ésta al servidor, y la respuesta de este
debe devolverse al cliente; por ello, el diseño de aplicaciones JavaServer Faces debe hacerse con
cuidado cuando se pretenda poner las aplicaciones a disposición del mundo entero a través de
Internet. Aquellas aplicaciones que vayan a ser utilizadas en una intranet podrán aprovecharse de
Una de las ventajas de que JSF sea una especificación estándar es que pueden encontrarse
t
proveedor concreto, y poder seleccionar el que más interese en cada caso según el número de
ne
componentes que suministra, el rendimiento de éstos, soporte proporcionado, precio, política de
evolución, etc.
e.
JSF trata la vista (la interfaz de usuario) de una forma algo diferente a lo que estamos
in
acostumbrados en aplicaciones web, ya que este tratamiento es mucho más cercano al estilo de Java
Swing, Visual Basic o Delphi, donde la programación de la interfaz se hace a través de componentes
nl
y está basada en eventos (pulsación de un botón, cambio en el valor de un campo, etc.).
ao
JSF es muy flexible. Por ejemplo nos permite crear nuestros propios componentes, y/o crear nuestros
propios renderizadores para pintar los componentes en la forma que más nos convenga.
ul
Una de las grandes ventajas de la tecnología JavaServer Faces es que ofrece una clara separación
ia
entre el comportamiento y la presentación. Las aplicaciones Web construidas con tecnología JSP
m
conseguían parcialmente esta separación. Sin embargo, una aplicación JSP no puede mapear
peticiones HTTP al manejo de eventos específicos de los componentes o manejar elementos UI como
c.
objetos con estado en el servidor. La tecnología JavaServer Faces permite construir aplicaciones
ci
separación sólo ofrecida tradicionalmente por arquitecturas UI del lado del cliente.
Separar la lógica de negocio de la presentación también permite que cada miembro del equipo de
desarrollo de la aplicación Web se centre en su parte asignada del proceso diseño, y proporciona un
modelo sencillo de programación para enlazar todas las piezas. Por ejemplo, personas sin
experiencia en programación pueden construir páginas JSF usando las etiquetas de componentes UI
que esta tecnología ofrece, y luego enlazarlas con código de la aplicación sin escribir ningún script
ni nada.
cic.miaulaonline.net
94 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Otro objetivo importante de la tecnología JavaServer Faces es mejorar los conceptos familiares de
marcas. Aunque la tecnología JavaServer Faces incluye una librería de etiquetas JSP personalizadas
para representar componentes en una página JSP, las APIs de JavaServer Faces se han creado
directamente sobre el API JavaServlet. Esto nos permite, teóricamente, hacer algunas cosas
avanzadas: usar otra tecnología de presentación junto a JSP, crear nuestros propios componentes
personalizados directamente desde las clases de componentes, y generar salida para diferentes
t
ne
En definitivas cuentas, la tecnología JavaServer Faces proporciona una rica arquitectura para
manejar el estado de los componentes, procesar los datos, validar la entrada del usuario, y manejar
e.
eventos.
La API Java Message Service (en español servicio de mensajes Java), también conocida por sus siglas
JMS, es la solución creada por Sun Microsystems para el uso de colas de mensajes. Este es un
ul
Java2 crear, enviar, recibir y leer mensajes. También hace posible la comunicación confiable de
ia
(MOM por sus siglas en inglés) y es una herramienta universalmente reconocida para la
Modelo Punto a Punto (point to point): Este modelo cuenta con solo dos clientes, uno que envía el
mensaje y otro que lo recibe. Este modelo asegura la llegada del mensaje ya que si el receptor no
esta disponible para aceptar el mensaje o atenderlo, de cualquier forma se le envía el mensaje y este
se encola en una pila del tipo FIFO para luego ser recibido según haya entrado.
cic.miaulaonline.net
95 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Modelo Publicador/Suscriptor (Publish/Subscribe): Este modelo cuenta con varios clientes, unos que
publican temas (tópicos) o eventos, y los que ven estos tópicos, a diferencia del modelo punto a
Ambos modelos pueden ser síncronos mediante el método receive y asíncronos por medio de un
MessageListener.
t
ne
Java Database Connectivity, más conocida por sus siglas JDBC, es una API que permite la ejecución
e.
de operaciones sobre bases de datos desde el lenguaje de programación Java, independientemente
del sistema operativo donde se ejecute o de la base de datos a la cual se accede, utilizando el
in
dialecto SQL del modelo de base de datos que se utilice.
nl
El API JDBC se presenta como una colección de interfaces Java y métodos de gestión de manejadores
ao
de conexión hacia cada modelo específico de base de datos. Un manejador de conexiones hacia un
modelo de base de datos en particular es un conjunto de clases que implementan las interfaces Java
y que utilizan los métodos de registro para declarar los tipos de localizadores a base de datos (URL)
ul
que pueden manejar. Para utilizar una base de datos particular, el usuario ejecuta su programa junto
ia
con la biblioteca de conexión apropiada al modelo de su base de datos, y accede a ella estableciendo
una conexión, para ello provee el localizador a la base de datos y los parámetros de conexión
m
específicos. A partir de allí puede realizar con cualquier tipo de tareas con la base de datos a las que
c.
Para poder probar una aplicación desarrollada por nosotros, tendremos que realizar la subida de
esta al servidor de producción o deployment. Para hacer esto, tan solo tenemos que copiar todos los
archivos y subirlos a mano hasta la carpeta webapps del servidor Tomcat. Esta acción de copiar los
Casi siempre, cuando se trabaja sobre un proyecto web J2EE se realiza sobre una herramienta de
desarrollo como eclipse o productos de la marca Jetbrains entre otros, y para probar la aplicación la
herramienta suele hacer una subida de manera automática para poder efectuar pruebas de forma
cic.miaulaonline.net
96 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
rápida.
Este servidor es el que utilizarán los usuarios de la aplicación Web. Este despliegue usualmente se
t
ne
e.
in
nl
ao
ul
ia
m
c.
ci
cic.miaulaonline.net
97 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
https://locallhost.com/
Nos pedirá que indiquemos el usuario y contraseña del administrador, el cual se indicó en la
instalación. Después de esto si todo ha ido bien veremos la herramienta, dicha herramienta tiene el
t
ne
siguiente aspecto:
e.
in
nl
ao
ul
ia
m
c.
ci
cic.miaulaonline.net
98 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Configuración de logs
Los procesos realizados, así como las incidencias producidas en la administración, se reflejan
La documentación técnica específica asociada se interpreta, para este caso, en la lengua extranjera
t
ne
La palabra log es una definición anglosajón, equivalente a la palabra bitácora en español. Sin
embargo, se usa en los países de habla hispana como un anglicismo que deriva de las traducciones
e.
del inglés en la jerga que pertenece al sector informático. Del mismo término además proviene la
in
Un log es un registro oficial de eventos durante el cual se produce un rango de tiempo en
nl
particular. Para los profesionales en seguridad informática es utilizado para registrar datos o
información sobre quién, qué, cuándo, dónde y por qué (who, what, when, where y why) un evento
ao
La mayoría de los logs son guardados o desplegados en el formato más común, el cual es un grupo
de caracteres para dispositivos comunes y aplicaciones. De esta manera cada log generado por un
ia
Además se le considera como aquel mensaje que crea el programador de un sistema operativo,
c.
alguna aplicación o algún proceso, en virtud del cual se visualiza un evento del sistema.
ci
cic.miaulaonline.net
99 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
in
nl
A su vez la palabra log se relaciona con el término evidencia digital. Un tipo de evidencia
física formada de campos magnéticos y pulsos electrónicos que pueden ser recogidos y analizados
ao
con herramientas y técnicas especiales, lo que incluye la lectura del log y deja al descubierto la
Para poder ver el contenido de estos archivos, tan solo tenemos que usar un editor de texto, como
ia
cic.miaulaonline.net
100 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
in
nl
ao
ul
cic.miaulaonline.net
101 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
t
ne
e.
in
nl
ao
ul
ia
Desde aquí podremos agregar los host que necesitemos, por ejemplo vamos añadir host1.com,
m
Aquí hemos indicado que en host1.com se va a encontrar las aplicaciones desplegadas otroWebapps
Por último para comprobar el funcionamiento deberemos de añadir al fichero /etc/host las siguientes
líneas:
127.0.0.1 localhost
host1.com
cic.miaulaonline.net
102 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Recuerda
[[[Elemento Multimedia]]]
t
ne
e.
in
nl
ao
ul
ia
m
c.
ci
cic.miaulaonline.net
103 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Autoevaluación
Falso.
t
ne
Verdadero.
e.
Indica si el siguiente enunciado es verdadero o falso:La palabra log no es un
término anglosajón, equivalente a la palabra bitácora en español.
in
nl
Falso.
ao
Verdadero.
ul
Falso.
ci
Verdadero.
Falso.
cic.miaulaonline.net
104 / 105
[AFO018349] IFCT103PO SERVIDORES WEB
[MOD016540] IFCT103PO SERVIDORES WEB
[UDI096308] SERVIDOR APACHE-TOMCAT.
Verdadero.
Un log...
t
es un registro oficial de eventos durante un rango de tiempo en particular.
ne
es un registro no oficial de eventos durante un rango de tiempo en particular.
e.
in
nl
ao
ul
ia
m
c.
ci
cic.miaulaonline.net
105 / 105