RSS

Archivos Mensuales: marzo 2011

AOP – Programación Orientada a Aspectos


La programación orientada a aspectos (AOP) es una metodología que sirve para complementar a la programación orientada a objetos clásica (OOP).La OOP es muy útil para implementar la lógica de nuestra aplicación. Sin embargo se ve limitada a la hora de incluir una serie de funcionalidades que se usan en diferentes puntos en nuestra aplicación y que en inglés se conocen como crosscutting concerns. Entre estos elementos podrían estar trazar nuestra aplicación (logging), el cacheo de la información o la validación de los argumentos en los distintos métodos.

Read the rest of this entry »

 
Deja un comentario

Publicado por en 31 marzo, 2011 en Spring

 

Etiquetas: , , ,

¿Estás contento con tu trabajo?


Hola de nuevo,

últimamente no tengo mucho tiempo para escribir. Así que la siguiente entrada va a ser cortita. Recientemente he leído en el blog de Joel Spolsky una entrada muy interesante sobre cuales serían unas buenas condiciones para un desarrollador a la hora de programar. Joel Spolsky expone su punto de vista sobre cómo debería ser el entorno ideal en una compañia software. Para ello utiliza una lectura sobre el siguiente libro Peopleware: Productive Projects and Teams. Su reflexión se centra en los siguientes apartados:

  • El espacio físico de trabajo. ¿Dónde está localizada mi compañia?. ¿Son las sillas comodas?. ¿Tienen los desarrolladores buenos monitores o todavía siguen usando viejos CRT?.
  • La vida social de los desarrolladores. ¿Cómo son éstos tratados por la compañia?. ¿Cómo son los compañeros de trabajo?. ¿Tienen libertad los programadores para ser creativos y desarrollar sus ideas?.
  • Proyecto en el que se trabaja. ¿Son los proyectos interesantes?. ¿Pueden los programadores elegir el proyecto?. ¿Fomentan el uso de nuevas tecnologías?.
  • Identificación con la compañia.

La verdad es que la entrada de su blog es muy interesante y recomiendo leerla. Estoy de acuerdo con todo lo que dice. Por desgracia, en la vida real casi nada de lo que se propone aquí es llevado a la práctica por las empresas. Personalmente creo que algunas de las ideas son díficiles de llevarlas a la práctica, cómo el hecho de que sea el propio programador el que decida en qué proyecto desea trabajar. Pero hay otras cómo el tema de material de oficina en el que sería muy fácil (y no creo que demasiado costoso) mejorar la situación.

Pongo un par de encuestas para ver que opinais vosotros sobre vuestro trabajo. La primera es sobre lo que más os gusta.

Y la segunda sobre lo que más se podría mejorar. Por supuesto comentar si hay algo que creeís que se me pasa por alto.

No quería terminar mi post sin dar todos los ánimos a la gente de Japón. Seguro que se recuperan rápidamente de esta tragedia.

Un saludo.

 
Deja un comentario

Publicado por en 13 marzo, 2011 en General

 

Eclipse, plug-ins y demás …


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: , , ,