Está en la página 1de 13

Tema 2.

Breve introducción a Java

Programación II (2013/2014)
Origen
•  Año 1991; Sun Microsystems
–  Programar dispositivos de electrónica de consumo
–  Surge la idea del Java byte-code è JVM (Java Virtual Machine)
•  Año 1994; Sun Microsystems
–  Se desarrolla el primer navegador Web que ejecuta programas Java: HotJava
•  Año 1995; Netscape Incorporated
–  El navegador Netscape es capaz de ejecutar programas Java

•  Definición del lenguaje: Java language specification:


•  http://java.sun.com/docs/books/jls/
•  Java Standard Edition (JSE) à aplicaciones cliente
•  Java Enterprise Edition (Java EE) à aplicaciones en servidor
•  Java Micro Edition (Java ME) à dispositivos móviles

Programación II (2013/2014)
Java: crear, compilar y ejecutar
Public class Bienvenida{
Public static void main(String[] args){ Crear/Modificar código fuente
System.out.printl(“Bienvenidos”);
}
} Código fuente

Compilar código fuente


… javac Bienvenida.java
Method Bienvenido()
0 aload_0
… Bytecode
Method void main(java.lang.String[])
0 getstatic #2 …
3 lcd #3 <String “Bienvenidos”> Ejecutar Bytecode
5 invokevirtual #4 java Bienvenida
8 return

Resultado

Bienvenidos

IDE: permite editar, compilar, depurar, ejecutar cualquier código Java desde una
única herramienta.
Programación II (2013/2014)
Bases
•  API (Application Program Interface):
•  Conjunto de clases e interfaces predefinidas para el desarrollo de
programas. En continua expansión
•  http://download.oracle.com/javase/1.5.0/docs/api/

•  JDK (Java Development Kit):


–  Provee herramientas de desarrollo para la creación de
programas Java (java, javac, javadoc…)

•  IDE (Integrated Development Environment) à


Eclipse

Programación II (2013/2014)
Métodos (I) Void si no devuelve parámetros.

Modificadores TipoRetorno nombreMetodo (listaDeParametros) {


// cuerpo del método
} Signature (firma) del método

public static int max(int num1, int num2) {

int resultado;

if (num1 > num2) resultado = num1;


else resultado = num2;
return resultado;
}
int z = max(x, y);

Programación II (2013/2014)
Métodos (II)
public static void main (String[] args) {
// cuerpo del programa
}

Programación II (2013/2014)
Métodos (II)
public static void main (String[] args) {
// cuerpo del programa
}

Paso del valor i


Paso del valor j

public static void main(String[] args) { public static int max(int num1, int num2) {
int i = 5; int result;
int j = 2;
int k = max(i, j); if (num1 > num2)
result = num1;
System.out.println( else
"The maximum between " + i + result = num2;
" and " + j + " is " + k);
} return result;
}

Programación II (2013/2014)
Ámbito de definición de variables

public static void method1() {

int z = 9;
.
for (int i = 1; i < 10; i++) {
.
.
int j;
.
.
.
}

Programación II (2013/2014)
Distribución de memoria en JVM
(Java Virtual Machine)
•  Stack:
–  Almacena variables locales.
–  Llamadas a métodos (parámetros de entrada + resultado).
–  Variables primitivas.
–  Referencias a objetos.
•  Heap:
–  Espacio de memoria en tiempo de ejecución donde viven los objetos y sus
variables de instancia.

Programación II (2013/2014)
Métodos: Stack y Heap
public static void main(String[] args) { public static int max(int num1, int num2) {
int i = 5; int result;
int j = 2;
int k = max(i, j); if (num1 > num2)
result = num1;
System.out.println( else
"The maximum between " + i + result = num2;
" and " + j + " is " + k);
} return result;
}

STACK: Variables locales, llamadas a métodos, variables primitivas y referencias a objetos (en el heap)
Espacio en el
Espacio en el método “max”
método “max” result: 5
num1: 5 num1: 5
num2: 2 num2: 2
Espacio en el Espacio en el Espacio en el Espacio en el
método “main” método “main” método “main” método “main”

k: k: k: k: 5
i: 5 i: 5 i: 5 i: 5
j: 2 j: 2 j: 2 j: 2

Programación II (2013/2014)
Referencias
•  Zona de datos / Stack / Heap
public class Circulo() { Circulo c1(1), c2(5);
double radio; int i = 1, j = 2;

. i = j;
. c1 = c2;
.
}
Circulo
radio = 1 Circulo
i 1 c1 radio = 1
i 2 c1
j 2 c2 Circulo
radio = 5 2 Circulo
j c2
radio = 5

•  Puntero this:
–  Referencia explícita al objeto cuyos métodos se están
ejecutando (o cuyas variables deben ser accedidas desde
tales métodos).
Programación II (2013/2014)
Recolector de Basura
(Garbage Collector)

•  Gestiona el Heap (memoria en tiempo de ejecución


que almacena objetos y sus instancias).
•  El objeto previamente referenciado por c1 ya no se
utiliza à ¡es basura!
•  Marcado para el recolector de basura que se
encarga de liberar sus recursos (devolver el espacio
que ocupa en memoria).
•  Cuando un objeto no vaya a ser utilizado à
asignarle el valor null a su variable de referencia
para que el recolector de basura libere su espacio.
Programación II (2013/2014)
Tema 2. Breve introducción a Java

Programación II (2013/2014)

También podría gustarte