Introducción a la Diplomatura en Java
Introducción a la Diplomatura en Java
U1
2010 2
Diplomatura en Java
U1
MAPA DE LA UNIDAD 1: Introducción a Java
2010 3
Diplomatura en Java
U1
1. INTRODUCCIÓN A JAVA
1.1. CONOZCAMOS JAVA: SU HISTORIA
ABORDEMOS EL
LOGRO DEL PRIMER
OBJETIVO:
¿Qué sabe usted sobre la historia de Java? Conocer la historia de Java
y sus características como
¿Cree que estos datos son verdaderos o falsos? lenguaje.
Dato V F
La plataforma Java existe desde hace más de quince años.
La tecnología Java fue creada por Sun Microsystems.
El uso de Java todavía no está muy difundido
La tecnología Java que usamos hoy es una versión mejorada de la
original.
Los que desarrollan software valoran mucho esta tecnología.
Java se originó en Europa y luego pasó a los Estados Unidos.
Lea la historia de Java que presentamos a continuación y corrija o corrobore sus ideas:
En el año 1991 la empresa Sun Microsystem crea el proyecto “The Green Project”
dedicado al desarrollo de la tecnología Java, que se crearía como una herramienta de
programación.
Este proyecto estaba en manos de un equipo de trece personas, dirigido por James
Gosling. El resultado de su trabajo fue un lenguaje de programación que no dependía de
los dispositivos, denominado "Oak".
La idea de este lenguaje era contribuir al futuro de los dispositivos digitales, por eso
este equipo desarrolló un controlador de mano destinado al uso de implementos
domésticos, por ejemplo, la televisión digital por cable. No dio resultado debido a que
el sector de la televisión digital por cable no estaba listo para el gran avance que la
tecnología Java ofrecía.
2010 4
Diplomatura en Java
U1
1.1.2. ¿Por qué los desarrolladores de software eligen la tecnología Java?
2010 5
Diplomatura en Java
U1
Todos los compiladores de C++ son capaces de compilar código en ANSI C como así
también en C++, por lo que hace que el lenguaje sea débil, ya que en un estilo de
programación se puede incluir el otro.
Java fue concebido desde su nacimiento como un lenguaje orientado a objetos puros y
está basado en ciertas convenciones que posee el lenguaje C, como por ejemplo,
declaración de variables, paso de parámetros y demás, pero sólo considera las partes de
C++ que no estaban ya en C.
1.1.4. Comienzos
Como ya hemos comentado al inicio de la unidad, Java fue diseñado en la década del 90
por Sun Microsystems, como software para dispositivos electrónicos. Curiosamente,
este lenguaje fue diseñado antes de la explosión de la era de Internet, para dispositivos
electrónicos como calculadoras, microondas y la televisión interactiva
(electrodomésticos principalmente).
2010 6
Diplomatura en Java
U1
Algunas de las principales razones que llevaron a crear Java son:
Es por esto que en vez de tratar únicamente de optimizar las técnicas de desarrollo, el
Green Team se planteó que tal vez los lenguajes existentes eran demasiado complicados
para reducir de forma apreciable la complejidad de desarrollo asociada a ese campo.
Así surge como la primera propuesta, que fue idear un nuevo lenguaje de programación
lo más sencillo posible, con el objeto de que se pudiese adaptar con facilidad a
cualquier entorno de ejecución, otorgándole de esta manera el beneficio de la
portabilidad entre plataformas.
Una vez que los expertos de Sun se dieron cuenta de que, a corto plazo, la televisión
interactiva no iba a ser un gran éxito, instaron a FirstPerson a desarrollar nuevas
estrategias, que produjeran beneficios. Entre ellas, se encontraba la aplicación de Java a
Internet, la cual no se consideró productiva en ese momento.
2010 7
Diplomatura en Java
U1
Aunque Java no llegó a caer en el olvido, lo cierto es que Bill Joy, cofundador de Sun y
uno de los desarrolladores principales del sistema operativo Unix de Berckley, reflotó a
Java, que había sido dejado de lado. Joy tuvo la visión que Internet llegaría a ser el
campo adecuado para disputar a Microsoft su primacía en el terreno del software, y vio
en el lenguaje creado por su empresa el instrumento idóneo para llevar a cabo estos
planes.
Para poder presentarlo en sociedad, se tuvo que modificar el nombre de este lenguaje de
programación y realizar una serie de modificaciones de diseño para poderlo adaptar al
nuevo propósito. Así, Java fue presentado en forma oficial en agosto de 1995,
conjuntamente con el explorador Netscape.
Algunas de las razones que llevaron a Joy a pensar que Java podría llegar a ser rentable
son:
Java es un lenguaje orientado a objetos.
Es un lenguaje sencillo, aunque sin duda potente.
La ejecución del código Java es segura y fiable.
Es totalmente multiplataforma.
Una solución factible a este problema parece bastante obvia: fabricar computadoras
capaces de comprender directamente los códigos de byte. Éstas serían unas máquinas
que utilizarían Java como sistema operativo y que no requerirían, en principio, de disco
duro, porque obtendrían sus recursos de la red.
2010 8
Diplomatura en Java
U1
Actividad 1
.
Conteste y luego busque las respuestas al final de la unidad.
a) Oak
b) Duck
c) Cuack
d) Koa
a) 1980
b) 1989
c) 1990
d) 1991
e) 1996
4. Una de las siguientes opciones no es una de las razones que llevaron a Bill Joy a
pensar que Java podría llegar a ser rentable. Indique cuál:
2010 9
Diplomatura en Java
U1
1.2. CONOZCAMOS JAVA: SUS CARACTERÍSTICAS
Sun Microsystems, líder en servidores para Internet, uno de cuyos lemas desde hace
mucho tiempo es "the network is the computer", es quien ha desarrollado el lenguaje
Java, en un intento de resolver simultáneamente todos los problemas que se le plantean
a los desarrolladores de software por la proliferación de arquitecturas incompatibles,
tanto entre las diferentes máquinas como entre los diversos sistemas operativos y
sistemas de ventanas que funcionaban sobre una misma máquina, añadiendo la
dificultad de crear aplicaciones distribuidas en una red como Internet.
El lenguaje Java esta asociado en el contexto World Wide Web, los navegadores de
internet pueden ejecutar programas llamados “applets”. Estos programas están escritos
en lenguaje Java y se encuentran residentes en WebServers, los mismos son
descargados por el browser y ejecutados. Por lo general son de tamaño reducido para
minimizar su descarga. Su invocación se realiza mediante html.
Las características principales que nos ofrece Java y que lo distinguen de cualquier otro
lenguaje de programación, son:
1.2.2. 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 muy difundidos, por ello Java se diseñó para ser
parecido a C++ y así facilitar un rápido y fácil aprendizaje.
2010 10
Diplomatura en Java
U1
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. No es necesario preocuparse de liberar memoria, el Garbage
Collector se encarga de ello, este es un hilo de baja prioridad, que cuando entra en
acción, permite liberar bloques de memoria muy grandes. Esto reduce la fragmentación
de la memoria. Java disminuye en un 50% los errores más comunes de programación
con lenguajes como C y C++, al eliminar muchas de sus características, entre las que
se destacan:
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 es muy
pequeño, solamente ocupa 215 Kb de RAM.
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: abstracción de datos, herencia y
polimorfismo. Las plantillas de objetos son llamadas clases y sus copias, instancias.
Estas instancias, como en C++, necesitan ser construidas y destruidas en espacios de
memoria.
1.2.4. Distribuido
1.2.5. Robusto
2010 11
Diplomatura en Java
U1
métodos, reduciendo así las posibilidades de error. Maneja la memoria para eliminar las
preocupaciones por parte del programador de la liberación o corrupción de memoria.
También implementa los arrays auténticos, en vez de listas enlazadas de punteros, con
comprobación de límites, para evitar la posibilidad de sobrescribir o corromper
memoria resultado de punteros que señalan a zonas equivocadas. Estas características
reducen drásticamente el tiempo de desarrollo de aplicaciones en Java.
Además, para asegurar el funcionamiento de la aplicación, realiza una verificación de
los bytecodes, que son el resultado de la compilación de un programa Java. Es un
código de máquina virtual que es interpretado por el intérprete Java. No es el código
máquina directamente entendible por el hardware, pero ya ha pasado todas las fases del
compilador: análisis de instrucciones, orden de operadores, etc., y ya tiene generada la
pila de ejecución de órdenes.
Para establecer Java como parte integral de la red, el compilador Java compila su código
a un archivo objeto de formato independiente de la arquitectura de la máquina en que
se ejecutará. Cualquier máquina que tenga el runtime puede ejecutar ese código objeto,
sin importar en modo alguno la máquina en que ha sido generado. El código fuente Java
se "compila" a un código de bytes de alto nivel independiente de la máquina. Estos
bytecodes están diseñados para ejecutarse en una máquina hipotética que es
implementada por un sistema runtime, que sí es dependiente de la máquina.
1.2.7. Seguro
La seguridad en Java tiene dos facetas. En el lenguaje, características como los punteros
o el casting implícito que hacen los compiladores de C y C++ se eliminan para
prevenir el acceso ilegal a la memoria. 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.
El código de Java pasa muchos tests antes de ejecutarse en una máquina. El código se
pasa a través de un verificador de bytecodes que comprueba el formato de los
fragmentos de código y aplica un tester de teoremas para detectar fragmentos de código
ilegal (código que falsea punteros, viola derechos de acceso sobre objetos o intenta
cambiar el tipo o clase de un objeto).
Si los bytecodes pasan la verificación sin generar ningún mensaje de error, entonces
sabemos que:
2010 12
Diplomatura en Java
U1
El código no produce desbordamiento de operandos en la pila
El tipo de los parámetros de todos los códigos de operación es conocidos y
correctos.
No ha ocurrido ninguna conversión ilegal de datos, tal como convertir enteros
en punteros.
El acceso a los campos de un objeto se sabe que es legal: public, private,
protected.
No hay ningún intento de violar las reglas de acceso y seguridad establecidas.
Java no posee una semántica específica para modificar la pila de programa, la memoria
libre o utilizar objetos y métodos de un programa sin los privilegios del kernel del
sistema operativo.
1.2.8. Portable
1.2.9. Interpretado
Se dice que Java es de 10 a 30 veces más lento que C, y que tampoco existen en Java
proyectos de gran envergadura como en otros lenguajes. La verdad es que Java para
conseguir ser un lenguaje independiente del sistema operativo y del procesador que
incorpore la máquina utilizada, es tanto interpretado como compilado.
2010 13
Diplomatura en Java
U1
1.2.11. Dinámico
Para evitar traer los módulos de bytecodes, los objetos o nuevas clases de la red cada
vez que se necesiten, se implementan las opciones de persistencia, que evitan borrar
estos elementos mencionados cuando se limpia la caché de la máquina.
Ventajas
2010 14
Diplomatura en Java
U1
Actividad 2
2010 15
Diplomatura en Java
U1
La máquina virtual de Java (en inglés Java Virtual Machine, JVM) es un programa
nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar
instrucciones expresadas en un código binario especial (el Java bytecode) que es
generado por el compilador del lenguaje Java.
El código binario de Java no es un lenguaje de alto nivel, sino un verdadero código
máquina de bajo nivel, viable incluso como lenguaje de entrada para un
microprocesador físico.
La gran ventaja de la máquina virtual de Java es aportar portabilidad al lenguaje de
manera que desde SUN se han creado diferentes máquinas virtuales de Java para
diferentes arquitecturas y así un programa .class escrito en un Windows puede ser
interpretado en un entorno Linux. Tan solo es necesario disponer de esa máquina
virtual para dichos entornos.
Así, los intentos de construir microprocesadores que aceptaran el Java bytecode como
su lenguaje de máquina por parte de la compañía propietaria de Java y productos
derivados (Sun Microsystems), fueron más bien infructuosos.
La máquina virtual de Java puede estar implementada en software, hardware, una
herramienta de desarrollo o un Web browser; lee y ejecuta código pre compilados
bytecode que es independiente de la plataforma. La JVM provee definiciones para un
conjunto de instrucciones, un conjunto de registros, un formato para archivos de clases,
la pila, un heap con recolector de basura y un área de memoria. Cualquier
implementación de la JVM que sea aprobada por SUN debe ser capaz de ejecutar
cualquier clase que cumpla con la especificación.
Existen varias versiones, en orden cronológico, de la máquina virtual de Java. En
general la definición del Java bytecode no cambia significativamente entre versiones, y
si lo hace, los desarrolladores del lenguaje procuran que exista compatibilidad hacia
atrás con los productos anteriores.
2010 16
Diplomatura en Java
U1
Actividad 3
Indique si las siguientes afirmaciones son verdaderas o falsas. Las respuestas están al final
de la unidad.
3. Los programas hechos en Java tienden a ser muy rápidos. Como los programas de Java
son interpretados alcanzan la velocidad de un verdadero ejecutable.
V–F
4. “Interpretado” significa que 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 del mismo tamaño sin importar la
plataforma. V–F
2010 17
Diplomatura en Java
U1
Seguimos adelante
Lo primero que se debe hacer es escribir el código de Java ya sea en un editor de texto
común y corriente como el notepad, o en un entorno integrado de programación (IDE)
como es el Eclipse, entre varios que existen en el mercado y grabar el archivo del código
fuente con una extensión “.Java”, por ejemplo “[Link]”. Una vez hecho esto
se procede a la compilación. En esta etapa se verifican errores de sintaxis de lenguaje,
como así también errores en pasaje de parámetros y diferencia de tipos en las
asignaciones, entre otras cosas.
Si la compilación fue exitosa (libre de errores de sintaxis), se genera otro archivo con el
mismo nombre pero distinta extensión, en nuestro caso, se obtiene el archivo
“[Link]”. En este archivo se encuentran los Bytecodes de nuestros programa,
los cuales, cuando los pasemos por la virtual machine, serán interpretados,
produciendo de esta manera la “ejecución” de nuestro programa.
En caso de utilizar un IDE, todo esto es transparente para nosotros, debido a que el
mismo entorno es quien se encarga de invocar a las herramientas del JDK, ya sea tanto
para la compilación como así también para la ejecución. En el supuesto caso de no
poseer un entorno IDE, tanto la compilación como la ejecución del programa se deben
realizar mediante el argumento en línea de comando.
Para ello se deben utilizar dos herramientas: Javac, que nos permite compilar el código,
y Java que nos permitirá realizar su ejecución.
2010 18
Diplomatura en Java
U1
Una vez corregido el error, se vuelve a compilar. Observemos que en la siguiente figura
el compilador no arroja error alguno y si buscamos en el directorio de trabajo
observaremos que el compilador creó nuestro archivo “[Link]”
1
Para una mejor vista de todas las pantallas, lleve el Zoom de su computadora a 150 ó 200%
2010 19
Diplomatura en Java
U1
Una vez entonces compilado y ya que hemos obtenido el .class, solo nos queda ejecutar
el programa con la herramienta Java. Para ello la invocaremos de la siguiente manera:
Java HolaMundo.
Nótese que no se pone la extensión .class, debido a que la virtual machine sabe que lo
que va a interpretar son los Bytecodes.
2010 20
Diplomatura en Java
U1
Un errror de ejecucion muy comun es el que se visualiza en las figuras siguientes:
Si alguno de los dos errores llegase a ocurrir sigua las siguientes instrucciones:
1. Pulse con el botón derecho del mouse sobre "Mi PC" y seleccione "Propiedades".
2. Seleccione la pestaña "Opciones avanzadas" y pulse en el botón inferior "Variables
de entorno".
3. Tanto en el cuadro superior como el inferior buque una variable que se llama "Path",
haga clic sobre ella y pulse el botón "Modificar" (si aparece en los dos cuadros, haga
lo mismo dos veces).
4. En el cuadro de valor de variable, añada al final, es decir sin borrar lo que viene ya
cargado,
;c:\ y el nombre del directorio donde se instaló java\bin.
Por ejemplo, si java se instaló en el directorio: j2sdk1.4.2_06 se ingresará :
;C:\ j2sdk1.4.2_06\bin
5. pulse "Aceptar".
2010 21
Diplomatura en Java
U1
En el cuadro de valor de variable, añada al final (siempre sin borrar lo que viene ya
cargado ;. (un punto y coma y un punto al final) y pulse "Aceptar".
Actividad 4
2010 22
Diplomatura en Java
U1
La versión de Java a utilizar puede ser descargada del propio sitio de Sun:
[Link]
Para instalar el J2SE, bastará con ejecutar el instalador que corresponda a la plataforma
de trabajo y seguir el happy path, esto es, presionar “Next” en cada ventana de diálogo
hasta que la instalación termine. Aquellos usuarios de Linux, BSD, etc., seguir los pasos
que van apareciendo en la consola.
2010 23
Diplomatura en Java
U1
Herramienta de archivación Java (jar): Combina varias clases Java y sus recursos
asociados en un único archivo.
Herramienta de firmas digitales (Javakey): Gestiona entidades, incluyendo sus
claves y certificados
Convertidor Native-To-ASCII (native2ascii): Convierte un archivo con
codificación nativa a un archivo ascii en el que los caracteres no ascii aparecen
con la notación de Unicode.
Generador de cabos para aplicaciones Java RMI (rmic)
Registro de Objetos Remotos Java (rmiregistry): Servidor de directorio para
objetos de RMI
Comando para control de versiones (serialver): Proporciona el
“serialVersionUID” para una o más clases en un formato adecuado para copiarlo
en clases en desarrollo
Utilidad de conversión AWT 1.1 (updateAWT): Actualiza los nombres que han
cambiado en los métodos de AWT 1.02 en una aplicación.
Como hemos dicho, un IDE puede hacernos el trabajo mucho más sencillo, sobre todo
si nuestro desarrollo ya va manejando un buen número de Clases. Además estos
entornos nos permiten mucha más versatilidad para depurar nuestros programas puesto
que tienen debuggers mucho más avanzados.
Eclipse es un IDE de código abierto. Hay más herramientas similares de código abierto
disponibles pero he decidido usar esta pues es la que creo que tiene mejor relación
calidad-facilidad de las que he encontrado.
2010 24
Diplomatura en Java
U1
Para ejecutarlo solo hay que arrancar el archivo [Link] . Una vez arrancado lo
único que nos pedirá es que le demos la ruta por defecto donde queramos que Eclipse
nos vaya guardando los proyectos que creamos:
2010 25
Diplomatura en Java
U1
Perspectivas de
Programación
2010 26
Diplomatura en Java
U1
Es conveniente que hagamos todos los desarrollos dentro de un proyecto, por lo tanto
vamos a crear un proyecto como muestra la siguiente imagen. Para esto hacemos clic en
el menú "File” y seleccionamos la opción “New” y dentro de ella la sub opción
“Project".
Como podemos ver, hay muchos tipos de proyectos que se pueden crear dentro de
nuestro desarrollo. Elegimos "Java project" y hacemos clic en el botón siguiente.
2010 27
Diplomatura en Java
U1
En la ventana en la que estamos ahora podemos dar un nombre a nuestro proyecto y se
presentan dos opciones relativas a la organización de nuestro proyecto. No necesitamos
modificarlas, para que simplemente nos coloque nuestros archivos .Java y .class
(fuentes y ejecutables Java) en la carpeta que hemos escogido para el entorno de trabajo
al arrancar Eclipse, y hacemos clic en la opción "Siguiente"
2010 28
Diplomatura en Java
U1
Observemos, en la figura anterior, que se ha creado una carpeta con el nombre del
proyecto que hemos puesto y dentro de ella se encuentran las herramientas del jdk en
forma de paquete.
2010 29
Diplomatura en Java
U1
El siguiente paso es ir añadiendo nuestras clases al proyecto. Haciendo clic con el botón
derecho en la carpeta del proyecto que se nos ha creado en la parte izquierda de la
ventana principal, podemos seleccionar la opción "New” y dentro de ella la sub opción
“Class"
2010 30
Diplomatura en Java
U1
Se mostrará la siguiente ventana.
Esta ventana tiene varias opciones que iremos abordando de a poco. Por ahora
simplemente pondremos el nombre de la clase y dejaremos el resto de las opciones
como se encuentran en la imagen.
Al hacer clic en la opción finalizar nos crea una plantilla que podemos ver en el centro
de la pantalla. Esta plantilla nos sirve para escribir el código de la aplicación que
haremos. Como estaba tildada la opción de agregar el programa principal, observe que
Eclipse agrego código automáticamente.
2010 31
Diplomatura en Java
U1
Lo que nos queda por hacer es grabar nuestro código. Esto lo hacemos mediante la
opción de menú o presionamos las teclas ctrl. + S. Una vez grabado, solo nos queda
poder ejecutar el código que escribimos. Para ello observe en la siguiente figura los
botones resaltados.
2010 32
Diplomatura en Java
U1
Haciendo clic en la flecha hacia abajo del botón play observamos ciertas opciones
Para ejecutar el código seleccionaremos la opción “Run As” y luego la sub opción “Java
Aplication”. En caso de que el código no haya sido grabado, el mismo entorno nos dirá
si queremos hacerlo
Como podemos comprobar, abajo hay una pestaña que dice "console". Esa pestaña nos
muestra una consola que hace las veces de la línea de comandos desde la que
2010 33
Diplomatura en Java
U1
ejecutamos nuestro programa de Java en el primer ejemplo. Por lo tanto, es en ese
espacio en el que podemos ver la salida del programa: "Hola Mundo".
Actividad 5
Conteste y luego auto-corrija su trabajo con las respuestas al final de la unidad.
Usted ha logrado los últimos objetivos de esta unidad: está familiarizado con
el entorno de desarrollo, puede compilar y ejecutar programas y conoce los errores
comunes en la compilación y la ejecución.
Para complementar lo abordado hasta el momento le sugerimos que lea los
capítulos 1, 2 y 3 del texto de Froufe Quintas que figura en la Bibliografía. Luego
de la lectura realice la Evaluación Final de próxima página.
2010 34
Diplomatura en Java
U1
Evaluación Final
1. ¿Qué es Java?
2. Nombre al menos 3 herramientas que vienen incluidas en el J2SDK
3. ¿Quién creo Java?
4. ¿Qué son los Bytecodes?
5. ¿Qué diferencia hay entre la herramienta Java y Javac?
6. ¿En qué etapa se obtiene el archivo “.class”?
7. Indique al menos 3 características del lenguaje Java
8. ¿Para qué se había creado el lenguaje Java?
9. ¿Qué es el Eclipse?
10. ¿Para qué sirve la virtual machine de Java?
2010 35
Diplomatura en Java
U1
Respuestas
1 A 1 A 1 V
2 A 2 E 2 V
3 C 3 E 3 F
4 D 4 A 4 V
5 F
Volver Volver
Volver
Actividad 4 Actividad 5
A J
B B
1 F C D
2 V D A
3 V E C
4 F F H
5 F G G
H F
Volver I I
J E
Volver
2010 36