sábado, 29 de octubre de 2016

Empezando con Scala


Scala es un leguaje de programación funcional orientado a objetos que permite la integración con Java y que cuenta con muchas características que lo hacen único. Su propósito principal es el de permitir crear aplicaciones elegantes mediante el empleo conciso de patrones y estructuras claras.

Instalación

Antes de empezar a trabajar con Scala debemos tener instalado en nuestro sistema una serie de componentes así como (opcionalmente) un entorno de desarrollo que nos permita fácilmente trabajar con este lenguaje.

Linux


En el caso de que trabajemos utilizando un sistema operativo basado en Linux tendremos que comenzar comprobando la instalación de Java.

java -version
java version "1.8.0"

 En el caso de contar con una versión anterior a la 1.8.x deberemos instalar o actualizar nuestra instalación. Dependiendo de nuestro sistema (Ubuntu, Fedora) utilizaremos uno de los siguientes comandos:

sudo apt-get install openjdk-8-jdk

su -c "yum install java-1.8.0-openjdk-devel"

Mac OX


En primer lugar hay que instalar el JDK 1.8 de Java. Para comprobar que versión es la que tenemos instalada en nuestro equipo solo 

java -version
java version "1.8.0_111"

En el caso de que no contemos con la versión 1.8 tan solo es necesario descargarla en instalarla en nuestro sistema.

El siguiente paso es instalar SBT (Scala Building Tool), que es la herramienta que se encarga en convertir  Scala en bytecode de Java. Para instalarlo tan solo debemos escribir. 

brew install sbt

Después de realizar la instalación deberemos ejecutar el comando sbt about para comprobar la versión de nuestra instalación. El proceso durará un momento ya que la primera vez se descargarán y desempaquetarán todas las herramientas en nuestro sistema. Una vez finalizado obtendremos la información sobre la versión de nuestra instalación.

sbt about
Getting org.scala-sbt sbt 0.13.11 ...
downloading https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt/0.13.11/jars/sbt.jar ...
[SUCCESSFUL ] org.scala-sbt#sbt;0.13.11!sbt.jar (2235ms)
...
...
...
[info] Set current project to kstopa (in build file:/Users/kstopa/)
[info] This is sbt 0.13.11
[info] The current project is {file:/Users/kstopa/}kstopa 0.1-SNAPSHOT
[info] The current project is built against Scala 2.10.6
[info] Available Plugins: sbt.plugins.IvyPlugin, sbt.plugins.JvmPlugin, sbt.plugins.CorePlugin, sbt.plugins.JUnitXmlReportPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.10.6

El siguiente paso será instalar el entorno. En este caso trabajaremos con IntelliJ aunque también Eclipse nos podría valer perfectamente. Tan solo es necesario descárgalo e instalarlo en nuestro sistema. 

Windows


Para los usuarios de Windows recomiendo este tutorial.

Primera aplicación


Si ya tenemos todo instalado, para crear el primer proyecto en IntelliJ solo tenemos que abrir el entorno y crear un proyecto de SBT nuevo. Si es la primera vez que ejecutamos el entorno, en una de las páginas iniciales de configuración se nos permitirá instalar la extensión para el soporte de Scala

Si ya contábamos con una versión instalada de IntelliJ, para instalar la extensión desde el menú superior debemos seleccionar la opción File | Settings si usamos Windows o Linux o bien el menú IntelliJ IDEA | Preferences en el caso de que seamos usuarios de Mac. Después solo debemos acceder a la pestaña de Plugins, activar la extensión de Scala y reiniciar el entorno.
Después podremos crear nuestro primer proyecto, bien desde el dialogo de inicial que presenta el entorno o bien desde el menú File | New project. En el dialogo de configuración de proyecto debemos seleccionar la pestaña de Scala y la opción de SBT en el tipo de proyecto que deseamos crear y completar los campos típicos con el nombre de proyecto, ubicación, etc. Dejando por defecto los valores de versiones (o de modo que coincidan con las versiones instaladas aunque no siempre será posible ya que suelen retrasarse un poco con las actualizaciones). También debemos indicar el SDK de Java con el que queremos trabajar. Para ello pulsamos sobre el botón New y automáticamente nos situara en la carpeta de Java 1.8 por defecto por lo que nuevamente deberemos pulsar sobre el botón de aceptar. 

Finalmente pulsamos el botón Finish y la plataforma creará nuestro proyecto. Si es nuestro primer proyecto esto puede llevar un también un rato.

Una vez acabado el proceso, desde la vista de proyecto accedemos a src/main/scala y pulsando el botón secundario seleccionamos la opción New/Scala Worksheet. Esto nos permitirá trabajar cómodamente con Scala y observar los resultados de nuestro script a mediada que lo vamos creando.


También es posible crear un proyecto normal (con sus objetos y clases). Para ello tan solo tenemos que pulsar con el botón secundario y seleccionar la opción New/Scala class. Para crear una aplicación deberemos seleccionar la opción objeto y después añadir un código similar a:

/**  * Aplicación simple en Scala
  */
object Example extends App{
  print("Hello Scala")
}

Al extender de la clase App nos creará una aplicación que podrá ser ejecutada como tal. Y una vez la ejecutemos nos mostrará un mensaje por pantalla.

Objetos, clases y rasgos (traits)


Una de las peculiaridades de Scala es que a parte de clases típicas de la orientación a objetos incluye dos elementos adicionales junto al típico class, siendo estos object y trait.

  • Si creamos un elemento de tipo class estaremos creando un elemento similar al de cualquier otro lenguaje orientado a objetos que estará definido por sus propiedades y métodos. 
  • En el caso de los elementos object lo que tendremos en realidad es una clase que puede ser instanciada una única vez. Es decir se comporta como un objeto único dentro de una aplicación siguiendo un patrón de tipo singleton. Normalmente usaremos esta clase por ejemplo para definir nuestra clase principal (que además como en el caso del ejemplo anterior extender de App).
  • Por último, en el caso de los trait (rasgos o comportamientos) estaremos creando clases que pueden ser usadas como clases que permiten herencia múltiple. Es decir cualquier otra clase puede ser extendida de múltiples traits pero no de más de una clase u objeto. En cierto sentido se comportan igual que los interfaces de Java pero permitiendo añadir cierta funcionalidad. 
Una descripción más extensa sobre cada uno de estos tipos esta disponible en este post.

No hay comentarios:

Publicar un comentario