Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin a Java
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 1
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 2
Objetivos
Objetivos
Alcanzar un entendimiento general de Java conociendo sus
principales caractersticasy su tecnologa asociada.
Conocer aquello que Java brinda y la manera como lo realiza.
JAVA es un lenguaje de programacin orientado a objetos, desarrollado por Sun
Microsystems.
Es un lenguaje de propsito general que puede ser empleado para desarrollar
cualquier tipo de aplicacin principalmente aquellas referidas a la internet.
Es una Mquina Virtual que puede ser incrustada en Web Browsers y en
Sistemas Operativos.
Es un conjunto de Libreras de Clases Estandarizadas (paquetes) que soportan:
Creacin de interfaces grficas de usuario.
Comunicacin en redes.
Control y manejo de multimedia.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 3
Qu es Java? Qu es Java?
"Java is just a small, simple, safe, object-oriented, interpreted
or dynamically optimazed, byte-coded, architecture neutral,
garbage collected, multithreaded programming language with
a strongly typed exception-handling mechanism for writing
distributed, dinamically extensible programs."
"This represents the end result of nearly 15 years of trying
to come up with a better programming language and
environment for building simpler and more reliable software."
Bill Joy (cofundador de Sun Microsystems)
JAVA ES MEJOR MS POR LO QUE NO TIENE, QUE POR LO QUE TIENE !!
Variables Globales (expuestas a todos)
En Java, el nico espacio de nombres global es la jerarqua de clases. No es
posible crear una variable global que est fuera de todas las clases.
GoTo (para hacer tallarines)
Java reserva GoTo como palabra clave para EVITAR que los programadores
la utilicen de manera confusa. Por el contrario, tiene un concepto de
sentencias Break y Continue etiquetadas para cubrir los nicos usos
importantes del GoTo.
Punteros (mentirosos y peligrosos)
A pesar que los descriptores de objetos de Java estn implementados como
punteros, Java no tiene la capacidad de manipular punteros directamente,
impidiendo que puedan referenciarse direcciones de memoria de manera
arbitraria. Con esto impide lo que otros lenguajes (como C++) permiten: que
no existan datos privados de verdad.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 4
Ventajas frente a otros lenguajes
Ventajas frente a otros lenguajes
Variables Globales
GoTo
Punteros
Asignacin de memoria
Tipos de datos frgiles
Conversin de tipos
Archivos de cabecera
Preprocesador
JAVA ES MEJOR MS POR LO QUE NO TIENE, QUE POR LO QUE TIENE !!
Asignacin de memoria (buscando un sitio)
En C++ hay que preocuparse por la gestin de la memoria.
malloc() y new() asignan una cantidad de memoria (bytes) devolviendo la
direccin del bloque correspondiente.
free() y delete() liberan un bloque, para que est disponible por el sistema
nuevamente.
En Java cualquier estructura de datos compleja es un objeto que se crea a
travs del operador new, que le asigna una cantidad de memoria de un
"montculo", por lo que el programador no debe preocuparse en una
secuencia de direcciones ascendentes. El operador de Java new obtiene,
ms que una direccin de memoria, un "descriptor" de objeto, de manera que
el programador no debe preocuparse por ubicaciones. Incluso la memoria
real asignada a un objeto podra moverse en tiempo de ejecucin y esto
sera transparente. Asimismo existe la facilidad para que el programdor se
despreocupe de la devolucin de memoria al sistema ya que en Java cuando
no existe referencia alguna a un objeto, la memoria que est ocupando
queda disponible. A esta facilidad se le denomina "recojo automtico de
basura" (aunque un mejor trmino hubiera sido "reciclado permanente").
Tipos de datos frgiles (dependencia del procesador)
Java eligi tamaos adecuados para todos los tipos numricos de manera de
garantizar resultados independientes de la plataforma de hardware. La mayor
parte de los lenguajes hacen depender la implementacin de los tipos al
tamao natural de "palabra" de la mquina, diferencindolos as de acuerdo
al procesador.
Conversin de tipos (insegura)
Como los descriptores de objetos de Java incluyen informacin de la clase a
la que pertenecen, puede hacerse comprobaciones de compatibilidad de
tipos en tiempo de ejecucin y controlarlo con excepciones. En C++ no hay
forma de detectar esto en tiempo de ejecucin, pues los objetos son
simplemente punteros a direcciones de memoria. Algo parecido sucede con
las listas de argumentos de longitud variable donde la comprobacin de tipos
queda bajo responsabilidad del programador.
Archivos de cabecera (descabezados)
El lugar natural para la informacin de una clase es el mismo archivo
compilado. En Java no hay archivos de cabecera. El tipo y visibilidad de los
miembros de la clase se compilan en el archivo de la clase.
C++, al tener archivos de cabecera (compilados separados que contienen las
caractersticas o "prototipo" de una clase) permite la posibilidad de tener una
o ms versiones distintas a la verdadera clase implementada. Como si esto
fuera poco, puesto que la interfaz a un programador a una clase compilada
es su archivo de cabecera, la clase est tan expuesta como para incluso
convertir datos privados en pblicos.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 5
Preprocesador (innecesario)
Los compiladores de C y C++ recurren al preprocesador, que se encarga de
buscar comandos especiales (que empiezan con #).
Java no requiere de un preprocesador; dispone de una palabra reservada
final para declarar constantes (en vez de usar #define).
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 6
Las caractersticas orientadas a objetos de Java son comparables con las de
C++. Una de las mayores diferencias entre Java y C++ radica en la herencia
mltiple (para lo cual Java ha encontrado una mejor solucin) y en el modelo de
metaclase.
Todo en Java (excepto tipos bsicos como nmeros) son objetos y clases, no
existe el concepto de estructuras de datos.
En resumen, Java :
Es el siguiente paso al lenguaje C++.
Soporta libreras de clases como C++.
Es multipropsito como C o C++.
Tiene, a diferencia de C++, un modelo de punteros que elimina la posibilidad
de sobreescribir la memoria o corromper la data.
Soporta la mayora de propiedades de un lenguaje orientado a objetos.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 7
Comparacin con otros lenguajes
Comparacin con otros lenguajes
JAVA SMALLTALK PERL C C++
Simple SI SI REGULAR REGULAR NO
Orientado a
Objetos
SI SI SI NO REGULAR
Robusto SI SI SI NO SI
Seguro SI REGULAR SI NO SI
Interpretado SI SI SI NO NO
Dinmico SI SI SI NO NO
Portable SI REGULAR NO REGULAR REGULAR
Neutral SI REGULAR SI NO NO
Multihilo SI NO SI NO NO
Recoleccin de
basura
SI SI NO NO NO
Excepciones SI SI SI NO SI
Rendimiento ALTO MEDIO MEDIO MUY ALTO MUY ALTO
Permite le creacin de pantallas dinmicas. Existen herramientas como el
VisualAge for Java que permiten el desarrollo visual de aplicaciones.
Soporta componentes especializados reutilizables : Java Beans, los que son
comparables con OCX y ActiveX.
Maneja concurrencia como Mesa.
Controla excepciones como C++.
Enlaza cdigo en forma dinmica como Lisp.
Permite definir interfaces como Objetive C.
Administra en forma automtica la asignacin dinmica de memoria como
Lisp.
Tiene sentencias simples como C.
Genera cdigo compacto como ensamblador.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 8
Simple
Java ha sido diseado de modo cercano a C++, omitiendo caractersticas
confusas de ste, con el objeto de hacerlo un sistema ms comprensible. La
sintaxis de Java es una versin ms clara de la sintaxis de C++. No existe la
necesidad de usar archivos de cabecera, aritmtica de punteros, estructuras,
uniones, sobrecarga de operadores, clases virtuales, etc.
Tiene conceptos bsicos de programacin orientada a objetos, lo que
proporciona un paradigma de simplicidad, pero a su vez permite llegar a un nivel
lo suficientemente bajo (detalle) como para poder realizar casi cualquier cosa.
Uno de los grandes logros de Java que lo hace simple es que es pequeo. Java
puede desarrollar software que puede correr stand-alone en mquinas
pequeas.
Seguro
Dado que Java ha sido implementado para ser usado en ambientes distribudos
y de trabajo en red, se ha puesto gran empeo en lo que a seguridad se refiere.
Los programas de Java no pueden llamar a funciones globales y acceder a
recursos del sistema de manera arbitraria. Es decir, se puede ejercer un control
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 9
Caractersticas de Java
Caractersticas de Java
1 + 1 +
1 1
2 2
Simple Seguro
Distribudo Robusto
sobre los programas ejecutables de Java, lo que no es posible en otros
sistemas.
No se puede corromper memoria fuera del espacio en el que corre el proceso.
Distribudo
Java posee libreras que permiten trabajar de manera sencilla con protocolos
TCP/IP tales como HTTP y FTP. Las aplicaciones Java pueden abrir y acceder
objetos que se encuentren en la red via URLs, de un modo tan simple como
acceder a un sistema local de archivos.
Las clases de Java se envan con facilidad e incluso pueden actualizarse en el
proceso, resolviendo el clsico problema de control de versiones.
Las capacidades de trabajar con Java en la red son diversas y fciles de usar.
Robusto
Java posee buena capacidad para la verificacin de errores. No posee un
modelo de manejo de punteros lo cual no le permite sobreescribir la memoria ni
corromper la data.
Java verifica el cdigo mientras se escribe y una vez ms antes de ejecutarlo.
Esto permite que el programa se comporte de un manera predecible, bajo
diversas condiciones.
Java ayuda a evitar fallas por condiciones excepcionales (divisin por cero,
acceso a un archivo no existente, etc.) mediante un manejo de excepciones
orientado a objetos integrados.
Java prcticamente elimina la posibilidad de falla en la gestin de memoria (no
liberarla o, peor an, liberar aquella que no corresponde) mediante la facilidad
de recojo de basura.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 10
Entorno con muchas facilidades
El entorno Java provee varias clases necesarias para la interaccin de un
programa con otros.
Arquitectura Neutral
Cuando se dise Java se tomaron consideraciones, tanto para el lenguaje
como para el intprete, de manera que un programa pueda escribirse una sola
vez, ejecutarse en cualquier sitio, en cualquier momento y para siempre.
Es multiplataforma: Solaris, Iris, Linux, HP/UX, OSF, Windows 95, Windows NT,
OS/2, Macintosh.
Interpretado y de alto rendimiento
Java compila a una representacin intermedia llamada cdigo de byte, el que
se puede interpretar en cualquier sistema que tenga un intrprete de Java. Este
cdigo de byte fue diseado de tal manera que sea sencilla la necesaria
traduccin a cdigo de mquina nativo. Con esto se logr que un intrprete sea
de alto rendimiento.
Cada parte de un programa Java se reduce a una secuencia de bytes que
representan instrucciones en una mquina virtual y no en una mquina
(procesador) especfica.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 11
Caractersticas de Java
Caractersticas de Java
Arquitectura Neutral
Interpretado y de
alto rendimiento
Interactivo
Optimo para Internet
Interactivo
Java tiene varias caractersticas que permiten escribir programas que hacen
muchas cosas al instante, sin perder el control de lo que debera suceder y
cundo. El intrprete de Java soluciona esta necesidad de sincronizacin entre
mltiples procesos con hilos mltiples de sencilla utilizacin, que permiten
pensar en el comportamiento especfico, sin tener que integrarlo en el clsico
modelo de programacin global de bucle para el evento.
ptimo para Internet
TCP/IP : Java provee clases para gestionar limpiamente protocolos de Internet.
Incluye implementaciones de ftp, http, nntp, smtp junto con conectores de red de
bajo nivel (sockets) e interfaces de nombrado.
WWW y HTML: Java est diseado para cumplir los requisitos de entrega de
contenidos interactivos usando applets insertadas en sus pginas HTML. Las
clases bsicas de manejo de cadenas son especialmente adecuadas para el tipo
de manejo de texto basado en HTML.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 12
1992:
La compaa Sun Microsystems lleva a cabo el proyecto Green para comunicar
diversos aparatos o dispositivos electrnicos.
El prototipo era un sistema operativo distribudo Star7 donde cada dispositivo
era parte del todo.
Se crea el lenguaje OAK, un intrprete para este y clases con este lenguaje
para la GUI.
1993:
(Marzo) FirstPerson, susbsidiaria de Sun, responde a una peticin de ofertas
para el proyecto de televisin interactiva de la compaa Time Warner, requeran
un pequeo sistema operativo en microcdigo, orientado a objetos, capaz de
suminsitrar flujos de video MPEG sobre redes ATM. Sun pierde este negocio y
tampoco llega a un acuerdo con otra Cia. de televisin por cable: 3DO.
1994:
Sun implementa un browser de Web, al que llamaron WebRunner que poda
ejecutar clases transferidas desde un servidor HTTP.
La 1ra. Applet: la mascota Duke aparece saludando des una pgina.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 13
Historia de Java
Historia de Java
1992
Proyecto "Green"
Sistema Operativo "Star7"
1994
Navegador "WebRunner"
1ra applet : "Duke" saludando
1995
Oak
Java
WebRunner
HotJava
1993
No se logra vender a la
industria de TV interactiva
1998
Se lanza Java2.
1995:
En enero renombran a Oak por Java y a WebRunner por HotJava.
En noviembre aparece en la Web la 1ra. versin beta oficial: JDK 1.0
1996:
En diciembre se libera JDK 1.1.
1998:
En diciembre se lanza JDK 1.2 al cual se le conoce como Java2.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 14
Existen diversas aplicaciones que se encuentran en el Java Standard
Development Kit (JSDK) que permiten realizar diferentes funciones. Las tres
herramientas principales son: