Download Capítulo 5 Capítulo 5: Java.

Document related concepts
no text concepts found
Transcript
5-. Java.
Capítulo 5:
5: Java.
- 67 -
5-. Java.
5. Java.
El interés de este capítulo es realizar una breve introducción al Lenguaje de
Programación utilizado para realizar la herramienta: el Lenguaje Java. Conoceremos
los conceptos asociados a él (como JRE, JDK, máquina virtual, etc.), realizaremos un
breve recorrido por la historia y evolución de este lenguaje y conoceremos su filosofía:
“Escribe una vez y ejecuta en cualquier plataforma”. Hablaremos también de Entornos
Integrados de Desarrollo (IDEs), centrándonos en Eclipse, por ser el que se ha
utilizado para la realización del proyecto. No se entra aquí en la descripción de los
paquetes del lenguaje utilizados: esto lo veremos un poco más adelante, en el capítulo
“Interfaces de Usuario”.
5.1-. Introducción a Java
Conceptos básicos
El éxito imparable y sin precedentes del lenguaje de programación Java desde
sus inicios en el año 1996 se debe en gran parte a que este lenguaje es independiente de
cualquier plataforma. Es decir, cualquier aplicación Java se puede desarrollar en la
plataforma en que nosotros como desarrolladores nos sintamos más cómodos y se podrá
ejecutar o explotar en la plataforma que nuestros clientes elijan (cuando hablamos de
plataformas nos referimos a la unión de un Sistema Operativo con su correspondiente
Hardware).
Otros lenguajes que no siguen el eslogan bandera de Java "escribe una vez y
ejecuta en cualquier plataforma" se ven obligados a realizar diferentes compilaciones, y
en algunos casos modificación de código fuente, para cada una de las plataformas en
que se tiene que ejecutar una aplicación. Esto hace que la distribución y el
mantenimiento de las diferentes versiones de la aplicación que se irán realizando a lo
largo del tiempo se conviertan en una auténtica pesadilla.
Los IDE (Integrated Development Environment, Entornos Integrados de
Desarrollo) Java de hoy en día nos permiten crear aplicaciones Java en un entorno
amigable y de fácil uso.
A continuación vamos a dar un repaso rápido de diferentes conceptos que se
utilizan en el “mundo java”.
-
-
Plataforma de desarrollo (Windows, Linux, Mac OS X, o cualquier otro).
o Necesitamos saber cuál es la arquitectura Hardware de nuestro ordenador
y qué Sistema Operativo utilizamos para poder instalar la MVJ (Máquina
Virtual Java) que corresponda a nuestra plataforma.
IDE: entorno de desarrollo (Eclipse, NetBeans o cualquier otro).
o En el mercado hay muchos entornos de desarrollo disponibles y de muy
alta calidad. En este proyecto fin de carrera se ha decidido utilizar
Eclipse, que es un entorno de desarrollo Open Source y muy utilizado en
el mundo empresarial.
- 69 -
5-. Java.
-
MVJ (Máquina Virtual Java).
o La MVJ no existe como tal físicamente. Es en realidad un conjunto de
comandos y programas que se ejecutan en un direccionamiento de
memoria separado del resto de procesos que se puedan estar ejecutando
en paralelo en ese momento en nuestro ordenador.
o Código Java: el código fuente de las aplicaciones Java está separado por
diferentes ficheros con extensión .java. Las Clases están contenidas en
los ficheros con extensión .java y cada Clase tiene su propio fichero
(salvo el caso de utilizar clases internas anónimas).
o Compilación: al poco tiempo de aparecer en escena el lenguaje Java, las
aplicaciones se escribían en un procesador de texto y la compilación del
código fuente se realizaba desde una consola de comandos propia del
Sistema Operativo que se estaba utilizando. Entonces tenías que escribir
en la línea de comando el comando javac seguido de las Clases que
querías compilar. Debido a que los IDEs están situados en una capa por
encima de la MVJ, no nos hace falta utilizar una consola de comandos
para poder compilar las Clases Java. En este caso, sólo hay que hacer
click sobre un botón de compilación y esta acción desencadena que el
IDE invoque, de forma transparente para nosotros, el comando javac que
está incluido en la MVJ para compilar dichas Clases.
o Código byte: el resultado de la compilación genera ficheros con
extensión .class. Estos ficheros contienen el denominado código byte.
Este código byte es universal, es decir, no importa con que plataforma
estemos desarrollando que el código de bajo nivel generado es 100%
compatible con la MVJ.
o Interpretación: a diferencia de otros lenguajes que sus aplicaciones se
arrancan directamente ejecutando un fichero con extensión normalmente
.exe, para ejecutar una aplicación Java desde la línea de comando se tiene
que ejecutar primeramente el comando java. Este comando crea un
entorno de ejecución Java en memoria y transforma el código byte de los
ficheros con extensión .class en código de bajo nivel propio de cada
plataforma.
o Librerías estándar Java. Sería impensable que todo el código de una
aplicación estuviera escrito por nosotros. Como cualquier otro lenguaje,
Java tiene una nutrida API (Application Program Interface) que contiene
las librerías estándar Java. En el proceso de interpretación, el intérprete
Java invoca las Clases de la mencionada librería estándar Java y las
interpreta.
o Las aplicaciones java desde sus principios siempre se han ganado la mala
fama de ser más lentas que otras aplicaciones convencionales. Pero hay
que decir que el tiempo corre a favor de Java debido a que los
ordenadores cada vez tienen frecuencias de reloj más rápidas y
capacidades de memoria cada vez más grandes. Tampoco se descarta que
en un futuro la MVJ esté implementada directamente en un procesador.
Esta es una carta que se guarda Sun y que Intel también la tiene en
mente.
- 70 -
5-. Java.
Ilustración 1: Conceptos "mundo Java".
Evolución del lenguaje Java
Desde el año 1996 Java no ha dejado de evolucionar. La siguiente tabla muestra
a grandes rasgos las diferentes versiones que se han ido sucediendo en estos últimos
años:
Año
1996
1997
1999
2000
2002
2004
Versión
JDK 1.0
JDK 1.1
JDK 1.2
JDK 1.3
JDK 1.4
JDK 5.0
Plataforma
----Java 2
Java 2
Java 2
Java 2
Características
212 Clases
504 Clases
1520 Clases
1842 Clases
2991 Clases
más de 3000 Clases
Tabla 5: Evolución del lenguaje Java.
Cada una de las versiones ha tenido a su vez sus diferentes releases. La versión
actual con su release correspondiente es la 5.0. Como se puede observar hay un salto en
la numeración, de 1.4 a 5.0, para mostrar así de esta forma la madurez de este lenguaje.
De todas formas en diferentes distribuciones y documentaciones también se emplea la
versión JDK 1.5.0 para referirse al JDK 5.0. A partir de la versión 1.2 el JDK (Java
Development Kit) se especializa en tres áreas diferenciadas:
- J2SE (Standard Edition): contiene las APIs básicas del lenguaje Java.
- J2EE (Enterprise Edition): especializada en crear aplicaciones Cliente/Servidor
Web.
- J2ME (Micro Edition): especializada para "micro-dispositivos" como teléfonos
móviles y PDAs.
- 71 -
5-. Java.
Escribe una vez y ejecuta en cualquier plataforma
Cuando tenemos que instalar una aplicación creada por nosotros mismos en casa
de un cliente, éste tiene que tener instalado en su ordenador de producción la MVJ
correspondiente a su plataforma. La MVJ se puede descargar de Internet como un JDK
(Java Development Kit) o un JRE (Java Runtime Environment). ¿Cuáles son las
diferencias entre estos términos?
- JRE: Como su propio nombre indica, este ambiente (environement) es utilizado
solo para ejecutar ("Runtime") programas en Java.
¿Por qué muchas empresas utilizan Java para realizar sus aplicaciones?
Pues entre otras cosas, porque agiliza el proceso de desarrollo substancialmente.
Supongamos por un momento que vamos a lanzar un producto para diversos
sistemas operativos (Windows, Linux, AIX, Solaris) y procesadores (Sparc,
x86(Intel), HP-UX , Alpha ). Realizarlo para cada combinación posible sería una
magna obra de Ingeniería. Utilizando Java podemos concentrar nuestros
esfuerzos "unicamente" en un producto, y debido a que existen diversos JRE
(Para Linux, Solaris, Windows y otros sistemas operativos), se dejan los detalles
específicos de Plataforma al JRE y nosotros concentraremos nuestros esfuerzos
en un solo producto.
-
JDK: lo utilizaremos en el caso de que además de ejecutar las aplicaciones en el
ordenador de producción, también queramos compilar en el citado ordenador de
producción. Hay que saber que JDK, SDK ("Standard Development Kit") y
J2SE ("Java 2 Standard Edition") son nombres para el mismo componente e
incluyen:
o El API de Java,
o el JRE (JMV),
o el compilador de Java,
o y otras funcionalidades definidas por Sun.
Así pues, este es el esquema del ordenador de producción que ejecutará nuestras
aplicaciones Java en casa de un cliente:
Ilustración 2: Esquema arquitectural.
- 72 -
5-. Java.
El quid de la cuestión está en tener instalada la MVJ propia de cada plataforma
para poder conseguir la magia de Java: "escribe una vez y ejecuta en cualquier
plataforma". El código byte de nuestra aplicación junto con el código byte de las
librerías estándar Java actúan como input al ejecutar el comando java, y entonces la
MVJ propia de esa plataforma hace la traducción a código de bajo nivel propio del
Sistema Operativo y del hardware subyacente.
Otros detalles de Importancia al trabajar con estos ambientes.
Otros elementos que no hemos nombrado hasta ahora y que son dignos de
mención son el classpath y los archivos .jar.
- CLASSPATH: Es una variable de entorno en su sistema extremadamente
importante ya que le indica al JDK donde se encuentran las clases que serán
utilizadas al compilar un programa. El Classpath puede estar compuesto por
diversos directorios o JARS. Cuando se utiliza un directorio, el JDK buscará
dentro de éste las clases correspondientes; hay que tener en cuenta que cuando
se emplea un JAR debe especificarse el archivo completo (si el JAR se
encuentra dentro de un directorio no será encontrado al menos que se indique el
archivo JAR específicamente).
- JARS: Es un grupo de clases comprimidas; una vez que defina 200 o 300 clases
en Java puede agruparlas para formar lo que es denominado "JAR File", este
JAR file puede ser considerado un ZIP o TAR file utilizado en cualquier sistema
de computo, la ventaja de los JAR files es su compresión y la reducción de carga
administrativa al movilizar clases.
Por último, comentaremos algo más sobre los entornos de desarrollo. Mientras
un JDK/SDK ofrece las herramientas para compilar y ejecutar programas en Java, éste
no ofrece un ambiente de trabajo para proyectos complejos: si se compilan una o dos
clases quizás el comando javac ofrecido en los JDK sea suficiente, pero si nuestro
proyecto estuviese compuesto por 100 o 200 clases, javac sería muy deficiente. Los
IDE's ("Integrated Development Environment") ofrecen un ambiente gráfico en el que
se tiene acceso a mayor número de herramientas no ofrecidas en los JDK's: Debuggers
más elaborados, check-points dentro de la compilación, creación de WARs (WebArchives), "Wizards" para acelerar desarrollo, entre otras cosas. Algunos IDE's son:
- Eclipse ( http://www.eclipse.org ) Open-Source.
- NetBeans ( http://www.netbeans.org ) Open-Source.
- Sun Java Studio ( http://www.sun.com/software/sundev/jde/index.xml ) de Sun.
- JBuilder ( http://www.borland.com/jbuilder ) de Borland.
- WebSphere Studio (http://www-306.ibm.com/software/awdtools/studiositedev)
de IBM.
- JDeveloper ( http://otn.oracle.com/products/jdev/content.html ) de Oracle.
- 73 -
5-. Java.
5.2-. IDE Eclipse.
Para la realización de este proyecto fin de carrera se ha utilizado el Entorno de
Desarrollo Integrado (IDE) Eclipse. En la web oficial de Eclipse (www.eclipse.org), se
define el propio Eclipse como “An IDE for everything and nothing in particular” (un
IDE para todo y para nada en particular). Eclipse es, en el fondo, únicamente un
armazón (workbench) sobre el que se pueden montar herramientas de desarrollo para
cualquier lenguaje, mediante la implementación de los plugins adecuados. Es un IDE
muy utilizado en el ámbito empresarial.
La arquitectura de plugins de Eclipse permite, además de integrar diversos
lenguajes sobre un mismo IDE, introducir otras aplicaciones accesorias que pueden
resultar útiles durante el proceso de desarrollo, como herramientas UML, editores
visuales de interfaces, ayuda en línea para librerías, etc.
Eclipse es un IDE open source y extensible. El proyecto se lanzó originalmente
en Noviembre de 2001, cuando IBM donó 40 millones de dólares del código fuente de
Websphere Studio Workbench y formó el Eclipse Consortium para controlar el
desarrollo continuado de la herramienta.
El IDE Eclipse es, únicamente, una de las herramientas que se engloban bajo el
denominado Proyecto Eclipse. El Proyecto Eclipse aúna tanto el desarrollo del IDE
Eclipse como de algunos de los plugins mas importantes (como el JDT, plugin para el
lenguaje Java, o el CDT, plugin para el lenguaje C/C++). Este proyecto también alcanza
a las librerías que sirven como base para la construcción del IDE Eclipse (pero pueden
ser utilizadas de forma completamente independiente), como por ejemplo, la librería de
widgets SWT.
El objetivo de Eclipse era "desarrollar una plataforma industrial robusta, con
todas las características y de calidad industrial para el desarrollo de herramientas
altamente integradas". Al final, el Eclipse Consortium se había centrado en tres
proyectos principales:
- The Eclipse Project es responsable de desarrollar el workbench (banco de
trabajo) del IDE Eclipse (la "plataforma" que contiene las herramientas Eclipse),
el JDT (Java Development Tools), y el PDE (Plug-In Development
Environment) utilizado para ampliar la plataforma.
- The Eclipse Tools Project se centra en la creación de herramientas para la
plataforma Eclipse.
- The Eclipse Techonology Project se centra en investigaciones tecnológicas,
incubación y educación utilizando la plataforma Eclipse.
A pesar del gran número de características estándar, Eclipse se diferencia de los
IDEs tradicionales en varias cosas fundamentales. Quizás lo más interesante de Eclipse
es que es completamente neutral a la plataforma y al lenguaje. Además de la mezcla de
lenguajes soportados por Eclipse (Java, C/C++, Cobol), también hay otros proyectos
para añadir a Eclipse el soporte de lenguajes tan diversos como Python, Eiffel, PHP,
Ruby, y C#.
Con respecto a las plataformas, el Eclipse Consortium proporciona instalaciones
binarias para Windows, Linux, Solaris, HP-UX, AIX, QNX, y Mac OS X. La mayoría
de cosas interesantes que posee Eclipse se centran en la arquitectura de plug-ins y el
- 74 -
5-. Java.
API proporcionado por el Plug-in Development Environment para ampliarlo. Añadir
soporte para un nuevo tipo de editor, una vista, o un lenguaje de programación, es
remarcadamente fácil, con el API y los bloques de construcción que proporciona
Eclipse.
5.3-. Conclusiones.
Se ha realizado esta breve introducción al lenguaje de programación Java y al
IDE Eclipse pues son los que se utilizan para la realización de este proyecto fin de
carrera. Como es bien sabido, las posibilidades que ofrece Java son extensísimas (desde
las clases más básicas de tipos numéricos, hasta clases para el trabajo en red, pasando
por applets o interfaces gráficas.). El paquete utilizado en este proyecto para la
realización de la interfaz gráfica de la herramienta ha sido Java Swing (javax.swing). En
el siguiente apartado veremos en profundidad qué nos ofrece dicho paquete, y
hablaremos también sobre su predecesor, el paquete AWT.
- 75 -