Logo Studenta

Colecciones 2019

¡Este material tiene más páginas!

Vista previa del material en texto

Mg. Ing. Fabian Castillo
Colecciones
Estructura de las Colecciones en Java
• 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
• El marco de trabajo de colecciones permite almacenar,
acceder, recuperar y manipular los elementos de las
colecciones
API de Colecciones
Copyright © 2004
Conceptos Avanzados
La Interfaz Collection
• La raíz de la jerarquía de colecciones es la interfaz
Collection
• Las clases concretas de colecciones implementan la
interfaz Collection
• La interfaz Collection se usa para pasar colecciones
entre métodos y manipularlos cuando se requiere de una
máxima generalización
• Las implementaciones de colecciones de propósito general
normalmente poseen un constructor con Collection
como uno de sus parámetros
Copyright © 2004
Conceptos Avanzados
La Interfaz Collection
public interface Collection {
// Operaciones Básicas
int size();
boolean isEmpty();
boolean contains(Object element);
boolean add(Object element);
boolean remove(Object element);
Iterator iterator();
// Operaciones en Lotes
boolean containsAll(Collection c);
boolean addAll(Collection c);
boolean removeAll(Collection c);
boolean retainAll(Collection c);
void clear();
// Interoperabilidad
Object[] toArray();
Object[] toArray(Object a[]);
}
Copyright © 2004
Conceptos Avanzados
import java.util.*;
public class PruebaCollection { 
public static void main(String[] args) {
Collection c = new Vector();
c.add("Hola");c.add("Mundo");
// Utilizamos un iterador para recorrer
// la lista entera
Iterator i = c.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
} 
}
La Interfaz Collection
Copyright © 2004
Conceptos Avanzados
La Interfaz Set
• La interfaz Set representa a una colección de
elementos donde ninguno de ellos está repetido
• El método add retorna false si se intenta agregar un
elemento que ya existe, no ocurre ningún cambio en el
conjunto
• Dos objetos Set que contengan los mismos objetos
serán considerados iguales
Copyright © 2004
Conceptos Avanzados
La clase HashSet
•HashSet es una implementación de Set, no garantiza el 
orden de los elementos
•HashSet se usa para guardar los elementos de un Set en 
una tabla hash. 
import java.util.*;
public class PruebaSet { 
public static void main(String[] args) {
Set list = new HashSet();
//Continúa...
Copyright © 2004
Conceptos Avanzados
La clase HashSet
• Salida del programa
o
i
a
u
e
list.add("a");list.add("e");list.add("i");
list.add("a");list.add("e");list.add("o");
list.add("i");list.add("u");list.add("u");
Iterator i = list.iterator();
while(i.hasNext())
System.out.println(i.next());
} 
}//Fin de la clase PruebaSet
Copyright © 2004
Conceptos Avanzados
La Interfaz SortedSet
• La interfaz SortedSet extiende de la interfaz Set
•SortedSet permite establecer una relación de orden
entre sus elementos
• El orden por defecto es ascendente y viene dado por
la naturaleza del valor, o por un comparador que sea
especificado en la instanciación
Copyright © 2004
Conceptos Avanzados
•TreeSet proporciona una implementación de la interfaz
Set que garantiza el orden en la iteración.
•Los objetos se ordenan en orden ascendente y se
almacenan en la forma de un árbol de búsqueda binaria
La clase TreeSet
import java.util.*;
public class PruebaSortedSet{ 
public static void main(String[] args) {
SortedSet list = new TreeSet();
list.add("a");list.add("e");list.add("i");
list.add("a");list.add("e");list.add("o");
list.add("i");list.add("u");list.add("u");
//Continúa...
Copyright © 2004
Conceptos Avanzados
Iterator i = list.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
} 
}//Fin de la clase PruebaSortedSet
La clase TreeSet
• Salida del programa
a
e
i
o
u
Copyright © 2004
Conceptos Avanzados
La Interfaz List
• Una lista es una colección ordenada
• Mantiene un índice de los elementos que denota la 
posición del elemento en la lista
• Las listas permiten elementos duplicados
•List provee operaciones que permiten:
- Acceder a un elemento especificando su posición
- Buscar un elemento específico
- Realizar operaciones de iteración en la lista
- Realizar operaciones de rango 
Copyright © 2004
Conceptos Avanzados
La clase Vector
• Vector es una implementacion de List
• El tamaño de un Vector se puede modificar
dinámicamente
• Los vectores sólo pueden guardar referencias del tipo
java.lang.Object
• Los vectores pueden almacenar cualquier
combinación de tipos de datos de objetos.
• El método elementAt(index) de la clase Vector se usa
para recuperar una referencia dada en el índice
especificado
Copyright © 2004
Conceptos Avanzados
List y Vector
import java.util.*;
public class PruebaList {
public static void main(String[] args) {
List list = new Vector();
for(int i=1;i<=20;i++)
list.add(i+"");
Copyright © 2004
Conceptos Avanzados
La Clase ArrayList
• Provee un arreglo dinámico
• La lista contenida puede expandirse o contraerse 
dinámicamente, lo que no es posible hacer con arreglos
• No posee los métodos legados de Vector 
elementAt() addElement()
La Clase LinkedList
• Provee al igual que las dos anteriores un arreglo dinámico
• Tiene un constructor sobrecargado LinkedList(Collection c), 
que construye una lista enlazada con los elementos de la 
colección c
Copyright © 2004
Conceptos Avanzados
La Clase Collections
• Esta clase, tiene un conjunto de métodos estáticos que
son básicamente algoritmos asociados a estructuras de
datos
• Los métodos incluyen: ordenamiento, búsqueda,
desordenar, inversión del orden de la colección
import java.util.*;
public class PruebaCollection1{ 
public static void main(String[] args) {
List l = new Vector();
for(int i = 65;i < 91;i++)
l.add((char)i+"");
Collections.shuffle(l);
//Continúa...
Copyright © 2004
Conceptos Avanzados
La Clase Collections
System.out.println(l);
Collections.sort(l);
System.out.println(l);
int pos = Collections.binarySearch(l,"P");
System.out.println("Encontrado en: "+pos);
} 
}//Fin de la clase PruebaCollection1
• Salida del programa
[F, R, J, V, L, A, Y, N, P, Z, I, T, S, H, Q, K, 
W, C, M, E, X, G, U, D, O, B]
[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, 
Q, R, S, T, U, V, W, X, Y, Z]
Encontrado en: 15
Copyright © 2004
Conceptos Avanzados
Resumen
• Estructura de colecciones en Java
• Se explicaron las interfaces collection
• Se aprendió acerca de algunas implementaciones de
colecciones
Copyright © 2004
Conceptos Avanzados
Un Establecimiento educativo necesita implementar un sistema en el
que se puedan cargar alumnos que cursan una asignatura, los datos
que caracterizan a los alumnos son: el nombre y apellido, Libreta
Universitaria, sexo, condición (regular o condicional) y la nota final.
Los datos para una asignatura son Nombre de la Asignatura, Año, 
Total de Hs, 
Implemente las clases y métodos necesarios para esta situación, 
teniendo en cuenta lo que se pide a continuación:
1.Mostrar en pantalla todos los alumnos que se encuentren en la 
asignatura.
2.Mostrar en pantalla los alumnos que se encuentren como condicional 
y su cantidad.
3.Ordenar los alumnos de acuerdo a su nota (de mayor a menor) y 
mostrarlo en pantalla. 
4.Ordenar los alumnos por nombre y apellido y mostrarlo en pantalla
Práctico:
Copyright © 2004
Conceptos Avanzados
JDBC
Copyright © 2004
Conceptos Avanzados
Objetivos de Aprendizaje
• Aprender acerca de la conectividad a base de datos 
en Java
• Entender acerca de la API Java JDBC
• Discutir acerca de sentencias SQL usadas en 
programas Java
• Enseñar cómo tratar con el manejo de excepciones 
en JDBC
Copyright © 2004
Conceptos Avanzados
Introducción
• Java proporciona conectividad a muchos tipos de base de 
datos a través de su API de Conectividad a Base de Datos 
Java ( Java Data Base Connectivity - JDBC)
• Para desarrollarprogramas que interactuen con bases de 
datos en Java, se requiere esencialmente:
- Una base de datos relacional
- Una interfaz con Java (a través del API JDBC)
- Conocimiento básico de las sentencias SQL
Copyright © 2004
Conceptos Avanzados
Pasos Involucrados en el Acceso
a Bases 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
Copyright © 2004
Conceptos Avanzados
El API JDBC
• Algunas de las clases e interfaces de esta api son:
– java.sql.DriverManager
– java.sql.Driver
– java.sql.Connection
– java.sql.Statement
– java.sql.ResultSet
– java.sql.ResultSetMetaData
– java.sql.DabataseMetaData 
– java.sql.PreparedStatement 
– java.sql.CallableStatement
Copyright © 2004
Conceptos Avanzados
Relación entre las Clases e 
Interfaces JDBC
DriverManager
«interface»
Connection
«interface»
ResultSet
«interface»
Statement
«interface»
DatabaseMetaData
«interface»
ResultSetMetaData
«interface»
Driver
utiliza
crea
genera
genera retorna
genera
Copyright © 2004
Conceptos Avanzados
Tipos de Controladores JDBC
• JDBC provee cuatro tipos de controladores:
- Controlador JDBC-ODBC (Tipo 1)
- Controlador API-Nativo (Tipo 2)
- Controlador de Protocolo de Red (Tipo 3)
- Controlador Protocolo-Nativo (Tipo 4)
Copyright © 2004
Conceptos Avanzados
Cargar el Controlador
• Para cargar el controlador, se debe usar el método
forName en la clase Class con el nombre del controlador
como argumento
• Ejemplos del proceso de carga de un driver:
- MS Access y MS SQL Server
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
- IBM UDB DB2
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
- MySQL
Class.forName("com.mysql.jdbc.Driver");
- PostgreSQL
Class.forName("org.postgresql.Driver");
Copyright © 2004
Conceptos Avanzados
Crear una Conexión
• La clase DriverManager es responsable por buscar
las diferentes implementaciones JDBC que puedan
existir en un sistema y administrar los controladores
JDBC
• La clase DriverManager provee un método llamado
getConnection(), por medio de este se puede
obtener una conexión a una bases de datos
• Este método toma tres argumentos:
– El URL de la base de datos
protocol:<subprotocol>:<subname>
– Identificación del usuario
– Clave del usuario
Copyright © 2004
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){}
}
}
}
Debemos realizar un 
manejo adecuado de 
las excepciones que 
pueden generarse
Copyright © 2004
Conceptos Avanzados
Crear Objetos Statement
• Las sentencias SQL más usadas son las siguientes:
– UPDATE
– INSERT
– DELETE
– SELECT
• La interfaz Statement provee métodos para hacer
estas llamadas
• El método executeUpdate() retorna el numero de
registros afectados por la sentencia SQL
• El método executeQuery() retorna el conjunto de
registros seleccionados por la consulta (ResultSet)
Copyright © 2004
Conceptos Avanzados
import java.sql.*;
public class PruebasJDBC1 {
public static void main(String[] args) {
Connection conn = null;
String u = "db2admin";
String p = "db2admin";
String drv = "COM.ibm.db2.jdbc.app.DB2Driver";
try {
Class.forName(drv);
conn = DriverManager.getConnection(
"jdbc:db2:IBM",u,p);
Statement stmt = conn.createStatement();
String sql = "INSERT INTO ESTUDIANTE "+
"VALUES('Pedro','Perez',123)";
stmt.executeUpdate(sql);
System.out.println("Actualización exitosa ");
} catch (Exception e){
System.out.println("Error: "+e);
}finally {
try {if (conn != null)conn.close();}
catch (SQLException se){}
}
}
}
Crear Objetos Statement
Copyright © 2004
Conceptos Avanzados
Usar ResultSet
• Al utilizar el método executeQuery() de un
Statement, es necesario utilizar una referencia a la
interfaz ResultSet para manipular los datos
retornados por el Statement
• Para iterar a través de un ResultSet se utiliza el
método next(), que permite mover el cursor desde su
posición actual hasta el proximo registro
• Inicialmente el cursor del ResultSet se encuentra
antes del primer registro
Copyright © 2004
Conceptos Avanzados
Usar ResultSet
• La interfaz ResultSet provee una serie de métodos que
permiten extraer los datos contenidos en el registro
apuntado por el cursor, entre estos se tienen:
- int getInt(String);
int getInt(int);
- String getString(String);
String getString(int);
- float getFloat(String);
float getFloat(int);
• Existe un par de métodos similares para cada tipo de
dato compatible con SQL
Copyright © 2004
Conceptos Avanzados
import java.sql.*;
public class PruebasJDBC2 {
public static void main(String[] args) {
...
try {
...
Statement stmt = conn.createStatement();
String sql = "SELECT * FROM ESTUDIANTE";
ResultSet r = stmt.executeQuery(sql);
while(r.next())
System.out.println(r.getString("nombre")+
" "+ r.getInt("ci"));
} catch (Exception e){
System.out.println("Error: "+e);
}finally {
try {if (conn != null)conn.close();}
catch (SQLException se){}
}
}
}
Usar ResultSet
Copyright © 2004
Conceptos Avanzados
Interfaces MetaData
• La palabra Metadata implica información acerca de
información
• La interfaz ResultSetMetaData provee información
acerca de los objetos ResultSet
• La clase DatabaseMetaData está relacionado con el
objeto Connection. Por medio de esta se puede
obtener información de la base de datos a la cual se
está conectado por medio de Connection
Copyright © 2004
Conceptos Avanzados
ResultSetMetaData
• Algunos de los métodos contenidos en esta interfaz son 
los siguientes:
- int getColumnCount()
- String getColumnLabel(int column)
- String getColumnName(int column)
- String getTableName(int column)
- int isNullable(int column)
- boolean isReadOnly(int column)
Copyright © 2004
Conceptos Avanzados
DatabaseSetMetaData
• Alguno de los métodos contenidos en esta interfaz son 
los siguientes:
- String getDriverName()
- String getURL()
- String getUserName()
- boolean isReadOnly()
Copyright © 2004
Conceptos Avanzados
Resumen
• Se aprendió acerca de conectividad a base de datos 
en Java
• Se entendió el Java JDBC API
• Se discutió acerca de sentencias SQL usadas en 
programas Java
• Se presentó cómo se trata el el manejo de 
excepciones
Copyright © 2004
Conceptos Avanzados
JDBC Avanzado
Copyright © 2004
Conceptos Avanzados
Objetivos de Aprendizaje
• Describir el uso de las interfaces herederas de la interfaz 
Statement
• Explicar los procedimientos almacenados
• Explicar las funcionalidades de:
- manejo de transacciones 
- soporte a cursores 
- el procesamiento de múltiples resultados de JDBC
• Discutir algunas clases de soporte JDBC en Java 
Copyright © 2004
Conceptos Avanzados
Extensiones de la Interfaz Statement
• La especificación JDBC provee dos clases adicionales,
provenientes de la interfaz Statement para permitir al
programador realizar programación sofisticada de base
de datos
• Estas interfaces son:
– PreparedStatement
– CallableStatement
Copyright © 2004
Conceptos Avanzados
PreparedStatement
• Existe una manera de crear sentencias SQL una vez y
usarla cada vez que quiera correrla
• Esto se logra a través de PreparedStatement de
JDBC
•Esta interfaz permite construir las sentencias SQL
requeridas una vez y ejecutarlas cualquier número de
veces en la aplicación
• Cuando un objeto PreparedStatement es creado, la
sentencia SQL se da como argumento
• La sentencia SQL debe ser enviada al DBMS
inmediatamente donde es compilada una vez
Copyright © 2004
Conceptos Avanzados
PreparedStatement
• En tiempo de construcción el PreparedStatement
no conoce los valores que determinan el resultado de
su ejecución
• Solo las posiciones de dichos valores son conocidas
en el momento de su creación, las mismas son
indicadas con el símbolo “?”
PreparedStatement ps;
ps = conn.preparedStatement("select * from 
tabla "+ "where c1=? ")
Copyright © 2004
Conceptos Avanzados
import java.sql.*;
public class PruebasJDBCPrepared {
static String db="jdbc:db2:IBM";
static String drv="COM.ibm.db2.jdbc.app.DB2Driver";
public static void main(String []args){
Connection conn = null;
PreparedStatement ps = null;
try{
Class.forName(drv);
conn = DriverManager.
getConnection(db,"db2admin","db2admin");
String sql = "select * from estudiante where 
ci=?";
ps = conn.prepareCall(sql);
ps.setInt(1,123);
ResultSet rs = ps.executeQuery();
//Continúa...
PreparedStatement
Copyright © 2004
Conceptos Avanzados
if(rs.next())
System.out.println("Encontrado");
else 
System.out.println("No Encontrado");
}catch(Exception e){
System.out.println("Error: "+e);
}finally{
try{
if(conn!=null)
conn.close();
}catch(Exception e){}
}
}
}//Fin de la clase PruebasJDBCPrepared
PreparedStatement
Copyright © 2004
Conceptos Avanzados
Procedimientos Almacenados 
• Un procedimiento almacenado (stored procedure)
permite asociar un conjunto de sentencias SQL a un
único nombre, para luego ejecutarlas haciendo uso de
ese nombre en cualquier momento
• Los procedimientos almacenados son muy rápidos, ya
que se ejecutan dentro de la base de datos y están
previamente compilados
• Por medio de los objetos de la interfaz
CallableStatement se pueden ejecutar dentro del
código Java
Copyright © 2004
Conceptos Avanzados
Otras Funcionalidades JDBC 
✓ Administración de Transacciones 
✓ Soporte de cursores 
✓ Procesamiento de resultados múltiples
• Algunos de estos pueden no ser soportados por todas las
implementaciones JDBC
• Se presenta la sintaxis básica de uso de estas
funcionalidades.
• Dependiendo del DBMS, se contará con el soporte de
estas características
Copyright © 2004
Conceptos Avanzados
Administración de Transacciones 
• Una transacción puede ser definida como un conjunto de
operaciones que deben ser ejecutadas como una unidad
• De fallar una de las operaciones, falla en su totalidad la
transacción
• Una transacción es una “unidad de trabajo”
• Cuando se realiza cualquier operación de INSERT,
UPDATE o DELETE ésta se ejecuta con auto-commit
explícito por omisión
• Para habilitar control sobre las transacciones de la base
de datos se usa el método
setAutoCommit(boolean autoCommit)
Copyright © 2004
Conceptos Avanzados
...
try{
// Auto commit deshabilitado
conn.setAutoCommit(false);
// Insertamos en la primera tabla
stmt = conn.createStatement();
stmt.executeUpdate("INSERT INTO table1 ...");
stmt.close();
// Insertamos en la segunda tabla
stmt = conn.createStatement();
stmt.executeUpdate("INSERT INTO table2 ...");
stmt.close();
// Compromete los cambios en la base de datos
conn.commit();
}catch(SQLException e){
try {
conn.rollback();
}catch( SQLException sqle2 ){} 
}...
Administración de Transacciones 
Copyright © 2004
Conceptos Avanzados
Soporte de Cursores
• JDBC provee soporte limitado de cursores.
• Permite a una aplicación obtener un cursor asociado
con el resultado a través del método de
ResultSet.getCursorName()
• El desplazamiento dentro del cursor es provisto
recientemente en las implementaciones de JDBC,
algunos controladores pueden no permitirlo
• Para hacer uso de cursores desplazables se debe
activar esta característica
Copyright © 2004
Conceptos Avanzados
Soporte de Cursores
• Lo primero es utilizar los siguientes métodos para crear
las sentencias y las sentencias preparadas:
- Statement createStatement(int type, int concurrency)
-PreparedStatement prepareStatement(String sql,int type,
int concurrency)
• type puede ser cualquiera de las siguientes constantes:
TYPE_FORWARD, TYPE_SCROLL_INSENSITIVE, 
TYPE_SCROLL_SENSITIVE
• concurrency puede ser cualquiera de las siguientes 
constantes:
CONCUR_READ_ONLY, CONCUR_UPDATABLE
Copyright © 2004
Conceptos Avanzados
• Algunos de los métodos disponibles para el movimiento del 
cursor son:
Método Descripción
absolute(int) Para moverse a una fila específica en el resultado 
afterLast() Para moverse al final del resultado, después de la última fila
beforeFirst() Para moverse al inicio del resultado, antes de la primera fila 
first() Para moverse a la primera fila del resultado 
last() Para moverse a la última fila del resultado 
previous() Para moverse a la fila anterior, similar a next()
Soporte de Cursores
Copyright © 2004
Conceptos Avanzados
Uso típico de cursores:
stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE, 
ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery("SELECT * FROM tableName”);
rs.absolute(7);
System.out.println(rs.getString(1));
while (rs.next(){
// ...
}
rs.beforeFirst();
while (rs.next()) {
// ...
}
Soporte de Cursores
Copyright © 2004
Conceptos Avanzados
Múltiples Resultados
• Especialmente con procedimientos almacenados, se
puede estar interesados en una aplicación que retorne
múltiples resultados
• Para obtenerlos, se debe hacer uso de los siguientes
métodos:
boolean getMoreResults();
ResulSet getResultSet();
Copyright © 2004
Conceptos Avanzados
• Un uso típico de esta característica es el siguiente:
...
while(stmt.getMoreResults()) {
rs = stmt.getResultSet();
while (rs.next()) {
// algunas tareas
}
}
...
Múltiples Resultados
Copyright © 2004
Conceptos Avanzados
Clases de Soporte JDBC 
• Algunas de las clases de soporte son las siguientes:
✓SQLException
✓SQLWarning
✓DataTruncation
✓Date, Time y Timestamp
✓Types
Copyright © 2004
Conceptos Avanzados
Resumen 
• Se entendió como usar clases heredadas de 
Statement
• Se aprendió acerca de procedimientos almacenados 
• Se discutió acerca de otras funcionalidades JDBC:
- como administración de transacciones, 
- soporte de cursores y 
- procesamiento de resultados múltiples.
• Se listaron algunas de las clases de soporte JDBC en 
Java
Copyright © 2004
Conceptos Avanzados
Características 
Avanzadas
Copyright © 2004
Conceptos Avanzados
Objetivos de Aprendizaje
• Exponer los aspectos de seguridad que aplican cuando
se trabaja con programas Java
• Describir los conceptos de internacionalización en Java
• Definir JavaBeans
• Discutir el empaquetado de componentes en Java
• Escribir código que use correctamente los métodos más
importantes de la clase java.lang.Math
Copyright © 2004
Conceptos Avanzados
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
Copyright © 2004
Conceptos Avanzados
Modelo de Seguridad de Java
Copyright © 2004
Conceptos Avanzados
• El Conjunto de Instrucciones de la JVM: Es la base
de la seguridad de Java, las instrucciones de la JVM, no
acceden directamente a la memoria sino que lo hacen
de una forma simbólica
• El Cargador de Clases: Es responsable de verificar la
clase que se esta cargando, verifica nombres,
dependencias, prioridades en la carga, cache
• El Verificador de Bytecodes: Revisa el bytecode por
inicialización de variables, verificación de métodos,
reglas de acceso, desbordamiento de la pila
• El Administrador deSeguridad: Usa una política de
seguridad para determinar los accesos
Modelo de Seguridad de Java
Copyright © 2004
Conceptos Avanzados
• Una política de seguridad asocia al código fuente
directamente con un conjunto de permisos y puede ser
creada usando la herramienta de políticas del SDK
• El archivo jre\lib\security\java.security contiene entradas
que identifican la política a ser usada
• El formato del archivo de políticas permite a los
desarrolladores conceder confianza a código sin firmar
de una localización específica, o código posiblemente
sin firmar de cualquier situación
Archivo de Políticas de Seguridad
Copyright © 2004
Conceptos Avanzados
• En la sección anterior, se hablaba acerca del archivo de
políticas de seguridad y las formas de conceder acceso
al recurso dependiendo de la firma. El tipo de firma
referido aquí, es la firma digital.
• Una firma digital es el proceso en el que las llaves
públicas y privadas son producidas y se relacionan
matemáticamente
Firmas Digitales
Copyright © 2004
Conceptos Avanzados
• 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
Certificados Digitales
Copyright © 2004
Conceptos Avanzados
Internacionalización
• La Internacionalización es el proceso de diseñar una
aplicación que pueda ser adaptada a varios lenguajes y
regiones.
• Localización es el proceso de adaptar software a un
lenguaje o región específica, por medio de la traducción
de texto y la adición de componentes específicos a la
región.
Copyright © 2004
Conceptos Avanzados
• Para poder incluir la internacionalización en programas
Java, los siguientes pasos son esenciales:
• Crear un archivo properties
• Crear un objeto Locale. 
• Crear un objeto ResourceBundle. 
• Obtener la cadena del objeto ResourceBundle. 
Internacionalización
Copyright © 2004
Conceptos Avanzados
• En Java, se tiene el concepto de componentes
• Los componentes son unidades de software auto-
contenidas y reusables.
• Las tecnologías de componentes se incorporan a la
plataforma Java a través del concepto de JavaBeans
• Estos componentes reusables exponen sus
características a las herramientas constructoras para
manipulación visual.
• La tecnología de componentes ofrecida por Java es
independiente de la plataforma.
JavaBeans
Copyright © 2004
Conceptos Avanzados
• Las características que distinguen un JavaBean de una
simple clase de Java son:
- Introspección
- Persistencia
- Personalización
- Manejo de Eventos
- Propiedades
JavaBeans
Copyright © 2004
Conceptos Avanzados
Empaquetar Componentes
• El empaquetamiento asegura que cuando se instala una
aplicación todos los archivos necesarios son parte de la
aplicación
• El empaquetamiento ofrece además a los JavaBeans
manejo de versiones, firmas electrónicas y sellado de
paquetes
• Para crear un archivo JAR se usa el siguiente comando:
jar cvf jar-name archivo-class1 archivo-class2...
• Para examinar los contenidos de un archivos JAR se 
usa:
jar tvf jar-name
Copyright © 2004
Conceptos Avanzados
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
• Algunos de sus métodos son:
Método Descripción
abs(int a) Calcula el valor absoluto de a
max(int a, int b) Retorna el máximo valor entre a y b
min(int a, int b) Retorna el mínimo valor entre a y b
round(float a) Realiza un redondeo del valor de a
pow(double a, double b) 
Calcula y retorna el valor de a 
elevado al valor de b
Copyright © 2004
Conceptos Avanzados
Resumen
• Se explicaron los mecanismos de seguridad cuando se 
trabaja con programas Java
• Se describieron los conceptos de internacionalización
• Se explicí el concepto de JavaBeans 
• Se explicó el empaquetamiento de componentes
• Se describió la clase java.lang.Math

Continuar navegando