Características principales (I)
Lenguaje interpretado.
Fuertemente tipado.
Sintaxis similar a C/C++.
Sin punteros: Garbage collection.
100% portable.
Integra librearías estándar para:
Interfaces de usuario.
Objetos distribuidos.
Threads.
Características principales (y II)
Ejecutable desde navegadores web.
Origen: Aumento de HTML para conseguir páginas Web dinámicas.
Versiones:
1995 – JDK 1.0
1997 – JDK 1.1
…
2004 – JDK 1.5
Desarrollo en Java
Java Development Kit (JDK):
Java Runtime Environment (JRE):
Java Virtual Machine.
Java API: lenguaje básico y librerías estándar.
Compilador a bytecode.
Otras herramientas:
Debuggers.
Applet viewer.
Compiladores RMI
…
Compilación e interpretación
class Ejemplo {
…
}
class Aux {
…
}
Ejemplo.java
Compilador Java
Ejemplo.class
Aux.class
Java Virtual Machine
JVM
Comparativa: Java vs. C++ (I)
Interpretado
Portable
Todo memoria dinámica
Garbage collection
No existen punteros
Todos los métodos virtuales
No hay herencia múltiple
Información sobre clases
en tiempo de ejecución.
Tratamiento genérico
de tipos (wrappers).
Java
C++
Compilado
Aspectos no portables
Memoria automática y dinámica
Gestión del programador
Existen punteros
No todos los métodos virtuales
Hay herencia múltiple
Información muy escasa
(dynamic_cast).
Punteros a void.
Comparativa: Java vs. C++ (y II)
Soporte estándar para interfaces:
AWT, SWING
Soporte estándar para concurrencia
Soporte estándar para objetos
distribuidos
Ejecutable en navegadores web
Homogeneidad del lenguaje
Lenguaje bien diseñado
Java
C++
No incluido en el lenguaje:
Microsoft MFC, Borland OWL…
No incluido en el lenguaje
No incluido en el lenguaje:
CORBA, ActiveX
No ejecutable por navegadores
Múltiples sintaxis
Compatibilidad con C
Elementos del lenguaje
Aspectos léxicos
Ignora múltiples espacios en blanco
Sentencias separadas por “;”.
Comentarios:
/* … */ ? Múltiples líneas de comentario
// ? Una única línea de comentario
Case – sensitive.
Convenios de nomenclatura:
Clases con mayúscula.
Métodos y variables con minúscula.
etc…
Valores y variables
Tipos básicos:
Variables y literales:
Declaración y utilización de variables y literales similar a C/C++.
byte 1 byte
char 2 bytes (sin signo, caracteres Unicode, incluyen los ASCII)
short 2 bytes
int 4 bytes
long 8 bytes
float 4 bytes
double 8 bytes
boolean 1 bit (true ó false, no compatible con tipos numéricos)
Compatibilidad entre tipos
byte b = 42;
char c = 'a'; // también válido: c = 97;
short s = 1024;
int i = 50000;
long l = 120000;
float f = 5.67f;
double d = .1234;
double result = (f*b) + (i/c) – (d*s);
Ensanchar: automático
f = c;
d = s;
f = l;
Estrechar: cast explícito
c = (char) i;
b = (byte) d;
f = (float) d;
char: cast explícito
s = (short) c;
c = (char) s;
c = (char) b;
Operadores
En total hay 46 operadores.
Numéricos:
+, -, *, /, %, +=, -=, *=, /=, %=, –, ++
Lógicos:
&&, ||, !
Operadores de bit:
&, |, ^, ~, >>, <<
Relacionales:
>, <, >=, <=, ==, !=
Condicional:
If-then-else: (condicion) ? acción1 : acción2
Precedencia de operadores
( ) [ ] .
++ — ~ !
new
* / %
+ –
>> >>> <<
> >= < <= instanceof
== !=
&
^
|
&&
||
? :
= += *= -= /=
(Gp:) Orden de ejecución de operadores
(Gp:) Igualdad de precedencia
Arrays
Declaración:
int a[];
a = new int[3];
int b[] = {1, 2, 3, 4};
Reserva de tamaño:
Asignación de valores:
a[1] = 7;
b = a;
Errores:
a[6] = 7; // Fuera del rango
a = {1, 2, 3}; // Sólo válido en la inicialización
int c[5]; // La dimensión sólo al hacer new
char str[] = “hola”; // Los Strings no son arrays en Java
Arrays multidimensionales
float a[][] = new float [4][3];
float m[][] = new float [4][];
m[0] = new float [2];
m[1] = new float [5];
m[2] = new float [m[1].length];
float x[] = {4.5, 8/3, m[2][1]};
m[3] = x; // O cualquier expresión que devuelva un float[]
a[0] = m[1]; // Las variables de array no son constantes
a[2, 1] = 7.3 // Error de sintaxis: a[2][1]
Expresiones condicionales
Dos tipos de condicionales.
if (condición1) acción1 [else acción2] [else if (condición2)…
switch (expresión) {
case valor1:
…
break;
case valor2:
…
break;
default:
…
}
(Gp:) byte, char, short o int
(Gp:) Tienen que ser literales
Página siguiente |