Play Framework Series: [Part 01] Introduction
Khi nói đến Java web, nhiều người sẽ nghĩ ngay đến Spring, JSF, Struts .... nhưng có 1 framework khác cũng đang được nhiều lập trình viên biết tới đó là Play. 1. Vậy Play là gì ? Đây là 1 open source web application framework, viết bởi Scala và Java. Thực chất đây là 1 Scala framework, nhưng ...
Khi nói đến Java web, nhiều người sẽ nghĩ ngay đến Spring, JSF, Struts .... nhưng có 1 framework khác cũng đang được nhiều lập trình viên biết tới đó là Play. 1. Vậy Play là gì ?
- Đây là 1 open source web application framework, viết bởi Scala và Java. Thực chất đây là 1 Scala framework, nhưng bạn vẫn có thể implement bằng Java, bởi cả 2 ngôi ngữ này đều chạy trên JVM. Play được viết bởi Guillaume Bort vào năm 2007 với cảm hứng được lấy từ ASP.NET MVC, Ruby on Rails, and Django, nên bạn sẽ thấy nó mang những đặc điểm của những framework này. Play đang được kì vọng trở thành thế hệ tiếp theo của Java web framework giống như Dropwizard, Ninja framework, Jodd .v.v.
- Play được xây dựng trên kiến trúc Model View Controller (MVC), kiến trúc này phân chia ứng dụng của bạn làm 3 phần khác nhau: Model được sử dụng để biểu thị dữ liệu, View hiển thị dữ liệu, Controller điều hướng và xử lý các xự kiện.
- Để tối ưu hóa thời gian phát triển ứng dụng, Play sử dụng quy ước về cấu hình và hot code reloading, có nghĩa là mọi thay đổi liên quan đến source code sẽ được apply khi lập trình viên refresh trình duyệt mà không phải deploy lại ứng dụng.
- Giống với Ruby on Rails, Play cũng sử dụng một cấu trúc project mặc định.
2. Tính năng cơ bản. Dưới đây là tính năng cơ bản của Play:
- Sử dụng mặc định WebServer là Jboss Netty hoặc Akka (cho phiên bản từ 2.6 trở lên).
- Support Non Blocking IO, Asyncronus
- Sử dụng SBT để quản lý lib và build application.
- Đây là RESTful framework.
- Hỗ trợ cơ chế persistence layer trên nền JPA.
- Dùng Scala để tạo template engine.
- Đây là full stack framework chứa nhiều thư viện cho việc phát triển common task như JSON parsing, validation, persistence, or authentication
Play đã bỏ đi nhiều phương pháp truyền thống được sử dụng trong phát triển web Java. Nó không sử dụng Servlets và cũng không đóng gói project trong flie WAR. Không xử dụng web application servers lớn như (JBoss, Glassfish) và file XML trong cấu hình. (*) Dưới đây là Play ranking:
3. Cài đặt, build new web application.
- Việc cài đặt khá đơn giản, bạn có thể làm theo các cách sau:
- Cài đặt Intelliji, tạo 1 Java project mới với Play và làm theo các bước trong setup. Chú ý nhớ chọn thêm Intall Scala plugin https://www.jetbrains.com/idea/download/#section=windows
- Cài đặt manual theo hướng dẫn: https://www.playframework.com/documentation/2.6.x/Installing Nó bao gồm việc install Java 8, SBT, cách tạo 1 new application.
- Cấu trúc 1 Play project về cơ bản như sau:
app/ directory: chứa tất cả artifacts thực thi: Java và Scala source code, template và compiled assets' sources. Có ba packages trong app directory, mỗi package là một thành phần trong mô hình kiến trúc MVC:
- app/controllers
- app/models app/views Bạn có thể thêm một package của riêng bạn như package app/utils. Ngoài ra, có một directory tùy chọn là app/assets cho việc compiled assets như LESS source và CoffeeScript sources.
conf/ directory: chứa các file config của app. Có hai file config chính là:
- application.conf : file config chính của app, nơi chứa cái parameter config
- routes: file định nghĩa các đường dẫn của app Nếu bạn cần thêm các option config cụ thể cho app của bạn, bạn nên thêm các option đó vào file application.conf Nếu một thư viện cần một file config cụ thể, hãy thêm file đó vào trong folder conf
lib/ directory: là tùy chọn và chứa các dependencies library, tất cả các files JAR bạn muốn quản lý bằng tay ngoài hệ thống. Chỉ cần thêm bất kì file JAR vào đây, chúng sẽ được thêm vào classpath của application của bạn.
build.sbt file: các khai báo build chính của project được đặt ở trong file build.sbt tại thư mục gốc của project. Các file .scala trong đường dẫn project/ cũng có thể sử dụng để khai báo bản build của project.
project/ directory: chứa các định nghĩa build sbt:
- plugins.sbt: định nghĩa các plugins sbt sử dụng trong project
- build.properties: chứa các version sbt sử dụng để build app
target/ directory: chứa mọi thứ được gen bởi hệ thống. Bao gồm:
- classes/ chứa tất cả các compiled class (từ cả Hava và Scala source)
- classes_managed/ chứa các class được quản lý bởi framework (ví dụ như các classes gen bở router hoặc template của hệ thống)
- resource_managed/ chứa các resource được gen ra, các kết quả compile của LESS CSS và CoffeeScript,...
- src_managed/ chứa các sources được gen ra như Scala sources được gen bởi template của hệ thống
- web/ chứa các assets xử lý bởi sbt.web
Các loại .gitignore file Các folders đã được gen ra bị ignore bởi hệ thống kiểm soát version. Đây là các file .gitignore điển hình của một Play application.
- log
- project/project
- project/target
- target
- tmp
- dist
- .cache
Qua những thông tin vừa trên hy vọng mọi người có cái nhìn cơ bản về Play, trong bài viết tới mình sẽ đi sâu về các vấn đề có liên quan đến framework này. Tài liệu có thể tham khảo: https://www.playframework.com/documentation/2.6.x/Home