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 |