Históricamente los lenguajes orientados a objeto han evolucionado una característica muy importante que les permite ser muy flexibles: la reflexión. Usando estas posibilidades "meta" (la clase de una clase, la clase de un método, etc), es posible escribir estructuras muy flexibles que se vayan acomodando a las necesidades de una determinada situación. En lenguajes orientados a objeto como Smalltalk ya se tuvo esta posibilidad. En Java, según entiendo, las posibilidades se han limitado más bien por que uno de los objetivos importantes del lenguaje era la seguridad.
Groovy es un lenguaje orientado a objetos de la familia Java. Es un lenguaje dinámico, es decir que es interpretado y corre en la máquina virtual Java. Se puede llamar todo el API de Java desde Groovy. Otra característica interesante de Groovy es que la estructura interna es flexible, es decir no sería complicado extender el lenguaje. Es porque Groovy ha empleado una técnica usada en lenguajes reflexivos que se denomina
protocolo de metaobjetos. En este artículo se pone en discusión la posibilidad de usar más estas características en los lenguajes modernos para que no tengamos que esperar "nuevas versiones" de lenguajes que no siempre satisfacen nuestras necesidades con la agilidad esperada/deseada.
Palabras clave: lenguaje orientados a objeto, metaobjetos, metaprogramacion, protocolo de metaobjetos, reflexion