RSS

Eclipse, plug-ins y demás …

06 Mar

Hola de nuevo,

últimamente he estado leyendo un poco sobre Eclipse y todo lo que rodea a este IDE. Seguramente muchos de vosotros lo utilizáis para desarrollar. Yo al menos lo utilizo y al leer un poco la documentación oficial sobre y alguno de los libros sobre Eclipse me he dado cuenta de lo mucho que desconozco una herramienta que utilizo todo los días y que tiene un montón de funcionalidades que no uso.

Además he logrado entender mejor como está montado Eclipse y lo fácil que es construir extensiones para él llamadas plug-ins. Previamente ya había desarrollado plug-ins ‘caseros’, pero por razones de trabajo estoy intentando hacer las cosas de una manera algo más ‘pofesional’🙂.

Comencemos con un poco de historia pues. El origen de Eclipse se llama VisualAge. En un pasado muy muy lejano se utilizaba VisualAge. Aquí abro un parentesis, donde estoy trabajando actualmente los desarrolladores siguen utilizando VisualAge para Java. Y no creaís que es una versión de las últimas. Es una versión de hace unos diez años más o menos. Los problemas que están surgiendo para migrar a un entorno de trabajo actual darían para unos cuántos post más. Pero eso es trabajo … . Cerrado el paréntesis, continuamos, VisualAge se desarrollo en Smalltalk por parte de IBM, que al igual que Java se trata de un lenguaje orientado a objetos. Pero a diferencia de Java, Smalltalk tenía poco apoyo por parte de la comunidad de desarrolladores. Por ello IBM, aprovechando que sus desarrolladores tenían experiencia con lenguajes orientados a objetos, decidió crear un nuevo IDE altamente extensible basado en Java. O lo que viene a ser Eclipse.

Eclipse, según la definición dada en el libro de Eclipse: Building Commercial Quality Plugins de Eric Clayberg and Dan Rubel:

no es un programa monolítico, sino un pequeño núcleo que contiene un cargador de plug-ins que incorpora cientos, pudiendo llegar a miles de plug-ins. Dicho pequeño núcleo es una implementación de la especificación OSGi R4 y proporciona un entorno en el qu ejecutar plug-ins. Cada plug-in contribuye al conjunto de forma estructurada, puede que dependa de servicios proporcionados por otro plug-in y, a su vez, puede que proporcione servicios de los que dependen otros plug-ins… El conjunto mínimo de plug-ins necesario para crear una aplicación cliente se denomina Eclipse Rich Client Platform (RCP). Dado qu la infrastructura de Eclipse se está empezando a utilizar para construir aplicaciones servidor además de las aplicaciones cliente, la infraestructura de Eclipse también se conoce como Eclipse Applicacition Framework (EAF)

En la siguiente imagen podemos ver la estructura interna de Eclipse:

Estructura básica de un plug-in Eclipse.
Los dos archivos que nunca van a faltar en un plug-in van a ser plugin.xml y MANIFEST.MF. En ellos vamos a declarar las dependencias y servicios de dicho plug-in. En la siguiente imagen, prestada también del libro, podemos ver con un poco más de detalle las entradas de cada uno de los ficheros:

El fichero de manifiesto MANIFEST.MF sirve para definir el nombre, versión y las dependencias (require-bundle) de nuestro fichero. Dos de las entradas más interesantes del fichero de manifiesto son:
Bundle-Activator. que va a ser una clase que nos permite acceder a los recursos estáticos del plug-in, preferencias u otra información específica sobre el estado de nuestro plug-in.
Bundle-ActivationPolicy. que nos permite indicar si necesitamos cargar nuestro plug-in al comienzo de Eclipse.

El fichero plugin.xml quizá resulte más interesante. Así pues podemos definir el punto de extensión, que para eso estamos desarrollando un plug-in, desde el que queremos empezar. En la imagen podemos ver que es org.eclipse.ui.views, es decir, nuestro plug-in va a ser utilizado como una vista de la interfaz de usuario de Eclipse.También podemos indicar la categoría de nuestro plug-in. Podemos asignar varios plug-ins a una misma categoría si por ejemplo queremos que éstos se muestren en una determinada vista de Eclipse. También podemos indicar la clase que implementará toda la lógica de nuestro código.

Hay dos tipos de plug-ins. Aquellos definidos como parte de la interfaz de usuario o que están basados en otros plug-in basados en UI y aquellos Core (centrales o de núcleo). A continuación enumero algunos tipos de plug-ins listados en el libro del que hemos estado hablando.
Core: contienen servicios básicos como procesamiento de extensiones seguimiento de recursos, etc. ..
SWT. biblioteca general de Widgets basados en UI integrados con el S.O. subyacente.
JFace. biblioteca general de funcionalidades de la UI creada sobre el SWT.
GEF(Graphical Editing Framework). Facilita el desarrollo de editores gráficos.
Núcleo del entorno de trabajo. plug-ins que proporcionan un comportamiento no basado en UI, como proyectos, naturaleza de proyecto y preferencias.
Trabajo en equipo. por ejemplo, CVS.
Ayuda.
Núcleo JDT y JDT UI. herramienta Java Development Tooling (JDT) de Eclipse.
PDE( Plug-in development environment).
Mylyn. plug-in que facilita el seguimiento de las tareas realizadas sobre un proyecto de desarrollo. Es uno de los plug-ins que no conocía y que más me han gustado ya que permite su interacción con bugzilla o jira por ejemplo

La verdad es que el tema de como está montado Eclipse y de las distintas extensiones (plug-ins) es bastante entretenido. Escribiré algún post más sobre el tema. De momento os invito a que leaís un poco al respecto.
Por cierto, Eclipse tiene una versión especial centrada en el desarrollo de plug-ins y Ajax llamada Eclipse for RCP and RAP Developers.

Un saludo.

 
Deja un comentario

Publicado por en 6 marzo, 2011 en IDE

 

Etiquetas: , , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: