Tìm hiểu Play Framework - Phần 1

1. Tổng Quan

  • Play Framework giúp xây dựng web application với Java và Scala một cách dễ dàng và thuận tiện. Play được xây dựng với mục đích giúp phát triển web một cách gọn gàng, nhẹ nhàng, kiến trúc thân thiện.
  • Được xây dựng dựa trên Akka, Play cung cấp cho chúng ta các công cụ để dự đoán và giảm thiểu tối đa việc sử dụng resource (CPU, Bộ nhớ, Thread), giúp ứng dụng có thể mở rộng một cách tối đa.

1.1 Thân thiện với Developer

  • Tất cả bạn cần là 1 trình soạn thảo và Web Browser, mọi thứ còn lại sẽ có Play lo.
  • Play cung cấp một console mạnh mẽ, hỗ trợ các tool để build, built in testing tools
  • Support các IDE thông dụng như Eclipse và IntelliJ IDEA

1.2 Quy mô có thể dự đoán

  • Tầng dưới lớp bảo phủ Play sử dụng mô hình không đồng bộ hóa hoàn toàn được xây dựng trên tầng đầu của Akka. Kết hợp với stateless, quy mô hoạt động của Play đơn giản và dễ nhận biết được.
  • Play không blocking I/O khi thực thi.

1.3 Modern Web & Mobile

  • Hỗ trợ Asset Compiler cho CoffeeScript, LESS,..
  • Hỗ trợ tốt cho NoSQL & Big Data

2. Kiến Trúc - Vòng Đời

2.1 Vòng Đời

  • Play Framework hoàn toàn stateless và chỉ thực hiện router các Request/Response. Tất cả các HTTP Request đều đi theo con đường như nhau.
  • Có thể tóm tắt lại toàn bộ quá trình như sau:
    • HTTP Request được Framework nhận.
    • Các Router sẽ phân tích đường dẫn của request để xác định được Controller nào sẽ được gọi tới.
    • Nếu đã tìm đúng được Controller , phần code sẽ được thực thi.
    • Nếu một view phức tạp cần được generate, file template sẽ được render.
    • Kết quả trả về sẽ được viết thành HTTP Response.

2.2 Cấu trúc một Play Application

  • Cấu trúc thư mục trong Play được phân tách rõ ràng, giúp giữ cho mọi thứ đơn giản nhất có thể.
  • Các thành phần chính trong cấu trúc thư mục
    • app/: directory chứa toàn bộ các code thực thi của chương trình, bao gồm code Java và Scala, template, compiled asset code. Có 3 package trong đây ứng với 3 thành phần trong cấu trúc MVC: controller, view, model
    • conf/: directory chứa các file config cho ứng dụng, bao gồm
      • application.conf: File config chính của app, chứa các
      • routes: file định nghĩa các routing có trong app sẽ được phát triển. 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/: thư mục chứa các dependencies library, các thư viện do bên thứ 3 cung cấp.
    • project: chứa các định nghĩa cho sbt
      • plugins.sbt:khai báo các sbt plugins sẽ được sử dụng trong hệ thống.
      • build.properties: chứa các version sbt sử dụng để build app
    • build.sbt: Khai báo các build chính của ứng dụng
    • target/: Chứa mọi thứ được generate tự động bởi hệ thống.

3. Cài Đặt

  • Trong nội dung bài viết này, chúng ta sẽ cài đặt Play Framework trên môi trường Win10.

3.1 Các bước tiến hành

  • Cài đặt JDK 8 hoặc cao hơn. Download tại đây
  • Setup đường dẫn với thư mục Java
    • Vào Control Panel->System -> Advanced -> Environment Variables
    • Trong phần System Variables, new một giá trị
      • Variable Name: JAVA_HOME
      • Variable Value: C:\Program Files\Java\jdk1.8.0_171
  • Tiếp theo, chúng ta thử chạy Starter Project của Play Framework, download nó tại đây.
  • Sau khi download và giải nén hoàn tất, chúng ta mở thư mục vừa download về và chạy file
    sbt.bat
  • Lúc này, script sẽ tự động cài đặt các thành phần cần thiết cho Play Framework để sử dụng.
  • Sau khi phần bat chạy hoàn tất, chúng ta chạy tiếp câu lệnh
[play-java] $ run

  • Sau khi chạy hoàn tất, màn hình console sẽ hiện ra
  • Lúc này, server sẽ được chạy, chúng ta có thể mở browser với đường dẫn localhost:9000

3.2 Lỗi Thường Gặp

3.2.1 Lỗi Missing dependency 'object java.lang.Object in compiler mirror'

  • Nguyên nhân:
    • Do cài sai phiên bản Java và JDK
  • Khắc phục:
    • Xóa phiên bản cũ đi, cài Java 8 theo đường dẫn phía trên.

3.2.2 Lỗi java is not recognized as an internal command or external command

  • Nguyên nhân:
    • Do Window chưa nhận được đường dẫn tới thư mục cài Java
  • Khắc phục:
    • Setup Enviroment Variables cho Window theo hướng dẫn phía trên.

4. Kết Luận

  • Có thể thấy, việc cài đặt Play Framework khá dễ dàng và nhanh chóng. Cấu trúc thư mục trong Play Application cũng được phân tách khá rạch ròi và dễ nắm bắt
  • Play tương thích tốt với Scala và Java, cũng như các IDE thông dụng.

5. Tham Khảo

https://www.playframework.com/documentation/2.6.x/IDE
https://assist-software.net/blog/how-play-work-play-framework-tutorial
https://viblo.asia/p/tim-hieu-ve-play-framework-LzD5dA4YKjY
https://viblo.asia/p/head-first-play-framework-qzaGzLgWkyO