C1 java introduccion

51
Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C. Java avanzado Aspectos generales

Transcript of C1 java introduccion

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Java avanzado

Aspectos generales

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Objetivos de la asignatura

Los alumnos sean capaces de:

1.Entender los conceptos básicos de la programación orientada a objetos.

2.Diseñar clases y jerarquías de clases.

3.Escribir un programa java para un ambiente de programación.

4.Resolver un problema sencillo usando JAVA

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Evaluación de la asignatura

1.Un trabajo extraclase individual

2.El trabajo en el laboratorio

3.Una pregunta escrita en la semana 2

4.Una prueba final

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Temas de la clase 1. Introducción

1.Que es Java

2.Un poco de historia

3.Herramientas disponibles

4.Empezando a programar

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Objetivos de la clase 1. Introducción

1.Conocer las razones que dieron origen al Lenguaje java.

2.Tener nociones de las herramientas para trabajar con java.

3.Comprender las diferencias y similitudes de java con otros lenguajes de programación

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Sitios de sus creadores:

•http://java.sun.com ultima versión de JDK: •http://java.sun.com/products/index.html•http://www.microsoft.com/visualj/ o el Wrokshop de Sun en http://www.sun.com/developer-products/java/.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Java: un poco de historia

Desarrollado por la Sun MicroSystems en 1991.

Formaba parte del proyecto GREEN, software para controlar dispositivos electrodomésticos.

También aspiraban a que los dispositivos se comunicaran entre ellos.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Inicio de la investigación

Un prototipo de dispositivo STAR 7 parecido a un control remoto, que se comunicaba con otros de la misma especie.

Se pensaba usar C++ Como lenguaje de programación.

A James Gosling no le gustaba como C++ resolvía las tareas.

Se encerró en su escritorio y escribió el lenguaje que denomino OAK.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Continua el proyecto

En 1994 fue creado el navegador Web para ejecutar applets de java.

Eso demostró: a) lo que ofrecía Java para la www y b) el tipo de programas que podría crearse.Los programadores Patrick Naughton y Jonathan Payne usaron Java para crear el navegador, que se denomino primero Web Runner y después HotJava.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

El despegue

Se produce después que Netscape se convierte en la primera empresa en licenciarla en agosto de 1995.

En una conferencia en mayo de 1996 el empresario de Netscape Marc Andreesen expreso: “El lenguaje java es una tremenda oportunidad para todos ”

Después del lanzamiento publico del lenguaje Java la Sun junto con otra subsidiaria llamada JavaSoft le dio un considerable impulso la lenguaje.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Versiones

•Java 1.0.2

•Java 1.1.5

•Java 1.2

•Java 2

Se corresponden con las de (Java Development Kit) o JDK

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Herramientas disponibles

•Symantec Visual Café.

•Borland JBuilder.

•SuperCede.

•Rogue Wave JFactory.

•Natural Intelligence Roaster.

•MetroWerks CodeWarrior.

•SunSoft java WorkShop.

•Eclipse

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Perspectivas???

La empresa de tecnología KPCB(Kleiner, Perkins , caufield and Byers) ofreció 100 millones de dólares para apoyar la apertura de empresas que usaran Java como lenguaje de programación.

Sus principales virtudes son:

•Naturaleza independiente de plataforma.

•Orientación a objetos.

•Fácil aprendizaje

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

El lenguaje Java

Es a la vez:

Compilado: convierte los .java en bytecodes.

Interpretado. ejecuta cada una de estas instrucciones en un ordenador específico.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Cada intérprete Java

Es una implementación de la Máquina Virtual Java (JVM). Los bytecodes posibilitan el objetivo de "write once, run anywhere", de escribir el programa una vez y que se pueda correr en cualquier plataforma que disponga de una implementación de la JVM. Por ejemplo, el mismo programa Java puede correr en Windows 98, Solaris, Macintosh, etc.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Java se refiere a:

• El lenguaje: para crear programas.

• La Máquina Virtual Java: para ejecutarlos.

La próxima slide muestra:

Que el API de Java y la Máquina Virtual Java forman una capa intermedia (Java platform) que aísla el programa Java de las especificidades del hardware.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

La Máquina Virtual Java

La Máquina Virtual Java (JVM) es el entorno en el que se ejecutan los programas Java, su misión principal es la de garantizar la portabilidad de las aplicaciones Java. Define esencialmente un ordenador abstracto y especifica las instrucciones (bytecodes) que este ordenador puede ejecutar. El intérprete Java específico ejecuta las instrucciones que se guardan en los archivos cuya extensión es .class.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Cinco tareas principales de la JVM

1.Reservar espacio en memoria para los objetos

creados.

2.Liberar la memoria no usada (garbage collection).

3.Asignar variables a registros y pilas

4.Llamar al sistema huésped para ciertas funciones,

