Ubuntu 12.04 + Intellij IDEA 12.1.3 + Play! Framework 2.1.1... Un Hola Mundo diferente!

Si no sabes que es Play! Framework click y averígualo, resumiendo Play! es un framework de desarrollo de aplicaciones rápidas RAD del tipo MVC para Java y Scala, que a diferencia de SpringMVC desarrollar se vuelve mas divertido que doloroso.

En este tutorial aprenderemos a preparar el entorno para desarrollar con Play! y desarrollaremos el épico Hello World en el lenguaje Java
Usaremos como SO Ubuntu 12.04 32bits.
Pero debería funcionar para cualquier distro GNU/Linux y algunos sistemas Unix-like .
Es muy poco probable que haga un tutorial de como preparar un entorno de desarrollo bajo MS Windows, mas sin embargo si usas Windows, siéntete libre de preguntar.

Lo primero que debemos checkear es si tenemos el Java JDK instalado correctamente. Para checkear nuestra versión de java, abrimos una terminal y escribimos:

mrpopper@thekid-pc:~$ java -version
java version "1.7.0_21"
OpenJDK Runtime Environment (IcedTea 2.3.9) (7u21-2.3.9-0ubuntu0.12.04.1)
OpenJDK Server VM (build 23.7-b01, mixed mode)
mrpopper@thekid-pc:~$ 

Yo tengo la versión OpenJDK en su versión 1.7.0_21, de no tener la JDK instalada, escribe en una terminal:

mrpopper@thekid-pc:~$ sudo apt-get install openjdk-7-jre

HINT: Para saber en que directorio te encuentras posicionado, en las terminales de los SO Unix-Like basta con que escribas el siguiente comando:
mrpopper@thekid-pc:~$ pwd
/home/mrpopper
que viene de las siglas en inglés Print Working Directory

Una vez terminada la instalación del openJDK de Java, en la misma terminal o en otra escribimos:
mrpopper@thekid-pc:~$ wget http://downloads.typesafe.com/play/2.1.1/play-2.1.1.zip
Y luego escribimos:
mrpopper@thekid-pc:~$ wget http://download-ln.jetbrains.com/idea/ideaIC-12.1.3.tar.gz
Con lo anterior descargamos el Play! Framework y el Intellij IDEA en el directorio donde estabamos posicionado en esa terminal.
HINT: para listar los archivos en el directorio que te encuentras posicionado, en las terminales de los SO Unix-Like basta con que escribas el siguiente comando:
mrpopper@thekid-pc:~$ ls
En la terminal donde descargamos play! (se supone deberíamos estar ubicados en el directorio donde se descargo) escribimos lo siguiente para descomprimir el zip:
mrpopper@thekid-pc:~$ unzip play-2.1.1.zip
Luego entramos al directorio donde se descomprimió nuestro play! y le damos al comando ls para inspeccionar que hay dentro
mrpopper@thekid-pc:~$ cd play-2.1.1/
mrpopper@thekid-pc:~$ ls
CONTRIBUTING.md  framework  play.bat   repository
documentation    play       README.md  samples
mrpopper@thekid-pc:~$
Si ejecutamos el archivo play que vemos ahí y obtenemos la siguiente salida, vamos bien
mrpopper@thekid-pc:~/play-2.1.1$ ./play
Getting net.java.dev.jna jna 3.2.3 ...
:: retrieving :: org.scala-sbt#boot-jna
 confs: [default]
 1 artifacts copied, 0 already retrieved (838kB/54ms)
Getting play console_2.9.2 2.1.1 ...
:: retrieving :: org.scala-sbt#boot-app
 confs: [default]
 29 artifacts copied, 0 already retrieved (5976kB/242ms)
Getting Scala 2.9.2 (for console)...
:: retrieving :: org.scala-sbt#boot-scala
 confs: [default]
 4 artifacts copied, 0 already retrieved (20090kB/253ms)
       _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.1.1 (using Java 1.7.0_21 and Scala 2.10.0), http://www.playframework.org

This is not a play application!

Use `play new` to create a new Play application in the current directory,
or go to an existing application and launch the development console using `play`.

You can also browse the complete documentation at http://www.playframework.org.

mrpopper@thekid-pc:~/play-2.1.1$

A continuación necesitamos agregar el directorio de play a una variable del shell y a su vez esa variable agregarla al PATH, para tener siempre disponible el comando play. 
Con el comando pwd muestro la ruta donde se encuentra el directorio del play, debes copiar esa ruta al porta papeles

