You are on page 1of 43

Java

Introduccin y Fundamentos del


lenguaje de programacin Java

Introduccin

Introduccin (I)

Creado en 1991 por Sun Microsystems (James


Gosling) para dispositivos electrnicos:
calculadoras, microondas y la televisin
interactiva.

Escasa potencia de clculo


Poca memoria
Distintas CPUs

Consecuencias:

Lenguaje sencillo que genera cdigo reducido


Lenguaje que independiente de la plataforma

Introduccin (II)

Lenguaje de progamacin para


computadores/internet desde 1995.
Sun describe Java como un lenguaje simple,
orientado a Objetos, distribuido, interpretado,
robusto, seguro, de arquitectura neutral, portable,
de alto rendimiento, multihilos, y dinmico
Ejecucin de Java como:

Aplicacin independiente
Applet (dentro del navegador al cargar la pgina Web)
Servlet (ejecutado en servidor de internet, sin interfaz
grfica).

Introduccin (III)

JDK (Java Development Kit): programas y librerias para


desarrollar, compilar y ejecutar programas Java.
Versiones:

Java 1.0: 212 clases organizadas en 8 paquetes


Java 1.1: 504 clases, 23 paquetes. Mejoras a la JVM.
Java 1.2 (Java 2): 1520 clases, 59 paquetes. Plataforma
muy madura . Apoyado por grandes empresas: IBM,
Oracle, Inprise, Hewtlett-Packard, Netscape, Sun.
Java 1.3 (Java Enterprise Edition). Java comienza a
ser una plataforma de desarrollo profesional
??? Java MicroEdition

Caractersticas de Java

Caractersticas de Java I

Lenguaje de fcil uso orientado a objetos


Lenguaje compilado e interpretado
Facilita un entorno interpretado:
Velocidad de desarrollo (no de ejecucin)
Portabilidad del cdigo
Ejecucin multitareas
Cambios dinmicos en tiempo de ejecucin
Seguridad del cdigo.

La mquina Virtual Java - JVM (I)

Es una mquina hipottica que emula por software una


mquina real. Es definida por una especificacin.
Conjunto de instrucciones de mquina
(C.O.) + Operandos
Pila
Memoria
...
El compilador genera bytecodes (instrucciones de cdigo
maquina para la JVM)
El interprete tarduce y ejecuta los bytecodes para cada
mquina especfica.

La mquina Virtual Java (II)


Cdigo fuente
Compilador Java
Byte-codes
Macintosh JVM

Win32 JVM

UNIX JVM

Cdigo mquina
Macintosh

Cdigo mquina
Win32

Cdigo mquina
UNIX

Compilador e intrprete de
Java (I)

El compilador analiza la sintaxis del cdigo fuente (con


extensin .java). Si no hay errores, genera bytecodes
> javac <Nombre>.java

El intrprete es la Mquina Virtual de Java que ejecuta


los bytecodes (*.class) creados por el compilador.
> java <Nombre> (sin extensin)
> java <Nombre> arg1 arg2

Compilador e intrprete de Java (II)


Codigo fuente

HelloWorld.java

java HelloWorld
ejcutar

compilar

javac HelloWorld.java

HelloWorld.class

bytecode

Garbage Collection

La memoria reservada dinmicamente que No se vaya a


usar ms debe ser liberada.
En otros lenguajes, esta liberacin debe realizarla el propio
programador.
La JVM dispone de un proceso que rastrea las operaciones
de memoria: el Garbage Collector.

Verifica y libera la memoria que no se necesita

Se ejecuta automticamente

Puede variar segn la implementacin de la JVM.

Seguridad del Cdigo

La JVM verifica los bytecodes asegurando que:

El cdigo se ajusta a las especificaciones de la JVM.

No hay violaciones de acceso restringido.

Los tipos de los parmetros son correctos para todo el


cdigo.

No existen conversiones ilegales de datos (ej. de


enteros a apuntadores).

Formato de los archivos fuente

Declaracin de paquete (opcional)

Instrucciones de importacin(opcional)

package <nombrePaquete>

import <nombrePaquetes>

Declaracin de clase o interfaz

[<mod>] class <NombreClase> {.....}

Un programa Simple
public class ProgramaSimple
{
public static void main(String[] args)
{
System.out.println("Este es + un programa simple");

System.exit(0);
}
}

Elementos del Lenguaje

Elementos del lenguaje

Caracteristicas del lenguaje