como los accesos a los dispositivos

5.Vigilar el cumplimiento de las normas de seguridad

de las aplicaciones Java

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

En la última tarea

•Las referencias a arrays son verificadas en el momento de la ejecución del programa.•No hay manera de manipular de forma directa los punteros. •La JVM gestiona automáticamente el uso de la memoria, de modo que no queden espacios desocupados.•No se permiten realizar ciertas conversiones (casting) entre distintos tipos de datos.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

El lenguaje Java

El lenguaje Java no está diseñado

solamente para crear applets que corren

en la ventana del navegador. Java es un

lenguaje de propósito general, de alto

nivel, y orientado a objetos.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Java es un lenguaje de programación orientado a objetos puro, en el sentido de que no hay ninguna variable, función o constante que no esté dentro de una clase. Se accede a los miembros dato y las funciones miembro a través de los objetos y de las clases. Por razones de eficiencia, se han conservado los tipos básicos de datos, int, float, double, char, etc, similares a los del lenguaje C/C++.

Orientado a objetos puro

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Tipos de programas más comunes

applets (se ejecutan en el navegador de la máquina cliente).

aplicaciones (programas que se ejecutan directamente en la JVM).

servlet que es similar a los applets pero se ejecutan en los servidores Java.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Applets

Pueden ser usados para crear:

•Animación.

•Figuras.

•Juegos.

•Formularios.

•Otros efectos interactivos

Nota

Ejemplo

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

La API de Java

Está formada un conjunto de paquetes de clases que le proporcionan una gran funcionalidad. El núcleo de la API viene con cada una de las implementaciones de la JVM: •Lo esencial: tipos de datos, clases y objetos, arrays, cadenas de caracteres (strings), subprocesos (threads), entrada/salida, propiedades del sistema, etc.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

•Applets•Manejo de la red (networking)•Internacionalización•Seguridad•Componentes (JavaBeans)•Persistencia (Object serialization)•Conexión a bases de datos (JDBC)

La API de Java

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

El primer programa en Java

Los programas fuentes escritos en Java son archivos de textos puro que pueden ser escritos en cualquier editor.

Por lo tanto para escribir el primer programa, lo primero es activar un editor.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Características distintivas

Java

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Es SIMPLE

Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las características menos usadas y más confusas de éstos. C++ es un lenguaje que adolece de falta de seguridad, pero C y C++ son lenguajes más difundidos, por ello Java se diseñó para ser parecido a C++ y así facilitar un rápido y fácil aprendizaje.

Java elimina muchas de las características de otros lenguajes como C++, para mantener reducidas las especificaciones del lenguaje y añadir características muy útiles como el garbage collector (reciclador de memoria dinámica). No es necesario preocuparse de liberar memoria, el reciclador se encarga de ello y como es un thread de baja prioridad, cuando entra en acción, permite liberar bloques de memoria muy grandes, lo que reduce la fragmentación de la memoria.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Reduce en un 50% los errores más comunes de

programación

