November 18th, 2011

May the force be with Scala

Nicolas Mouso

El objetivo de este post consiste en presentar el lenguaje de programación Scala  en el marco de  un ambiente de desarrollo típico en java, utilizando maven y eclipse para compilar los fuentes  haciendo convivir los dos lenguajes  (java y scala)  en una misma solución.

Introducción:

Scala es un lenguaje de programación multiparadigma fuertemente tipado que combina las características de la programación orientada a objectos y de la programación funcional.

Posee muchísimas características interesantes, como pueden ser traits, inferencia de tipos, pattern matching o funciones implícitas, las cuales lo hacen un lenguaje completo y potente. No es el objetivo de este post profundizar sobre cada una de estas características, en el sitio oficial de Scala ”http://www.scala-lang.org/” existe una muy variada documentación al respecto

Tiene la característica de funcionar sobre la Java Virtual Machine. De esta manera, es posible reutilizar código Java existente desde Scala.

Instalación

El plugin de Scala puede ser instalado directamente desde Eclipse. En primer lugar, seguimos los siguientes pasos: “Help → Software Updates … → Available Software”. Luego agregamos la dirección correspondiente a la versión que queremos instalar. (Consular la sección de descargas de la página oficial http://www.scala-ide.org/)

Podemos comenzar con una simple implementación del famoso “HelloWorld” para corroborar que la instalación fue exitosa. Dentro de la perspectiva Scala seguimos los siguiente pasos, “File → New → Scala Proyect”, para crear un proyecto Scala al cual nombramos “HelloWorld”. Luego creamos un objecto Scala con el mismo nombre de la siguiente manera: “File → New → Scala Object“.

En scala, las clases no pueden tener atributos estáticos como en Java. Por otro lado, brinda la posibilidad de crear objectos singletons utilizando “object” de forma muy sencilla, como se puede ver en el caso de “HelloWorld”.

Integrando Scala con Maven y Eclipse

Se pretende mostrar la posibilidad de integrar Scala con otras tecnologías Java de manera de aprovechar las ventajas del lenguaje pero utilizando los frameworks de la comunidad java tales como Maven, Hibernate, Spring, Wicket, etc.

Comenzamos con la instalación de Maven. El proceso es análogo al del plugin. Para mayor información consultar el sitio oficial: “http://www.assembla.com/spaces/scala-ide/wiki/With_M2Eclipse”.
En caso de tener una instancia de m2eclipse ya instalada en Eclipse, se recomienda borrarla antes de continuar. Dos instancias de maven quedarían instaladas, lo cual puede ocasionar algunos problemas.

Configuración del proyecto usando Maven desde Eclipse:

  1. File → New → Project
  2. Maven → Maven Project
  3. Ingresar “scala” en el fitro y seleccionar:
    Group Id: org.scala-tools.archetypes
    Artifact Id: scala-archetype-simple
  4. Next
  5. Completar información con:
    GroupId: com.hexacta
    ArtifactId: Scala
    Package: com.hexacta
  6. Finish

Por defecto se generan algunas pruebas. Para ver si no hubo problemas en la creación, hacemos una ‘Run configuration’ para el proyecto con los goals: ‘clean install’. Si estas usando maven por consola: mvn clean install.

Si por alguna razón eclipse no reconoce al proyecto como un proyecto Scala (es decir, que no se puedan hacer cosas como navegar con F3 entre clases) hacer: “Click derecho en el proyecto → Maven → Update Maven Configuration…”.

De esta manera, es posible hacer convivir código Java y Scala compilando con Maven y en Eclipse.

Conclusiones:

Scala tiene la ventaja de compilar a byte code, lo que permite correr cualquier programa Scala sobre la virtual machine de java. De esta manera, se puede integrar fácilmente con tecnologías Java. Por lo tanto podemos aprovechar:

  1. Las ventajas ya sabidas de las excelentes prestaciones que brinda la Virtual Machine de Java con respecto a performance y seguridad.
  2. La innumerable cantidad de librerias y frameworks que existen para Java, las cuales podemos utilizar sin tener que reinventar la rueda.
  3. Las ventajas que provee Scala como lenguaje alternativo a Java.

Referencias

Share Button

Dejar un comentario