Está en la página 1de 26

Captulo 1

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:

javac: Es el compilador Java por excelencia, es un compilador de lnea


de comandos, que permite crear programas y applets en Java. Compila
cdigo java a bytecodes.

java: Es el intrprete que permite ejecutar las aplicaciones desarrolladas


en Java.

appletviewer: Es un visualizador de applets, con esto ya no es necesario


cargar los applets en un browser.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 15
Java
ByteCode
Componentes del Java 2 SDK
Componentes del Java 2 SDK
javac Cdigo
Fuente
(* .java)
(* .class)
java
Applet Viewer
El JSDK tambin incluye:
javap: Es un descompilador que permite ver el contenido de las clases
compiladas.
javadoc: Produce documentacin HTML a partir del cdigo fuente.
javah: Crea el encabezado para el enlace con otros lenguajes.
jdb: Depurador algo rudimentario.
keytool: Crea pares de claves usadas para firmar y autentificar programas.
policytool: Define los criterios de autentificacin y las funciones permitidas para
programas confiables.
jar: crea un archivo que contiene a otros.
jarsigner: prepara archivos jar para ser autentificados.
native2ascii: convierte un archivo nativo a un unicode.
rmic: crea el esqueleto para RMI.
rmiregistry: inicia el registro remoto de objetos.
serialVer: crea un nico identificador para la serializacin.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 16
Componentes del Java 2 SDK
Componentes del Java 2 SDK
Otras componentes del Java 2 SDK:
javap
javadoc
javah
jdb
keytool
policytool
jar
jarsigner
native2ascii
rmic
rmiregistry
serialVer
Cdigo
fuente
javap Java
ByteCode
(* .class)
(* .java)
Una mquina virtual es el procesador en el cual se ejecuta el cdigo (bytecode)
de Java. Es un conjunto de instrucciones que entiende al intrprete de Java.
El compilador javac produce los bytecodes a partir del archivo fuente .java. Los
bytecodes corresponde al lenguaje de la Mquina Virtual.
La mquina virtual no corresponde a un sistema operativo o plataforma de
hardware en particular, el archivo .class es portable a cualquier implementacin
de la Mquina Virtual.
La mquina virtual puede ser integrada (incrustada) dentro de otro ambiente tal
como un web browser o un sistema operativo.
La mquina virtual utiliza un verificador de bytecode cuando se leen los
bytecodes.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 17
La mquina virtual de Java
La mquina virtual de Java
Java
ByteCode
Cdigo
Fuente
(* .java) (* .class)
Java
VM
Ambiente Operativo
javac java
STATIC
Las variables o mtodos que son especificados mediante la palabra reservada
STATIC son ubicadas en esta rea. Los elementos estticos son cargados slo
una vez al momento que la clase es instanciada por primera vez o cuando la
variable o mtodo esttico son referenciados por primera vez.
STACK
Las variables locales declaradas dentro de un mtodo (incluyendo los
parmetros de los mtodos) son alojadas en esta rea. Las variables locales son
alamcenadas cuando el mtodo es ingresado.
HEAP
Todos los objetos son instanciados en esta rea denominada de
almacenamiento dinmico. Un objeto es instanciado desde las partes
no-estticas de una clase. Cuando un objeto es recogido por el colector de
basura es el heap quien es retornado al sistema.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 18
reas de la mquina virtual de Java
reas de la mquina virtual de Java
HEAP
Almacenamiento dinmico
Todos los objetos
STACK
Variables locales
STATIC
Variables y mtodos de clase
An cuando Java es interpretado, compiladores Just In Time (J.I.T.) ofrecen del
lado del cliente compilacin de bytecodes a cdigo mquina (instrucciones
binarias nativas).
Estos compiladores mejoran la performance para un hardware especfico.
Si se utiliza el intrprete estndar de Java no se puede hablar de alta
performance.
Si se conoce con seguridad de que la aplicacin desarrollada ser puesta en
una mquina especfica existen compiladores de java disponibles, los cuales
compilan los bytecodes a cdigo nativo una vez, guardan el resultado y lo llaman
cada vez que sea necesario.
Esta tecnologa se est mejorando continuamente y puede llegar a resultados
que no van a ser superados fcilmente por un compildaor tradicional.
Un compilador JIT puede monitorear qu cdigo se ejecuta frecuentemente y
optimizar ese cdigo para obtener mayor velocidad.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 19
Compiladores JIT
Compiladores JIT
JVM
ejecutndose en un
Applet o una
Aplicacin
Compilador
J.I.T.
archivo
.class
cdigo
mquina
El problema de la incompatibilidad de plataformas
Un programa funciona slo en la plataforma para la cual fue diseado.
Se han normalizado algunos lenguajes de programacin (por ejemplo ANSI C)
con lo que se mantiene cierta compatibilidad, sin embargo siempre es necesaria
la recompilacin el cdigo fuente.
Cada fabricante agrega funcionalidad no estndar a un lenguaje de
programacin. Cada sistema operativo restringe a los programas en los servicios
y capacidades de los mismos.
En general todo programa se tiene que rehacer o adaptar para que funcione en
una plataforma diferente para la que se dise.
La estrategia de Java
Java fue diseado para funcionar en sistemas heterogneos.
Java no depende de la plataforma de hardware/software en la que se ejecuta.
Java provee las mismas libreras (API) para cada sistema operativo en el que se
ejecuta.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 20
La arquitectura neutral de Java
La arquitectura neutral de Java
Compilador
Cdigo Fuente
Java Byte Code
Intrprete
( * .java )
( * .class )
El mismo para cada plataforma
Uno para cada plataforma
El mismo para cada plataforma
Uno para cada plataforma
Windows
95/98
Windows
NT
Mac OS Solaris Unix
OS/2
Java no requiere de recompilar el cdigo, se programa y compila solo una vez.
Java es de arquitectura neutral.
Java trabaja con un cdigo objeto (Byte Code) que representa instrucciones de
mquina para un procesador virtual.
Java requiere de un intrprete (JVM por las siglas en ingls de Java Virtual
Machine) para cada sistema operativo en el que se ejecuta.
El beneficio de esta arquitectura es la de comprar una vez, se ejecuta en
cualquier sitio, se escribe una vez y se vende para cualquier plataforma.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 21
Relacin de Sistemas Operativos que soportan Java
Como se ha mencionado, Java es multiplataforma y soporta practicamente todos
los sistemas operativos (SOs) disponibles en el mercado.
Entre los SOs que soporta Java estn:
Solaris
Iris
Unix
Linux
HP/UX
OSF
Windows 95/98
Windows NT
OS/2
Macintosh
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 22
La arquitectura neutral de Java
La arquitectura neutral de Java
SOs que soportan Java
Windows
95/98
Windows
NT
Mac OS
Solaris
Unix
OS/2
Iris
Linux
OSF
HP/UX
Un paquete es un medio de encapsulamiento de mayor nivel que las clases, que
puede contener clases, interfaces y tambin a otros paquetes.
Los paquetes se usan tambin como un mecanismo para evitar conflictos entre
nombres: Se puede tener dos clases con el mismo nombre pero en diferentes
paquetes.
El API de Java es un grupo de paquetes.
Fsicamente un paquete representa a un directorio. Si el nombre del paquete
est compuesto por palabras divididas por puntos, cada palabra representar un
directorio que contendr a otro directorio que ser la siguiente palabra, as hasta
la ltima palabra que ser el directorio que contenga los archivos con el cdigo
fuente o compilado de las clases que forman parte de este paquete.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 23
Paquetes - las libreras de clases
Paquetes - las libreras de clases
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 24
Paquetes - las libreras de clases
Paquetes - las libreras de clases
java.applet
java.awt
java.awt.event
java.io
java.lang
java.net
java.util
javax.swing
Desarrollo de applets
Librera de clases para manejo de GUIs
Soporte para proceso de eventos
Manejo de Ingreso y salida
Conjunto fundamental de clases
Soporte para el trabajo en redes.
Utilidadades generales
Soporte para GUI (versin 2)
Relacin de paquetes ms importantes
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 25
Facilidades brindadas por Java
Facilidades brindadas por Java
Permite convertir un WebSite esttico en dinmico e
interactivo.
Oportunidad de transformar la Web en una plataforma de
cmputo.
Brinda grandes facilidades para el manejo de animaciones y
el control de imagenes y audio.
Permite incrementar las capacidades de las aplicaciones no
slo de lado del cliente sino tambin del lado de servidor
mediante los servlets.
Permite el desarrollo de componentes (Beans) que pueden
ser utilizados en la implementacin de JSPs.
Ventajas aplicadas a internet
Java es un lenguaje de programacin mientras que HTML es una manera de
describir la estructura de una pgina web.
En teora es posible que Java se convierta en un lenguaje universal para todas
las plataformas, sin embargo existen muchas aplicaciones que trabajan muy
bien en ciertas plataformas que podran no hacerlo en otros dispositivos o en
browsers.
Si existe un compilador JIT una aplicacin escrita en Java puede ser tan rpida
como cualquier otra.
Todos los applets se ejecutan en un web browser (por definicin) sin embargo
se pueden desarrollar aplicaciones que no necesitan un browser para
ejecutarse.
JavaScript es un lenguaje desarrollado por Netscape (originalmente denominado
LiveScript) que puede ser usado en pginas web, sin embargo no tiene ninguna
relacin con Java excepto por la similitud del nombre.
OOP con JAVA Gua del Alumno
Introduccin a Java 1 - 26
Malentendidos comunes sobre Java
Malentendidos comunes sobre Java
Java es una extensin de HTML.
Java se convertir en un lenguaje de programacin para
todas las plataformas.
Java es interpretado as que es muy lento para una aplicacin
seria en una plataforma especfica.
Todos los programas de java se ejecutan en una pgina web.
JavaScript es una versin simple de Java.

También podría gustarte