- ¿Qué es Play Framework?
Play Framework es un marco de trabajo (framework) para el desarrollo de aplicaciones web y servicios en Scala y Java. Es conocido por su arquitectura reactiva, que permite construir aplicaciones escalables y de alto rendimiento. Algunas de sus características clave incluyen:
- Desarrollo Asíncrono y No Bloqueante: Utiliza un modelo de programación reactiva que permite manejar muchas conexiones simultáneas sin bloquear hilos.
- Hot Reloading: Permite ver los cambios en el código en tiempo real sin necesidad de reiniciar el servidor.
- Integración con Herramientas Modernas: Soporte para SBT (Scala Build Tool), integración con bases de datos, y soporte para pruebas.
- Configuración del Entorno de Desarrollo
Requisitos Previos
Antes de comenzar, asegúrate de tener instalados los siguientes componentes:
- Java Development Kit (JDK): Play Framework requiere JDK 8 o superior.
- Scala: Aunque Play Framework soporta Java, este curso se enfoca en Scala.
- SBT (Scala Build Tool): Herramienta de construcción para proyectos Scala.
Instalación de SBT
Para instalar SBT, sigue las instrucciones específicas para tu sistema operativo desde la página oficial de SBT.
Creación de un Proyecto Play
-
Crear un nuevo proyecto:
sbt new playframework/play-scala-seed.g8
Este comando crea un nuevo proyecto Play usando el arquetipo
play-scala-seed
. -
Navegar al directorio del proyecto:
cd nombre-del-proyecto
-
Iniciar el servidor Play:
sbt run
Abre tu navegador y navega a
http://localhost:9000
para ver la aplicación en funcionamiento.
- Estructura del Proyecto Play
Un proyecto Play típico tiene la siguiente estructura de directorios:
nombre-del-proyecto/ ├── app/ │ ├── controllers/ │ ├── models/ │ ├── views/ ├── conf/ │ ├── application.conf │ ├── routes ├── public/ │ ├── images/ │ ├── javascripts/ │ ├── stylesheets/ ├── test/ ├── build.sbt
- app/: Contiene el código fuente de la aplicación.
- controllers/: Controladores que manejan las solicitudes HTTP.
- models/: Clases de modelo que representan los datos de la aplicación.
- views/: Plantillas que generan el HTML de la aplicación.
- conf/: Archivos de configuración.
- application.conf: Configuración de la aplicación.
- routes: Archivo de rutas que mapea las URL a los controladores.
- public/: Archivos estáticos como imágenes, JavaScript y CSS.
- test/: Pruebas de la aplicación.
- build.sbt: Archivo de configuración de SBT.
- Conceptos Básicos de Play Framework
Controladores
Los controladores en Play Framework manejan las solicitudes HTTP y devuelven respuestas. Aquí hay un ejemplo básico de un controlador:
package controllers import javax.inject._ import play.api.mvc._ @Singleton class HomeController @Inject()(val controllerComponents: ControllerComponents) extends BaseController { def index() = Action { implicit request: Request[AnyContent] => Ok("Hello, Play Framework!") } }
Rutas
El archivo conf/routes
mapea las URL a los métodos del controlador. Aquí hay un ejemplo de cómo mapear la ruta raíz (/
) al método index
del HomeController
:
Vistas
Play Framework utiliza el motor de plantillas Twirl para generar HTML. Aquí hay un ejemplo de una vista simple:
@(message: String) <!DOCTYPE html> <html> <head> <title>Play Framework</title> </head> <body> <h1>@message</h1> </body> </html>
Y el controlador que usa esta vista:
def index() = Action { implicit request: Request[AnyContent] => Ok(views.html.index("Hello, Play Framework!")) }
- Ejercicio Práctico
Objetivo
Crear una aplicación Play simple que muestre una lista de tareas.
Pasos
-
Crear el modelo de datos:
package models case class Task(id: Long, name: String)
-
Crear el controlador:
package controllers import javax.inject._ import play.api.mvc._ import models.Task @Singleton class TaskController @Inject()(val controllerComponents: ControllerComponents) extends BaseController { var tasks = List( Task(1, "Learn Scala"), Task(2, "Learn Play Framework") ) def list() = Action { implicit request: Request[AnyContent] => Ok(views.html.tasks(tasks)) } }
-
Configurar la ruta:
GET /tasks controllers.TaskController.list
-
Crear la vista:
@(tasks: List[models.Task]) <!DOCTYPE html> <html> <head> <title>Task List</title> </head> <body> <h1>Task List</h1> <ul> @for(task <- tasks) { <li>@task.name</li> } </ul> </body> </html>
Solución
Al completar los pasos anteriores, deberías tener una aplicación Play que muestra una lista de tareas en http://localhost:9000/tasks
.
- Conclusión
En esta sección, hemos introducido Play Framework, configurado el entorno de desarrollo, explorado la estructura del proyecto y creado una aplicación simple. Play Framework es una herramienta poderosa para el desarrollo de aplicaciones web en Scala, y su arquitectura reactiva permite construir aplicaciones escalables y de alto rendimiento. En las siguientes secciones, profundizaremos en características más avanzadas y mejores prácticas para el desarrollo con Play Framework.
Curso de Programación en Scala
Módulo 1: Introducción a Scala
- Introducción a Scala
- Configuración del Entorno de Desarrollo
- Conceptos Básicos de Scala: Sintaxis y Estructura
- Variables y Tipos de Datos
- Operaciones Básicas y Expresiones
Módulo 2: Estructuras de Control y Funciones
- Sentencias Condicionales
- Bucles e Iteraciones
- Funciones y Métodos
- Funciones de Orden Superior
- Funciones Anónimas
Módulo 3: Colecciones y Estructuras de Datos
- Introducción a las Colecciones
- Listas y Arreglos
- Conjuntos y Mapas
- Tuplas y Opciones
- Coincidencia de Patrones
Módulo 4: Programación Orientada a Objetos en Scala
- Clases y Objetos
- Herencia y Rasgos
- Clases Abstractas y Clases Caso
- Objetos Compañeros
- Objetos Singleton
Módulo 5: Programación Funcional en Scala
- Inmutabilidad y Funciones Puras
- Estructuras de Datos Funcionales
- Mónadas y Funtores
- Comprensiones For
- Manejo de Errores en Programación Funcional
Módulo 6: Conceptos Avanzados de Scala
- Conversiones y Parámetros Implícitos
- Clases de Tipo y Polimorfismo
- Macros y Reflexión
- Concurrencia en Scala
- Introducción a Akka