Anda di halaman 1dari 10

EL ARCHIPILAGO ECLIPSE (PARTE 2 DE 4)

Fecha de la ltima revisin: 21.05.2014


Miguel ngel Abin
mabian ARROBA aidima PUNTO es
"Todo es un plug-in."
Eslgan no oficial de la plataforma Eclipse
"La msica lo es todo. La gente debera morir por ella. La gente est muriendo por todo lo dems, as que por
qu no morir por la msica. Salva ms vidas."
Lou Reed, Desde el proscenio
9. Eclipse como IDE
La plataforma Eclipse, combinada con el JDT (Java Development Tooling), permite disponer de un IDE (Integrated Development
Environment o Entorno de desarrollo integrado) para Java de excelente calidad. Aqu cobra ms sentido la frase "Eclipse es un IDE
abierto y extensible para todo y, sin embargo, para nada en particular". Por s misma, la plataforma Eclipse proporciona
funcionalidades demasiado genricas. Solamente cuando se amplia con otras herramientas (el JDT en este caso, que figura en la
distribucin estndar de Eclipse y que es un plug-in formado, a su vez, por otros plug-ins), permite desarrollar actividades tiles para
los usuarios que la vayan a utilizar como IDE.
Como IDE de Java, Eclipse posee un editor muy visual con sintaxis coloreada, ofrece compilacin incremental de cdigo, un potente
depurador (que permite establecer puntos de interrupcin, modificar e inspeccionar valores de variables, etc. e incluso depurar cdigo
que resida en una mquina remota), un navegador de clases, un gestor de archivos y proyectos... pero no se limita slo a esto. La
versin estndar de Eclipse proporciona tambin una biblioteca de refactorizacin de cdigo y una lista de tareas, soporta la
integracin con JUnit, y suministra un front-end grfico para Ant, la conocida herramienta de cdigo abierto que forma parte del
proyecto Jakarta de Apache.
Tambin incluye una herramienta para completar cdigo: el asistente de contenido, encargado de mostrar los mtodos y atributos de
las clases con las que se est trabajando, ya formen parte de las APIs de Java o de cualquier otra clase en el build path, aunque estn
en ficheros JAR. Este asistente tambin proporciona informacin de cada uno de los mtodos mediante una ventana secundaria
contextual (Figura 8), y avisa -cuando se graba la clase o la interfaz- de los errores cometidos al escribir el cdigo (Figura 9). Eclipse
incluye tambin asistentes para la creacin de clases e interfaces, y proporciona una integracin perfecta con el sistema open source
CVS (Concurrent Version System), muy til para llevar el control de la versiones con las que se trabaja y conocer en todo momento
sus respectivas diferencias. CVS (http://www.cvshome.org) es uno de los sistemas de control de cdigo fuente ms usados;
muchos de los sistemas UNIX lo llevan preinstalado por defecto.
A continuacin me voy a extender respecto a dos caractersticas de Eclipse como IDE para Java: el HotSwap y la compilacin
incremental automtica del cdigo. He elegido stas, y no otras, por dos razones: a) por motivos de espacio resulta imposible abordar
todas las funcionalidades de Eclipse (adems, algunas de ellas todava se hallan en desarrollo o cambio); y b) las mencionadas
caractersticas reducen el tiempo -y por tanto el coste- de construccin, depuracin y distribucin del software. Cualquier
desarrollador, ya sea profesional, ya sea principiante, puede usarlas para no desperdiciar muchas horas repitiendo tareas mecnicas.
Una caracterstica de Eclipse como IDE, poco mencionada pero que encuentro muy til, es el soporte que ofrece Eclipse a HotSwap
(cambio en caliente), una de las novedades del JDK 1.4. Esta propiedad, incluida en la Java Platform Debugger Architecture
(Arquitectura del Depurador de la Plataforma Java) de la versin 1.4, permite sustituir cdigo o modificarlo mientras se est
ejecutando un programa, sin necesidad de pararlo, realizar las modificaciones, grabarlas, volver a compilar y -finalmente- ejecutar de
nuevo. Si utilizamos Eclipse con la versin 1.4 de Java, podemos establecer puntos de interrupcin en el cdigo, ejecutarlo, comprobar
el estado de las variables en los puntos de interrupcin cuando stos se alcancen, modificar el cdigo o introducir cdigo nuevo, grabar
los cambios y continuar la ejecucin del programa. Los fallos pueden localizarse y analizarse al vuelo, sin vernos obligados a salir de la
aplicacin, cambiar el cdigo, recompilar y comenzar una nueva sesin de depuracin.
Para sacar partido de esta caracterstica -ya existente en Visual Age for Java- no precisamos investigar la documentacin de Eclipse
con una lupa de 50 aumentos y luz ultravioleta, ni invocar a Cthulhu a la luz de la luna (actividad no del todo infrecuente, por
desgracia, entre los que hemos tenido que lidiar con productos de IBM): basta con iniciar una sesin de depuracin, sustituir o cambiar
el cdigo generador de errores, grabar el archivo y apretar el botn Resume de la barra de herramientas Debug. Automticamente,
el programa sometido a depuracin proseguir su ejecucin, teniendo en cuenta los cambios efectuados. Utilizando HotSwap con
Eclipse, se reducen los tiempos destinados a depuracin, en particular cuando se trabaja con aplicaciones que tardan mucho tiempo en
arrancar -como aplicaciones web de cierta complejidad o aplicaciones que accedan a bases de datos remotas- o en las que se tarda
mucho en alcanzar los puntos calientes o problemticos.
Otra caracterstica de Eclipse, muy eficiente para reducir los tiempos de depuracin y pruebas, es la compilacin incremental
automtica del cdigo. Eclipse -al igual que Visual Age for Java- no cuenta con un men de compilacin pues no es necesario: cada vez
que se hacen cambios en uno o ms ficheros, el compilador interno de Eclipse recompila todos los ficheros fuente afectados por los
cambios. El usuario no tiene que preocuparse de compilar, y puede estar seguro de contar con archivos siempre compilados. En
consecuencia, tampoco resulta preciso esperar a la compilacin para detectar ciertos errores: Eclipse muestra indicaciones de los
errores aparecidos segn se van realizando o guardando los cambios.
Las ventajas que aportan estas dos propiedades se apreciarn mejor con un ejemplo: consideremos que trabajamos con servlets y
JSPs (Java Server Pages), y que hemos decidido usar Eclipse junto con algn servidor web. Debido al ciclo de vida de los servlets, se
necesita parar y volver a arrancar el servidor web cada vez que se desea actualizar la clase servlet o recargar el cdigo Java llamado
por algn fichero JSP. Durante el desarrollo se cambia a menudo el cdigo de los servlets y de las JSPs. En la mayora de los IDEs
resulta bastante tedioso y largo depurar el cdigo, sobre todo si los problemas se producen slo cuando el servlet (o la JSP) lleva un
Copyright (c) 2003-2014, Miguel ngel Abin. Este documento puede ser distribuido solo bajo los trminos y condiciones de la licencia
de Documentacin de javaHispano v1.0 o posterior (la ltima versin se encuentra en http://www.javahispano.org/licencias/).
Page 1 of 10 javaHispano. ECLIPSE
21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_2\Copia de EclipsePart...
cierto tiempo en ejecucin, o dentro de algn bucle largo, porque hay que parar y reiniciar el servidor web y sus plug-ins. Cuando se
cambia en Eclipse un mtodo de un servlet o de un fichero JSP, Eclipse compila incrementalmente solamente el mtodo modificado en
la clase, no la clase completa, y la liga en caliente al programa en ejecucin. El ahorro de tiempo es considerable, pues no hay que
volver a recrear el estado de ejecucin (del programa) que ocasiona los problemas; puede modificarse repetidamente el servlet o la
JSP en ejecucin sin parar y reiniciar el servidor, y se pueden usar todas las caractersticas de Eclipse mientras el servidor est
ejecutndose.
Slo hay un tipo de IDEs libres de defectos o ausencias: el que no existe ms que en las mentes de sus creadores (a condicin de que
no sean demasiado pragmticos); lgicamente, Eclipse no constituye una excepcin, y tiene algunas carencias y deficiencias
reprochables. Las tres ms relevantes, desde mi punto de vista, se detallan aqu:
Eclipse no incluye un diseador visual de interfaces grficas (GUI builder).
Eclipse no incorpora plug-ins para comunicarse con servidores de aplicaciones J2EE.
La falta de soporte a los Enterprise JavaBeans, a las Java Server Pages y a los servlets es total. No se incluyen asistentes o
plug-ins para la edicin o depuracin de estos.
Tanto las versiones comerciales de Eclipse distribuidas por IBM como los productos profesionales de la compaa que tienen como
ncleo la plataforma Eclipse s cuentan con algunas de las caractersticas (o con todas) que faltan en el SDK (Standard Development
Kit o Kit de desarrollo estndar) de Eclipse. Existen plug-ins gratuitos que permiten integrar eficazmente Eclipse con servidores open
source o free software de aplicaciones, como JBoss, o con servidores propietarios como los de IBM, BEA u Oracle; estos plug-ins
permiten arrancar y parar el servidor dentro de Eclipse, as como depurar el cdigo fuente dentro del servidor de aplicaciones.
Igualmente, existen plug-ins -algunos comerciales- para el resto de caractersticas que Eclipse no incorpora, basta con ensamblarlos.
Fig. 8. El asistente de contenido de Eclipse permite seleccionar mtodos
y ver una breve descripcin de los mismos.
Page 2 of 10 javaHispano. ECLIPSE
21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_2\Copia de EclipsePart...
Al ser neutral con respecto a la plataforma y al lenguaje, Eclipse puede utilizarse con otros lenguajes adems de Java; basta con usar
los plug-ins adecuados. Hasta la fecha [Abril 2003], el consorcio Eclipse.org proporciona plug-ins slo para C/C++ y COBOL, pero
existen proyectos independientes ms o menos avanzados (aunque todava no estables o definitivos) para que pueda usarse con C#,
PHP, Eiffel, JavaScript, Ruby, Pascal, Phyton y con algunos lenguajes experimentales.
El IDE de C y C++ se encuentra asignado al subproyecto CDT (C/C++ Development Tools) del proyecto Herramientas Eclipse; y
proporciona ya un editor que ofrece sintaxis coloreada y que completa automticamente el cdigo, adems de adjuntar un depurador.
Los plug-ins del IDE estn escritos en Java, sin cdigo nativo.
La prueba evidente de que COBOL no est muerto y de que sigue gozando de una relativa buena salud en el siglo XXI (para desespero
de muchos ingenieros de software y programadores: la informtica no miente, nunca nos prometi un jardn de rosas) la aporta el
hecho de que se ha desarrollado un IDE para l antes que para lenguajes mucho ms modernos. El IDE de COBOL est tambin escrito
en Java, sin cdigo nativo, pero slo puede trabajar en sistemas en los que exista un compilador de COBOL, un depurador y una
interfaz puente (bridge interface) que permita a los plug-ins (seis por ahora) invocar al depurador y al compilador COBOL nativo.
Inicialmente el IDE de COBOL de Eclipse se basa en un compilador y depurador comercial de COBOL (Fujitsu NetCOBOL 7.0), para el
cual existe un puente entre los plug-ins, el compilador y el depurador; este IDE slo funciona, por ahora, sobre Red Hat Linux 7.2.
Para C# existe un plug-in llamado Improve CSharp, gratuito y bajo licencia CPL, que permite la edicin y compilacin de cdigo C# e
incluye un asistente de contenido para las palabras clave del lenguaje. Est disponible para Windows y Linux. Aunque este plug-in
funciona correctamente, queda an mucho por hacer; por ahora no se ha implementado ni siquiera la nocin de proyecto C#, y cuando
se genera un nuevo fichero C#, Improve CSharp no crea automticamente su estructura, salvo que sea la bsica.
Para Python disponemos del plug-in Python Editor for Eclipse (Pe4eclcipse), capaz de editar y depurar aplicaciones Phyton. Se
encuentra disponible para Windows 95/98/2000, AIX, Linux y SunOs/Solaris. Es una versin pre-alfa y se licencia bajo GNU GPL.
Para PHP existe -en estado de desarrollo beta- el PHP plug-in for Eclipse, disponible para Windows y Linux bajo la licencia CPL de IBM.
Ruby cuenta con el plug-in Ruby Development Tool, independiente del sistema operativo, en estado beta.
El plug-in JSEditor es un editor de ficheros JavaScript. Muestra las funciones JavaScript en la vista Outline de manera que resulta muy
sencillo navegar a travs de los ficheros JavaScript para alcanzar las funciones implementadas; ofrece tambin sintaxis coloreada para
funciones, cadenas y comentarios.
Un lenguaje tan veterano como Pascal tambin encuentra albergue en Eclipse: Pasclipse es un plug-in bajo licencia CPL, disponible
para Mac Os, Windows y Linux, que proporciona la posibilidad de integrar cualquier compilador de Pascal basado en lnea de
comandos; Pasclipse incluye tambin un formateador de cdigo fuente. Por ahora se halla en fase pre-alfa.
Para el desarrollo de aplicaciones J2EE hay disponibles muchas soluciones distintas: Lomboz, BEJY, DeployGUI, EASIE JBoss Plugin,
EASIE Orion/Oracle 9iAS Plugin, EASIE Weblogic Plugin, EASIE Wepsphere Plugin, Easy Struts, EclipseAxis, EJBBuilder, JBoss-IDE...
Una comparacin crtica entre ellos queda fuera del objetivo de este artculo, pero me permito llamar la atencin sobre dos de ellos:
Lomboz y JBoss-IDE. Lomboz es un plug-in J2EE que permite construir aplicaciones web con pginas HTML, JSPs y servlets. Incorpora
un editor para JSPs con sintaxis coloreada, asistente para cdigo y comprobacin de la sintaxis. Varios asistentes y generadores de
cdigo facilitan el trabajo con EJBs, y cuenta con la interesante caracterstica de permitir la depuracin de cdigo JSP y EJB desde el
depurador de Eclipse. Lomboz es gratuito para fines no comerciales. Por otro lado, JBoss-IDE ofrece un IDE para controlar el conocido
servidor JBoss desde el Workspace de Eclipse; se distribuye bajo licencia CPL.
Para XML existen numerosos plug-ins comerciales y open source: eclipsetydy, Improve XSLT, JMXLEditor, MetaCoder ...
Para el anlisis y diseo de software mediante UML ya hay disponibles varios plug-ins open source para la plataforma Eclipse: EMF,
Fig. 9. Al guardar una clase, Eclipse muestra los errores cometidos en el cdigo.
Page 3 of 10 javaHispano. ECLIPSE
21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_2\Copia de EclipsePart...
magicdraw, OMONDO y Slime UML. Ofrecen, en general, las utilidades habituales: generacin de diagramas UML, ingeniera inversa,
generacin de cdigo a partir de los diagramas de clases, etctera.
10. Eclipse y Visual Age for Java: una sensacin dj v, pero slo una
sensacin. El reemplazo generacional llega a IBM. Cmo encaja Eclipse en la
nueva generacin de herramientas de IBM?
Los desarrolladores que hayan trabajado con Visual Age for Java notarn algunas similitudes al trabajar con Eclipse. Muchos de los
asistentes son iguales y tambin algunos botones (como el del hombre que corre o el que muestra un insecto; tienen asociadas las
acciones de iniciar la ejecucin del programa y arrancar el depurador, respectivamente).
Internamente, sin embargo, hay muchas diferencias. La lista sera muy larga, pero las ms relevantes son stas:
Eclipse se basa en ficheros individuales, muchos de los cuales tienen formato ASCII y, por tanto, son accesibles a otras
herramientas. En Eclipse, IBM ha abandonado el repository propietario (EMSRV - ENVY) que us para Visual Age for Java (tal y
como se ha visto en el apartado anterior, Eclipse usa CVS de forma estndar). Para ejecutar o distribuir el cdigo fuente en VAJ,
debe exportarse el cdigo al sistema de ficheros de la mquina donde vaya a ser utilizado. Nadie que manejara el repository
propietario lo echar en falta; su insidiosa tendencia a corromperse era uno de los mayores problemas de los usuarios de VAJ,
pero no el nico: su excesivo consumo de espacio en el disco duro, y su complejo sistema de mantenimiento y administracin
tampoco contribuyeron a hacerle popular entre los desarrolladores. Una confesin personal: el nico momento en que el
repository de VAJ me dio una alegra fue cuando me dijeron que ya no iba a necesitar usarlo.
Eclipse es mucho ms configurable para diferentes mquinas virtuales Java que VAJ. Visual Age for Java emplea una mquina
virtual llamada UVM (Universal Virtual Machine, Mquina Virtual Universal) que permite ejecutar cdigo Java y cdigo SmallTalk.
La UVM es propiedad de IBM y el usuario de VAJ no puede utilizar ninguna otra mquina virtual. Eclipse, en contraste, permite
elegir para la ejecucin la mquina virtual Java que se desee, desde la versin 1.1.7 del JRE a la versin 1.4, sin excluir
mquinas virtuales hechas a medida, como la J9 VM de IBM para dispositivos embebidos. Esta posibilidad, ausente en VAJ,
resulta muy ventajosa para los programadores: pueden elegir el JRE que vaya a emplear el usuario final, sin depender de las
actualizaciones, por parte de IBM, de la UVM. Existe un pequeo matiz de carcter tcnico: Eclipse usa un compilador interno, al
igual que VAJ, pero el conjunto de clases contra el cual se compila el cdigo fuente es el establecido por el usuario en
Preferences/Installed JREs.
VAJ permite la generacin y distribucin de Enterprise JavaBeans, Java Server Pages y servlets, incluye asistentes tanto para la
generacin como para la distribucin de EJBs, y soporta de serie la plataforma J2EE. Por citar ejemplos concretos, la ltima
versin de VAJ incluye un Entorno de pruebas WebSphere (WebSphere Test Environment), un servidor EJB, un depurador
integrado para servlets, EJBs y JavaBeans, y un monitor de ejecucin para JSPs. Todo lo necesario, en definitiva, para
desarrollar aplicaciones J2EE dentro de un nico entorno de desarrollo integrado.
[Nota tcnica: Un repository (almacn de datos) en programacin es, en esencia, una base de datos que almacena
cdigo y material complementario (documentacin, imgenes, etc.). Cuando se usa un repository, el cdigo fuente con el
que se trabaja se almacena en la base de datos y se extrae de l cuando se necesita.El cdigo se almacena en el
repository, no en ficheros. Este sistema de almacenamiento ofrece ventajas para los lenguajes orientados a objetos, pues
resulta ms fcil seguir la pista a las clases, con sus relaciones de herencia, en una base de datos. Adems, la estructura
de una base de datos se muestra idnea para llevar un control de las versiones y para la programacin en equipo. Al ser
el repository una base de datos se necesita configurarlo y mantenerlo a lo largo del tiempo.]
La actual generacin de herramientas de desarrollo de IBM (WebSphere Studio Application Developer, Websphere Studio Site
Developer, WebSphere Studio Enterprise Developer, Websphere Studio Workbench, etc.) se basa en Java, al igual que los productos
de la familia Visual Age se basaban en Smalltalk. IBM est reemplazando, tanto interna como externamente, sus productos de la
familia Visual Age y WebSphere Studio por los nuevos productos basados en Eclipse. IBM ha abandonado ya Visual Age for Java en
favor de sus nuevos productos basados en Eclipse; no habr nuevas versiones de VAJ, aunque continuar dndole soporte durante un
tiempo.
Los motivos de esta nueva estrategia basada en Eclipse obedecen a una suerte de relevo generacional tecnolgico: Visual Age for Java
y Websphere Studio se crearon en una poca en la que las pginas web eran pginas HTML servidas por CGIs (Common Gateways
Interfaces). Hablo de poca aunque s que no han pasado muchos aos, pero si comparsemos las tecnologas actuales con las de
hace diez o veinte aos, parecera que stas ltimas han salido de otra poca, casi de una Edad Media incrustada en el siglo XX. En
aquel entonces, gracias a los applets, Java alcanz una gran popularidad en el lado del cliente. El panorama actual apenas guarda
parecido con el de hace diez aos: las pginas web actuales incluyen vdeo de alta resolucin, animaciones, sonidos, HTML dinmico...
Las redes de fibra ptica, extendidas ahora por todo el mundo, permiten olvidarse de las limitaciones de una Internet que daba sus
primeros balbuceos, y posibilitan la inclusin de recursos multimedia, no slo de texto e imgenes. Tambin para Java ha pasado el
tiempo: los applets han cado en desuso, y el lenguaje, ya maduro, se ha hecho fuerte en el lado del servidor. La plataforma J2EE, que
comenz a existir cuando ya se haban lanzado las primeras versiones de Visual Age y WebSphere Studio, ha crecido mucho y en
direcciones muy distintas: servlets, JSPs, EJBs, XML, etc.
A toda herramienta, como a toda tecnologa, le llega un momento en que intentar seguir expandindola resulta similar a pretender
aumentar el volumen cerebral de un dinosaurio condenado a la extincin. IBM, consciente de que no hay tecnologa que cien aos
dure, decidi -tal como se vio en la primera parte de este artculo- abandonar Visual Age for Java y WebSphere Studio, y construy la
plataforma Eclipse, escrita en Java, como base para su nueva generacin de herramientas.
WebSphere Studio Site Developer y WebSphere Studio Application Developer han sido los primeros productos de la nueva familia
WebSphere Studio que han visto la luz; forman parte de la nueva generacin de herramientas de desarrollo de aplicaciones web
construida sobre Eclipse. IBM distribuye su propia versin comercial de Eclipse (WebSphere Studio Workbench), que acta como base
de la nueva familia WebSphere Studio y de las futuras herramientas middleware de IBM. WebSphere Studio Site Developer permite el
desarrollo de sitios web dinmicos (con servlets, XML, JSPs, servicios Web, etc.)
WebSphere Studio Application Developer va varios pasos por delante del Site Developer: permite el desarrollo de aplicaciones J2EE y
de bases de datos en un entorno de programacin en equipo. Incluye todas las funciones del Site Developer y permite la creacin y
distribucin de EJBs, incorpora asistentes para conexiones a bases de datos y permite usar el servidor de aplicaciones de IBM
(WebSphere Application Server) para efectuar pruebas. Dar una descripcin exacta de todas sus capacidades escapa a los propsitos
Page 4 of 10 javaHispano. ECLIPSE
21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_2\Copia de EclipsePart...
de este artculo, pero el repertorio de asistentes para XML, para la creacin de bases de datos, para la implementacin de consultas a
bases de datos y para J2EE deslumbra por su extensin. WS Application Developer es un producto hecho por y para profesionales,
adems de ser una de las herramientas ms completas que existen en el mercado.
Eclipse (en su versin comercial WS Workbench) constituye el ncleo de estas herramientas. Aunque WS Application Developer es una
herramienta excelente, todas sus virtudes y funcionalidades derivan de una misma base: Eclipse. Cualquier programador o
programadora puede aadir al SDK estndar de Eclipse los plug-ins -propietarios, open source o free software- que desee, y obtener
un producto final comparable a WS Application Developer (o incluso ms adaptado a sus necesidades). Los productos comerciales de
IBM son derivaciones concretas de Eclipse, pero no tienen virtudes intrnsecas que no puedan obtenerse ensamblando plug-ins. IBM
cuenta con la baza de proporcionar asesoramiento, asistencia tcnica y soluciones personalizadas; no se limita a proporcionar el
producto, pero sus herramientas basadas en Eclipse no tienen ninguna bendicin papal: forman parte de la mirada de productos que
cualquiera puede formar alrededor del archipilago Eclipse.
La obsesin de IBM por el software open source es demasiado racional para figurar dentro del ndice de Introduccin a la Psiquiatra
Moderna, en algn lugar entre Obsesiones-compulsiones y Paranoia. El fracaso de Eclipse implicara el fracaso de toda la nueva gama
de productos de IBM basados en l, y el adis definitivo a su permanencia como lder en el mercado de herramientas de desarrollo. La
competencia es demasiado fuerte y competitiva como para que IBM pueda conseguir una segunda oportunidad; Eclipse no forma parte
de una de sus estrategias: es la Estrategia. Honradamente, no lanzar Eclipse bajo la licencia open source s hubiera merecido estar
en el ndice de Introduccin a la Psiquiatra Moderna, por algn lugar entre Lo-tuyo-no-son-los-negocios (Sndrome de) y Narcisismo.
Esta opcin hubiera entraado el riesgo -tremendamente real- de quedarse descolgado del proceso de creacin de herramientas,
proceso cada vez ms comunitario, y de llegar solamente a la porcin de desarrolladores que ya utilizaban productos de IBM.
Los cuarenta millones de dlares invertidos en Eclipse acabarn dando buenos dividendos a IBM; probablemente no obtendr de ellos
la rentabilidad que algunos y algunas consiguieron con las punto com antes del hundimiento del mercado -al ms puro estilo Titanic-,
un hundimiento tan previsible e inevitable como la implosin del boom inmobiliario en Japn durante la dcada de los noventa, pero
conseguir mayor rentabilidad que la que proporcionan los bonos cupn cero del Tesoro de los Estados Unidos. Si IBM no pensara as,
hubiera invertido el dinero en estos bonos y se hubiera limitado a esperar mejores tiempos antes de sacar al mercado su nueva
generacin de herramientas de desarrollo. Explicar a los gestores de fondos de pensiones estadounidenses, con cientos de millones de
dlares invertidos en acciones de blue chips, que IBM dona dinero por puro y sincero amor al desarrollo y progreso del software
hubiera sido incmodo, cuanto menos. Los gestores hubieran sentido en sus odos las mismas punzadas de dolor, aparejadas a la
sensacin comn de que alguien les estaba hurgando en los bolsillos, que sufrieron los ejecutivos de RCA cuando Lou Reed les dio a
escuchar Metal Machine Music (intentaron sacarlo en la serie clsica, pero el bueno de Lou se opuso, arguyendo que hubiera sido
pretencioso). Cuando las empresas punto com estaban en la cspide -dislumbrada, alcanzada y pronto olvidada, como un mal sueo-,
hasta las sillas suban en bolsa, pero no las donaciones en las que no se vea recompensa, presente o futura, alguna. Habr que
esperar... y ver.
11. Eclipse y su nfasis en la calidad del software
Tal y como se coment en el apartado 2, una herramienta de desarrollo integrado debera ayudar a los desarrolladores en todas las
etapas del ciclo de vida del software. Rational Software (miembro de la junta directiva de Eclipse.org y cuya adquisicin por parte de
IBM finaliz en enero de este ao) tiene su metodologa RUP (Rational Unified Process), un proceso unificado de desarrollo de software
que utiliza UML y se sostiene sobre tres ideas bsicas: casos de uso, arquitectura y desarrollo iterativo e incremental. De acuerdo con
la metodologa RUP, el proceso unificado se repite a lo largo de una serie de ciclos que constituyen la vida de un sistema software.
Cada ciclo debe tener los siguientes modelos:
Un modelo de casos de uso
Un modelo de anlisis
Fig. 10. Eclipse dentro de la familia WebSphere de IBM
Page 5 of 10 javaHispano. ECLIPSE
21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_2\Copia de EclipsePart...
Un modelo de diseo
Un modelo de implementacin
Un modelo de despliegue o distribucin
Un modelo de prueba
En consecuencia, los flujos de trabajo de cada ciclo, segn esta metodologa, son cinco: requisitos, anlisis, diseo, implementacin y
prueba.
Independientemente de la metodologa seguida, los cinco flujos de trabajo expuestos suelen formar parte del desarrollo de software.
Desde luego, Rational Software tiene su propia herramienta de desarrollo de acuerdo con RUP, pero resulta difcil encontrar IDEs que
ayuden a los desarrolladores en todos los flujos de trabajo. Por ello, resulta fundamental la extensibilidad de los productos. En ese
aspecto, Eclipse -debido a su arquitectura abierta- permite acoplar mediante plug-ins tantas herramientas de apoyo (open source o
comerciales) como el desarrollador necesite, de manera que ste, independientemente de la metodologa concreta usada, pueda
conseguir con Eclipse su propio IDE, personalizado a sus necesidades. Por ejemplo, los desarrolladores pueden incorporar a Eclipse
herramientas de distintos vendedores (un IDE no estndar, una herramienta de modelado UML, un framework de pruebas como JUnit,
un editor de XML o de HTML, una herramienta como Ant, etc.) y beneficiarse as de una apariencia comn y un control integrado para
todas las herramientas.
De hecho, la versin estndar de Eclipse incluye una biblioteca de refactorizacin de cdigo Java, utilizable a travs de un sencillo
interfaz para el usuario. Erich Gamma, uno de los grandes especialistas del momento en patrones y refactorizacin, forma parte del
proyecto Eclipse.
Eclipse rompe, posiblemente debido a la participacin de Rational Software y de TogetherSoft, con una larga -y justificada- tradicin
de que las herramientas de desarrollo de software aceleran el desarrollo de software al precio de conseguir diseos pobres, poco
escalables y que suelen requerir un mantenimiento excesivo cuando los sistemas van creciendo, al permitir preocuparse tanto de la
calidad del software como de su diseo, y no nicamente de la productividad inmediata.
Otras herramientas Java (JBuilder 7 y 8, IDEA de Intellij, por ejemplo) tambin proporcionan soporte a la refactorizacin del software,
pero -por ahora- slo Eclipse muestra tan claramente la importancia que los patrones y la refactorizacin han tenido en su propia
construccin y slo Eclipse, por su arquitectura abierta, permite integrar tantas herramientas para mejorar la calidad del software,
facilitar los procesos de anlisis y diseo, y documentar estas etapas.
12. La estructura de la plataforma Eclipse: una vista subterrnea
Un concepto fundamental de Eclipse, necesario para comprender lo que sigue, es el de recurso. En Eclipse, un recurso bsico es
simplemente un fichero ASCII que contiene cdigo fuente para un lenguaje de programacin.
La plataforma Eclipse se compone de 6 grandes componentes:
1) El Platform runtime, que se encarga de gestionar los recursos y los plug-ins, adems de permitir el arranque de la
plataforma. Cuando se arranca Eclipse, este componente se encarga de buscar los ficheros de manifiestos de los plug-ins (que
son archivos XML que describen los plug-ins), y carga esta informacin en un registro. Solamente cuando se requiere por
primera vez un plug-in, el Platform runtime lo ejecuta; este componente descubre de forma dinmica plug-ins durante el tiempo
de ejecucin. Grosso modo, el Platform runtime define los puntos de extensin y el modelo de plug-ins.
2) El Workspace (Espacio de trabajo) permite gestionar el acceso a ficheros tanto a alto como a bajo nivel. Acta como un
componente que encapsulara la gestin de archivos, permitiendo que los plug-ins utilicen sus mtodos sin tener que trabajar
directamente con distintos sistemas de archivos, segn la plataforma que se utilice.
3) El Workbench (Banco de trabajo) se encarga de la presentacin de la informacin al usuario y de la gestin del dilogo con el
mismo. Proporciona la interfaz grfica de Eclipse y constituye uno de sus puntos ms cuidados y atractivos. Resulta difcil no
dejarse seducir por su apariencia, aunque uno se haya curtido en un entorno de lnea de comandos y haya jurado no mirar de
reojo, bajo pena de extirpacin ocular, a cualquier cosa similar a una ventana en un monitor. Desde el punto de vista del
usuario una ventana del Workbench consiste en vistas y editores. Tanto la API como la implementacin del Workbench se han
realizado mediante SWT y JFace.
El SWT se explicar ms adelante, pero puede adelantarse que es -fundamentalmente- una biblioteca encargada de
proporcionar los componentes grficos (botones, listas, cuadros de texto, etc.), y que permite obtener una interfaz grfica muy
integrada con la plataforma nativa bajo la cual se use Eclipse. Por qu utilizar una nueva biblioteca grfica? La pregunta se
contestar en la prxima entrega del artculo, pero aqu va un adelanto: porque esta biblioteca permite crear interfaces de
usuario nativas, utilizando las capacidades grficas del sistema operativo y del sistema grfico de ventanas que se est usando,
a cambio de ciertos inconvenientes que ya veremos. JFace proporciona una interfaz de ms alto nivel que la del SWT, basada en
los componentes SWT, y lleva incorporadas muchas facilidades para usar con los plug-ins (preferencias, asistentes, etc.),
adems de definir frameworks muy tiles, como el modelo MVC (Model View Controller).
4) El componente de ayuda (Help) permite a los plug-ins proporcionar documentacin HTML que pueda ser presentada
contextualmente por el Workbench.
5) El componente de equipo (Team o Team support) define un modelo de programacin en equipo para crear y mantener un
registro de las versiones de las aplicaciones que se desarrollen. Este componente permite que diferentes plug-ins de repositorys
(vase la nota tcnica del Apdo. 10) convivan dentro de la plataforma. Asimismo, aade las vistas que el usuario necesite para
interaccionar con cualquier sistema de control de versiones (si hay alguno) que se est usando. Tal y como se ha mencionado
ya, Eclipse incluye de forma estndar un plug-in CVS, pero pueden aadirse repositorys como ChangeMan (Serena), ClearCase
(Rational), CM Synergy (Telelogic), PVCS (Merant) y StarTeam (Starbase). Independientemente del VCM (Version Control
System) que se use, la interfaz de usuario no cambia.
Page 6 of 10 javaHispano. ECLIPSE
21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_2\Copia de EclipsePart...
6) El componente de depuracin (Debug) proporciona un modelo genrico de depuracin, en el que se permiten expresiones,
puntos de interrupcin, acciones habituales de depuracin, etc., junto a una interfaz grfica genrica de depuracin. Cualquier
plug-in puede aprovechar los mecanismos de depuracin que proporciona este componente.
El Workspace o espacio de trabajo refleja el estado actual de los proyectos locales, con su cdigo fuente y sus ficheros compilados, que
estn en la memoria activa. Al cerrar Eclipse se guarda el estado actual del Workspace local, de modo que cuando se reinicia Eclipse
vuelve al estado en que se cerr.
El Workbench o banco de trabajo proporciona lo siguiente:
Editores: Un editor es un componente que permite interaccionar con los contenidos de un fichero (no slo con el cdigo fuente,
sino tambin con su fichero XML asociado, sus propiedades, etc.) y modificarlos.
Vistas: Una vista proporciona metadatos sobre el recurso que se haya seleccionado: organizacin de un recurso dentro de un
paquete o proyecto, estado de la compilacin, etc.
Perspectivas: Una perspectiva representa una configuracin de editores y vistas relacionadas, al igual que opciones de men y
de compilacin. Hay tres perspectivas estndar en Eclipse (CVS, Install/Update y Resource), pero usando plug-ins pueden
aadirse otras nuevas. Al cambiar una perspectiva por otra se muestran diferentes editores, vistas y opciones de men.
Fig. 11. Arquitectura de la plataforma Eclipse. Extrado de la documentacin oficial de Eclipse.
Page 7 of 10 javaHispano. ECLIPSE
21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_2\Copia de EclipsePart...
El nico de los seis componentes de Eclipse que no es un plug-in es el Platform runtime. Los otros cinco componentes son plug-ins:
adondequiera que dirijamos la mirada divisaremos plug-ins flotando en las apacibles aguas del archipilago Eclipse. Cualquier plug-in
susceptible de incorporarse a Eclipse se integra con ste de la misma manera que cualesquiera de los plug-ins que incluye de forma
estndar. El Workbench y el Workspace son dos plug-ins indispensables porque proporcionan puntos de extensin usados por casi
todos los plug-ins, pero su funcionamiento no difiere del de otros plug-ins.
13. AWT y Swing: Repaso de los hechos
Para entender por qu IBM opt por utilizar el SWT (Standard Widget Toolkit) en Eclipse conviene repasar, muy rpidamente, las
limitaciones del AWT y Swing.
El AWT (Advanced Widget Toolkit) de Java utiliza widgets (componentes grficos de la interfaz de usuario) nativos para los widgets
que existen en todas las plataformas (botones, etiquetas, etc.), pero olvida necesariamente aquellos componentes que existen en una
plataforma pero no en otras. Por ejemplo, los widgets tipo rbol (tree), tabla (table) y ToolBar, que son widgets nativos de Windows,
no estn incluidos en el AWT, pues no hay widgets rbol y tabla en plataformas como Motif.
Es importante comprender, al menos someramente, la estructura del AWT para comprender el distinto enfoque que aporta el SWT de
Eclipse. El AWT usa una arquitectura peer: Cada componente AWT crea un objeto paralelo llamado su peer (igual). Los objetos peer
implementan interfaces en el paquete Java java.awt.peer. Por ejemplo, cada java.awt.Label usa un objeto peer que implementa
java.awt.peer.LabelPeer. A cada componente AWT le corresponde una clase peer escrita en el cdigo nativo del sistema (C
habitualmente), por lo que los componentes AWT son, por construccin, dependientes de la plataforma. Cada widget del AWT no se
dibuja a s mismo, sino que es su objeto peer asociado (y nativo) el que interacciona con los widgets nativos de la API grfica del
sistema operativo subyacente, que se encargan de dibujar y controlar los eventos del widget AWT.
En la implementacin de Motif -un buen ejemplo para entender la arquitectura peer del AWT-, a cada clase AWT le corresponde un
fichero C y cada mtodo nativo AWT cuenta con una implementacin en C, con el cdigo comn almacenado en ficheros separados.
La encapsulacin que hace el AWT de los widgets nativos de la API grfica del sistema operativo es totalmente opaca: el cdigo que
interacciona con los widgets nativos de la plataforma est escrito en C y no es accesible directamente.
Fig. 12. Ventana del Workbench y sus elementos. Traducido de la documentacin oficial de Eclipse.
Page 8 of 10 javaHispano. ECLIPSE
21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_2\Copia de EclipsePart...
El AWT cuenta con muchos inconvenientes: la lentitud (muy notable cuando se usan simultneamente muchos componentes), la
imposibilidad de cambiar esttica o dinmicamente la apariencia de los componentes, su dependencia de la plataforma y su limitacin,
por decisiones de diseo, a permitir trabajar slo con un pequeo conjunto de componentes comunes a todas las plataformas.
Adems, no resulta adecuado para construir aplicaciones profesionales, pues da un aire un tanto naf a las aplicaciones. Sin embargo,
los componentes AWT fueron los responsables de la rpida expansin inicial de Java, al ser muy sencillos de usar. A veces, menos
resulta ms.
Swing, que fue introducido con Java 1.2, y en cuyo desarrollo participaron Netscape e IBM, utiliza la interfaz entre el sistema grfico
de ventanas del sistema operativo subyacente y los componentes GUI de Java que proporciona el AWT, pero nicamente la interfaz. Es
decir, no usa los componentes AWT para -mediante los objetos peer- manipular los widgets nativos, sino que utiliza sus propios
componentes, escritos en Java. Los desarrolladores de Sun reescribieron en Java, desde cero, todos los widgets para Swing. Al estar
escritos en Java, los componentes Swing son independientes del sistema de ventanas nativo y pueden ejecutarse en cualquier
plataforma cuyo sistema de ventanas admita AWT.
Swing, a diferencia del AWT, permite cambiar rpida y fcilmente el aspecto y la sensacin (Look&Feel) de un componente o grupo de
componentes. El aspecto y sensacin de una aplicacin consiste en el modo en que se presenta al usuario (su aspecto) y en la forma
en que permite que el usuario interaccione con ella (su sensacin). Swing incorpora los aspectos y sensaciones Basic, Mac, Motif,
Windows, Organic y Metal. A diferencia tambin del AWT, Swing tiene sus propias implementaciones Java de los widgets y no depende
de los widgets nativos, por lo que permite una mayor flexibilidad.
Las principales desventajas de Swing son:
Alto consumo de recursos del sistema.
Lentitud con respecto a las aplicaciones nativas.
Tamao muy grande de la biblioteca.
Diferencias perceptibles en aspecto y sensacin con respecto a las aplicaciones nativas y ausencia de soporte de caractersticas
nativas.
Con respecto al ltimo punto, la posibilidad de usar el L&F ms adecuado para la plataforma que se est usando permite realizar
aplicaciones Java que se parezcan bastante a las nativas, pero suelen haber diferencias importantes en cuanto a la sensacin (el modo
en que se gestiona la interaccin del usuario). A veces da la sensacin de que Sun se olvid de los eventos nativos y defini los suyos
propios, al margen de la realidad de cada plataforma, lo que ocasiona comportamientos inesperados tanto para usuarios como para
desarrolladores. Existe tambin una dificultad adicional: al usar en una aplicacin un L&F similar al de una plataforma dada, Swing
debe simular el L&F, con el consumo adicional de recursos, la lentitud y, en ocasiones, el comportamiento anmalo con respecto a las
interfaces nativas que conlleva esta simulacin.
En la versin 1.4 de Java se han reescrito los algoritmos grficos, con lo que Swing corre ms rpido que en versiones anteriores, pero
dista mucho, salvo en condiciones muy especficas, de igualar en velocidad a las aplicaciones nativas. El consumo de recursos (en
particular de memoria) que hace Swing en esta versin sigue siendo alto, como se puede notar si se ejecutan simultneamente varias
aplicaciones con muchos componentes Swing.
Estn previstas nuevos L&F para Java 1.4.2 (tipo Windows XP y GTK) y Java 1.5 (un nuevo L&F, actual y moderno, para todas las
plataformas, similar al L&F Metal de Swing), pero el futuro -a la vista de los resultados anteriores- no se presagia excesivamente
prometedor.
[Fin de la segunda parte]
Fig. 13. El AWT de Java. Utiliza una arquitectura "peer", que el SWT de Eclipse evita.
Page 9 of 10 javaHispano. ECLIPSE
21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_2\Copia de EclipsePart...
Acerca del autor
Miguel ngel Abin
Miguel ngel Abin naci en Soria. Obtuvo la suficiencia investigadora en el Dpto. de Fsica Aplicada de la Universidad de Valencia con
una tesina sobre electromagnetismo. Realiz varios cursos de doctorado relacionados con electromagnetismo, electrnica,
semiconductores y cristales fotnicos. Ha recibido becas del IMPIVA (Instituto de la Mediana y Pequea Industria Valenciana) y de la
Universidad Politcnica de Valencia. Curs un Mster estadounidense en UML y Java y otro sobre tecnologas de Internet/Intranet.
Se incorpor en 1998 a AIDIMA, donde ha participado como investigador en 24 proyectos de investigacin nacionales e internacionales
relacionados con la Web semntica, tecnologas de la informacin, madera en construccin, biosensrica, bioelectrnica,
telecomunicaciones, visin artificial; as como en la Red de Excelencia de la Comisin Europea INTEROP 2003-2007. Algunos de los
proyectos europeos relacionados con las tecnologas semnticas en los que ha participado son ATHENA y STASIS
(http://www.stasis-project.net/).
El ao 2006 estuvo cuatro meses como investigador invitado en el departamento Lehrstuhl fr Messsystem und Sensortechnik de la
Universidad Politcnica de Munich (TUM), donde colabor en el desarrollo de nuevos mtodos para la deteccin de defectos en
superficies acabadas y en el diseo e implementacin de sistemas distribuidos de sensores para el sector del automvil y de energas
renovables. En 2007 recibi un premio BANCAJA-UPV por un proyecto relacionado con la calidad interna de la madera. En 2009 recibi
el premio internacional Schweighofer Innovation Prize -el premio ms prestigioso en el sector forestal y de la madera- por su
aportacin al desarrollo de nuevas tecnologas de evaluacin no destructiva de la madera en construccin.
Actualmente es Responsable del Departamento de Tecnologa y Biotecnologa de la Madera y del rea de Construccin de Madera.
Es coautor de 7 libros y guas tcnicas relacionadas con el uso de la madera en la construccin y la visin artificial. Tambin ha
publicado varios artculos cientficos en revistas como IEEE Transactions on Microwave Theory and Techniques y Wood Science and
Technology. Ha participado como ponente en congresos y conferencias como European Congress on Computational Methods in Applied
Sciences and Engineering, IEEE International Conference on Multisensor Fusion and Integration for Intelligent Systems, International
Conference on Space Structures (IABSE-IASS) y en reuniones COST (European Cooperation in Science and Technology). Ha publicado
ms de 22 artculos tcnicos en revistas sectoriales y tcnicas.
Es autor o coautor de 8 patentes, algunas de ellas en trmite. Tres de ellas corresponden a dispositivos y mtodos para detectar la
biodegradacin de la madera en construccin.
Actualmente, entre otros proyectos como SHBUILDINGS, WOODTECH, WOODRUB y CELLUWOOD, ha trabajado en SEMCONCEPT, un
proyecto de I+D+i para aplicar tecnologas semnticas (ontologas, buscadores semnticos) en el diseo conceptual de productos
industriales. Sus intereses actuales son la evolucin de la programacin orientada a objetos, Java, la Web semntica y sus tecnologas,
la arquitectura orgnica, el surrealismo y Pars, siempre Pars.

Page 10 of 10 javaHispano. ECLIPSE
21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_2\Copia de EclipsePart...

Anda mungkin juga menyukai