Programa de Capacitación para la Tecnología de
Negocios en la Web
Volumen 1: Fundamentos de Java
Volumen 2: Programación Orientada a Objetos
Volumen 3: Manejo de Excepciones
Volumen 4: Facilidades de Entrada/Salida
Volumen 5: Crear Interfaces AWT y Swing
Volumen 6: Applets
Volumen 7: Multihilos y Sistemas de Redes
Volumen 8: Conceptos Avanzados
Volumen 1: Fundamentos de Java
Plataforma Java
Componentes
•
La Maquina Virtual de Java (JVM)
•
La Interfaz de Programación de Aplicaciones o API (Application Programming
Interface)
La JVM es una aplicación ejecutable que
representa a un procesador genérico en el
cual corren los bytecodes de Java.
Las implementaciones concretas de la JVM
se encuentran en muchas plataformas.
Toda aplicación Java debe ejecutarse en
una instancia de la JVM. La JVM comienza
a ejecutar la aplicación invocando el
método main() de la clase inicial de la
aplicación.
Volumen 1: Fundamentos de Java
API Java
Colección de
Componentes de
Software apropiadas
para el desarrollo de
programas en Java.
Volumen 1: Fundamentos de Java
Tipos de Datos en Java
Tipo de Dato Tamaño Ejemplo
boolean 1 byte true
byte 1 byte 2
char 2 bytes ‘a’
short 2 bytes 5
int 4 bytes 154
long 8 bytes 17952
float 4 bytes 5.51f
double 8 bytes 16.45
Volumen 1: Fundamentos de Java
Estructuras de Control
do, while while for
int i = 0, suma = 0; int i = 0, suma = 0; int suma = 0;
do { while( i < 5 ){ for(int i =0; i<5 ; i++){
suma = suma + ( i++ ) ; suma = suma + (i++) ; suma = suma +i ;
}while( i < 5 ); } }
switch-case
int var = 2, opcion;
switch(var){
case 1: var = var + 1;
break;
case 2: var = var +2;
break;
default: var = var +10;
}
System.out.println(var);
Salida: 4
Volumen 2: Programación Orientada a Objetos
Estructura de una Clase
package transporte;//Opcional
import java.lang.String;//Opcional Una clase es una entidad
autocontenida que tiene las
class Bicicleta{ definiciones de los atributos y el
comportamiento que son
int nRuedas; comunes a todos los objetos de
int tipoRuedas; software de un tipo en particular
Los atributos se convierten en
Variables String color; las variables y el
comportamiento se refleja con
float velocidad; los métodos en una clase Java
A partir de una clase se pueden
crear instancias llamadas
public void acelerar(float a){} objetos
public void desacelerar(float a){}
Métodos
public void frenar(){}
public void cambiarVelocidad(int v){}
}
Creación del Objeto
Constructor
Bicicleta miObjeto = new Bicicleta()
Volumen 2: Programación Orientada a Objetos
Componentes de una Clase
Componentes Propósito
public La clase es públicamente accesible
abstract La clase no puede ser instanciada
final La clase no puede ser derivada
class nombreClase Especifica el nombre de la clase
extends superClase Especifica el nombre de la superclase
Especifica las interfaces implementadas dentro
implements interface
de la clase
{
Implementación de la clase
}
Volumen 2: Programación Orientada a Objetos
Tipos de Variables en Java Las variables de
instancia se usan
para guardar los
Las variables de clase
atributos de un
se caracterizan
objeto particular.
porque los valores
Variables de instancia
que guardan son los
mismos para todos los
objetos de una
determinada clase.
Variables de clase Cuando se declara una variable
de tipo final, se ha de inicializar
y cualquier intento de
modificarla en el curso de la
Variables final ejecución del programa da lugar
a un error en tiempo de
Una variable compilación.
transient no es
almacenada como
Variables transient
parte del estado
persistente de su
objeto
Variables volatile
Las variables
declaradas volatile
pueden ser
Variables locales modificadas de forma
asincrónica para que el
compilador tome las
Las variables precauciones
locales se necesarias
utilizan dentro
los métodos
Volumen 2: Programación Orientada a Objetos
Métodos en Java
Los métodos de
instancia están
Son métodos que se relacionados con
declaran en una clase un objeto en
no para ser utilizados
Métodos de instancia particular.
como mensajes a los
objetos sino para
producir acciones que
no están asociadas a
Métodos de clase
ningún objeto en
particular. Métodos que
no tienen
Métodos abstractos implementaci
ón
Métodos final
Un método final es Es un método
un método que no Java cuya
se puede redefinir
Métodos nativos implementación
en una subclase se ha realizado
de la clase en en otro lenguaje
donde se definió de programación
Métodos sincronizados
Aseguran que únicamente un hilo
pueda acceder a un objeto en
particular en un momento dado
Volumen 2: Programación Orientada a Objetos
Modificadores de Acceso
Private Subclase Clase Subclase Clase
Modificador Clase mismo mismo otro otro
paquete Paquete paquete paquete
Proctected
private si no no no no
Public protected si si si si no
Sin modificador public si si si si si
(se asume
package) package si si si no no
Volumen 2: Programación Orientada a Objetos
Herencia
Fundamentos
•
En Java, la clase de la cual se hereda es llamada superclase y la clase que hereda de
otra clase es llamada subclase
•
Para especificar que una clase hereda de otra clase, la clase que hereda debe usar la
palabra clave extends después del nombre de la clase en su declaración
Ejemplo
class Transporte{
int color;
float velocidad;
int capacidad;
public Transporte(int c, int cap){
color = c; capacidad = cap;
}
}
class Aereo extends Transporte{
float altura;
public Aereo(int c, int cap, float a){
super(c,cap);
altura = a;
}
}
Volumen 2: Programación Orientada a Objetos
Sobrecarga de Métodos Original
1. public class A{
2. public int suma(int n1, int n2){
3. return ( n1 + n2 );
4. }
5. public int suma(int n1, int n2, int n3){
6. return ( n1 + n2 + n3 );
7. } Sobrecargado
8. public void suma(int n1, int n2){
9. System.out.println( n1 + n2 );
10. }
11.}
Error
Volumen 2: Programación Orientada a Objetos
Sobreescritura de Métodos
Original
class X {
public void mostrar(){
System.out.println(“Objeto Padre“);
}
}
class Y extends X {
public void mostrar(){
System.out.println(“Objeto Hijo");
}
}
Sobreescrito en
la subclase
Volumen 2: Programación Orientada a Objetos
Clases Abstractas y Clases Concretas
Clases Abstractas Clases Concretas
Generalizan clases concretas Representan objetos del mundo real
No pueden ser instanciadas Pueden ser instanciadas
Pueden definir métodos abstractos No define métodos abstractos
Puede proveer implementación para Provee implementación para todos sus
algunos de sus métodos métodos
Volumen 2: Programación Orientada a Objetos
Interfaces
Fundamentos
•
Las interfaces son similares a las clase, pero no tienen ninguna variable de instancia y
no se proporciona la implementación para los métodos declarados en ella
•
Se usan básicamente, para especificar que debe hacer una clase, pero no cómo, de
esto se encargan las clases que implementen la interfaz
Ejemplo
Implementación
public interface Telefono{ public class Celular implements
void llamar(int tlf); Telefono, Agenda{
} public void llamar(int tlf){
public interface Agenda{ // código para llamar }
void grabarNumero(String nombre,int tlf); public void grabarNumero(String
int buscarNumero(String nombre); nombre,int tlf){
// código para grabar}
public int buscarNumero(String
nombre){
// código para buscar}
public static void main(String
args[]){
Telefono nokia = new Celular();
}
}
Volumen 3: Manejo de Excepciones
Excepciones
Qué es una excepción?
Una excepción es un evento anormal que se lanza cuando ocurre una
condición especial durante la ejecución de un programa
Soporte Java public class Prueba {
public static void
•
try main(String[] args) {
int a = 50;
•
catch int b = 0;
try{
•
throw int c = a / b;
System.out.println(“Valor: "
•
throws class Carro{ + c);
private float velocidad = 0; }catch(ArithmeticException
•
finally private
200;
final float MAX_V = e){
System.out.println(“Error:
try{ public void acelerar(float ”+e);
conectar_a_base_de_datos(); inc)throws MotorException{ }
}catch(DBException e){ if( ( velocidad + }
... inc ) > MAX_V){ }
}finally{ throw new
if( conexionExistente() ){ MotorException(“No es
System.out.println(“Liberando posible pasar la velocidad
conexión a DB”); Maxima”);
liberar_conexion_a_base_de_dat }else
os(); velocidad +=
System.out.println(“Conexión inc;
liberada!”); }
} }
}
Volumen 4: Facilidades de Entrada/Salida
Flujos
Fundamentos
•
Un flujo (stream) es una secuencia de bytes que viajan de un origen a un destino
Origen bytes/caracteres Programa
Lectura
Destino bytes/caracteres Programa
Escritura
Soporte Java
•
Existen colecciones de clases de flujos presentes en el paquete java.io que son
usadas para leer y escribir datos usando flujos
•
Los flujos son divididos en dos tipos principales :
Volumen 4: Facilidades de Entrada/Salida
Serialización de Objetos
Fundamentos
•
La Serialización de objetos es el proceso por el cual el estado actual de un objeto es
almacenado en un estado persistente
•
Del flujo de bytes en el cual se almacena puede ser transformado para obtener
nuevamente un objeto
•
La serialización y deserealización de objetos se ocupan de la lectura y escritura de un
objeto. Esta tarea se lleva a cabo con la ayuda de las clases ObjectInputStream y
ObjectOutputStream
Soporte Java
•
Interfaz Seralizable
•
Interfaz Externalizable
•
Clase ObjectInputStream
•
Clase ObjectOutputStream
Volumen 4: Facilidades de Entrada/Salida
Serialización de Objetos
Ejemplo
import java.io.*;
class SerializableDemo implements Serializable{
public int a;
public int b;
public SerializableDemo(){
a = b = 0;
}
public static void main(String[] args)throws IOException,
ClassNotFoundException{
SerializableDemo obj = new SerializableDemo();
obj.a = 23;obj.b = 345;
ObjectOutputStream oos = new ObjectOutputStream(new
FileOutputStream("c:/obj.bin"));
oos.writeObject(obj);
oos.close();
ObjectInputStream ois = new ObjectInputStream(new
FileInputStream("c:/obj.bin"));
SerializableDemo obj2 =
(SerializableDemo)ois.readObject();
System.out.println("Campos a: “ + obj2.a + " b: “ + obj2.b);
ois.close();
} /* Fin del método main */
}/* Fin de la clase SerializableDemo */
Volumen 5: Crear Interfaces AWT y Swing
AWT (Abstract Window Toolkit)
Fundamentos
•
Java provee un paquete para diseñar interfaces gráficas para el usuario (Graphical
User Interfaces - GUIs) llamado Abstract Window Toolkit (AWT)
•
AWT es una librería rica de componentes que se usan para crear GUIs en Java.
•
El propósito principal de AWT es proveer soporte a ventanas, tanto en applets como
en aplicaciones autónomas (standalone) en variados sistemas operativos
Component
Soporte Java
•
Las clases AWT se encuentran básicamente Container
dentro del paquete java.awt
•
AWT contiene diferentes clases, que se clasifican
en tres categorías:
1. Gráficos Window Panel
2. Componentes
3. Administradores de Diseño
Frame
MenuContainer
Volumen 5: Crear Interfaces AWT y Swing
Administradores de Diseño
Fundamentos
•
Un administrador de diseño puede ser definido como un objeto que realiza la
distribución espacial de los componentes dentro de un contenedor
•
Un administrador de diseño (Layout Manager) ordena automáticamente los controles
dentro de una ventana usando algún tipo de algoritmo
•
El administrador de diseño puede ser establecido usando el método setLayout() de la
siguiente manera: container.setLayout(layout);
Soporte Java
•
FlowLayout
•
BorderLayout
•
CardLayout
•
GridLayout
•
GridBagLayout
Volumen 5: Crear Interfaces AWT y Swing
Modelo de Delegación de Eventos
Clases Descripción
ActionEvent Creado cuando presionamos un botón,
hacemos doble clic en un elemento de
lista, o elegimos un elemento de menú
ComponentEvent Creado cuando un componente cambia su
tamaño, posición o visibilidad
ContainerEvent Creado cuando añadimos o removemos un
componente de un contenedor
ItemEvent Creado mientras hacemos clic en un
checkbox o un elemento de lista; también
cuando seleccionamos o deseleccionamos
elementos de menú seleccionables
KeyEvent Creado cuando se recibe entrada del
teclado
MouseEvent Creado mientras se arrastra, mueve, hace
clic o presiona un ratón; también cuando el
ratón entra o sale de un componente
TextEvent Creado mientras hay un cambio en el valor
de un área de texto o campo de texto
WindowEvent Creado cuando se activa, cierra, desactiva, Tipos de Eventos
maximiza, minimiza, abre o se sale de una
ventana
Volumen 5: Crear Interfaces AWT y Swing
Listeners de Eventos Clases Adaptadoras
Interfaz Tipo de Evento Clase Interfaz Listener
ActionListener ActionEvent ComponentAdapter ComponentListener
ComponentListener ComponentEvent
ContainerAdapter ContainerListener
ContainerListener ContainerEvent
ItemListener ItemEvent KeyAdapter KeyListener
KeyListener KeyEvent
MouseAdapter MouseListener
MouseListener MouseEvent
MouseMotionListener MouseEvent MouseMotionAdapter MouseMotionListener
TextListener TextEvent
WindowAdapter WindowListener
WindowListener WindowEvent
Volumen 5: Crear Interfaces AWT y Swing
Arquitectura MVC de Swing
Fundamentos
Jerarquía de Clases de Swing
•
El MVC de Swing es una versión
especializada del clásico MVC.
•
El modelo mantiene los datos y
proporciona métodos para tener
acceso a los datos.
•
Los componentes Swing necesitan
mantener una apariencia
independiente de la plataforma. La
apariencia independiente de
plataforma es mantenida por el
componente vista.
•
Los oyentes de eventos son los
controladores. Manejan la entrada del
usuario e invocan a los métodos
apropiados en el modelo
Volumen 6: Applets
Applets de Java
Fundamentos
•
Un applet es un programa Java, que puede ser incluido en una página HTML y
ejecutarse en navegadores Web con soporte a Java
•
Cuando existe un applet en la página, automáticamente se transfiere el código del
applet del servidor al cliente y lo ejecuta la JVM del navegador
•
Un applet no puede acceder a ningún recurso fuera de la JVM del navegador
•
Esta restricción asegura que se prevengan los riesgos de seguridad
Ejecución de
Ciclo de un Applet
Object Vida de <html>
un Applet
<body>
Component <applet
code="CicloAp
Container plet"
width="500"
height="25">
Panel Clase Applet.
Jerarquía de </applet>
Herencia
</body>
Applet </html>
Volumen 7: Multihilos y Sistema de Redes
Hilos y Multihilos
Fundamentos
•
Un hilo sólo puede ejecutarse dentro de un programa,
•
Se pueden tener varios hilos corriendo en un programa
•
Los hilos no son iguales a los procesos
•
Los hilos son componentes ligeros y los procesos son componentes pesados
•
El tiempo empleado en cambios de contexto es mucho menor para hilos que para los
procesos
•
Un sistema operativo puede tener múltiples programas ejecutándose y cada programa
puede tener múltiples hilos de control
•
Cada instancia de un programa es un proceso mientras que cada secuencia de control
dentro de un programa es un hilo
•
Cada proceso tiene su propio espacio de direcciones
•
Los hilos comparten el mismo espacio de direcciones reservado para el proceso
Volumen 7: Multihilos y Sistema de Redes
Tipos de Hilos
Hilos Usuarios
•
Son creados por los usuarios (programadores)
•
Se ejecutan en primer plano
•
La JVM no terminará mientras exista un hilo usuario corriendo
•
Una vez que terminen los hilos usuario, la JVM terminará los hilos demonio y terminará
•
El hilo principal (main thread) se crea con el método main()
Hilos Demonios
•
Se crean para realizar tareas de servicio como la recolección de basura
•
Se ejecutan usualmente en segundo plano
•
Un hilo usuario puede pasar a demonio ejecutando setDaemon()
Volumen 7: Multihilos y Sistema de Redes
Crear Hilos
Soporte Java para crear Hilos
•
Heredando de la clase Thread y sobrescribiendo su método run()
•
Implementando la interfaz Runnable y proporcionando la implementación para su único
método run() Extendiend
o Clase
Thread public class PingPong2 implements Runnable{
public class PingPong1 extends Thread{
private int retraso;
private int retraso;
private String mensaje;
private String mensaje;
public PingPong2(String m,int r){
public PingPong1(String m,int r){
mensaje = m; retraso = r;
mensaje = m; retraso = r;
}
} Implementando
Intrefaz public void run(){
public void run(){
Runnable try{
try{
for(;;){
for(;;){
System.out.println(mensaje);
System.out.println(mensaje);
sleep(retraso); Thread.sleep(retraso);
}
}
}catch(InterruptedException e)
}catch(InterruptedException e)
{return;} {return;}
}
}
public static void main(String []args){ public static void main(String []args){
new Thread(new PingPong2("ping",
new PingPong1("ping", 500).start();
new PingPong1("pong", 700).start(); 500)).start();
new Thread(new PingPong2("pong",
700)).start();
}
}//Fin de la clase PingPong1 }
}//Fin de la clase PingPong2
Volumen 7: Multihilos y Sistema de Redes
Conectores (Sockets)
Fundamentos
•
Los conectores(sockets) son sistemas de comunicación entre procesos de diferentes
máquinas de una red
•
Un conector es un punto de comunicación por el cual un proceso puede emitir o recibir
información
•
Los conectores proveen una conexión confiable entre los sistemas cliente y servidor.
•
Las computadores crean conectores para comunicarse unas con otras
Soporte Java
Java proporciona dos maneras de establecer la conexión entre un cliente y un servidor:
•
El modo de operación orientado a conexión usando el protocolo TCP
•
El modo de operación sin conexión usa el Protocolo de Datagrama de Usuario (UDP)
Volumen 7: Multihilos y Sistema de Redes
Clases Orientadas a Conexión
Cliente Servidor
ServerSocket s = new
Socket cliente; ServerSocket(8765);
cliente= new Socket(ip,port); Socket c = server.accept();
Se establece la conexión
ObjectOutputStream oos = new ObjectInputStream ois = new
ObjectOutputStream( ObjectInputStream(
cliente.getOutputStream()); cliente.getInputStream());
Obtenemos los flujos de datos
oos.writeObject("Hola"); String msg = (String)
ois.readObject();
Intercambiamos información
System.out.println(msg);
oos.close();cliente.close(); ois.close();c.close();
Volumen 8: Conceptos Avanzados
API de Colecciones
Fundamentos de Colecciones
•
Una colección puede ser vista básicamente como una Estructura de Datos
•
Una colección es un objeto usado para agrupar múltiples objetos como una unidad
•
La estructura de colecciones propuesta por Java está compuesta por interfaces,
implementaciones y algoritmos (búsqueda y ordenamiento) todo esto forma las
Estructuras de Datos
•
El marco de trabajo de colecciones permite almacenar, acceder, recuperar y manipular
los elementos de las colecciones
API
Collections
Volumen 8: Conceptos Avanzados
Colecciones en diferentes escenarios
Volumen 8: Conceptos Avanzados
JDBC (Java Data Base Connectivity)
Pasos para acceder a una Base de Datos
1. Se debe cargar en memoria el controlador (driver) que habilitará la conexión entre el
programa Java y el sistema de base de datos
2. A través de este controlador, se establece una conexión a la base de datos
3. Una vez establecida la conexión, por medio de esta se ejecutan las sentencias SQL
que sean requeridas
4. Al finalizar se debe cerrar todas las conexiones a bases de datos que estén activas
Soporte Java
El API JDBC está constituído por las siguientes clases e interfaces:
•
java.sql.Driver
•
java.sql.Connection
•
java.sql.Statement
•
java.sql.ResultSet
•
java.sql.ResultSetMetaData
•
java.sql.DabataseMetaData
•
java.sql.PreparedStatement
•
java.sql.CallableStatement
Volumen 8: Conceptos Avanzados
Crear una Conexión
import java.sql.*;
public class PruebasJDBC {
public static void main(java.lang.String[] args) {
Connection conn = null;
try {
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
System.out.println("Driver cargado...");
conn = DriverManager.getConnection(
"jdbc:db2:Sample", "db2admin",
"db2admin");
System.out.println("Conexión establecida...");
} catch (ClassNotFoundException e) {
System.out.println("Driver no encontrado");
} catch (SQLException e) {
System.out.println("Error DB: " + e);
} finally {
try {
if (conn != null) conn.close();
} catch (SQLException se){}
}
}
}
Volumen 8: Conceptos Avanzados
Características Avanzadas
Seguridad
•
El principal objetivo de la seguridad en Java es controlar el acceso a los recursos del
computador incluyendo todos sus dispositivos
•
Algunos conceptos importantes de la seguridad son: Identificación, Autenticación,
Autorización, Integridad de los datos, Encriptamiento, Auditoría
Firmas Digitales
•
Una firma digital es el proceso en el que las llaves públicas y privadas son producidas
y se relacionan matemáticamente
Certificados Digitales
•
Los certificados digitales se usan estrechamente con las firmas digitales
•
Junto con la verificación de la identidad del desarrollador del código, los certificados
pueden usarse para verificar, adicionalmente, si el código vino de una fuente no
familiar confiable.
•
Un certificado firmado presenta e identifica una llave pública. Una tercera autoridad de
certificación verifica que puede confiarse en el emisor
Volumen 8: Conceptos Avanzados
Características Avanzadas
Internacionalización
•
La Internacionalización es el proceso de diseñar una aplicación que pueda ser
adaptada a varios lenguajes y regiones.
JavaBean
•
Las tecnologías de componentes se incorporan a la plataforma Java a través del
concepto de JavaBeans. Las características que distinguen un JavaBean de una
simple clase de Java son:
•
Introspección
•
Persistencia
•
Personalización
•
Manejo de Eventos
•
Propiedades
Clase java.lang.Math
•
Esta clase contiene métodos para resolver operaciones numéricas básicas, tales
como: cálculo de logaritmo, raíz cuadrada, valor absoluto, funciones trigonométricas