La Plataforma Java
Java es una plataforma virtual que provee:
- El lenguaje Java: un lenguaje de programación.
- La Java Virtual Machine: Una máquina virtual con su propio
set de instrucciones.
- La Java Platform API: Una interfaz para la
programación de aplicaciones.
La Plataforma Java
El lenguaje Java
Orientado a Objetos:
- Objetos
- Clases
- Métodos
- Subclases
- Herencia simple
- Enlace dinámico
- Encapsulamiento
Diseño y Programación Orientada Objetos
- Diseño bibliotecas de clases: Se necesita experiencia y habilidad.
- Usar bibliotecas de clases: Mucho más facil que usar bibliotecas
de procedimientos.
- Las clases son un mecanismo de abstracción eficaz.
No se necesita ser un experto en diseño OO para sacar provecho
de un lenguaje OO.
Java es un lenguaje simple
- Sintaxis familiar: a la C.
- Se eliminan las características complejas de C y C++.
- No hay aritmética de punteros.
- No hay herencia múltiple.
- No hay delete.
- Fácil de aprender y usar.
La API de la Plataforma Java
Consiste en una biblioteca de clases que provee de:
- Manejo de archivos
- Interfaces gráficas
- Acceso a la red internet
- Acceso a bases de datos
- Y mucho mas.
Multiplataforma
La plataforma Java se incrusta en plataformas reales como:
- Windows'95 y 'NT (pero no 3.1)
- Power/Mac
- Unix (Solaris, Linux, ...)
Compatibilidad a nivel de fuentes, código intermedio y
biblioteca de clases.
Implementación de la Plataforma Java
La implementación de la plataforma Java provee:
- Un compilador de Java para traducir código fuente al set de instrucciones
de la máquina virtual de Java.
- Un intérprete o un compilador JIT para ejecutar las instrucciones
de la máquina virtual.
- Una implementación de la API de Java.
C y C++ son poco robustos
Errores frecuentes:
- Índice fuera de rango: a[-3]=5;
- Errores de cast: *(int*)pdistance
- Referencias colgantes: free(p); *p= 1;
- Error en aritmética de punteros: *(p+i*sizeof(*p))
Estos errores conducen a mensajes crípticos como segmentation
fault. El lugar en donde se emite este mensaje no es la verdadera
fuente del
error.
Java sí es robusto
- Java siempre chequea los índices.
- Java siempre chequea los casts.
- Java hace recolección automática de basuras.
- Java no tiene aritmética de punteros.
Liberación explícita de la memoria
- 40% del tiempo de desarrollo se dedica a colocar los
delete
- Proporción aumenta a medida que la complejidad aumenta: para
mil líneas es fácil, para diez mil es difícil, para cien mil líneas es
imposible.
- La mantención de los programas es aún más difícil.
Un recolector de basura elimina el 100% de los errores
de manejo de memoria en forma trivial.
Conclusión
En Java los programadores son más productivos porque:
- Se necesita programar menos pues hay abundantes bibliotecas de clases.
- No se necesita reescribir los programas cuando se cambia la plataforma.
- No se pierde tiempo liberando explícitamente la memoria.
- Se pierde menos tiempo depurando los programas.
- Java es compilado.
Sin embargo:
- Los programas en Java se ejecutan más lento que sus equivalentes
en C o C++.
- La plataforma estándar ocupa como mínimo 16 MB en memoria principal
y unos 30 MB en disco.
- Corre bien en Pentium 166MHz con 32 MB.
- La programación de applets es frágil.