•aritmética de punteros. •no existen referencias. •registros (struct). •definición de tipos (typedef). •macros (#define). •necesidad de liberar memoria (free).

Aunque, en realidad, lo que hace es eliminar las palabras reservadas (struct, typedef), ya que las clases son algo parecido.

Además, el intérprete completo de Java que hay en este momento es muy pequeño, solamente ocupa 215 Kb de RAM.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Es ORIENTADO A OBJETOS

Java implementa la tecnología básica de C++ con algunas mejoras y elimina algunas cosas para mantener el objetivo de la simplicidad del lenguaje. Java trabaja con sus datos como objetos y con interfaces a esos objetos.Soporta las tres características propias del paradigma de la orientación a objetos: encapsulación, herencia y polimorfismo. Las plantillas de objetos son llamadas, como en C++, clases y sus copias, instancias.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Java incorpora funcionalidades inexistentes en C++

En C++ se suele trabajar con librerías dinámicas (DLLs) que obligan a recompilar la aplicación cuando se retocan las funciones que se encuentran en su interior. Este inconveniente es resuelto por Java mediante una interfaz específica llamada RTTI (RunTime Type Identification) que define la interacción entre objetos excluyendo variables de instancias o implementación de métodos. Las clases en Java tienen una representación en el runtime que permite a los programadores interrogar por el tipo de clase y enlazar dinámicamente la clase con el resultado de la búsqueda.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Es DISTRIBUIDO:

Java se ha construido con extensas capacidades de interconexión TCP/IP. Existen librerías de rutinas para acceder e interactuar con protocolos como http y ftp. Esto permite a los programadores acceder a la información a través de la red con tanta facilidad como a los ficheros locales.

La verdad es que Java en sí no es distribuido, sino que proporciona las librerías y herramientas para que los programas puedan ser distribuidos, es decir, que se corran en varias máquinas, interactuando.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Es ROBUSTO

•Java realiza verificaciones en busca de problemas tanto en tiempo de compilación como en tiempo de ejecución.

•Maneja la memoria para eliminar las preocupaciones por parte del programador de la liberación o corrupción de memoria.

•Implementa los arrays auténticos, en vez de listas enlazadas de punteros, con comprobación de límites, para evitar la posibilidad de sobreescribir o corromper memoria resultado de punteros que señalan a zonas equivocadas.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

ADEMAS…

Java proporciona:

Comprobación de punteros Comprobación de límites de arrays Excepciones Verificación de byte-codes

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Es de ARQUITECTURA NEUTRAL:

El compilador Java compila su código a un fichero objeto de formato independiente de la arquitectura de la máquina en que se ejecutará. Cualquier máquina que tenga el sistema de ejecución (run-time) puede ejecutar ese código objeto, sin importar en modo alguno la máquina en que ha sido generado. Actualmente existen sistemas run-time para Solaris 2.x, SunOs 4.1.x, Windows 95, Windows NT, Linux, Irix, Aix, Mac, Apple y probablemente haya grupos de desarrollo trabajando en el porting a otras plataformas.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Arquitectura de Java sobre una plataforma

genérica

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Es SEGURO

Cuando se usa Java para crear un navegador, se combinan las características del lenguaje con protecciones de sentido común aplicadas al propio navegador.

Los programadores de C utilizan punteros en conjunción con operaciones aritméticas. Con un lenguaje como C, se pueden tomar números enteros aleatorios y convertirlos en punteros para luego acceder a la memoria:

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Es PORTABLE:

Más allá de la portabilidad básica por ser de arquitectura independiente, Java implementa otros estándares de portabilidad para facilitar el desarrollo. Los enteros son siempre enteros y además, enteros de 32 bits en complemento a 2. Además, Java construye sus interfaces de usuario a través de un sistema abstracto de ventanas de forma que las ventanas puedan ser implantadas en entornos Unix, Pc o Mac.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Es INTERPRETADO

El intérprete Java (sistema run-time) puede ejecutar directamente el código objeto. Enlazar (linkar) un programa, normalmente, consume menos recursos que compilarlo, por lo que los desarrolladores con Java pasarán más tiempo desarrollando y menos esperando por el ordenador. No obstante, el compilador actual del JDK es bastante lento. Por ahora, que todavía no hay compiladores específicos de Java para las diversas plataformas, Java es más lento que otros lenguajes de programación, como C++, ya que debe ser interpretado y no ejecutado como sucede en cualquier programa tradicional.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Es MULTITHREADED

Al ser multithreaded (multihilvanado, en mala traducción), Java permite muchas actividades simultáneas en un programa. Los threads (a veces llamados, procesos ligeros), son básicamente pequeños procesos o piezas independientes de un gran proceso. Al estar los threads construidos en el lenguaje, son más fáciles de usar y más robustos que sus homólogos en C o C++.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Es MULTITHREADED cont…

El beneficio de ser miltithreaded consiste en un mejor rendimiento interactivo y mejor comportamiento en tiempo real. Aunque el comportamiento en tiempo real está limitado a las capacidades del sistema operativo subyacente (Unix, Windows, etc.), aún supera a los entornos de flujo único de programa (single-threaded) tanto en facilidad de desarrollo como en rendimiento.

Cualquiera que haya utilizado la tecnología de navegación concurrente, sabe lo frustrante que puede ser esperar por una gran imagen que se está trayendo. En Java, las imágenes se pueden ir trayendo en un thread independiente, permitiendo que el usuario pueda acceder a la información en la página sin tener que esperar por el navegador.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Es DINAMICO

Java se beneficia todo lo posible de la tecnología orientada a objetos. Java no intenta conectar todos los módulos que comprenden una aplicación hasta el tiempo de ejecución. Las librería nuevas o actualizadas no paralizarán las aplicaciones actuales (siempre que mantengan el API anterior).

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Piezas que el sistema necesita para funcionar.

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Fin de la clase

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Actualmente, casi todos los applets son escritos en java 1.0.2, la primera versión del lenguaje, porque las empresas lideres en la fabricación de navegadores demoraron en ofrecer soporte a los navegadores 1.1 y 1.2.

Actualmente los navegadores incluyen soporte para las ultimas versiones del lenguaje

Nota1

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Nota 2

Pentium

PowerPc

SPARC

Código

Java

Compilador Java

Byte code

Java

Java DR. Febles Nota: Muchos jemplos son tomados del libro de Laura Lemay y Rogers C.

Orientado a objetos

Un modo de conceptuar un programa de computadora como un conjunto de objetos en interacción.

Java hereda gran parte de estos conceptos de C++, lenguaje en el que esta fuertemente basado.