Está en la página 1de 21

Captulo 1 - Introduccin a Java

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 Capitulo 1 - Introduccin a Java
1 - 1
Qu es lava! Qu es lava!
"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.
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.
OOP con JAVA Capitulo 1 - Introduccin a Java
1 - 2
Ventajas frente a otros Ienguajes Ventajas frente a otros Ienguajes
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 !!
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.
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 Capitulo 1 - Introduccin a Java
1 - 3
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.
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.
OOP con JAVA Capitulo 1 - Introduccin a Java
1 - 4
Conparacin con otros Ienguajes Conparacin con otros Ienguajes
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
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 Capitulo 1 - Introduccin a Java
1 - 5
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 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.
OOP con JAVA Capitulo 1 - Introduccin a Java
1 - 6
Caractersticas de lava Caractersticas de lava



Simple Seguro
Distribudo Robusto






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 Capitulo 1 - Introduccin a Java
1 - 7
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.
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
OOP con JAVA Capitulo 1 - Introduccin a Java
1 - 8
Caractersticas de lava Caractersticas de lava
Arquitectura Neutral
Interpretado y de
alto rendimiento
Interactivo
Optimo 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 Capitulo 1 - Introduccin a Java
1 - 9
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.
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 Capitulo 1 - Introduccin a Java
1 - 10
Historia de lava Historia de lava
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.
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 Capitulo 1 - Introduccin a Java
1 - 11
Java
ByteCode
Conponentes deI lava 2 5DK Conponentes deI lava 2 5DK
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 Capitulo 1 - Introduccin a Java
1 - 12
Conponentes deI lava 2 5DK Conponentes deI lava 2 5DK
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 Capitulo 1 - Introduccin a Java
1 - 13
La nquina virtuaI de lava La nquina virtuaI de lava
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 Capitulo 1 - Introduccin a Java
1 - 14
Areas de Ia nquina virtuaI de lava Areas de Ia nquina virtuaI de lava
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 Capitulo 1 - Introduccin a Java
1 - 15
ConpiIadores llT ConpiIadores llT
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.
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 Capitulo 1 - Introduccin a Java
1 - 16
La arquitectura neutraI de lava La arquitectura neutraI de lava
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
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 Capitulo 1 - Introduccin a Java
1 - 17
La arquitectura neutraI de lava La arquitectura neutraI de lava
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 Capitulo 1 - Introduccin a Java
1 - 18
Paquetes - Ias Iibreras de cIases Paquetes - Ias Iibreras de cIases
OOP con JAVA Capitulo 1 - Introduccin a Java
1 - 19
Paquetes - Ias Iibreras de cIases Paquetes - Ias Iibreras de cIases
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 Capitulo 1 - Introduccin a Java
1 - 20
FaciIidades brindadas por lava FaciIidades brindadas por lava
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 Capitulo 1 - Introduccin a Java
1 - 21
MaIentendidos conunes sobre lava MaIentendidos conunes sobre lava
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