Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin a Java
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 instruccin a la vez, interpreta el bytecode
completo a cdigo nativo en mquina cuando se
carga en MV
Versin
Version actual de Java es normalmente referida
a 1.6 o 6.0
Java
Documentacin
http://java.sun.com/developer/onlineTraining/
Tutorial J2SE JDK
http://java.sun.com/docs/books/tutorial/index.ht
ml
Especificacin de API de Java Standard Edition 6.0
http://java.sun.com/javase/6/docs/api/
Programando en Java
Primer programa
.java en .class
(bytecodes)
Intrprete: java : dinmicamente ejecuta programa
previa interpretacin de bytecode a cdigo de
lenguaje de mquina
Existen ambientes para la creacin, edicin,
compilacin y ejecucin: Eclipse, NetBeans, DrJava,
etc
default if
private
this
do
implements protected throw
double import
public
throws
else
instanceof
return
extends
final
finally
float
for
goto
int
interface
long
native
new
package
short
try
static
void
strictfp
volatile
super
while
switch
synchronized
Tipos de datos
Tipos primitivos
Tipos de datos simples definidos por el
lenguaje de programacin
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
Declaracin
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
Instancias de tipos de datos complejos
llamados clases
Entidad que contiene datos y
comportamientos
Existen variables, que almacenan datos
dentro de un objeto
Existen mtodos dentro de objeto que
representan su comportamiento
Creacin de objetos en Java mediante uso de
keyboard new
Variables de Referencia
Variables de tipos de objetos son llamadas referencias
Referencias no almacenan objeto, sino que almacenan
la direccin de una ubicacin en memoria del objeto
Si uno asigna una referencia a otra para referirse al
mismo objeto, el objeto no es copiado. Las dos
referencias comparten el mismo objeto. Llamando un
mtodo en cualquiera de las dos variables modificar
el mismo objeto.
Mtodos estticos
Algunos mtodos no estn asociados, en forma natural,
con objetos particulares
Ejemplo, mtodos en clase Math, sqrt, sin, cos, tan
Tambin podra darse el caso que nos gustara llamar un
mtodos antes de crear un objeto
Tales mtodos pueden ser declarados estticos: el
mtodo no es parte de una instancia sino que de la
clase
Se invocan enviando mensaje a la clase
No puede accesar referencia this o cualquier
variable o mtodo dentro de un mtodo esttico
dado que no est asociado a un objeto.
Entrada de datos
Salida de datos
Modo texto-ms simple:
Usando System.out.print (ln)
Strings
Clases
Concretas
Todos
Abstractas
Al
Interfaces
No instanciables
Una clase puede implementar cualquier nmero de
interfaces
Herencia
Superclases
Overloading y Overriding
Overloading
Varios mtodos definidos en una clase, todos
con el mismo nombre, pero diferentes
argumentos
Overriding
Usando herencia
Clase A superclase
Define mtodo dibujar()
Clase B subclase
Redefine mtodo dibujar()
Excepciones
Throws vs throw
throw :
Un objeto puede detectar una excepcin y enviarla como respuesta
al mensaje.
throws :
public
IllegalArgumentException
Valor de parmetro es inapropiado
NullPointerException
El valor del parmetro es null, cuando no debera
IndexOutOfBoundsException
Arreglo o lista esta fuera de rango
FileNotFoundException
No encuentra archivo
InterruptedException
Se produce una excepcin por interrupcin
IOException
Excepciones producidas en E/S
Paquetes
Importando paquetes
Creando paquetes
package cl.udec.inf.pedro;
public class Cuenta{
}
Cuando la sentencia package no se agrega la clase
pertenece al paquete por defecto
Arrays pueden contener datos primitivos u objetos mientras que ArrayLists slo objetos
Arrays son de tamao fijo, mientras que ArrayLists crecen dinmicamente
Ventaja de ArrayList
No se necesita saber tamao a priori
Desventaja
No se puede ocupar la notacin [] para obtener elementos
Vectors
Similar a ArrayLists
Mtodos de acceso sincronizados, luego ms lento
Se puede usar notacin [] directamente, adems de una serie de otros mtodos
LinkedLists
Hebras y Sincronizacin
Hebra
Una secuencia de sentencias de cdigo que puede
estar en ejecucin concurrente con otras hebras
Para crear hebras en Java
Crear una clase que implementa la
Clase que implementa interface Runnable
Class A implements Runnable
Creando hebras
/** Opcin 1 */
import java.lang.*;
public class A extends Thread
{
private:
public A(){}
public void run()
{
....
}
public static void main(String[]
args){
A thread1 = new A();
thread1.start();
}
}
/** Opcin 2 */
import java.lang.*;
public class B implements Runnable
{
private:
public B(){}
public void run()
{
....
}
public static void main(String[]
args){
B b = new B();
Thread thread1 = new Thread(b);
thread1.start();
}
}
sleep
Una hebra puede dormir por un tiempo
dado
Mtodo esttico
Sincronizacin
Sincronizacin
Keyword synchronized para indicar, bloque o mtodo sincronizado, slo una hebra
puede ejecutarse dentro de bloque o mtodo sincronizado
Paquete java.util.concurrent
Operaciones atmicas: (concurrent.atomic)
Acciones atmicas sobre variables voltiles
Variable volatile utilizada para decir a compilador que variable puede ser modificada por
mltiples hebras y se necesita ltimo valor almacenado
Locks
Hasta java 1.4 cada objeto tiene un lock asociado
Desde java 1.5 construcciones de locks para locks, LectoresEscritores y locks reentrantes
Semforos
Desde java 1.5 http://java.sun.com/javase/6/docs/api/
Monitores
Usar keyword synchronized para exclusin mutua en mtodos
Hasta java 1.4 slo soportaba una variable de condicin por objeto
wait() y notifyAll() como acciones en variable de condicin (En Java, nica por objeto)
Monitor tipo Mesa luego, wait() debe ser encerrado en ciclo while()