Primer artículo de la serie El Archipiélago Eclipse.
Esta serie expone qué es Eclipse, cuál es su estructura, en qué se diferencia o se asemeja a otros productos ya existentes, cuáles son sus ventajas e inconvenientes, cuál podría ser su utilidad para los desarrolladores (centrándose en la comunidad Java), qué estrategias empresariales subyacen bajo el proyecto Eclipse y cuál podría ser su futuro.
Autor: Miguel Ángel Abián
Publicado originalmente en javaHispano.
Primer artículo de la serie El Archipiélago Eclipse.
Esta serie expone qué es Eclipse, cuál es su estructura, en qué se diferencia o se asemeja a otros productos ya existentes, cuáles son sus ventajas e inconvenientes, cuál podría ser su utilidad para los desarrolladores (centrándose en la comunidad Java), qué estrategias empresariales subyacen bajo el proyecto Eclipse y cuál podría ser su futuro.
Autor: Miguel Ángel Abián
Publicado originalmente en javaHispano.
Primer artículo de la serie El Archipiélago Eclipse.
Esta serie expone qué es Eclipse, cuál es su estructura, en qué se diferencia o se asemeja a otros productos ya existentes, cuáles son sus ventajas e inconvenientes, cuál podría ser su utilidad para los desarrolladores (centrándose en la comunidad Java), qué estrategias empresariales subyacen bajo el proyecto Eclipse y cuál podría ser su futuro.
Autor: Miguel Ángel Abián
Publicado originalmente en javaHispano.
Miguel ngel Abin mabian ARROBA aidima PUNTO es ECLIPSE. (Del lat. eclipsis, y ste del gr. kleipsis, de eklepein, abandonar.). m. Astron. Oscurecimiento del sol o de un cuerpo celeste por interposicin de otro astro que le oculta directamente o que infiere la luz que le ilumina. [Diccionario Enciclopdico SALVAT Universal] 1. Introduccin El artculo El archipilago Eclipse pretende exponer qu es Eclipse, cul es su estructura, en qu se diferencia o se asemeja a otros productos ya existentes, cules son sus ventajas e inconvenientes, cul podra ser su utilidad para los desarrolladores (centrndose en la comunidad Java), qu estrategias empresariales subyacen bajo el proyecto Eclipse y cul podra ser su futuro. Debido a su extensin, unas diecisiete mil palabras, se publicar dividido en cuatro partes. En este artculo no se explica cmo utilizar Eclipse o cmo desarrollar aplicaciones Java con l, pues existe una amplia documentacin acerca de estos temas en la ayuda del producto y en http://www.eclipse.org. Sin embargo, existe poca informacin -y toda en ingls- acerca de algunos de los puntos sealados arriba; adems, mucha de esta escasa informacin est claramente sesgada, por motivos de estrategia comercial y empresarial, a favor o en contra del producto. Para obtener una valoracin imparcial de Eclipse es obligatorio leer a menudo entre lneas, comprobar y contrastar cada afirmacin, prestar atencin a lo sobreentendido -que suele ser lo importante- y probar muchos productos. El archipilago Eclipse trata de cubrir este hueco informativo, de una manera independiente e imparcial. Hueco absoluto, por lo que s, en nuestro idioma. Quiz no lo consiga, pero al menos mostrar la punta del iceberg, y espero sinceramente que anime a algunos desarrolladores a contarnos sus experiencias con Eclipse y sus opiniones. Aclarado el objetivo del artculo, es el momento de comenzar el recorrido por los islotes que pueblan el archipilago Eclipse. 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 12 javaHispano. ECLIPSE 21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_1\Copia de EclipsePart... 2. Los entornos de desarrollo integrado (IDEs) Los desarrolladores de software se dividen en dos tipos: los que usan entornos de desarrollo integrado o IDEs (Integrated Development Environments) y los que no. Estos ltimos prefieren un editor de texto (como Emacs o el Bloc de notas), un compilador y un depurador. Los pertenecientes al primer tipo, sin embargo, prefieren usar IDEs para ayudarles a la generacin del cdigo y a la construccin de proyectos. Tarde o temprano, independientemente del grupo al cual pertenezcan, todos se enfrentan a sus propios problemas. No hace mucho (cronolgicamente hablando, que no tecnolgicamente), la nica manera de desarrollar aplicaciones en C, COBOL o Fortran era recurrir a un editor de texto, un compilador y un depurador. Con la llegada de los lenguajes de cuarta generacin, comenzaron a aparecer las primeras herramientas de desarrollo integrado, muy primitivas comparadas con las que podemos encontrar ahora (ya sea gratuita o comercialmente). Cualquier entorno actual de desarrollo integrado ofrece, al menos, el control del editor de cdigo, del compilador y del depurador desde una nica interfaz de usuario. Su misin consiste en evitar tareas repetitivas, facilitar la escritura de cdigo correcto, disminuir el tiempo de depuracin e incrementar la productividad del desarrollador. Estas tareas pueden realizarse de muchas maneras distintas: mediante la inclusin de asistentes para las tareas ms habituales y mecnicas, de editores que completen automticamente el cdigo y sealen los errores sintcticos, de gestores de archivos fuente, etc. En teora, un entorno de desarrollo integrado o IDE debera aportar funcionalidades al desarrollador durante todas las etapas del ciclo de vida del desarrollo de software (desde el anlisis y diseo a la distribucin del producto y su mantenimiento), de ah la palabra "integrado". En la prctica, solamente los IDEs ms modernos cumplen esta condicin y, a menudo, de forma incompleta. Despus del impresionante xito de Visual Basic, ha sido frecuente asumir que los IDEs necesitan incluir herramientas visuales de generacin de interfaces de usuario (GUI builders), pero esta premisa resulta inexacta. Algunos IDEs carecen de diseadores grficos visuales y no por ello dejan de ser excelentes. En el caso especfico de Java, la mayor parte de las aplicaciones actuales se ejecutan en el lado del servidor y no precisan interfaz grfico. Muchas veces resulta ms conveniente disponer de un buen editor JSP/HTML que de un vistoso diseador grfico. Los IDEs, por supuesto, tambin tienen sus desventajas: en comparacin con el clsico triunvirato editor de texto- compilador-depurador consumen muchsimos ms recursos, tienden a ser lentos (particularmente los escritos en Java) y su manejo requiere un cierto aprendizaje que se tira a la papelera cuando se pasa a otro IDE, debido a la heterogeneidad de los IDEs que proliferan en el mercado. Algunos IDEs son sumamente complejos de manejar, incluso para llevar a cabo las tareas aparentemente ms sencillas; en otros los manuales demuestran al indefenso lector el odio, desinters y ausencia de motivacin pedaggica que deben de sentir aquellos que los escriben. En Fig. 1. Eclipse como pentagrama. La figura muestra distintas facetas de Eclipse, que se abordarn a lo largo del artculo. Page 2 of 12 javaHispano. ECLIPSE 21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_1\Copia de EclipsePart... ocasiones, cuando generan cdigo, es mejor mirar hacia otra parte o empezar de cero. Todava no existe un IDE universal o perfecto, capaz de reunir todas las caractersticas que un desarrollador puede necesitar. Por lo general, los puntos dbiles de un IDE coinciden con los puntos fuertes de otro. Un buen ejemplo lo proporciona la comparacin entre WebSphere Studio Application Developer (de IBM) y JBuilder (de Borland). JBuilder posee un excelente diseador de interfaces grficas para el usuario y proporciona una vista de la estructura jerrquica de los formularios que muestra todos los componentes visuales (botones, cuadros de texto,...) organizados por contenedores. WebSphere Studio Application Developer proporciona, en comparacin, un diseador grfico mucho ms simple, pero ofrece un editor JSP/HTML magnfico (uno de los mejores, si no el mejor, del mercado), que permite insertar componentes visuales, componentes ActiveX o imgenes, y ver la vista previa de las pginas web, entre otras muchas caractersticas. El editor HTML de JBuilder se limita, en cambio, a poco ms que colorear las palabras reservadas. Como puede extrapolarse a partir del ejemplo anterior, el desarrollador que trabaje en varios campos simultneamente (desarrollo de servicios Web, creacin de Enterprise JavaBeans, diseo de pginas web, edicin de XML) necesitar usar varios IDEs o herramientas para trabajar de forma ptima. En algunas ocasiones, la eleccin del IDE por parte de los desarrolladores no es libre, sino que est condicionada por decisiones previas (sistemas de gestin de bases de datos, servidores de aplicaciones). Por ejemplo, resulta muy fcil y cmodo construir aplicaciones Java capaces de trabajar con Oracle usando el JDeveloper de Oracle, por supuesto. Existen empresas que suministran componentes o mdulos, aadidos ya a sus herramientas o por separado, con el fin de proporcionar soporte para las plataformas J2EE ms populares pero, qu casualidad, son las que no comercializan sus propios servidores de aplicaciones o apenas obtienen ingresos de ello. Borland proporciona, por ejemplo, mdulos en su JBuilder para WebLogic, Tomcat, iPlanet (Sun ONE) y Websphere (la cuota de Borland en el mercado de servidores de aplicaciones no llega al 1%), pero Websphere y WebLogic (de IBM y BEA, respectivamente) no suministran directamente mdulos para JBuilder, continuando con el ejemplo, porque son los lderes en servidores de aplicaciones y prefieren dirigir a los desarrolladores hacia sus propios productos. Una regla a menudo cierta para los IDEs comerciales es la del "80-20%": El ochenta por ciento de las caractersticas incorporadas slo son tiles para el 20 por ciento de los usuarios. Cuntas veces nos hemos encontrado con IDEs poco considerados que exprimen nuestras mquinas como si fueran limones, hasta la ltima gota? Muchas veces el abuso de los recursos del sistema se origina por la instalacin con el IDE de muchas caractersticas poco o nada utilizadas. Esta inclusin de utilidades no solicitadas ni necesitadas tambin redunda en el precio del producto. Algunas compaas aprovechan la adicin de unas pocas caractersticas nuevas, no siempre tiles, para lanzar nuevas versiones de sus IDEs. Pese a todos estos inconvenientes, los IDEs suelen proporcionar una importante ayuda a la hora de conservar un registro de las versiones, generar y mantener la documentacin de cada etapa del proyecto, y evitar tareas montonas y repetitivas, dada la magnitud y complejidad de los proyectos empresariales que se afrontan actualmente, inabordables en solitario. El lector interesado en adquirir una panormica rpida de las herramientas e IDEs open source o free software para Java puede consultar el excelente artculo Arquitectura empresarial y open source, J2EE de Martn Prez y Alberto Molpeceres, publicado en javaHispano y llamado a convertirse en un clsico. La irrupcin de Eclipse, un nuevo jugador en el mercado de IDEs para Java apadrinado por IBM y respaldado por un poderoso consorcio de empresas, supone un firme intento de homogeneizar el mercado de IDEs (no slo de Java) y de establecer un estndar para las herramientas de desarrollo de software. Eclipse no es un IDE ms a aadir a la lista: el objetivo de IBM es crear una plataforma de desarrollo modular que cualquier herramienta de desarrollo pueda usar con cualquier lenguaje de programacin. Eclipse anhela ser, no estar. 3. Terminologa oficial de Eclipse. Segn la documentacin oficial de Eclipse (http://www.eclipse.org), Eclipse es un proyecto de desarrollo de software de cdigo fuente abierto (open source) cuyo objetivo es la construccin de herramientas integradas para el desarrollo de aplicaciones. La palabra "Eclipse" se utiliza en dicha documentacin para referirse al proyecto en conjunto de creacin de herramientas integradas para desarrollar aplicaciones. Este proyecto global se compone de tres subproyectos (vase http://www.eclipse/projects): Proyecto Eclipse Proyecto Herramientas de Eclipse Proyecto Tecnologa Eclipse El proyecto Eclipse es el subproyecto de Eclipse dedicado a proporcionar una plataforma base comn para el desarrollo de herramientas integradas. Este proyecto, a su vez, se subdivide en otros tres, dedicados al desarrollo y mejora de la plataforma Eclipse (ncleo bsico o kernel de Eclipse), del JDT (Java Development Tools) y del PDE (Plug-in Development Kit). El trmino "Eclipse SDK (Standard Development Kit)" alude al conjunto de la plataforma Eclipse, el JDT y el PDE; por tanto, puede afirmarse que el proyecto Eclipse se dedica, en conjunto, al desarrollo y mejora del SDK de Eclipse. Todos estos acrnimos se irn explicando a lo largo del artculo. Page 3 of 12 javaHispano. ECLIPSE 21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_1\Copia de EclipsePart... Aunque entiendo la preocupacin de Eclipse (como proyecto global) por definir correctamente los trminos desde un principio para conseguir una documentacin precisa y sin ambigedades, como este artculo pretende ser informativo, de propsito general y no acabar sumergido en un enredo de siglas, usar "Eclipse" para designar tanto al kit SDK de Eclipse (el producto o herramienta) como al proyecto global. Dependiendo del contexto podr deducirse el significado. Por ejemplo, en este artculo, trminos como "la programacin de Eclipse" o "la licencia de Eclipse" hacen referencia al SDK de Eclipse, mientras que "las metas de Eclipse" se refiere al proyecto global. No usar el trmino "proyecto Eclipse" (aunque sera lo lgico) para referirme al proyecto global, pues estrictamente hablando constituye un subproyecto de Eclipse, de acuerdo con la terminologa oficial. En resumen, en lo que sigue: Se usa "Eclipse" para designar tanto al SDK de Eclipse como al proyecto global. Se utiliza "proyecto Eclipse", por coherencia con la terminologa oficial, para designar a un subproyecto del proyecto global, encargado del desarrollo y mejora del SDK. Se utiliza "plataforma Eclipse" o "plataforma" slo para designar el ncleo o kernel del SDK de Eclipse (o, equivalentemente, del proyecto Eclipse). Como la palabra "plataforma" se utiliza tambin para designar una combinacin de hardware, sistema operativo y entorno grfico, en caso de ambigedad se usar "plataforma Eclipse". 4. Qu es la plataforma Eclipse? En la antigua Grecia, al pie del monte Parnaso, existi un orculo muy famoso: el orculo de Delfos. ste se expresaba en distintas lenguas y sus respuestas solan ser muy crpticas y ambiguas. Una vez pronostic: "Si el rey Creso cruza el ro Halys con su ejrcito, destruir un poderoso imperio". Y as ocurri, pero result ser el suyo. Cuando se lee en la documentacin de IBM que "Eclipse es un IDE abierto y extensible para todo y, sin embargo, para nada en particular", puede surgir esta razonable pregunta: Habr aprendido ingls el orculo de Delfos y se dedica a redactar la documentacin de Eclipse para IBM? Si no ha sido as, la definicin no desentonara, por su ambigedad y laconismo, con las respuestas habituales del orculo. Adems, tal y como se ir mostrando, resulta tan cierta como muchas de las enigmticas respuestas que daba el orculo. Una definicin un poco ms concreta se puede resumir as: "[es] una plataforma universal para integrar herramientas de desarrollo" con una "arquitectura abierta, basada en plug-ins". Plataforma universal, pues emplea una estructura abierta de plug-ins (extensiones; to plug in significa conectar y plug, enchufe o conector) que permite expandir las capacidades de la plataforma base hasta el infinito. Arquitectura abierta, en definitiva, porque es un producto de cdigo fuente abierto u open source. Desde el punto de vista del usuario que le eche un vistazo por vez primera, la plataforma Eclipse resulta ser un IDE Fig. 2. Jerarqua de proyectos en Eclipse. Page 4 of 12 javaHispano. ECLIPSE 21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_1\Copia de EclipsePart... (entorno de desarrollo integrado) de cdigo fuente abierto, la mayor parte del cual ha sido escrito en Java. En cuanto al nombre, no puedo evitar pensar que es una referencia poco amistosa a Sun Microsystems. Una interpretacin quiz maliciosa, pero cuando a uno le dan un cuchillo es inevitable no acabar cortando algo: Cuntos crticos literarios resistieron la tentacin de asociar a Sauron el Seor Oscuro de El seor de los Anillos con Hitler?, Cuntos lectores no identificaron al cerdo Napolen de Rebelin en la granja con Stalin cuando se public el libro? 5. Historia de Eclipse Gran parte de la programacin de Eclipse fue realizada por IBM antes de que se creara el proyecto Eclipse como tal. Las distintas versiones de VisualAge se construyeron usando Smalltalk (un lenguaje OO no excesivamente amigable) en un entorno de desarrollo llamado Envy. Con la aparicin de Java en los 90, IBM desarroll una maquina virtual vlida tanto para Smalltalk y Java. La rpida expansin de Java y sus ventajas con miras a una Internet en plena expansin obligaron a IBM a plantearse el abandono de esta maquina virtual dual y la construccin de una nueva plataforma basada en Java desde el principio. El producto final resultante es Eclipse, que ya haba costado unos 40 millones de dlares a IBM en el ao 2001. A finales de 2001 IBM puso el proyecto Eclipse en manos de un consorcio (Eclipse.org) de empresas fabricantes de herramientas de software. Originalmente la junta directiva del consorcio inclua a Borland, MERANT, IBM, QNX Software Systems, Rational Software, Red Hat, SuSE, TogetherSoft y Webgain; en junio de 2002 se agregaron Hitachi, Instantiations, MontaVista, Scapa Technologies, Telelogic,Trans-Enterprise Integration y Serena; en septiembre de 2002 se sumaron ETRI, HP, MKS, SlickEdit y se aprob la entrada de Oracle; en diciembre de 2002 entraron como miembros AltoWeb, Catalyst Systems, Flashline, Parasoft, SAP, teamstudio y TimeSys. El grupo OMG (Object Management Group) tambin forma parte de la junta directiva. La ltima versin estable de Eclipse (Eclipse 2.0.2, lanzada en noviembre de 2002) se encuentra disponible para los sistemas operativos Solaris 8, HP-UX, AIX, Windows 98/ME/2000/XP, Linux SuSE 7.1, Linux Red Hat 7.1 y QNX. Todas las versiones de Eclipse necesitan tener instalado en el sistema el JRE o JDK versin 1.3 o superior. Existe ya una versin 2.1 de Eclipse, pero no est tan probada, por ahora, como la versin 2.0.2 y todava no ha sido marcada por Eclipse.org con la "R" de Released (lanzada). Esta ltima versin se encuentra disponible para los sistemas operativos anteriores y para Mac OS X. Las nuevas caractersticas que ofrece con respecto a la versin oficial 2.0.2 an necesitan pulirse y depurarse, pero probablemente se lanzar como la ltima versin estable de Eclipse antes de junio de 2003. 6. Eclipse y el software open source. Un matrimonio de conveniencia bien avenido. Eclipse se distribuye actualmente bajo la licencia CPL (Common Public License o Licencia) versin 1.0 de IBM, aprobada por la organizacin Open Source Initiative (OSI). A diferencia de otros proyectos open source (o, ms exactamente, free software) que no permiten que se deriven de ellos trabajos propietarios o cerrados, Eclipse puede extenderse -al estar bajo esta licencia CPL- mediante la inclusin de plug-ins propietarios o ser usado como base para la creacin de nuevas herramientas y, tras reempaquetarse y compilarse el cdigo resultante, el producto final puede venderse de forma comercial, mantenindose pblico el cdigo de Eclipse utilizado o modificado, pero sin la obligacin de poner a disposicin del pblico el nuevo cdigo aadido (ste ltimo puede ir bajo la licencia que se desee). Como es bien sabido, el software propietario o cerrado se caracteriza porque su redistribucin y modificacin est prohibida o requiere autorizacin previa; la mayor parte del software comercial es propietario, pero no cabe identificar ambos tipos de software: se pueden obtener beneficios econmicos de Eclipse (al igual que de cualquier otro proyecto de cdigo fuente abierto o de software libre). Al igual que cualquier licencia autorizada o admitida por la OSI, la licencia CPL exige el cumplimiento de una serie de requisitos, algunos de los cuales figuran a continuacin (el resto pueden consultarse en http://www.opensource.org): Distribucin gratuita: Cualquier software bajo licencia CPL puede distribuirse libremente, permitindose la venta sin que se requiera el pago de royalties o compensaciones de cualquier tipo. Cualquier programa bajo licencia CPL debe permitir la distribucin en forma de cdigo fuente y en forma compilada. Si el producto no incluye el cdigo fuente, deber incluirse en l la manera de conseguirlo. Cualquier programa bajo licencia CPL debe permitir la produccin de trabajos derivados a partir de l y la introduccin de modificaciones en el programa original. Un programa difundido bajo licencia CPL puede ser distribuido por cualquiera en forma compilada o de cdigo fuente. En el primer caso, el programa puede ser distribuido bajo la licencia que determine el distribuidor, siempre que se cumplan los puntos expuestos en el apartado 3 de la CPL v 1.0 (Requisitos); entre otras condiciones, deber establecerse que el cdigo fuente est disponible por parte de las personas o empresas que hayan contribuido. En el segundo caso, cuando un programa bajo licencia CPL se distribuya en forma de cdigo fuente, quedar automticamente bajo la "sombrilla" de la licencia CPL y no podr utilizarse ninguna otra licencia. IBM distribuye una Page 5 of 12 javaHispano. ECLIPSE 21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_1\Copia de EclipsePart... versin comercial de Eclipse, en forma compilada, llamada WebSphere Studio Workbench. En consecuencia, cualquier programa bajo licencia CPL puede compilarse (aunque no se haya efectuado ninguna modificacin sobre el cdigo original) y venderse el resultado de modo comercial sin requerir el pago de royalties u otras formas de compensacin, de acuerdo con los trminos de CPL; lo cual implica, aparte de otras obligaciones, poner a disposicin del pblico el cdigo fuente. Si una aplicacin tiene una parte licenciada bajo CPL y el resto no (propietaria), la parte bajo CPL debe cumplir con esta licencia y, en consecuencia, el cdigo de esa parte debe estar a disposicin del pblico. El cdigo fuente de la parte propietaria no tiene por qu licenciarse bajo CPL ni estar disponible al pblico. En contraposicin, licencias como la GNU GPL (GNU General Public License, bajo la cual se distribuye Linux) exigen que, si se incorpora cdigo bajo GPL a un programa, aunque ste sea propietario, el programa completo se licencie bajo GPL (ponindose, por tanto, a disposicin del pblico todo el cdigo fuente, tanto GPL como no GPL). Desde el punto de vista de una empresa interesada en mantener la propiedad de su software, el cdigo propietario que se incorporara a un programa bajo licencia GPL o similar sera infectado o contaminado por el cdigo GPL y perdera su carcter propietario. Con la licencia CPL, el concepto de copyright sigue vigente: el copyright de los programas, el cdigo, etc. pertenece a sus legtimos autores (u a otras personas o entidades a las que hayan cedido su copyright). Cuando un programa se distribuye bajo la licencia CPL, el creador del programa y poseedor de su copyright o de sus derechos de autor concede a cualquiera una licencia de copyright que proporciona derechos de autor para usar, modificar, redistribuir, comercializar el programa y/o las modificaciones efectuadas sobre ste (sujeta a ciertos trminos y restricciones; vase la licencia completa en http://www-124.ibm.com/developerworks/oss/CPLv1.0.htm). El autor transfiere estos derechos de propiedad intelectual, pero no renuncia a su titularidad. Por este motivo, no es extrao ver el copyright de IBM en la documentacin de Eclipse y en el propio producto, pues desarroll inicialmente la mayor parte de ste. Cualquier desarrollador puede modificar el cdigo open source de Eclipse, redistribuirlo, comercializarlo crear trabajos derivados, etctera sin pagar royalties a IBM, pero no puede eliminar o modificar el copyright de IBM. En el supuesto de que modificara el cdigo o aadiera nuevos mdulos y redistribuyera comercialmente el resultado (ya fuera bajo licencia CPL o no), el desarrollador poseera el copyright de su trabajo, pero IBM seguira siendo el titular del copyright de las partes que cre, aunque no podra exigir royalties o compensaciones por el uso comercial o lucrativo de su cdigo original. Cualquiera puede distribuir de forma comercial, con la licencia que estime oportuna, plug-ins para Eclipse no derivados de l, aunque hayan sido desarrollados para la plataforma Eclipse y se haya consultado el cdigo fuente de sta para crearlos. En este caso no se necesita poner a disposicin de otros el cdigo fuente, pues estos plug-ins quedan fuera del alcance de la licencia CPL. Algunas personas aplauden el mecenazgo de IBM sobre proyectos open source, que comenz con su apoyo incondicional a Linux en 1997 y contina hasta hoy. IBM ha invertido unos mil millones de dlares en Linux y productos relacionados, y se calcula que cuenta con unas cinco mil personas (entre empleados y colaboradores) Fig. 3. Voces desde el software libre y el software open source. Page 6 of 12 javaHispano. ECLIPSE 21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_1\Copia de EclipsePart... dedicadas a temas relacionados con este sistema operativo. En una conversacin, hace ya varios aos, una responsable de marketing de IBM me dijo: "Linux es ms que alguien de la familia". Frase un tanto intrigante por su ambigedad: Quera mucho a Linux o poco a su familia? Esta opinin, como supe poco despus, no era el fruto de una concienzuda reflexin sobre el tema ni una muestra de cario desmedido y un tanto fetichista por un sistema operativo (en realidad, ella nunca haba llegado a usar Linux: trabajaba con Windows 95), sino una cuestin de estrategia comercial y de marketing. Al leer las declaraciones de algunos responsables de IBM, uno se da cuenta de que la frase "obsesin por el software open source" refleja a la perfeccin el sentir de la empresa. Pero casi se debe mirar hacia otro lado para no justificar lcidamente esta obsesin tan racional; qu mejor estrategia para IBM que apoyar un producto gratuito, serio competidor de Windows NT, Windows 2000 Server y Windows .Net Server, y recomendar desinteresadamente a los clientes del sistema operativo Solaris de Sun la migracin a un entorno Linux sobre plataformas eServer de IBM, argumentando reducciones sustanciales en el coste total de la propiedad y mejoras considerables del rendimiento de los sistemas. Obsesin por el software open source? Ms bien obsesin por matar dos pjaros de un tiro. Casualidad?... S, claro; por eso los directivos de IBM cobran sus abultados sueldos, por casualidad... En el fondo, todos conocemos el nombre del juego. Linux y Eclipse, pese a su carcter open source y su calidad indudable, son herramientas utilizadas por IBM (como podra ser cualquier otra empresa; por qu engaarse?, las empresas son depredadores en el amplio ecosistema del libre mercado) para obtener ventajas competitivas frente a sus competidores (Sun, Microsoft, HP, BEA, etc.), ventajas que favorecern -directa o indirectamente- el retorno a sus arcas de las inversiones efectuadas. Ahora bien, el carcter open source de Eclipse tambin repite un mensaje constante a lo largo de la red de redes: Aqu no hay privilegios exclusivos. Cualquiera puede colaborar y ganar algo con ello. Los desarrolladores open source puede ganar prestigio y ostentar su copyright; las empresas pueden sacar rentabilidad a sus inversiones en Eclipse y conseguir productos que ellas solas jams hubieran podido crear. Un elevado porcentaje del xito de Eclipse y de las mejoras continuas que experimenta se debe a la naturaleza de su licencia: la licencia CPL de IBM supone ventajas comerciales frente a licencias como la GNU GPL, las cuales impiden que se deriven o incorporen trabajos propietarios -como es bien sabido, los objetivos de las empresas con nimo de lucro, aunque a algunas les cause sarpullidos reconocerlo pblicamente, se fundamentan en dos reglas: 1) Gane dinero y mantenga su propiedad; 2) Nunca olvide la primera regla (eso s, cada una las implementa como puede)-. Muchas empresas (grandes, PYMEs) pueden desarrollar plug-ins propietarios o sus propias herramientas derivadas de Eclipse y obtener beneficios de su trabajo sin ver mermadas sus ganancias por el pago de royalties, y los desarrolladores pueden planear con rapidez sus propias extensiones, modificaciones o mejoras, a la vista del cdigo fuente de Eclipse y de los productos derivados bajo licencia CPL. Individuos y empresas pueden trabajar en simbiosis, lograr sus objetivos, contribuir a la mejora continua de Eclipse y ofrecer mejores productos (ms competitivos en prestaciones y precio) a los consumidores finales. Al usuario final poco le importa que el gato sea blanco, negro, pardo o el pedigr de sus progenitores: lo importante es que cace ratones. Y que los cace bien. Aparte de las distintas licencias de Linux y Eclipse, hay tambin otro rasgo diferenciador entre ambos proyectos que contribuye a la vertiginosa expansin de Eclipse: poca gente (comparativamente hablando) tiene conocimientos de programacin de sistemas operativos; sin embargo, cualquier desarrollador usuario de Eclipse -y hay muchos ms desarrolladores que expertos en sistemas operativos- es un potencial colaborador del proyecto Eclipse. 7. Pero era necesario aadir un IDE ms a la larga lista de los ya existentes? El lector escptico podra pensar que Eclipse no deja de ser otra herramienta de desarrollo para Java, similar a herramientas como JBuilder (Borland), JDeveloper (Oracle) NetBeans (Sun), y que el uso de la palabra "plataforma" forma parte de una estrategia comercial de IBM, no muy innovadora. Sin embargo, no es as: Eclipse presenta cuatro caractersticas conjuntas muy importantes, ya esbozadas en apartados anteriores, que justifican el uso de "plataforma": Eclipse se beneficia de la capacidad de aceptar plug-ins open source o propietarios, escritos por los propios desarrolladores Java, que pueden extender la plataforma y, a su vez, otros plug-ins. Esta arquitectura abierta puede concebirse figuradamente como una pennsula (la plataforma Eclipse) rodeada de un archipilago de plug-ins que expanden sus capacidades hasta donde llegue la imaginacin y la destreza de los desarrolladores. Eclipse cuenta con el respaldo de un consorcio de empresas muy importantes, ya detalladas. Eclipse es neutral con respecto a la plataforma y el lenguaje (aunque en su mayor parte est escrito en Java). Eclipse permite realizar ntegramente el proceso de desarrollo de software tal y como se entiende en la actualidad, desde el anlisis inicial de requerimientos hasta la distribucin final y el mantenimiento. Casi con toda seguridad, Rational Software, con su metodologa RUP (Rational Unified Process), y TogetherSoft (adquirida por Borland hace unos meses) han influido mucho en esta caracterstica. La primera caracterstica no es del todo nueva, pues la plataforma NetBeans de Java (tambin una iniciativa open source) sigue una estrategia similar, pero no cuenta con el respaldo de empresas tan importantes como las citadas. En relacin con la ltima caracterstica, casi todas las herramientas de desarrollo en Java proporcionan algn tipo de Page 7 of 12 javaHispano. ECLIPSE 21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_1\Copia de EclipsePart... asistencia para el modelado y el diseo, pero no de forma tan detallada y continua, de principio a fin, como el que puede proporcionar Eclipse mediante plug-ins. Eclipse puede considerarse, en justicia, como un IDE para Java, una plataforma de integracin de herramientas de desarrollo y un framework de aplicaciones. 8. La arquitectura del SDK de Eclipse: una vista area. El Standard Development Kit (Kit de desarrollo estndar) de Eclipse se compone de tres elementos: La Plataforma Eclipse (cuya arquitectura interna se describir ms adelante) El JDT (Java Development Tooling, las herramientas de desarrollo Java). El PDE (Plug-in Development Environment, el entorno de desarrollo de plug-ins). Tal y como ya se explic, su desarrollo y mejora est en manos del proyecto Eclipse (subproyecto de Eclipse). En esencia, la plataforma Eclipse es una plataforma para el desarrollo general de herramientas (recordemos: "un IDE para cualquier cosa y para nada en particular"). Por s sola, la plataforma resulta de escasa utilidad para el usuario ltimo pues se halla capacitada para trabajar con cualquier tipo de fichero (no necesariamente con ficheros asociados a lenguajes de programacin, sino tambin con ficheros generados por aplicaciones como Word, ficheros de vdeo, de grficos, etctera), pero carece del conocimiento especfico de cmo tratarlos. Es decir, Eclipse puede mostrar un fichero C, por ejemplo, pero desconoce la gramtica y sintaxis de C (palabras reservadas, bloques, etc.). La palabra main no significa ms que la palabra vino para la plataforma aislada, pues no proporciona facilidades especficas para la depuracin, edicin, etc. La utilidad real de la plataforma por s sola para el programador de C -o de cualquier otro lenguaje, incluido Java- no es mayor que la de un editor de texto plano (aunque con un extraordinario entorno grfico alrededor). Sin embargo, para el desarrollador de plug-ins y de IDEs se presenta una situacin muy distinta: la plataforma por s sola le proporciona un conjunto de frameworks, un conjunto de reglas de integracin con la plataforma, una interfaz grfica francamente esplndida, soporte para el control de versiones, infraestructura para la depuracin independiente del lenguaje usado y el control de las bibliotecas grficas, entre otras muchas caractersticas. Los desarrolladores de plug-ins e IDEs pueden usar todas estas funcionalidades ya incorporadas para desarrollar sus propias herramientas que expandan la plataforma. Cuando se usa la plataforma Eclipse con plug-ins, empieza a vislumbrarse la potencia que ofrece a los usuarios no desarrolladores de plug-ins o IDEs. Los plug-ins explican a la plataforma cmo se deben tratar y gestionar los distintos tipos de archivos, y aumentan la funcionalidad del sistema resultante (o, dicho de otro modo, extienden o amplan la plataforma). Fig. 4. Estructura general de Eclipse. Extrado de la documentacin oficial de Eclipse. Page 8 of 12 javaHispano. ECLIPSE 21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_1\Copia de EclipsePart... Para aadir nuevas capacidades o funcionalidades a la plataforma Eclipse se usan los puntos de extensin. Los puntos de extensin son, segn la documentacin oficial de Eclipse, "lugares bien definidos del sistema donde otras herramientas (llamadas plug-ins) pueden aadir funcionalidad". De conformidad con la terminologa orientada a objetos, un punto de extensin no deja de ser una interfaz que deber ser implementada por cualquier desarrollador interesado en extender la plataforma. Conviene destacar un aspecto importante: el mecanismo de los puntos de extensin define el nico modo de aadir nuevas funcionalidades a la plataforma. Los plug-ins no slo extienden o amplan la plataforma base, tambin pueden extender, a su vez, otros plug-ins que hayan definido sus propios puntos de extensin. Un plug-in puede hacer pblicos interfaces que otros plug-ins pueden implementar. Las implementaciones de los interfaces (llamadas extensiones) mostrados por los puntos de extensin se realizan tpicamente en Java, aunque algunos puntos de extensin pueden acomodar extensiones proporcionadas por ficheros ejecutables nativos o componentes ActiveX; incluso pueden programarse en lenguajes de script. El principal obstculo con el cual se enfrentan las extensiones no realizadas en Java es la falta de acceso a la funcionalidad completa de la plataforma Eclipse. Por otro lado, los plug-ins slo se cargan cuando son necesarios; as se evita disminuir innecesariamente el rendimiento de Eclipse. Tal y como se detall en el Apdo. 2, esta propiedad traza una clara separacin, en cuanto a consumo de recursos, entre los IDEs comerciales y Eclipse. A diferencia de estos, Eclipse solo carga en memoria los plug-ins cuando los necesita. Por ejemplo, el JDT agrupa un conjunto de plug-ins que extienden la plataforma al proporcionar caractersticas para la edicin, compilacin, depuracin y ejecucin de cdigo Java (explica a la plataforma cmo entender los ficheros Java, en definitiva). El JDT viene incluido en el SDK de Eclipse, pero resulta factible desarrollar otros plug-ins que permitan a la plataforma trabajar con otros lenguajes. Se encuentran ya disponibles plug-ins del consorcio Eclipse.org que proporcionan IDEs para C/C++ y COBOL. El Java Development Tooling (JDT) es, tal y como ya se ha escrito arriba, un conjunto de plug-ins que extienden la plataforma al proporcionar caractersticas para la edicin, compilacin, depuracin y ejecucin de cdigo Java. El Plug-in Development Environment (PDE) proporciona herramientas y asistentes que automatizan y facilitan considerablemente la creacin, desarrollo, depuracin y distribucin de plug-ins. Fig. 5. Arquitectura de los plug-ins de Eclipse. Traducido de la documentacin oficial de Eclipse. Page 9 of 12 javaHispano. ECLIPSE 21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_1\Copia de EclipsePart... La imagen mental que me viene a la cabeza cuando pienso en la arquitectura de Eclipse, que tal vez sea til al lector, es la de una pennsula (la plataforma) rodeada de un archipilago (los plug-ins), pudiendo cada islote del archipilago tener su propio archipilago (plug-ins extendidos por otros plug-ins). Si acercramos una lupa a Eclipse, nos daramos cuenta de su geometra fragmentaria, discontinua e incompleta; conforme furamos aproximando la lupa, podramos observar cmo todos sus componentes, salvo uno, se descomponen en plug-ins compuestos, a su vez, por otros plug-ins ms simples, y as sucesivamente. Veramos, acercando mucho la lupa, los puntos de extensin de los plug-ins, algunos ocupados (es decir, implementados), pero la mayora no. Los puntos de extensin libres estaran disponibles para futuras ampliaciones de Eclipse, ampliables tambin. Esta geometra recursiva me recuerda, superficialmente, a las figuras fractales de Mandelbrot. Fig. 6. Vista del PDE. Extrado de la documentacin oficial de Eclipse. Page 10 of 12 javaHispano. ECLIPSE 21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_1\Copia de EclipsePart... [Fin de la primera parte] 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. Fig. 7. Eclipse como archipilago Page 11 of 12 javaHispano. ECLIPSE 21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_1\Copia de EclipsePart...
Page 12 of 12 javaHispano. ECLIPSE 21/05/2014 file://F:\ArticuloEclipse\Art_Eclipse_1\Copia de EclipsePart...