mrpopper@thekid-pc:~/play-2.1.1$ pwd
/home/mrpopper/play-2.1.1

Con el comando cd solo sin argumentos me ubico en la carpeta home de mi usuario, en mi caso /home/mrpopper en la carpeta home de cada usuario se encuentra un archivo oculto que guarda información sobre la terminal que esta usando ese usuario, el archivo se llama .bashrc (en los SO Unix-Like los archivos y carpetas que comienzan con punto son ocultos) abrimos el archivo con el gedit
mrpopper@thekid-pc:~/play-2.1.1$ cd
mrpopper@thekid-pc:~$
mrpopper@thekid-pc:~$ gedit .bashrc
El archivo debería de tener algunas cosas, nos vamos hasta el final del archivo y de ultimo agregamos las siguientes lineas:
#variable para play
export PLAY_HOME=/home/mrpopper/play-2.1.1
Donde /home/mrpopper/play-2.1.1 es la ruta donde descomprimieron el play, recuerden que les dije que lo copiaran al portapapeles, guardamos y cerramos el gedit también cerramos todas las terminales que estén abiertas, esto para que la variable tenga efecto. Probamos que la variable esta cargada con el valor que queremos
mrpopper@thekid-pc:~$ echo $PLAY_HOME
/home/mrpopper/play-2.1.1
Volvemos a abrir el archivo .bashrc con el gedit para agregar la variable PLAY_HOME al PATH del sistema, justo abajo de lo ultimo que habíamos agregado, quedando así:
#variable para play
export PLAY_HOME=/home/mrpopper/play-2.1.1
export PATH=$PATH:$PLAY_HOME:$PATH
Guardamos y cerramos gedit y todas las terminales abiertas. Abrimos otra vez una terminal y si escribimos el comando play deberiamos tener la siguiente salida
mrpopper@thekid-pc:~$ play
       _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.1.1 (using Java 1.7.0_21 and Scala 2.10.0), http://www.playframework.org

This is not a play application!

Use `play new` to create a new Play application in the current directory,
or go to an existing application and launch the development console using `play`.

You can also browse the complete documentation at http://www.playframework.org.

mrpopper@thekid-pc:~$
Ya tenemos nuestro play listo, vamos a crear un proyecto para nuestra aplicación Hello World escribimos en una terminal
mrpopper@thekid-pc:~$ play new helloWorld
      _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.1.1 (using Java 1.7.0_21 and Scala 2.10.0), http://www.playframework.org

The new application will be created in /home/chucho/helloWorld

What is the application name? [helloWorld]

Y luego cuando nos pregunte What is the application name? le damos ENTER y cuando nos pregunte Which template do you want to use for this new application? le decimos 2 Create a simple Java application 
Which template do you want to use for this new application? 

  1             - Create a simple Scala application
  2             - Create a simple Java application

 2
OK, application helloWorld is created.

Have fun!

mrpopper@thekid-pc:~$
A continuación entramos a la carpeta donde se creo nuestro proyecto con el comando cd y una vez dentro de la carpeta escribimos el comando play
mrpopper@thekid-pc:~$ cd helloWorld/
mrpopper@thekid-pc:~/helloWorld$ play
[info] Loading project definition from /home/mrpopper/helloWorld/project
[info] Set current project to helloWorld (in build file:/home/mrpopper/helloWorld/)
       _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.1.1 (using Java 1.7.0_21 and Scala 2.10.0), http://www.playframework.org

 Type "help play" or "license" for more information.
 Type "exit" or use Ctrl+D to leave this console.

[helloWorld] $ 

Como vemos nuestro promp de la terminal cambio, ahora es un promp propio de play para nuestra aplicación. Vamos a escribir el comando run y ver que pasa.
[helloWorld] $ run

[info] Updating {file:/home/mrpopper/helloWorld/}helloWorld...
[info] Resolving org.hibernate.javax.persistence#hibernate-jpa-2.0-api;1.0.1.Fin                                                                                [info] Done updating.                                                        
--- (Running the application from SBT, auto-reloading is enabled) ---

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

(Server started, use Ctrl+D to stop and go back to the console...)
Con el comando run ponemos nuestra aplicación a correr, play posee un servidor de aplicaciones embebido. Si entramos a la siguiente dirección http://localhost:9000 veremos la plantilla de bienvenida de play


