Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cecilia Hernández
2007
Introducción a Java
Lenguaje de Programación Orientado a Objetos
Características
Independiente de la plataforma
• Compilador no genera código ejecutable nativo a la
máquina donde se ejecuta
• Compilador produce un formato especial llamado byte
codes
• Para que bytescodes puedan ejecutarse en una máquina
específica se necesita un intérprete en tiempo de
ejecución. El intérprete es el que genera código de
lenguaje de máquina entendido por la máquina
• Ambiente de ejecución normalmente se conoce como Java
Virtual Machine (JVM)
Recolector de basura
• Memoria es liberada automáticamente cuando JMV lo
determina
Plataforma Java
Incluye
J2SE Java 2 Standard Edition
J2EE Java 2 Enterprise Edition
Java ME Java APIs para desarrollo de aplicaciones en
PDAs y celulares
Compilador Just in time. En lugar de interpretar una
instrucción a la vez, interpreta el bytecode completo a
código nativo en máquina cuando se carga en MV
Versión
Version actual de Java es normalmente referida a 1.6 o
6.0
Java
Documentación
http://java.sun.com/developer/onlineTrainin
g/
• Tutorial J2SE JDK
http://java.sun.com/docs/books/tutorial/index.html
Especificación de API de Java Standard Edition
6.0
http://java.sun.com/javase/6/docs/api/
Programando en Java
Primer programa
Tipos primitivos
Tipos de datos simples definidos por el
lenguaje de programación
• En Java son 8
• boolean (true o false), char (16 bits set
caracteres unicode), byte (8 bits con signo),
short (16 bits), int (32 bits), long (64 bits), float
(32 bits punto flotante), double (64 bits punto
flotante)
• Tipos no primitivos se conocen como Tipos
Objetos
Constantes
Declaración
public static final <type>
<name> = <value> ;
Ejemplos
public static final int DAYS_IN_WEEK = 7;
public static final double INTEREST_RATE =
3.5;
public static final int SSN = 658234569;
Control de flujo
Ciclos
for(), while(), do-while()
Condicionales
If – else
switch (expresion){
case n: sentencias;
case m: sentencias;
…
default: sentencias;
}
Objetos
Variables estáticas
• También se les conoce como class variables
• Variables que se asocian a clase no a objeto
• Variable común a todos los objetos (variables
compartidas entre todos los objetos de la clase)
• Se define como variable de clase con la
palabra clave static
• Ejemplo : Identificador de cuenta de
CuentaBanco. Un número que identifique
únicamente a dueño de cuenta.
Ejemplo variables estáticas
public class CuantaBanco {
private String nombre;
private int balance;
private int Id;
private static int proxIdDisponible = 1;
Overloading
Varios métodos definidos en una clase, todos
con el mismo nombre, pero diferentes
argumentos
Overriding
Usando herencia
• Clase A superclase
• Define método dibujar()
• Clase B subclase
• Redefine método dibujar()
Excepciones
Cualquier cosa que no funcione bien que
podría resultar en una excepción
Exception es una clase con muchas subclases
que permiter capturar diferentes tipos de
problemas
Usar try y catch para capturar excepciones
try
{
// sentencias de código que pueden arrojar
excepciones, ejemplo división por cero
}
catch (ArithmeticException e)
{
// codigo que atiende division por cero
}
Throws vs throw
throw :
Un objeto puede detectar una excepción y enviarla como
respuesta al mensaje.
throws :
public Object clone() throws
CloneNotSupportedException {
• Indica que método puede (es posible) enviar
excepcion CloneNotSupported. Debe incluirse
la lista de excepciones que método podría
enviar.
• Chequeado por compilador
Algunas excepciones java estándar
IllegalArgumentException
Valor de parámetro es inapropiado
NullPointerException
El valor del parámetro es null, cuando no debería
IndexOutOfBoundsException
Arreglo o lista esta fuera de rango
FileNotFoundException
No encuentra archivo
InterruptedException
Se produce una excepción por interrupción
IOException
Excepciones producidas en E/S
Paquetes
Clases de java se pueden agrupar en paquetes.
Nombres de paquetes separados por . Como
java.io.* // clases de E/S y archivos
java.util.* // contenedores, date/time,
java.lang.* //clases básicas de java, importadas automáticamente
• Math, Integer, Double, System, Thread, String, etc
javax.swing.* // clases soporte gráfico
java.net.* // clases soporte comm en red, sockets, URLs
Para garantizar nombres de paquetes únicos Sun recomienda dar
nombres en sentido inverso a dominios en urls
Los archivos de paquetes creados deben seguir jerarquía de
directorios dados en secuencia dada en nombre paquete
cl.udec.inf.sc.pedro : Clases definidas en pedro debe estar en
directorio cl/udec/inf/sc/pedro
Importando paquetes
Para importar paquetes de clases ya definidos usar import
Ejemplos
import java.util.* // incluye un conjunto de contenedores
definidos en java como ArrayLists, Vectors, HashMaps,
Lists, etc
import java.io.* // incluye clases de clases para
entrada/salida
import java.lang.* // import no necesario
Si nombre de clase en un paquete es igual a otra en otro
paquete y ambos son importados, de debe usar el nombre
de paquete con clase. Ejemplo
java.util.Date y java.sql.Date
Creando paquetes
package cl.udec.inf.pedro;
public class Cuenta{
…
}
Cuando la sentencia package no se agrega la
clase pertenece al paquete por defecto
Implementaciones de Colecciones
en Java
Hebra
Una secuencia de sentencias de código que
puede estar en ejecución concurrente con
otras hebras
Para crear hebras en Java
• Crear una clase que implementa la
• Clase que implementa interface Runnable
• Class A implements Runnable
• Clase derivada de clase Thread
• Class A extends Thread
• Implementar el método run con un loop que hace
algo en un periodo de tiempo
• Crear una instancia de clase A
• Invocar operación start, la que llama a método run
Creando hebras
join
Permite a una hebra esperar por la
terminación de otra
sleep
Una hebra puede dormir por un
tiempo dado
• Método estático
Manejando hebras en Java 6
queue[inptr] = value;
System.out.println("P : " + count);
inptr = (inptr + 1) % size;
count++;
mutex.release();// SIGNAL()
llenos.release();
}
Productor consumidor Semáforos
public Object get() throws InterruptedException {
Object value;
llenos.acquireUninterruptibly();
mutex.acquireUninterruptibly();
value = queue[outptr];
outptr = (outptr + 1) % size;
count--;
System.out.println("C : " + count);
mutex.release();
vacios.release();
return value;
}
Productor consumidor Semáforos
public class Producer extends Thread {
private QueuePC buf;
private int id;
private static int number=0;
prod1.start();
prod2.start();
prod3.start();
cons1.start();
cons2.start();
}
}