clase02 de sistemas

46
c. MsD. Celestino Hernández Ciencias Computacional 1 Arquitectura y Lenguaje Java UNIVERSIDAD DE ORIENTE FACULTAD DE CIENCIAS ECONOMICAS SECCION DE INFORMATICA. Asignatura: Programación de Sistemas. Ciclo: 02/2012 Profesor: Lic. MsD. Celestino Hernández

Upload: william-hernandez

Post on 24-Jul-2015

113 views

Category:

Documents


0 download

TRANSCRIPT

Lic. MsD. Celestino Hernández Ciencias Computacionales 1

Arquitectura y Lenguaje Java

UNIVERSIDAD DE ORIENTEFACULTAD DE CIENCIAS ECONOMICAS

SECCION DE INFORMATICA.

Asignatura:Programación de Sistemas.

Ciclo: 02/2012Profesor: Lic. MsD. Celestino Hernández

Lic. MsD. Celestino Hernández Ciencias Computacionales 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)

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

Lic. MsD. Celestino Hernández Ciencias Computacionales 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 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 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 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 un asistente digital personalizado y un mecanismo inteligente de control remoto

SUN 1992

Scot McNealy establece el proyecto verde SUN 1993-1994

Patrik Naughton procedió a la construcción del lenguaje Java, llamado HotJava

SUN 1995

8 paquetes, 212 clases - Primera versión pública. La presión hizo que se hiciera pública demasiado pronto, lo cual significa que el diseño del lenguaje no es demasiado bueno y hay montones de errores.

SUN Enero de 1996

1.0

23 paquetes, 504 clases - mejoras de rendimiento en la JVM, nuevo modelo de eventos en AWT, clases anidadas, serialización de objetos, API de JavaBeans, archivos jar, internacionalización, API Reflection (Reflexión), JDBC (Java Data base Connectivity), RMI (Remote Method Invocation).

SUN Marzo 1997

1.1

Lic. MsD. Celestino Hernández Ciencias Computacionales 8

Cont. Historia de Java.Autor Compañía Año Versión

59 paquetes, 1520 clases - JFC (Swing), Drag and Drop, Java2D, Corba, API Collections. Se producen notables 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.

SUN Diciembre 1998

1.2

77 paquetes, 1595 clases - Orientada sobre todo a la 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.

SUN Abril 2000 1.3

103 paquetes, 2175 clases - También conocido como Merlin, 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

SUN 2002 1.4

131 paquetes, 2656 clases - También conocido como Tiger, renombrado por motivos de marketing como Java 5.0.

SUN Septiembre 2004

1.5

131 paquetes, 2656 clases - También conocido como Tiger, renombrado por motivos de marketing como Java 6.0.

SUN Diciembre 2006

1.6

Lic. MsD. Celestino Hernández Ciencias Computacionales 9

Autor Compañía Año Versión

131 paquetes, 2656 clases - También conocido como Tiger, renombrado por motivos de marketing como Java 6.0.

SUN 2006 a 2010

1.6 con Update15 - 26

Soporte para XML dentro del propio lenguaje, Un nuevo concepto de superpaquete ,  Soporte para closures, Introducción de anotaciones estándar para detectar fallos en el software.

ORACLE Marzo de 2011

JDK 7

Soporte para XML dentro del propio lenguaje, Un nuevo concepto de superpaquete ,  Soporte para closures, Introducción de anotaciones estándar para detectar fallos en el software.

ORACLE Junio de 2012

JDK 7Update 5

Cont. Historia de Java.

Lic. MsD. Celestino Hernández Ciencias Computacionales 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 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 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 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 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.

Máquina Virtual de Java

Navegador Java

Sistema Operativo

Computadora Local

Código nativo Java

Computadora Servidor (host)

Código

Fuente

Transferencia de código fuente Java en Internet.

Proceso de compilación de Java.

Lic. MsD. Celestino Hernández Ciencias Computacionales 15

MÁQUINA VIRTUAL JAVA (JVM).

Lic. MsD. Celestino Hernández Ciencias Computacionales 16

Programa fuente

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.

Compilación

Bytecod

Independencia de la plataforma.

No se puede ejecutar por el procesador

Lic. MsD. Celestino Hernández Ciencias Computacionales 17

Lenguaje de programación Java.

Lic. MsD. Celestino Hernández Ciencias Computacionales 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 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 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 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 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 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 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 25

Máquina Virtual de Java

Lic. MsD. Celestino Hernández Ciencias Computacionales 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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/downloads/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 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.

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

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

Lic. MsD. Celestino Hernández Ciencias Computacionales 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 45

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.

Propiedades fundamentales de los objetos.

Lic. MsD. Celestino Hernández Ciencias Computacionales 46

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.

Propiedades fundamentales de los objetos.