Sunteți pe pagina 1din 55

Carlos A. Fernndez Java. Una Introduccin. U.T.M.

1
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 2
Java: origen
Diseado dentro de Sun Microsystems por
James Gosling
El nombre original fue Oak
Originalmente diseado para usarse dentro
de dispositivos electrodomsticos, que
tuvieran la capacidad de comunicarse entre
s.
Posteriormente fue reorientado hacia
Internet, y rebautizado con el nombre de
Java
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 3
Java: origen
En un intento de resolver simultneamente
los problemas ocasionados por la diversidad
y crecimiento de arquitecturas
incompatibles, tanto entre mquinas
diferentes como entre los diversos sistemas
operativos y sistemas de ventanas que
funcionaban sobre una misma mquina,
aadiendo la dificultad de crear aplicaciones
distribuidas en una red como Internet.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 4
Java: caractersticas de diseo.
Es un lenguaje de programacin de alto
nivel, de propsito general, y cuyas
caractersticas son:
Simple y familiar.
Orientado a objetos.
Independiente de la plataforma
Portable
Robusto.
Seguro.
Multihilos.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 5
Java: simple y familiar.
Es simple:
Tanto la estructura lxica como sintctica del
lenguaje es muy sencilla.
Elimina las caractersticas complejas e
innecesarias de sus predecesores.
Es familiar:
Java incorpora las mejores caractersticas de
lenguajes tales como:
C/C++, Modula, Beta, CLOS, Dylan, Mesa, Lisp,
Smalltalk, Objective-C, y Modula 3.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 6
Java: Orientado a Objetos.
Todo en Java son objetos.
No es posible que existan funciones que no
pertenezcan a una clase.
La excepcin son los tipos da datos primitivos,
como nmeros, caracteres y booleanos.
Cumple con los 4 requerimientos de
Wegner:
OO = abstraccin + clasificacin +
polimorfismo + herencia
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 7
Java: independiente de la
plataforma.
Java resuelve el problema de la distribucin
binaria mediante un formato de cdigo
binario (bytecode) que es independiente del
hardware y del S.O., gracias a su mquina
virtual.
Si el sistema de runtime esta disponible para
una plataforma especfica, entonces una
aplicacin puede ejecutarse sin necesidad de
un trabajo de programacin adicional.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 8
Java: portable.
Independiente de la plataforma.
La especificacin de sus tipos de datos
primitivos y sus tamaos, as como el
comportamiento de los operadores
aritmticos, son estndares en todas las
implementaciones de Java.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 9
Java: Robusto
Robusto=confiable, gracias a:
Validacin de tipos.
Control de acceso a las variables y mtodos.
Validacin de apuntador NULL.
Validacin de los lmites de un arreglo.
No tiene aritmtica de apuntadores.
Manejo de memoria.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 10
Robusto - Validacin de tipos.
Los objetos de tipos compatibles pueden ser
asignados a otros objetos sin necesidad de
modificar sus tipos.
Objetos de tipos potencialmente incompatibles
requieren un modificador de tipo (cast)
Si la modificacin de tipo es claramente imposible, el
compilador lo rechaza y reporta un erro en tiempo de
compilacin.
Si la modificacin resulta legal, el compilador lo
permite, pero inserta una validacin en tiempo de
ejecucin.
Cuando el programa se ejecuta se realiza la validacin
cada vez que se ejecuta una asignacin potencialmente
invlida.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 11
Robusto - control de acceso a
variables y mtodos.
Los miembros de una clase pueden ser
privados, pblicos o protegidos.
En java una variable privada, es realmente
privada.
Tanto el compilador como la mquina
virtual de Java, controlan el acceso a los
miembros de una clase, garantizando as su
privacidad.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 12
Robusto - Validacin del
apuntador Null
Todos los programas en Java usan
apuntadores para referenciar a un objeto.
Una validacin del apuntador a Null ocurra
cada vez que un apuntador deja de
referencia a un objeto.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 13
Robusto: Limites de un arreglo.
Java verifica en tiempo de ejecucin que un
programa no usa arreglos para tratar de
acceder a reas de memoria que no le
pertenecen.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 14
Robusto: aritmtica de
apuntadores.
Aunque todos los objetos de manejan con
apuntadores, Java elimina la mayor parte de
los errores de manejo de apuntadores
porque no soporta la aritmtica de
apuntadores:
No soporta acceso directo a los apuntadores
No permite operaciones sobre apuntadores.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 15
Robusto: Manejo de memoria.
Muchos de los errores de la programacin
se deben a que el programa no libera la
memoria que debera liberar, o libera la
misma memoria ms de una vez.
Java, hace recoleccin automtica de
basura, liberando la memoria y evitando la
necesidad de que el programador se
preocupe por liberar memoria que no
utilice.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 16
Java y C++: diferencias.
No tiene aritmtica de apuntadores.
No permite funciones con mbito global.
No contiene estructuras y uniones (struct y
union)
No contiene tipos de datos sin signo.
Elimina la instruccin goto.
Las cadenas no terminan con \0
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 17
Java y C++: diferencias.
No permite alias (typedef).
No maneja macros (#define)
No tiene conversin automtica de tipos
compatibles.
No soporta un preprocesador.
El tipo char contiene 16 bits para soportar
UNICODE.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 18
Java y C++: diferencias.
Java soporta mltiples hilos de ejecucin.
Todas las condiciones en Java deben tener
como resultado un tipo booleano.
Java no soporta el operador sizeof.
No tiene herencia mltiple.
No tiene liberacin de memoria explcita
(delete y free() ).
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 19
Archivos .java y .class
El cdigo fuente se almacena en archivos
con extensin .java
El bytecode o cdigo compilado se
almacena en archivos .class
El compilador de Java crea un archivo .class
por cada declaracin de clase que encuentra
en el archivo .java
Los archivos .class tienen el nombre de la
clase, no el nombre de los archivos .java
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 20
Existen dos tipos de programas en Java:
Aplicaciones
Son programas standalone, escritos en Java y
ejecutados por un intrprete del cdigo de bytes
desde la lnea de comandos.
Applets
Son pequeas aplicaciones escritas en Javam que
siguen un conjunto de convenciones que le permiten
ejecutarse dentro de un navegador.
Un applet siempre est incrustado en una pgina
html.
Java: Programas.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 21
En trminos del cdigo fuente las diferencia
entre un applet y una aplicacin son:
Una aplicacin debe definir una clase que
contenga el mtodo main(), que controla su
ejecucin. Un applet no usa el mtodo main();
su ejecucin es controlado por varios mtodos
definidos en la clase aplet.
Un applet, debe definir una clase derivada de la
clase Applet.
Java: applet y aplicacin.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 22
Java: jdk
Los principales programas del Java
TM
Development Kit:
javac. Es el compilador en lnea del JDK.
java. Es la mquina virtual para aplicaciones de
Java.
Appletviewer. Visor de applets de java.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 23
Un applet debe ser invocado desde una
pgina de html. Slo es necesario agregar la
etiqueta <APPPLET> para indicar el
archivo de bytecodes del applet
<APPLET CODE=MiClase.class WIDTH=250
HEIGHT=300></APPLET>
Java: Archivo HTML
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 24
Utilizando el JDK, los programas se compilan
desde el smbolo del sistema con el
compilador javac.
Ejemplo:
C:\MisProgramas> javac MiClase.java
Java: Compilacin
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 25
Java: Opciones del compilador
Sintaxis: javac [opciones] <archivo1.java>
Opciones:
-classpath <ruta> Indica donde buscar los archivos de
clasede Java
-d <directorio> Indica el directorio destino para los
archivos .class
-g Habilita la generacin de tablas de depuracin.
-nowarn Deshabilita los mensajes del compilador.
-O Optimiza el cdigo, generando en lnea los
mtodos estticos, finales y privados.
-verbose Indica cul archivo fuente se esta
compilando.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 26
Java: Aplicacin Hola Mundo
public class HolaMundo {
public static void main(String args[]) {
System.out.println("Hola,
Mundo!");
}
}
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 27
Java: Applet Hola Mundo
import java.applet.*;
import java.awt.Graphics;
import java.awt.Color;
public class Hola extends Applet {
public void paint(Graphics g) { // Java llama a
paint automticamente
g.setColor(Color.red);
g.drawString("Hola, Mundo!", 0, 50);
}
}
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 28
Java: Ejecucin
De un applet desde el appletviewer:
C:\> appletviewer hola.html
De una aplicacin:
C:\> java HolaMundo
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 29
Java: Comentarios
Java maneja tres tipos de comentarios:
/* comentario */
El compilador ignora cualquier cosa entre /* y */
// comentario
El compilador ignora cualquier cosa entre // y el fin de lnea.
/** documentacin*/
Indica un comentario de documentacin. El compilador
tambin ignora este tipo de comentario. La herramienta
javadoc usa este tipo de comentarios para generar
documentacin de manera automtica.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 30
Java: mtodo main()
En una aplicacin de Java debe existir un mtodo
de nombre main. este tiene un solo argumento
(String args[ ]), a travs del cual recibe
informacin de los argumentos de la lnea de
comandos. ejemplo:
public class EscribeParam {
public static void main(String args[ ]) {
for (int j= 0; j < args.length; j++)
System.out.println("Parametro #" + j + "-> " +
args[j]);
}
}
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 31
Java: import
Las clases en Java estn organizadas en
paquetes, y son similares a las libreras de
c++ para agrupar funciones. Puede
utilizarse opcionalmente la instruccin
import, o hacer referencia a toda toda la ruta
completa cada vez que se usa una clase:
java.util.Hashtable miTabla = new java.util.Hastable();
import java.util.Hashtable; //importar esta clase
Hashtable miTable = new Hashtable();
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 32
Java: import
Existen algunas clases que no necesitan ser
importadas, como la clase System, estas son
las que se encuentran dentro del paquete
java.lang, pues son importadas
automticamente para todo programa de
Java.
Es posible importar todas las clases de un
paquete mediante el uso del *. Ejemplo:
import java.awt.*;
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 33
Java: tipos de datos primitivos.
Tipo Tamao Rango
long 8 bytes -9,223,372,036,854,775,808L a
9,223,372,036,854,775,807L
int 4 bytes -2.147,483,648 a 2,147,483,647
short 2 bytes -32768 a 32,767
byte 1 byte -128 a 127
double 8 bytes +- 1.79769313486231570E+308
float 4 bytes +- 3.40282347E+38
char 2 bytes 65,536 caracteres posibles
boolean 1 bit true o false
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 34
Java: Conversiones de tipos.
Existe una conversin implcita cuando se
trata de un tipo de dato ms pequeo hacia
uno ms grande. La conversin implcita
soportada sera:
double <- float <- long <- int <- short <- byte
De otra forma debe usarse una conversin
explcita mediante conversin o
enmascaramiento (cast):
(tipo) valor_a convertir
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 35
Java: Definir una clase
Debe especificarse la palabra reservada
class, seguida del nombre de la clase:
class MiNuevaClase{
//instrucciones
}
Pueden definirse mltiples clases en un
archivo .java, pero solo puede haber una
clase pblica por archivo.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 36
Java: Definir una clase
Una clase pblica es una clase que puede
utilizarse en otros programas. el nombre de
la clase pblica debe coincidir con el
nombre del archivo .java
Existen dos formas de crear un objeto de
una clase:
MiNuevaClase obj1;
obj1 = new MiNuevaClase();

MiNuevaClase obj1 = new MiNuevaClase();


Carlos A. Fernndez Java. Una Introduccin. U.T.M. 37
Java: atributos
La declaracin de atributos es similar a la
forma en C++; es decir, se especifica el tipo
de dato o clase a la que pertenece y el
nombre del atributo.
Java a diferencia de C++, asigna valores
predeterminados a los atributos.
class Fruta {
float precio;
String Variedad;
...
}
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 38
Java: mtodos
De la misma forma, la declaracin de mtodos es
parecida a la de C++.
public class Fruta {
float precio;
String variedad;
Fruta (float p, String v) {
precio = p; variedad = v;
}
void desplegar() {
System.out.println ("Variedad: "+ variedad + ",
Precio: " + precio);
}
}
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 39
Java: sobrecarga de mtodos
La sobrecarga de mtodos consiste en declarar dos o ms mtodos en
una clase con el mismo nombre, pero que se diferencien en el nmero
o en el tipo de los parmetros que reciben.
public class Fruta {
float precio;
String variedad;
Fruta (float p, String v) {
precio = p; variedad = v;
}
Fruta (String v) {
precio = 1.00F;
variedad = v;
}
void desplegar() {
System.out.println ("Variedad: "+ variedad + ", Precio: " + precio);
}
}
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 40
Java: Paso de parmetros
Se puede pasar como parmetro cualquier
tipo de dato vlido: tipos de datos primitivos
y tipos de datos referenciados (objetos y
arreglos).
Los argumentos son pasados por valor.
Si el parmetro es de un tipo de datos primitivo,
el paso por valor significa que el mtodo no
puede cambiar su valor.
Cuando el argumento es un tipo de dato
referenciado, el paso por valor significa que
elmtodo no puede cambiar la referencia al
objeto.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 41
Java: Modificadores de clase.
Abstract. Declara a la clase como abstracta
y evita que un programa pueda crear una
instancia de esa clase.
public abstract class ClaseAbstracta {...
Public. Este modificador vuelve accesible a
la clase en cualquier lugar. Si no se usa
public, la clase es visible nicamente en el
paquete al que pertenece. Solo se permite
una clase public por archivo .java.
public class EstoyEnTodosLados {...
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 42
Java: Modificadores de clases.
Final. Incluir la palabra reservada final en
la declaracin de la clase evita que se creen
subclases de ella. Esto evita que
programadores extiendan una clase.
public final class AquiTerminatodo {...
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 43
Java: Modificadores de miembros
Public. Un miembro pblico es visible desde
cualquier lugar del programa donde la clase sea
visible.
public int todosMeVen;
Private. Un miembro privado es visible slo dentro
de su clase.
private int InvisibleAfuera
Protected. Un miembro protegido slo es visible
dentro de su clase, subclases o en clases que
pertenecen al mismo paquete.
protected int atributoProtegido;
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 44
Java: Modificadores de miembros
Static. Los miembros estticos son
accesibles sin necesidad de instanciar un
objeto de una clase. el valor del atributo es
compartido por todas las instancias de la
clase. Los mtodos estticos no pueden
acceder a miembros no estticos de la clase.
public static int EsteValorSeComparte;
public static int llamameCuandoQuieras() { ... }
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 45
Java: Modificadores de miembros
Atributo Final. Declarar a un atributo como
final, indica que este atributo ser constante
y que su valor no puede ser modificado.
protected static final int MAX_LLAVES = 256;
Mtodo Final. Si se declara a un mtodo
como final, se indica que este mtodo no
podr ser redefinido en las clases derivadas.
public final int esteMetodoNoSeReemplaza(){ ...
}
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 46
Java: Modificadores de miembros
Abstract. Un mtodo abstracto no tiene
implementacin, y no se permite crear una
instancia de la clase que contiene al mtodo.
Una subclase debe redefinir el mtodo
incluyendo la implementacin.
public abstract void instrumentameDespues( int
x);
//Definicin invlida de un mtodo abstracto
final abstract void metodoIlegal();
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 47
Java: Sntesis de acceso
Nivel de
acceso
clase subclase paquete Mundo
private X
Protected X X X
Public X X X X
package X X
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 48
Java: Arreglos
En Java los arreglos son objetos que son
creados dinmicamente.
La declaracin de un atributo de tipo arreglo
no lo crea, ni reserva memoria.
int [] a= new int[10];
float objeto[]= new float[23];
int [] factorial = { 1, 1, 2, 6, 24, 120, 720, 5040 };
byte arr[][]= new byte [2][3];
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 49
Java: Arreglos
public class referenciaArreglog {
static public void main(String args){
int primero[] = { 1, 2, 3, 4 };
int segundo[] = { 5, 6, 7, 8, 9, 10 }; int arreglo[];
arreglo = primero;
System.out.println("Primer Arreglo: ");
for (int indice=0; indice < arreglo.length; indice++){
System.out.println(arreglo[indice]);
}
arreglo = segundo;
System.out.println("Segundo Arreglo:");
for (int indice=0; indice < arreglo.length; indice++){
System.out.println(arreglo[indice]);
}
}
}
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 50
Java: Arreglos
public class cicloArreglo {
static public void main(String args) {
Integer arreglo[][] = new Integer [50][5];
for (int i=0; i < arreglo.length; i++) {
for (int k=0; k < arreglo[i].length; k++) {
arreglo[i][k] = new Integer(i*10 + k);
System.out.println(arreglo[i][k]);
}
}
}
}
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 51
Java:Mtodos del Applet
public void init() Es invocada una sola vez, cuando se carga
el applet. Sirve para inicializar el applet.
public void start() Se invoca despus de que se ejecuta init y
cada vez que el usuario regresa a la pgina
HTML en la que el applet reside.
public void paint (
Graphics g)
Se invoca para dibujar en el applet
despus que el init termina de ejecutarse y
se ha comenzado a ejecutar el mtodo
start. Se invoca automticamente cada vez
que el applet necesita redibujarse.
public void stop() Se invoca cuando el appelt debe terminar
su ejecucin; por ejemplo, que el usuario
abandone la pgina HTML
public void destroy() Se invoca cuando el applet se va a
eliminar de la memoria; por ejemplo,
cuando el usuario sale del navegador.
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 52
Java: Applet
import java.awt.Graphics;
import java.applet.Applet;
public class InitArray extends Applet {
int n[];
public void init(){
n = new int[ 10 ]; }
public void paint( Graphics g ){
int yPosition = 25;
g.drawString( "Element", 25, yPosition );
g.drawString( "Value", 100, yPosition );
for ( int i = 0; i < n.length; i++ ) {
yPosition += 15;
g.drawString( String.valueOf( i ), 25, yPosition );
g.drawString( String.valueOf( n[ i ] ), 100, yPosition );
}
}
}
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 53
Java: Applet
import java.awt.Graphics;
import java.applet.Applet;
public class SumArray extends Applet {
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int total;
public void init(){
total = 0;
for ( int i = 0; i < a.length; i++ )
total += a[ i ];
}
public void paint( Graphics g ) {
g.drawString( "Total : " + total,25, 25 );
}
}
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 54
Java: Seguridad en applets
Accin Appletviewer Netscape
(archivo)
Netscape
(URL)
Applet de
Java
Conexin a otra
computadora
S No No S
Conexin a la
computadora
local
S S No S
Leer un archivo
local.
S No No S
Escribir en un
archivo local
S No No S
Borrar un archivo
desde Java
No No No S
Ejecutar
programas
externos
S No No S
Cargar biblioteca S S No S
Carlos A. Fernndez Java. Una Introduccin. U.T.M. 55
Java:Paquetes de la API
API: Applications Programming Interface
java.applet Contiene a la clase applet y varias interfaces que
permiten la creacin de applets, interaccin de las
applets con el navegador, etc.
java.awt Paquete de herramientas para trabajar con ventanas.
Clases e interfaces pata crear y manipular interfaces
grficas con el usuario(GUI)
java.awt.image Contiene clases e interfaces que permiten almacenar y
manipular imgenes en un programa.
java.io Entrada/salida de Java.
java.lang Importado automticamente en los programas.
java.net Clases que permiten a los programas comunicarse a
travs de la Intranet o Internet.
java.util Diversas clases como manipulaciones de fecha,
aleatorios, manipulaciones de cadena, etc.

S-ar putea să vă placă și