Está en la página 1de 27

La Mquina Virtual Java (JVM) es el entorno en el que se

ejecutan los programas Java, su misin principal es la de


garantizar la portabilidad de las aplicaciones Java.

Define esencialmente un ordenador abstracto y especifica las
instrucciones (bytecodes) que este ordenador puede ejecutar. El
intrprete Java especfico ejecuta las instrucciones que se
guardan en los archivos cuya extensin es .class. Las tareas
principales de la JVM son las siguientes:

Reservar espacio en memoria para los objetos creados
Liberar la memoria no usada (garbage collection).
Asignar variables a registros y pilas
Llamar al sistema husped para ciertas funciones, como los accesos a
los dispositivos
Vigilar el cumplimiento de las normas de seguridad de las aplicaciones
Java
MQUINA VIRTUAL
Java es un lenguaje de propsito general, de alto nivel, y
orientado a objetos.

Es un lenguaje de programacin orientado a objetos puro, en el
sentido de que no hay ninguna variable, funcin o constante
que no est dentro de una clase. Se accede a los miembros
dato y las funciones miembro a travs de los objetos y de las
clases. Por razones de eficiencia, se han conservado los tipos
bsicos de datos, int, float, double, char, etc, similares a los
del lenguaje C/C++.
MQUINA VIRTUAL
HERENCIA
La herencia es un principio fundamental de la Programacin
Orientada a Objetos (POO) ya que esta permite la creacin
jerarquas.

La idea de la herencia es permitir la creacin de nuevas clases
basadas en clases existentes; podemos agregar nuevos
campos, agregar o sobre cargar mtodos (override).

La clase ya existente es llamada superclass, o clase base, o
clase padre. La clase nueva es llamada subclase, clase derivada,
o clase hija.
ENCAPSULAMIENTO
Este concepto consiste en ocultar del estado o de los datos
propios de un objeto, de forma que slo es posible modificar
los mismos mediante los mtodos definidos para dicho objeto.

Cada objeto est aislado del exterior, de forma que la
aplicacin es un conjunto de objetos que colaboran entre s
mediante el paso de mensajes invocando sus operaciones o
mtodos. De esta forma, los detalles de implementacin
permanecen "ocultos" a las personas que usan las clases,
evitando as modificaciones o accesos indebidos a los datos que
almacenan las clases.
DECLARACIN DE LA CLASE
En el caso ms general, la declaracin de una clase puede
contener los siguientes elementos:

[public] [final | abstract] class Clase [extends ClaseMadre]
[implements Interfase1 [, Interfase2 ]]

o bien, para interfaces:

[public] interface Interfase [extends InterfaseMadre1 [,
InterfaseMadre2 ]]
MODIFICADORES DE ACCESO
Definir una clase como pblica (public) significa que puede ser
usada por cualquier clase en cualquier paquete. Si no lo es,
solamente puede ser utilizada por clases del mismo paquete.

Una clase final (final) es aquella que no puede tener clases que la
hereden. Esto se utiliza bsicamente por razones de seguridad (para
que una clase no pueda ser reemplazada por otra que la herede), o
por diseo de la aplicacin.
MODIFICADORES DE ACCESO
Una clase abstracta (abstract) es una clase que puede tener
herederas, pero no puede ser instanciada. Es, literalmente, abstracta
(como la clase Number definida en java.lang). Para qu sirve? Para
modelar conceptos. Por ejemplo, la clase Number es una clase
abstracta que representa cualquier tipo de nmeros (y sus mtodos
no estn implementados: son abstractos); las clases descendientes
de sta, como Integer o Float, s implementan los mtodos de la
madre Number, y se pueden instanciar.
EXTENDS
La instruccin extends indica de qu clase desciende la nuestra. Si
se omite, Java asume que desciende de la superclase Object.

Cuando una clase desciende de otra, esto significa que hereda sus
atributos y sus mtodos (es decir que, a menos que los
redefinamos, sus mtodos son los mismos que los de la clase madre
y pueden utilizarse en forma transparente, a menos que sean
privados en la clase madre o, para subclases de otros paquetes,
protegidos o propios del paquete).
INTERFACE
Una interfase (interface) es una clase que no implementa sus
mtodos sino que deja a cargo la implementacin a otras clases.
Las interfases pueden, asimismo, descender de otras interfases
pero no de otras clases. Todos sus mtodos son por definicin
abstractos y sus atributos son finales (aunque esto no se indica
en el cuerpo de la interfase).

