Getting started with Play Framework
It's time for me to test the Play Framework and I'll try to make some posts during my tests about this web framework.
Play Framework is a framework to create web applications in Java. The main goals of this framework are (according to the official site) :
- Hot reload : You can edit your java files and html files and you just have to refresh the browser to see the results
- Stateless model : Play is ready for REST, it can be scaled running multiple instances of the same applications on several servers
- Efficient Template System : The template system is really easy to use, based on Groovy.
- Resolve errors quickly : When an error occurs, Play displays directly the code source in the browser and the location of the error
- Integration : Play provide integration for Hibernate, OpenID, MemCached and others popular frameworks
- Pure Java : You make only Java and HTML, no other things to learn and easy integration in IDE.
- Fast : The startup of application is really fast the rendering of the pages also very fast.
In this post, we'll see how to install the Play Framework and how to write our first Hello World.
Install Play Framework
Before installing Play Framework, you need Java 5.0 or later. Then, you can download a release of Play : http://download.playframework.org/releases/. The latest when I wrote this post is the 1.0.3 version. So let's download this version. After that, just unzip the given archive where you want to install the framework. After that, you just have to add the play command to the path.
In Ubuntu 10.04, I had to do the following :
PLAY_HOME=/usr/share/apps/play/ PATH=$PATH:$PLAY_HOME chmod +x PLAY_HOME/play
Depending on your configuration, you perhaps have to use sudo for the chmod command. For other systems (Windows and Mac), you also have to add play (play.bat for Windows) to path using the system configuration.
And normally, after that, you can execute the play command :
wichtounet@Linux-Desktop:~$ play ~ _ _ ~ _ __ | | __ _ _ _| | ~ | '_ \| |/ _' | || |_| ~ | __/|_|\____|\__ (_) ~ |_| |__/ ~ play! 1.0.3, http://www.playframework.org ~ Usage: play cmd [app_path] [--options] ~ with, new Create a new application ~ run Run the application in the current shell ~ help Show play help wichtounet@Linux-Desktop:~$
Creating a new application
To create a new application, you just have to use the command
play new app_name
You must be in a folder where a folder with the name app_name can be created. For example, let's create a new application "hello" :
wichtounet@Linux-Desktop:~/dev/play$ play new hello ~ _ _ ~ _ __ | | __ _ _ _| | ~ | '_ \| |/ _' | || |_| ~ | __/|_|\____|\__ (_) ~ |_| |__/ ~ ~ play! 1.0.3, http://www.playframework.org ~ The new application will be created in /home/wichtounet/dev/play/hello ~ What is the application name? Hello World ~ OK, the application is created. ~ Start it with : play run hello ~ Have fun! wichtounet@Linux-Desktop:~/dev/play$
During the creation, Play will ask you for the name of the application. Here I put "Hello World" as the name of the application. If you go into the new created application folder, you will see the given folders :
- app : The applications itself, Java classes and HTML files
- conf : The configuration of the application
- lib : Contains the Java libraries that the application needs
- public : Contains the public files, images, CSS, JS
- test : Contains the tests (JUnit or Selenium) file
You can launch your application, with the command :
wichtounet@Linux-Desktop:~/dev/play$ play run hello ~ _ _ ~ _ __ | | __ _ _ _| | ~ | '_ \| |/ _' | || |_| ~ | __/|_|\____|\__ (_) ~ |_| |__/ ~ ~ play! 1.0.3, http://www.playframework.org ~ Ctrl+C to stop Listening for transport dt_socket at address: 8000 17:49:56,395 INFO ~ Starting /home/wichtounet/dev/play/hello 17:49:56,889 WARN ~ You're running Play! in DEV mode 17:49:56,958 INFO ~ Listening for HTTP on port 9000 (Waiting a first request to start) ... 17:50:01,670 INFO ~ Application 'Hello World' is now started !
And you can browse your application at the URL http://localhost:9000/. You will normally see a sample page :
How does it works ?
So now, let's study why this work. If you open the file conf/routes, you will see that line :
GET / Application.index
That indicates that the index of the project will be serviced from the index method of the Application class. And if you open the app/controllers/Application.java file, you will see :
package controllers; import play.mvc.*; public class Application extends Controller { public static void index() { render(); } }
So at this time, the index() only renders the default template. This template is app/views/Application/index.html (like the name of the method and the class) :
#{extends 'main.html' /} #{set title:'Home' /} #{welcome /}
We can see that this template extends the main.html template. It sets the title to home and display the welcome prompt. These tags are tags from the Play Framework. Lets change this template to :
#{extends 'main.html' /} #{set title:'Hello World' /} <h3>Hello the world !</h3>
And refresh the application page. You will see now only the message "Hello the world". If you want to see something when the controllers is called, just add a System.out.println in the Application.index :
public static void index() { System.out.println("render()"); render(); }
And you will see logs in the console when you refresh the pages :
17:50:01,670 INFO ~ Application 'Hello World' is now started ! render() render() render() render() render()
Add a simple new page
To do a little more in this post, let's add a new page : http://localhost:9000/bye. Let's start adding a new route in conf/routes :
GET /bye Application.bye
So we have to add a method bye in the Application class :
package controllers; import play.mvc.*; public class Application extends Controller { public static void index() { render(); } public static void bye() { render(); } }
And then, we just need to add a new template bye.html in app/views/Application/ folder :
#{extends 'main.html' /} #{set title:'Bye' /} <h3>Bye bye !</h3>
And now, if you go to http://localhost:9000/bye you will see our new page :
Conclusion
Here we are ! With this framework, it's extremely easy to create web applications. And we've only see a very small part of the facilities this framework offers to create web applications. I'll try to write others posts on the subject.
Comments
Comments powered by Disqus