-
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 10javaHispano. ECLIPSE
21/05/2014file://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 10javaHispano. ECLIPSE
21/05/2014file://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 10javaHispano. ECLIPSE
21/05/2014file://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 10javaHispano. ECLIPSE
21/05/2014file://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 10javaHispano. ECLIPSE
21/05/2014file://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 10javaHispano. ECLIPSE
21/05/2014file://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 10javaHispano. ECLIPSE
21/05/2014file://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 10javaHispano. ECLIPSE
21/05/2014file://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 10javaHispano. ECLIPSE
21/05/2014file://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 10javaHispano. ECLIPSE
21/05/2014file://F:\ArticuloEclipse\Art_Eclipse_2\Copia de
EclipsePart...