1. Programación de Sistemas
Lic. José Angel Quintanilla Rosales
Un programa bien escrito es su propio cielo; un programa
mal escrito es su propio infierno. [Geoffrey James, El Tao
de la Programación]
3. ∗ ¿Qué es Java?
∗ La plataforma Java 2
∗ La Máquina Virtual de Java
∗ Características principales
∗ ¿Qué ventajas tengo como desarrollador?
∗ Bibliografía
Índice
4. La tecnología Java es un
lenguaje de programación
y una plataforma.
¿Qué es Java?
5. ∗ Una plataforma software que se ejecuta sobre otra
plataforma hardware/software.
∗ La Máquina Virtual Java La interfaz de Programación
(JVM) de Aplicaciones (API)
Intérprete de Java Conjunto de clases ya
desarrolladas
La plataforma Java 2
8. ∗ Elimina algunas de las características de C y C++:
∗ No aritmética de punteros.
∗ No existen referencias.
∗ No existe typedef ni #define.
∗ No sobrecarga operadores.
∗ No herencia múltiple.
∗ Posee clase String.
∗ No necesidad de asignar y liberar memoria (Garbage
Collector).
Características: Sencillo
9. ∗ Java trabaja con sus datos como objetos y con
interfaces a esos objetos.
∗ Implementa:
∗ Encapsulación. - Interfaces.
∗ Herencia simple. - Paquetes.
∗ Abstracción.
∗ Reutilización.
∗ Polimorfismo.
Características: Orientado a objetos
10. ∗ Concebido para trabajar en un entorno conectado en
red.
∗ En sí no es distribuido, proporciona librerías y
herramientas para que los programas puedan ser
distribuidos, que los programas corran en varias
máquinas interactuando.
Características: Distribuido
11. Características: Interpretado
∗ Compilador tradicional
∗ Traslada sentencias alto-
nivel a múltiples
instrucciones.
∗ Creación de librerías
como resultado de
compilaciones previas.
∗ Juntando, se crea
programa ejecutable.
∗ Intérprete de ByteCodes
∗ Compilador Java
Traduce código fuente a
código intermedio.
∗ Interprete de Java
Virtual Machine(JVM)
(ByteCodes interpretados
(ejecutados))
12. ∗ No se interrumpe fácilmente.
∗ Evita sobreescribir o corromper memoria mediante
punteros.
∗ Manejo de excepciones.
∗ Verificación de ByteCodes (por ejemplo no acceso
ilegal de memoria).
Características: Robusto
13. ∗ Aplicaciones seguras ya que no acceden a
zonas delicadas de memoria o de sistema
∗ No existen punteros, no acceso a zonas delicadas
de memoria.
∗ Una applet no puede acceder al sistema, a los
archivos de la persona que lo está viendo.
Características: Seguro
14. ∗ Java compila el código a un fichero objeto de
formato independiente de la arquitectura de
la máquina en que se ejecutará.
∗ Cualquier plataforma donde exista una JVM se
puede ejecutar el código objeto
independientemente de la máquina en el que
ha sido generado.
Características: Arquitectura neutra
15. ∗ Código fuente se compila
a un código de bytes
independientemente
de la máquina.
∗ Los ByteCodes se
ejecutan en una
máquina hipotética
que se implementa
por un sistema
run-time, que es
dependiente
de la máquina.
Características: Arquitectura neutra
Tiempo de compilación
Tiempo de ejecución
16. ∗ Elementos que forman parte de arquitectura de Java
sobre una plataforma genérica.
∗ Dependiente del sistema:
∗ JVM.
∗ Librerías fundamentales.
∗ APIs de Java que
entren en contacto
directo con el hardware.
Características: Arquitectura neutra
17. ∗Más allá de la portabilidad básica
por ser de arquitectura
independiente.
Características: Portable
18. ∗ Compiladores JIT (Just in time):
Compilan en el momento de ejecución.
∗ Traslada los bytecodes al
código máquina de la plataforma
según los va leyendo, realizando
cierto grado de optimización.
∗ JIT no pierde tiempo en
optimizar código que no se ejecutará.
Características: Altas prestaciones
19. ∗ Se introdujo un nuevo JIT: HotSpot.
∗ Incluye compilador dinámico
y una máquina virtual para
Interpretar bytecodes.
∗ Mejor soporte para ordenadores
con varios procesadores,
mayor escalabilidad.
Características: Altas prestaciones
20. ∗ Ejecución de varias tareas a la vez. Permite
muchas actividades simultáneas en un
programa.
∗ Posee una serie de clases que facilitan su
utilización.
∗ Mejor rendimiento interactivo y mejor
comportamiento en tiempo real.
Características: Multithread
21. ∗ No conecta todos los módulos que
comprenden una aplicación hasta el mismo
tiempo de ejecución.
∗ Las librerías nuevas o actualizadas no
paralizan la ejecución de las aplicaciones
siempre que mantengan la API anterior.
Características: Dinámico
22. ∗ Comenzar rápidamente.
∗ Escribir menos código, 4 veces menos que en
C++.
∗ Escribir mejor código.
∗ Desarrollar programas más rápidamente.
∗ Eliminar dependencias de la plataforma.
∗ Escribir una vez, ejecutar en cualquier parte.
¿Qué ventajas tengo como desarrollador?
23. ∗ Libro de texto: “Thinking in Java”.
∗ Java Hispano: www.javahispano.org.
∗ Tutoriales de internet.
Bibliografía
24. ∗ Bytecode
∗ El bytecode es un código intermedio más abstracto que el código
máquina. Habitualmente es tratado como un archivo binario que
contiene un programa ejecutable similar a un módulo objeto, que
es un archivo binario producido por el compilador cuyo contenido
es el código objeto o código máquina .
∗ Applet
∗ Un applet es un componente de una aplicación que se ejecuta en
el contexto de otro programa, por ejemplo en un navegador web.
El applet debe ejecutarse en un contenedor, que le proporciona
un programa anfitrión, mediante unplugin,1
o en aplicaciones
como teléfonos móviles que soportan el modelo de
programación por "applets".
Conceptos
25. ∗ Runtime
∗ En programación, es común escribir una serie de
sentencias u ordenes de manera que son entendidas por el
programador. Estas "oraciones" no son comprendidas por
el computador (procesador) que solo comprende 1 y 0, por
lo cual debe traducirse el lenguaje humano al lenguaje de
máquina.
El runtime es un conjunto de programas que realizan esta
tarea en ambos sentidos, dando entonces el resultado al
operador. Un navegador tiene esta tarea.
Para evitar esta pérdida de tiempo de proceso, a veces es
posible compilar, o sea realizar esta tarea una vez y crear
una aplicación fija que no requiere runtime sino solo
ejecución.
Conceptos