Declaraciones
Tipos de Datos
Operadores
Estructuras de control
Clases y Objetos
Paquetes

Caracteristicas del lenguaje

Sensible a maysculas/misnsculas
Comentarios
Lenguaje de formato libre
Identificadores
Palabras reservadas
Variables y constantes
Convenciones de nomenclatura
Tiene reglas sobre los tipos de datos

Sensible a
maysculas/minsculas

Se distingue entre maysculas y


minsculas.
Los identificadores Papa, papa y PAPA
son diferentes.
Todas las palabras reservadas del lenguaje
van en minsculas.

Comentarios
// comentario
Los caracteres desde // hasta el final de la lnea son
ignorados.
/* comentario */
Los caracteres entre /* y */ son ignorados
/** comentario */
Los caracteres entre /** y */son ignorados y se
incluyen en la generacin autmatica de la
documentacin.

Lenguaje de formato libre

La disposicin de los elementos dentro del cdigo es libre


Instrucciones: lnea simple de cdigo terminada en ;
Bloque de cdigo: Conjunto de sentencias agrupadas entre
llaves.
{
X = x + 1;
Y = y + 1;
}

Java permite espacios en blanco entre elementos del cdigo


X1 = y
* delta;
X2 = (y-1) * delta;

Palabras Reservadas

Palabras con un significado especial para el compilador


Ejemplos:

Nombres de tipos bsicos: boolean, char, double, int,


Indicadores de controls: do, if, else, for, while,
Class, interface, extends, implements
package, import
this, super
Modificadores de acceso: public, private, protected
Constantes: true, false, null
Etc

Variables y Constantes

Variable: Zona de memoria cuyos valores van a


cambiar durante la ejecucuin.
Declaracin:

<tipo> <variable>;

<tipo> <var1>, <var2>, ..., <varn>;

<tipo> <var1> = <valor>;

Variables y Constantes

Ejemplos de declaracin de variables:

Constantes: Zona de memoria cuyos valores no


cambian
Declaracin:

int x,y,z;
int x = 9;
boolean terminar = false;
Cliente c1 = new Cliente();

final <tipo> <variable> = <valor>;

Ejemplo: final double PI = 3.14159;

Asignaciones

Se utiliza el operador de asignacin =

<tipo> <variable> = <valor>;


<tipo> <variable>;
<otras instrucciones>...
<variable> = <valor>;

La parte izquierda siempre debe ser una variable


La parte derecha puede ser un literal, una
variable, una expresin, una funcin o una
combinacin de todos.

int x = 4; //Declaracion con asignacin


x = 9;
//Se asume que x est definida

Tipos de Datos y Operadores

Tipos de Datos

Java define dos tipos de datos

Los tipos primitivos son ocho agrupados en


cuatro categoras:

Tipos primitivos
Tipos referencia

Lgico: boolean
Texto: char
Entero:byte, short, int, long
Real: float, double

Los tipos referencia son apuntadores a objetos.

Tipos de Datos

Tipos primitivos:

t
n
i
un
s
e
No

boolean true o false


char unicode! (16 bits)
byte entero de 8 bits con signo.
short
entero de 16 bits con signo.
int
entero de 32 bits con signo.
long entero de 64 bits con signo.
float,double IEEE 754 floating point

Tipos de datos Referencia

Un tipo referencia guarda un apuntador a la direccin


donde se ubica el objeto (32 bits).
Slo puede almacenar objetos de su propio tipo.
Ejemplo:
Cuadrado cuad1, cuad2;
Circulo circ1;
cuad1 = new Cuadrado();
circ1 = cuad1;
// Error de compliacin
cuad2 = cuad1;
// Ok

Todas las clases son de tipo referencia.


El valor que toma por defecto una variable de tipo
referencia es null.

Cadenas de Caracteres

La clase String permite manejar cadenas de caracteres.

El literal string debe ir entre comillas dobles .

Se puede crear una cadena de caracteres de dos formas:

String nombre = new String(Pepe);

String nombre = Pepe;

Para concatenar dos cadenas se usa el operador +.

No se guarda el carcter fin de cadena.

Conversiones de tipos

La conversin de tipos (casting) debe realizarse entre


tipos de la misma naturaleza: numricos o referencia.
Al convertir un tipo a un tamao ms pequeo se puede
perder la informacin del los bits de mayor peso.

No hay conversin automatica con el tipo boolean!

La sintaxis es: (<tipo>) <expresion>

Ejemplo: int i = (int) 1.345;

Operadores (I)