Son tiles para generar relaciones entre clases que de otro modo
no estn relacionadas (haciendo que implementen los mismos
mtodos), o para distribuir paquetes de clases indicando la
estructura de la interfase pero no las clases individuales (objetos
annimos).

Cuando una clase implementa (implements) una o ms
interfases, debe contener la implementacin de todos los mtodos
(con las mismas listas de parmetros) de dichas interfases.
MODIFICADORES DE ACCESO
Las clases native son aquellas que se implementan en otro
lenguaje (por ejemplo C o C++) propio de la mquina. Sun
aconseja utilizarlas bajo riesgo propio, ya que en realidad son
ajenas al lenguaje.

Las clases synchronized permiten sincronizar varios threads
para el caso en que dos o ms accedan concurrentemente a los
mismos datos. De nuevo, ms detalles habr en el futuro,
cuando hablemos de threads.

La clusula throws sirve para indicar que la clase genera
determinadas excepciones.
CUERPO DE CLASE
En Java no hay variables globales; todas las variables se declaran
dentro del cuerpo de la clase o dentro de un mtodo. Las
variables declaradas dentro de un mtodo son locales al
mtodo; las variables declaradas en el cuerpo de la clase se dice
que son miembros de la clase y son accesibles por todos los
mtodos de la clase.

Por otra parte, adems de los atributos de la propia clase se
puede acceder a todos los atributos de la clase de la que
desciende.
ATRIBUTOS
Finalmente, los atributos miembros de la clase pueden ser
atributos de clase o atributos de instancia; se dice que son
atributos de clase si se usa la palabra clave static: en ese caso
la variable es nica para todas las instancias (objetos) de la clase
(ocupa un nico lugar en memoria). Si no se usa static, el
sistema crea un lugar nuevo para esa variable con cada instancia
(o sea que es independiente para cada objeto).

La declaracin sigue siempre el mismo esquema:

[private|protected|public] [static] [final] [transient]
[volatile] Tipo NombreVariable [= Valor];
MODIFICADORES DE ACCESO
Java tiene 4 tipos de acceso diferente a las variables o mtodos de
una clase: privado, protegido, pblico o por paquete (si no se
especifica nada).
De acuerdo a la forma en que se especifica un atributo, objetos de
otras clases tienen distintas posibilidades de accederlos:
S: puede acceder
N: no puede acceder
X: puede acceder al atributo en objetos que pertenezcan a la subclase, pero no en los que
pertenecen a la clase madre.
Acceso desde: private protected public (package)
la propia clase S S S S
subclase en el mismo
paquete
N S S S
otras clases en el
mismo paquete
N S S S
subclases en otros
paquetes
N X S N
otras clases en otros
paquetes
N N S N
COMPORTAMIENTO
Static sirve para definir un atributo como de clase, o sea nico para
todos los objetos de la clase.

Final, como en las clases, determina que un atributo no pueda ser
sobreescrito o redefinido. O sea: no se trata de una variable, sino de
una constante.

Transient denomina atributos que no se graban cuando se archiva
un objeto, o sea que no forman parte del estado permanente del
mismo.
COMPORTAMIENTO
Volatile se utiliza con variables modificadas asincrnicamente por
objetos en diferentes threads (literalmente "hilos", tareas que se
ejecutan en paralelo); bsicamente esto implica que distintas
tareas pueden intentar modificar la variable simultneamente, y
volatile asegura que se vuelva a leer la variable (por si fue
modificada) cada vez que se la va a usar (esto es, en lugar de usar
registros de almacenamiento como buffer).
TIPOS DE VARIABLES
Los tipos de variables disponibles son bsicamente 3:
Tipos bsicos (no son objetos)
Arreglos (arrays)
Clases e interfases
TIPOS BSICOS DE DATOS
Tipo Tamao/Formato Descripcin
byte 8-bit complemento a 2 Entero de un byte
short 16-bit complemento a 2 Entero corto
int 32-bit complemento a 2 Entero
long 64-bit complemento a 2 Entero largo
float 32-bit IEEE 754 Punto flotante, precisin simple
double 64-bit IEEE 754 Punto flotante, precisin doble
char 16-bit caracter Unicode Un caracter
boolean true, false
Valor booleano (verdadero o
falso)
TIPOS BSICOS DE DATOS
Los arrays son arreglos de cualquier tipo (bsico o no).

