Este documento presenta una introducción al lenguaje de programación Java. Resume los orígenes y evolución de Java, destacando que fue desarrollado originalmente por Sun Microsystems en 1991 y su popularidad aumentó después de ser adoptado por Netscape en 1995. También describe las características clave de Java como su naturaleza de código portable, orientación a objetos y énfasis en la seguridad y robustez.
2. 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.
3. 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.
4. 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.
5. 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.
6. Sitios de sus creadores:
•http://java.sun.com ultima
versión de JDK:
•http://java.sun.com/products/ind
ex.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.
7. 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.
8. 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.
9. 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.
10. 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.
11. 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.
12. 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.
13. Java DR. Febles Nota:
Muchos jemplos son tomados del
libro de Laura Lemay y Rogers C.
14. 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.
15. 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.
16. Java DR. Febles Nota:
Muchos jemplos son tomados del
libro de Laura Lemay y Rogers C.
17. 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.
18. 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.
19. Java DR. Febles Nota:
Muchos jemplos son tomados del
libro de Laura Lemay y Rogers C.
20. 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.
21. 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.
22. 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.
23. 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.
24. Orientado a objetos puro
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++.
Java DR. Febles Nota:
Muchos jemplos son tomados del
libro de Laura Lemay y Rogers C.
25. 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.
26. Applets
Pueden ser usados para crear:
•Animación.
•Figuras. Nota
•Juegos.
•Formularios. Ejemplo
•Otros efectos interactivos
Java DR. Febles Nota:
Muchos jemplos son tomados del
libro de Laura Lemay y Rogers C.
27. 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.
28. La API de Java
•Applets
•Manejo de la red (networking)
•Internacionalización
•Seguridad
•Componentes (JavaBeans)
•Persistencia (Object serialization)
•Conexión a bases de datos (JDBC)
Java DR. Febles Nota:
Muchos jemplos son tomados del
libro de Laura Lemay y Rogers C.
29. 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.
31. 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.
32. 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.
33. 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.
34. 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.
35. 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.
36. 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.
37. 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.
38. 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.
39. Java DR. Febles Nota:
Muchos jemplos son tomados del
libro de Laura Lemay y Rogers C.
40. Arquitectura de Java sobre una plataforma
genérica
Java DR. Febles Nota:
Muchos jemplos son tomados del
libro de Laura Lemay y Rogers C.
41. 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.
42. 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.
43. 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.
44. 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.
45. 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.
46. 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.
47. Piezas que el sistema necesita para
funcionar.
Java DR. Febles Nota:
Muchos jemplos son tomados del
libro de Laura Lemay y Rogers C.
48. Fin de la clase
Java DR. Febles Nota:
Muchos jemplos son tomados del
libro de Laura Lemay y Rogers C.
49. Nota1
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
Java DR. Febles Nota:
Muchos jemplos son tomados del
libro de Laura Lemay y Rogers C.
50. Nota 2
Código
Byte code
Java Pentium
Java
PowerPc
Compilador
Java SPARC
Java DR. Febles Nota:
Muchos jemplos son tomados del
libro de Laura Lemay y Rogers C.
51. 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.
Java DR. Febles Nota:
Muchos jemplos son tomados del
libro de Laura Lemay y Rogers C.