Este documento presenta la asignatura de Programación de Sistemas impartida en la Facultad de Ciencias Económicas de la Universidad de Oriente durante el ciclo 02/2012. El curso cubre temas relacionados con la arquitectura y lenguaje Java, incluyendo una breve historia de su desarrollo e importantes características como lenguaje de propósito general y para programación en internet.
1. UNIVERSIDAD DE ORIENTE
FACULTAD DE CIENCIAS ECONOMICAS
SECCION DE INFORMATICA.
Asignatura:
Programación de Sistemas.
Ciclo: 02/2012
Profesor: Lic. MsD. Celestino Hernández
Arquitectura y Lenguaje Java
Lic. MsD. Celestino Hernández Ciencias Computacionales 1
2. Reflexión.
Si tú llamas experiencias a tus
dificultades y recuerdas que cada
experiencia te ayuda a madurar, vas a
crecer vigoroso y feliz, no importa
cuán adversas parezcan las
circunstancias. (Henry Miller)
Lic. MsD. Celestino Hernández Ciencias Computacionales 2
3. Objetivos:
Conocer una breve historia del desarrollo
y creación del lenguaje Java.
Conocer las características más
importantes de java como lenguaje de
propósito general y como lenguaje de
programación para internet.
Lic. MsD. Celestino Hernández Ciencias Computacionales 3
4. Historia.
El lenguaje de programación Java así como su
arquitectura se diseñaron para resolver
problemas que se presentan en la programación
moderna.
Se inició como parte de un proyecto cuyo
objetivo fue el de desarrollar software
avanzado para dispositivos electrónicos de
consumo (dispositivos electrónicos
inteligentes, como televisores, videos, equipos
de sonido, etc.).
Lic. MsD. Celestino Hernández Ciencias Computacionales 4
5. Historia.
Se creó un equipo de trabajo en Sun
Microsystem para tratar de resolver este
problema. Inicialmente se pretendió utilizar
C++ pero se identificaron numerosos
problemas y se buscó diseñar un nuevo
lenguaje.
Como resultado, en 1990, el nuevo lenguaje
recibió el nombre de Oak y era pequeño,
confiable, y de arquitectura independiente.
Lic. MsD. Celestino Hernández Ciencias Computacionales 5
6. Historia.
En 1993, mientras el equipo continuaba
trabajando, apareció la Red Mundial (www)
en Internet y tuvo una gran aceptación.
Los desarrolladores de Java pensaron que
un lenguaje de arquitectura neutral sería
ideal para programar en internet porque el
programa podría ejecutarse en todos los
tipos de computadoras conectadas a la red.
Lic. MsD. Celestino Hernández Ciencias Computacionales 6
7. Historia de Java.
Autor Compañía Año Versión
Patrik Naughton, James Goslin, Mike Sheridan (**) SUN 1990
James Goslin, escribió el compilador y lo denominó “Oak”. SUN 1991
El equipo (**) desarrollo un prototipo llamado *7, Cruce entre SUN 1992
un asistente digital personalizado y un mecanismo inteligente de
control remoto
Scot McNealy establece el proyecto verde SUN 1993-
1994
Patrik Naughton procedió a la construcción del lenguaje Java, SUN 1995
llamado HotJava
8 paquetes, 212 clases - Primera versión pública. La presión SUN Enero de 1.0
hizo que se hiciera pública demasiado pronto, lo cual significa 1996
que el diseño del lenguaje no es demasiado bueno y hay
montones de errores.
23 paquetes, 504 clases - mejoras de rendimiento en la JVM, SUN Marzo 1.1
nuevo modelo de eventos en AWT, clases anidadas, 1997
serialización de objetos, API de JavaBeans, archivos jar,
internacionalización, API Reflection (Reflexión), JDBC (Java
Data base Connectivity), RMI (Remote Method Invocation).
Lic. MsD. Celestino Hernández Ciencias Computacionales 7
8. Cont. Historia de Java.
Autor Compañía Año Versión
59 paquetes, 1520 clases - JFC (Swing), Drag and Drop, SUN Diciembre 1.2
Java2D, Corba, API Collections. Se producen notables 1998
mejoras a todos los niveles. Para enfatizar esto Sun lo
renombra como "Java 2". El JDK (Java Development Kit)
se renombra como SDK (Software Development Kit). Se
divide en J2SE, J2EE y J2ME.
77 paquetes, 1595 clases - Orientada sobre todo a la SUN Abril 2000 1.3
resolución de errores y a la mejora del rendimiento; se
producen algunos cambios menores como la inclusión de
JNDI (Java Naming and Directory Interface) y la API
Java Sound.
103 paquetes, 2175 clases - También conocido como Merlin, SUN 2002 1.4
es la versión actual. Mejora notablemente el rendimiento
y añade entre otros soporte de expresiones regulares, una
nueva API de entrada/salida de bajo nivel
131 paquetes, 2656 clases - También conocido como Tiger, SUN Septiembre 1.5
renombrado por motivos de marketing como Java 5.0. 2004
131 paquetes, 2656 clases - También conocido como Tiger, SUN Diciembre 1.6
renombrado por motivos de marketing como Java 6.0. 2006
Lic. MsD. Celestino Hernández Ciencias Computacionales 8
9. Cont. Historia de Java.
Autor Compañía Año Versión
131 paquetes, 2656 clases - También conocido SUN 2006 a 1.6 con
como Tiger, renombrado por motivos de marketing 2010 Update
como Java 6.0. 15 - 26
Soporte para XML dentro del propio lenguaje, Un ORACLE Marzo de JDK 7
nuevo concepto de superpaquete , Soporte para 2011
closures, Introducción de anotaciones estándar
para detectar fallos en el software.
Soporte para XML dentro del propio lenguaje, Un ORACLE Junio de JDK 7
nuevo concepto de superpaquete , Soporte para 2012 Update 5
closures, Introducción de anotaciones estándar
para detectar fallos en el software.
Lic. MsD. Celestino Hernández Ciencias Computacionales 9
10. Qué es Java
Java es una plataforma virtual de software desarrollada
por sun microsystems de tal manera que los programas
creados en ella puedan ejecutarse sin cambios en
diferentes tipos de arquitecturas y dispositivos
computacionales ( "diferentes plataformas").
El significado de Java tal y como se le conoce en la
actualidad es el de un lenguaje de programación y un
entorno para ejecución de programas escritos en el
lenguaje Java.
Al contrario de los compiladores tradicionales, que
convierten el código fuente en instrucciones a nivel de
máquina, el compilador Java traduce el código fuente Java
en instrucciones que son interpretadas por la Máquina
Virtual Java (JVM).
Lic. MsD. Celestino Hernández Ciencias Computacionales 10
11. Java como lenguaje para internet.
Java es un lenguaje para programar en
Internet que trata de resolver dos problemas
claves con el contenido de Internet:
– En la actualidad, el contenido de la WWW es
pasivo y estático.
– La entrega (Deliverry) del contenido WWW es
dependiente de la configuración de cada
navegador Web de usuario.
Lic. MsD. Celestino Hernández Ciencias Computacionales 11
12. Java como lenguaje de propósito general.
A medida que Java se populariza en
desarrollo de internet, gana también como
lenguaje de propósito general. Java es
totalmente portable a gran variedad de
plataformas hardware y sistemas operativos.
Lic. MsD. Celestino Hernández Ciencias Computacionales 12
13. Introducción
El significado de Java, tal y como se le
conoce en la actualidad, es el de un
Lenguaje de Programación y entorno para
ejecución de programas escritos en el
lenguaje Java.
Java es un lenguaje simple, orientado a
objetos, distribuido, interpretado, robusto,
seguro, de arquitectura neutral, portable, de
alto rendimiento, multihilos, y dinámico.
Lic. MsD. Celestino Hernández Ciencias Computacionales 13
14. Java como lenguaje de Internet.
Java es un lenguaje para programar en Internet que trata de
resolver dos problemas claves con el contenido de Internet:
– En la actualidad, el contenido de la WWW es pasivo y estático.
– La entrega del contenido WWW es dependiente de la
configuración de cada navegador Web de usuario.
En el mundo de la Web, Java es una tecnología facilitador
que permite a los desarrolladores crear páginas Web que se
entregaran de modo consistente a todos los usuarios con un
navegador habilitado para Java y con independencia de la
plataforma hardware y el sistema operativo que se esté
utilizando.
Computadora Local
Computadora Servidor (host)
Sistema Operativo
Navegador Java
Código
Máquina Virtual de Java Código nativo Java
Fuente
Transferencia de código fuente Java en Internet.
Lic. MsD. Celestino Hernández Ciencias Computacionales 14
15. Proceso de compilación de Java.
Lic. MsD. Celestino Hernández Ciencias Computacionales 15
16. MÁQUINA VIRTUAL JAVA (JVM).
Bytecod
Programa fuente Independencia de la plataforma.
Compilación
No se puede ejecutar por el
procesador
JVM
Sólo hay que implementar una para cada plataforma.
Supervisa la ejecución del baytecode seguridad.
La ejecución es algo más lenta que en código ejecutable.
Lic. MsD. Celestino Hernández Ciencias Computacionales 16
18. Simple
Aprenderse fácilmente y que fuera familiar
(C y C++)
Omite la sobrecarga de operadores (aunque
sí existe la sobrecarga de métodos) y la
herencia múltiple.
Las construcciones como struct no son
válidas.
Lic. MsD. Celestino Hernández Ciencias Computacionales 18
19. Simple
Descarta la instrucción goto, sin embargo,
provee instrucciones etiquetadas de break y
continue.
Incorpora la recolección de basura para
manejo automático de memoria.
Elimina los apuntadores.
Maneja automáticamente la referenciación y
de referenciación de objetos.
Lic. MsD. Celestino Hernández Ciencias Computacionales 19
20. Orientado a Objetos
La programación orientada a objetos modela el
mundo real, cualquier cosa del mundo puede
ser modelada como un objeto. Así, una
circunferencia es un objeto, un automóvil es un
objeto, una ventana es un objeto, un libro es un
objeto e incluso un préstamo o una tarjeta de
crédito son objetos. Un programa Java se
denomina orientado a objetos debido a que la
programación en Java se centra en la creación,
manipulación y construcción de objetos.
Lic. MsD. Celestino Hernández Ciencias Computacionales 20
21. Orientado a Objetos
Un objeto tiene propiedades (un estado) y un
comportamiento. Las propiedades o el estado se
definen utilizando datos y el comportamiento se
define utilizando métodos. Los objetos se definen
utilizando clases en Java. Una clase es similar a
una plantilla para construir objetos.
Un objeto es una realización concreta de una
descripción de una clase. El proceso de creación
de objetos se denomina instanciación. (crear
instancias) de una clase.
Un programa consta de una o más clases que se
disponen en una jerarquía en modo árbol, de modo
que una clase hija pueda heredar propiedades y
comportamientos de su clase padre
Lic. MsD. Celestino Hernández Ciencias Computacionales 21
22. Distribuido
Las aplicaciones de Java pueden acceder a
objetos a través de la red por medio de
URL's con la misma facilidad que si
accediéramos a objetos en nuestro sistema
local de archivos.
Lic. MsD. Celestino Hernández Ciencias Computacionales 22
23. Interpretado
El compilador de Java genera byte-codes, en lugar
de código nativo de la máquina.
Para ejecutar un programa en Java se utiliza el
intérprete para ejecutar los byte-codes compilados,
y por ello java es un lenguaje interpretado.
NOTA: Los programas Java no necesitan ser
recompilados en una máquina destino. Se
compilan en un lenguaje máquina para una
máquina imaginaria, denominada máquina virtual.
Lic. MsD. Celestino Hernández Ciencias Computacionales 23
24. Interpretado
Los byte-codes de Java proveen un archivo objeto
de arquitectura neutral que permite que los
programas puedan transportarse a múltiples
plataformas.
Un programa en Java puede ejecutarse en
cualquier sistema que cuente con el intérprete de
Java y el sistema de run-time.
Máquina Virtual de Java
Lic. MsD. Celestino Hernández Ciencias Computacionales 24
26. Robusto
Java pretende que se escriban programas
confiables.
Es un lenguaje fuertemente tipificado que
permite, a tiempo de compilación, verificar
problemas potenciales de asignación de
tipos.
Lic. MsD. Celestino Hernández Ciencias Computacionales 26
27. Robusto
La verificación de tipos es más fuerte que la de C+
+ ya que no permite declaraciones implícitas de
métodos.
Una de las mejoras de confiabilidad de Java es su
modelo de memoria. Java no permite apuntadores,
lo que elimina la posibilidad de sobreescribir en la
memoria y corromper información valiosa.
Lic. MsD. Celestino Hernández Ciencias Computacionales 27
28. Robusto
La recolección automática de memoria evita
la fragmentación de la misma por la
petición y borrado dinámico.
El intérprete de Java realiza verificaciones a
tiempo de ejecución para determinar que los
accesos a arreglos y cadenas de caracteres
se encuentren dentro de los límites.
Lic. MsD. Celestino Hernández Ciencias Computacionales 28
29. Robusto
Otra característica de Java es el manejo de
excepciones. Esto simplifica la tarea de
manejo de errores y recuperación de los
mismos.
Lic. MsD. Celestino Hernández Ciencias Computacionales 29
30. Seguro
La seguridad es una preocupación
primordial ya que se pretende que Java se
utilice en ambientes de red.
Mecanismos de seguridad que impidan que
algún programa trate de crear un virus o
invadir el sistema de archivos.
Lic. MsD. Celestino Hernández Ciencias Computacionales 30
31. Seguro
El modelo de alojamiento de memoria de
Java es una de las principales defensas
contra código corrupto. El sistema de run-
time realiza la verificación de los byte-
codes para asegurarse de que el código que
transportamos por la red no viola la
integridad del medio en el que nos
encontramos.
Lic. MsD. Celestino Hernández Ciencias Computacionales 31
32. Seguro
Java maneja la tecnología de encriptación
para verificar que un applet, que se recibe a
través de la red, tiene su origen en un lugar
autorizado y no ha sido modificado.
Java conoce y puede combatir la mayoría de
las técnicas que se han utilizado para
desarrollar software corrupto.
Lic. MsD. Celestino Hernández Ciencias Computacionales 32
33. Arquitectura Neutral
Los programas de Java se compilan en un formato
de arquitectura neutral conocido como byte-codes.
La principal ventaja de esto es que Java puede
ejecutarse en cualquier sistema mientras que se
implemente la Máquina Virtual de Java.
Importante: Utilizando Java los desarrolladores
necesitan escribir una única versión para
ejecutarse en todas las plataformas, dado que los
bytecodes no se corresponden a ninguna máquina
específica y trabajan en todas las máquinas.
Lic. MsD. Celestino Hernández Ciencias Computacionales 33
34. Portable
Java garantiza que no existen aspectos de
dependencia de implementación en la
especificación del lenguaje.
El ambiente de Java es portable hacia nuevas
plataformas de hardware y sistemas operativos. El
compilador de Java está escrito en Java mientras
que el sistema de run-time está escrito en ANSI C.
Lic. MsD. Celestino Hernández Ciencias Computacionales 34
35. Alto Rendimiento
Java es un lenguaje interpretado y es por
ello que nunca será tan rápido como un
lenguaje compilado, como C++. De hecho
Java es, en promedio, 20 veces más lento
que C++.
Lic. MsD. Celestino Hernández Ciencias Computacionales 35
36. Alto Rendimiento
Los compiladores de Java han ido mejorando sus
prestaciones en las sucesivas versiones. Los
nuevos compiladores conocidos como JIT (just-in-
time) permiten que programas Java independientes
de la plataforma se ejecuten con casi el mismo
rendimiento en tiempo de ejecución que los
lenguajes convencionales compilados.
Lic. MsD. Celestino Hernández Ciencias Computacionales 36
37. Multihilos
En una aplicación como un browser de
Web, es fácil imaginar múltiples tareas
realizándose al mismo tiempo.
Java es un lenguaje multihilos que puede
contar con múltiples hilos de ejecución para
manejar diferentes tareas.
Lic. MsD. Celestino Hernández Ciencias Computacionales 37
38. Multihilos
Java hace de la programación multihilos
una tarea más sencilla que en C y C++, al
proporcionar utilerías que permiten iniciar,
ejecutar, detener y verificar hilos. Además,
cuenta con rutinas de sincronización.
Lic. MsD. Celestino Hernández Ciencias Computacionales 38
39. Dinámico
Java se diseñó para adaptarse a un ambiente
cambiante. Las definiciones de la clase run-
time de Java hace posible que
dinámicamente se liguen clases en un
sistema en ejecución.
Lic. MsD. Celestino Hernández Ciencias Computacionales 39
40. La última Actualización Java J2SE 1.7.
(Java SE 7 Update 5).
La actualización de la versión J2SE 1.7 (Java 2
Standard Edition, UPDATE 5) está disponible en el
sitio web de ORACLE
(http://www.oracle.com/technetwork/java/javase/dow
nloads/index.html)
Software para edición de programas de Java:
http://www.jcreator.com/download/.
Las aportaciones más interesantes se encuentran la
integración en el núcleo de la plataforma de la
posibilidad de trabajar con XML, estableciendo así los
fundamentos básicos para la creación y consumo de
servicios web
Lic. MsD. Celestino Hernández Ciencias Computacionales 40
41. LA PROGRAMACIÓN ORIENTADA A
OBJETOS COMO BASE DE JAVA
La POO constituye una nueva forma de
organización del conocimiento en la que las
entidades centrales son los objetos.
En un objeto se unen una serie de datos con una
relación lógica entre ellos, estos datos son los
siguientes:
– Variables de instancias.
– Métodos.
– Propiedades.
– Mensajes.
Lic. MsD. Celestino Hernández Ciencias Computacionales 41
42. Conceptos básicos de programación en
Java.
Objeto: desde el punto de vista de la
programación, un objeto es una especie de
“caja negra” que expone una serie de
operaciones (métodos) que pueden ser
utilizados por otros programas para la
realización de tareas mayores.
Clase: es el lugar donde se codifican los
métodos que van a exponer los objetos de
esa clase.
Lic. MsD. Celestino Hernández Ciencias Computacionales 42
43. Cont. Conceptos.
Métodos y Campos.
Los métodos definen el comportamiento de
los objetos de una clase, estos métodos
pueden hacer uso de campos o atributos
para almacenar información sobre el objeto,
información que pueden ser utilizada
posteriormente por cualquiera de los
métodos del objeto.
Lic. MsD. Celestino Hernández Ciencias Computacionales 43
44. Propiedades fundamentales de los objetos.
El encapsulamiento: Consiste en la combinación
de los datos y las operaciones que se pueden
ejecutar sobre esos datos en un objeto, impidiendo
usos indebidos al forzar que el acceso a los datos
se efectúe siempre a través de los métodos del
objeto.
– En java, la base del encapsulamiento es la clase, donde
se define la estructura y el comportamiento que serán
compartidos por el grupo de objetos pertenecientes a la
misma.
Lic. MsD. Celestino Hernández Ciencias Computacionales 44
45. Propiedades fundamentales de los objetos.
La herencia. Es la capacidad para crear
nuevas clases que se construyen sobre otras
existentes, permitiendo que éstas les
transmitan sus propiedades.
– En la programación orientada a objetos, la
reutilización de código se efectúa creando una
subclase que constituye una restricción o
extensión de la clase base, de la cual hereda sus
propiedades.
Lic. MsD. Celestino Hernández Ciencias Computacionales 45
46. Propiedades fundamentales de los objetos.
El Polimorfismo. Consigue que un mismo
mensaje pueda actuar sobre diferentes tipos
de objetos y comportarse de modo distinto.
El polimorfismo adquiere su máxima
expresión en la derivación o extensión de
clases; es decir, cuando se obtienen nuevas
clases a partir de una ya existente mediante
la propiedad de derivación de clases o
herencia.
Lic. MsD. Celestino Hernández Ciencias Computacionales 46