Los arreglos siempre son dinmicos, por lo que no es vlido
poner algo como: Integer cadena[5];

Aunque s es vlido inicializar un arreglo, como en:
int das[ ] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
char letras[ ] = { 'E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D' };
String nombres[ ] = new String[12];

En Java, para todas las variables de tipo bsico se accede al valor
asignado a la misma directamente (no se conoce la direccin de
memoria que ocupa). Para las dems (arrays, clases o interfases),
se accede a travs de un puntero a la variable. El valor del
puntero no es accesible ni se puede modificar (como en C); Java
no necesita esto y adems eso atentara contra la robustez del
lenguaje.
MTODOS
Los mtodos, como las clases, tienen una declaracin y un
cuerpo.

La declaracin es del tipo:

[private|protected|public] [static] [abstract] [final] [native]
[synchronized] TipoDevuelto NombreMtodo ( [tipo1 nombre1[,
tipo2 nombre2 ]] ) [throws excepcin1 [,excepcin2] ]

Bsicamente, los mtodos son como las funciones de C:
implementan, a travs de funciones, operaciones y estructuras de
control, el clculo de algn parmetro que es el que devuelven al
objeto que los llama. Slo pueden devolver un valor (del tipo
TipoDevuelto), aunque pueden no devolver ninguno (en ese caso
TipoDevuelto es void).
El valor de retorno se especifica con la instruccin return, dentro
del mtodo.

Los mtodos pueden utilizar valores que les pasa el objeto que los
llama (parmetros), indicados con tipo1 nombre1, tipo2
nombre2 en el esquema de la declaracin.

Estos parmetros pueden ser de cualquiera de los tipos ya vistos.
Si son tipos bsicos, el mtodo recibe el valor del parmetro; si
son arrays, clases o interfases, recibe un puntero a los datos
(referencia).
MTODOS
MODIFICADORES DE ACCESO
Public, private y protected actan exactamente igual para los
mtodos que para los atributos.

Los mtodos estticos (static), son, como los atributos, mtodos
de clase; si el mtodo no es static es un mtodo de instancia. El
significado es el mismo que para los atributos: un mtodo static
es compartido por todas las instancias de la clase.

Es final un mtodo que no puede ser redefinido por ningn
descendiente de la clase.
MODIFICADORES DE ACCESO
Los mtodos abstractos (abstract) son aquellos de los que se da
la declaracin pero no la implementacin (o sea que consiste slo
del encabezamiento). Cualquier clase que contenga al menos un
mtodo abstracto (o cuya clase madre contenga al menos un
mtodo abstracto que no est implementado en la hija) es una
clase abstracta.
ESTRUCTURAS ITERATIVAS: IF
La ms comn de todas, permite ejecutar una instruccin (o
secuencia de instrucciones) si se da una condicin dada (o,
mediante la clusula else, ejecutar otra secuencia en caso
contrario).

if (expresin_booleana) {
instrucciones_si_true;
}
else {
instrucciones_si_false;
}
El operador ?: es el operador ternario.
Puede emplearse para sustituir a una sentencia if-then-else.
Su sintaxis es: exp1 ? exp2: exp3;
Donde exp1 es una expresin booleana
SWITCH
Permite ejecutar una serie de operaciones para el caso de que
una variable tenga un valor entero dado. La ejecucin saltea
todos los case hasta que encuentra uno con el valor de la
variable, y ejecuta desde all hasta el final del case o hasta que
encuentre un break, en cuyo caso salta al final del case. El
default permite poner una serie de instrucciones que se ejecutan
en caso de que la igualdad no se de para ninguno de los case.

switch (expresin_entera) {
case (valor1): instrucciones_1;
[break;]
case (valor2): instrucciones_2;
[break;] ..
case (valorN): instrucciones_N;
[break;]

default: instrucciones_por_defecto;
}
WHILE
Permite ejecutar un grupo de instrucciones mientras se cumpla
una condicin dada:

while (expresin_booleana) {
instrucciones
}

Dowhile
Similar al anterior, slo que la condicin se evala al final del
ciclo y no al principio:

do {
instrucciones
} while (expresin_booleana);
FOR
Se emplea para ejecutar en forma repetida una serie de
instrucciones; es un poco ms complejo:

for ( instrucciones_iniciales; condicin_booleana; instruccion_repetitiva_x ) {
instrucciones
}

También podría gustarte