Ok volvemos a la terminal de play y paramos el servidor con Ctrl+D y volvemos a apretar las teclas Ctrl+D para salir del promp de play y volver a la terminal original. 
Ubicamos el directorio en donde descargamos el Intellij IDEA unos pasos mas atrás, y lo descomprimimos con el siguiente comando y luego entramos al directorio bin del directorio donde se descomprimio:
mrpopper@thekid-pc:~$ tar -xzvf ideaIC-12.1.3.tar.gz
.....
...
..
mrpopper@thekid-pc:~$ cd idea-IC-129.451/bin/
Una vez en ese directorio escribiremos el comando pwd y copiaremos la ruta en el porta papeles
mrpopper@thekid-pc:~/idea-IC-129.451/bin$ pwd
/home/mrpopper/idea-IC-129.451/bin
mrpopper@thekid-pc:~/idea-IC-129.451/bin$
Ahora vamos a crear un lanzador, algo parecido a lo que hicimos unos pasos atras para tener siempre disponible el comando play en nuestro entorno. Pero esta vez sera para nuestro Intellij IDEA, abre una consola y escribe el comando:
mrpopper@thekid-pc:~$ sudo gedit /usr/local/bin/idea
Esto nos abrirá un documento vació en el gedit al cual debemos agregarle las siguientes lineas
#!/bin/bash
/home/mrpopper/idea-IC-129.451/bin/idea.sh
Si se fijan la segunda linea es la ruta que habíamos copiado al porta papeles y le concatenamos /idea.sh, guardamos el documento y cerramos gedit ahora ejecutamos el siguiente comando para asignarles permisos de ejecución al archivo que acabamos de crear
mrpopper@thekid-pc:~$ sudo chmod +x /usr/local/bin/idea
Ahora para ejecutar Intellij IDEA abre el lanzador de comando con Alt+F2 (Alt Izquierdo) y escribe idea y Enter.

Para terminar con el IDE una vez que termine de cargar y nos vamos al menú File > Settings > Plugins > Install jetBrains plugin y buscamos el plugin de scala y lo instalamos.

Una vez instalado el plugin de scala language, volvemos a una terminal y nos vamos al directorio de nuestro proyecto helloWorld y ejecutamos el comando play luego cuando aparezca el promp de play ejecutamos el comando idea y luego el comando run así:



mrpopper@thekid-pc:~/helloWorld$ play
[info] Loading project definition from /home/mrpopper/helloWorld/project
[info] Set current project to helloWorld (in build file:/home/mrpopper/helloWorld/)
       _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.1.1 (using Java 1.7.0_21 and Scala 2.10.0), http://www.playframework.org

 Type "help play" or "license" for more information.
 Type "exit" or use Ctrl+D to leave this console.

[helloWorld] $ idea
...
..
.
[helloWorld] $ run
--- (Running the application from SBT, auto-reloading is enabled) ---

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

(Server started, use Ctrl+D to stop and go back to the console...)

Vamos al IDEA nuevamente y menú File > Open... y buscamos el proyecto helloWorld y lo abrimos. Una vez cargado el proyecto vamos a editarlo un poco, buscamos la carpeta app y la expandimos, expandimos el paquete views y ubicamos el archivo index.scala.html y borramos la linea @play20.welcome(message, style = "Java") esto es para remover la plantilla de bienvenida y agregamos <h1>@message</h1>


Luego en el paquete controllers abrimos la clase Application y reemplacen "Your new application is ready." por "Hello World!"
package controllers;

import play.*;
import play.mvc.*;

import views.html.*;

public class Application extends Controller {
  
    public static Result index() {
        return ok(index.render("Hello World!"));
    }
  
}
Guarden y entren aquí http://localhost:9000 y ahí tienen su épico Hello World!


NOTA: La finalidad de este tutorial es solo preparar el entorno  necesario para trabajar con play! framework, no abarca detalles sobre las funcionalidades del framework o su anatomía.  En un próximo tutorial entraremos en mas detalles.
Espero les haya sido de utilidad.
Saludos

Publicado en , , , , , , , , , , , , , , , , , , , . link de esta entrada. RSS Para esta entrada.

Deja un comentario

Con la tecnología de Blogger.

Buscar

Swedish Greys - a WordPress theme from Nordic Themepark. Converted by LiteThemes.com.