Unarios: +. -

Aritmticos: +, -, *, /, % (resto de la divisin).

De Asignacin: =, +=, -=, *=, %=


<var> += <exp> <var> = <var> + <exp>

Operadores incrementales: ++, -

Precediendo a la variable: ++<var>, --<var>

siguiendo la variable: <var>++, <var>--

elacionales: ==. !=, <, >, <=, >=,

Operadores (II)

Operadores relacionales: == (igual). != (distinto), <, >,


<=, >=,
Operadores booleanos: && (AND), || (OR), ! (NOT), &
(AND), | (OR).

&& y || realizan evaluacin perezosa

& y | siempre evalan los dos operadores

El operador instanceof: <objeto> instanceof


<clase> determina si un objeto pertenece a una clase.

Operadores (III)

Operador condicional: ?
<expBooleana> ? <valor1> : <valor2>
permite bifurcaciones condicionales sencillas.

Operadores a nivel de Bits: &, |, ^, ~, <<, >>, >>>

op1 >> n, desplaza los bits de op1 (con signo) a la derecha n


posiciones.

op1 >>> n, desplaza los bits de op1 (sin signo) a la derecha n


posiciones.

op1 ^ op2, O exclusivo.

~op1 , NOT a nivel de bit (complemento).

Precedencia de operadores

Los operadores binarios se evalan de izaquierda a derecha,


excepto los operadores de asignacin.
1.

Sufijos: .

[] ()

2.

Unarios: ++

--

3.

Creacion y casting: new

4.

Multiplicativos: *

5.

Aditivos: +

6.

Desplazamientos: << >>

7.

Relacionales: < > <= >= == !=


Bits: &
^ |
Lgicos: &&
||
Condicional: ?
:
Asignacin: = op= (*= /= %= += - etc.)

8.
9.
10.
11.

! ~
/

(tipo)exp
%

>>>

Asignacin

Utilizacin de operadores:

var1 = var2 + var3;

// asignar a var1 el valor de var2 + var3

var1 = var2 - ver3;

// asignar a var1 el valor de var2 - var3

var1 = var2 * ver3;

// asignar a var1 el valor de var2 * var3

var1 = var2 / ver3;

// asignar a var1 el valor de var2 / var3

var1 = var2 % ver3;

// asignar a var1 el valor de var2 % var3

Asignaciones de incremento decremento:

variable++;

// aadir uno a variable

variable--;

// restar uno a varibale

variable += exp; // aadir exp a variable

variable -= exp; // restar exp a variable

Declaracin de Variables

tipo nombre;

tipo nombre1, nombre2, nombre3;

tipo nombre = valor;

Paquetes
Paquetes Java ms importantes:
-

lang para funciones del lenguaje;


util para utilidades adicionales;
io para entrada y salida;
text para formateo especializado;
awt para grficos e interfaz grfica de usuario

Para acceder a cualquiera de estos paquetes, excepto lang que


est siempre disponible, usamos el siguiente modelo:
import java.nombrepaquete.*;

Declaracin de Clases
modificador class nombreClase {
< declaracin de campos >
< declaracin de mtodos >
}

modificador puede ser public o nada; si la clase no pertenece a un paquete,


ambas definiciones son equivalentes; si la clase pertenece a un paquete, entonces,
si se declara public, la clase podr utilizarse fuera del paquete, pero si no se
declara public, slo podr utilizarse dentro del paquete

Modelo de un Programa
public class nombrePrograma {
public static void main(String[] args) {
< cuerpo del programa >
}
}

Salida por pantalla


import java.io.*;
System.out.println(elementos);
System.out.println();
System.out.print(elementos);

System.out.println("hola");
System.out.println(5);

// escribe "hola"
// escribe 5

int i = 5; System.out.println(i) ; // escribe


double d=6.4; System.out.println(d);

5;

// escribe 6.4;

double d=6.4; System.out.println("d="+d);

// escribe d=6.4;

Cuadros de Dialogo
Se usa para ingresar y mostrar informacin mediante cuadros de dialogo.
Se

necesitara

la

ayuda

de

algunas

libreras

para

la

interfaz

grafica

conversin de datos.
import java.lang.String;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
//Para ingresar datos mediante teclado se usara:
variable=JOptionPane.showInputDialog("menzaje de dialogo);

// Para mostrar informacion procesada se usara: JOptionPane.showMessageDialog(null," menzaje


de dialogo : " + variable);

EJEMPLO

You might also like