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/mrpopperque 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.zipY luego escribimos:
mrpopper@thekid-pc:~$ wget http://download-ln.jetbrains.com/idea/ideaIC-12.1.3.tar.gzCon 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: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:~$ ls
mrpopper@thekid-pc:~$ unzip play-2.1.1.zipLuego 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 .bashrcEl 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.1Donde /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.1Volvemos 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:$PATHGuardamos 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
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/ideaEsto 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.shSi 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/ideaAhora para ejecutar Intellij IDEA abre el lanzador de comando con Alt+F2 (Alt Izquierdo) y escribe idea y Enter.
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>
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