Distribuido bajo:
2013 - Bolvia
http://revista.atixlibre.org
Twitter: @atixlibre
Facebook: facebook.com/Atix.Libre
Dirección y Coordinación General
Esteban Saavedra López (
[email protected])
Diseño y Maquetación
Jenny Saavedra López (
[email protected])
Esteban Saavedra López (
[email protected])
Revisiones
Esteban Saavedra López
Jenny Saavedra López
Noticias
Jenny Saavedra López
Autores Frecuentes
Ernesto Rico Smith
Esteban Saavedra López
Martín Márquez
Rafael Rendón
Herramientas
La edición de esta revista fue realizada de forma integra haciendo uso de Software
Libre
Regreso con Fuerza
D
espués de un tiempo sin publicar nuevos números de nuestra revista, debido
a varios factores que dificultaron nuestro emprendimiento; dificultades que
en este momento no vale la pena recordarlas, pero si aprender de ellas,
nuestro equipo decidió pasar página y encarar un regreso, mentalizados con toda la
fuerza necesaria que nos ayude a continuar el objetivo que hace unos años nos
fijamos.
Se dice que un buen luchador no es aquel que pocas veces o nunca cayó, sino
aquel que cayó muchas veces e igual número de veces supo levantarse.
Regreso con fuerza, un título que representa mucho para nosotros, ya que todos los
miembros de nuestro equipo trabajamos duro para dedicarle un poco de tiempo a
este proyecto, que si bien no es remunerado, pero nos llena de satisfacción de
poder proveer a nuestros lectores un medio de difusión, aprendizaje y colaboración
en todo lo referente al software, conocimiento, tecnología y cultura libre.
En este primer número del 2013, estrenamos un nuevo diseño y presentación, pero
no todo queda ahí, ya que en los próximos números iremos mostrando algunas
nuevas secciones con diversos contenidos.
Asimismo con este primer número del 2013, queremos dar continuidad a nuestro
trabajo que desde que iniciamos con el proyecto de la revista siempre lo hicimos con
la mejor intensión y la mayor voluntad.
Bienvenidos a nuestro vigésimo número
Esteban Saavedra López
Presidente Fundación AtixLibre
Play Web
Framework
En el mundo de desarrollo de software, el uso de los frameworks se ha convertido en una
herramienta poderosa, eficiente y eficaz al momento de afrontar proyectos de desarrollo de
software, por su fácil aprendizaje, rápido desarrollo y estructura robusta.
Para reducir esta brecha entre plataformas
eficientes y escalables, múltiples proyectos
libres han optado por usar una aproximación
mixta, usar las fortalezas de la plataforma
Java y todos los beneficios de los principios
que Rails ha aplicado desde sus inicios, tales
como Convención sobre Configuración y
DRY.
Este artículo se centra en uno de los
frameworks de código
libre más
prometedores de los últimos años llamado
Play Web Framework, el cual tiene como
objetivo los siguientes tópicos:
✔ Usar toda la potencia de Java, sus
librerías y frameworks ampliamente
usados en la industria.
✔ Aplicar los principios y buenas
prácticas heredadas de Rails y
Django: DRY, Convención sobre
Configuración, etc.
✔ Permitir construir aplicaciones ligeras
de forma diferente al estándar
JEE5/6.
✔ Ser compatible con las plataformas de
desarrollo web actuales (REST, SOA).
✔ Proveer un sistema JITC(Just In Time
Compilation) para Java, el cual
permite desarrollar
y probar
aplicaciones de forma rápida.
✔ Permitir definir ambiente de trabajo
dentro de las aplicaciones: desarrollo,
pruebas, integración.
Requisitos
Para el desarrollo de la aplicación se
requieren los siguientes elementos:
Introducción
A
ctualmente el mundo del desarrollo de
software está muy orientado hacia la
construcción de entornos web,
haciendo que aplicaciones en esta categoría
sean cada vez más requeridas, de forma que
su desarrollo sea simple, en menor tiempo y
con calidad incremental a precios razonables.
El crecimiento exponencial de plataformas de
desarrollo web como Rails se debe
principalmente a su capacidad de elaborar
aplicaciones en docenas de horas con muy
poco esfuerzo. Pero este crecimiento ha
demostrado que Rails tiene limitaciones
inhenerentes a su plataforma y arquitectura
con respecto a dos temas muy importantes:
rendimiento y escalabilidad.
Estos aspectos son puntos fuertes en otras
plataformas tales como .Net y Java, pero
éstas tienen también 'incomodidades' debido
a la naturaleza de estos lenguajes
(estáticamente tipados y compilables), tales
como la cantidad de esfuerzo requerido para
obtener resultados y la falta de un esquema
de desarrollo integrado con la visión y
consistencia que Rails tiene.
✔
Java Development
(OpenJDK u Oracle JDK)
Kit
1.6.x
✔ Terminal de comandos, Bash(Unix),
Command o PowerShell(Windows)
✔ Play 1.2.5
✔ Acceso a una terminal de comandos,
Bash en Unix/Linux o Command en
Windows.
Instalación
✔ Descargar
1.2.5
Play
y
descomprímirlo en una carpeta (por
ejemplo /opt/play12).
✔ Agregar la carpeta descomprimida al
PATH de su consola de comandos
✔ Unix: Agregar la línea export
PATH=$PATH:/opt/play12 a su
archivo ~/.bashrc
✔ Windows: Agregar el directorio a
través de su utilidad de asignación
de variables globales.
Primer ejemplo
Ahora demos un vistazo rápido a las capacidades de Play desarrollando una aplicación sencilla
que nos muestre el uso completo de todo el stack de desarrollo del Play:
✔ Requerimos una aplicación que nos permita registrar tareas y marcarlas como
completadas en un entorno web.
Primeramente definimos la estructura base de una aplicación vacía, para esto crearemos una
aplicación genérica a través de la utilidad de línea de comandos de Play.
Desde la consola generamos el proyecto y accedemos a él:
$> play new Tareas
$> cd Tareas
$> play run
Accedemos a nuestra aplicación a través de la URL http://localhost:9000 y veremos la
siguiente página:
Figura 1.
✔
lib: Archivos librería adicionales
(archivos JAR).
✔ public: Archivos Javascript, CSS e
imágenes usadas en las páginas.
test: Archivos de pruebas unitarias y
pruebas de integración.
✔
Todas las peticiones HTTP siguen el mismo
ciclo de vida a través de los componentes
MVC. Las interacciones se inician en las
Vistas, las cuales envían señales al servidor,
éste usa las Rutas configuradas para
redireccionar
los respectivos
Controladores, los cuales acceden a los
elementos del Modelo, mismos que son
renderizados (de ser necesario) por las
vistas.
todo a
Figura 3. MVC
A partir de este punto cualquier modificación
realizada al código y/o configuraciones es
automáticamente aplicada al código al
recargar la página. Esta es una de las
características más trabajadas y útiles en
Play ya que permite tener un entorno
inmediato de desarrollo-resultado integrado
con el framework.
Modelo de dominio
Como toda aplicación MVC empezamos
definiendo el modelo, para nuestro caso
usaremos una estructura sencilla, una clase
persistente Tarea bajo
la carpeta
app/models/Tarea.java.
Esta página inicial contiene toda la
documentación local base para Play,
incluyendo sus preguntas más frecuentes y
guías de uso.
Estructura del proyecto
Ingresando en la nueva carpeta de proyecto
creada, tenemos los siguientes directorios:
Figura 2. Estructura de Proyecto.
✔ app: Carpeta que aloja los principales
componentes MVC de la aplicación.
✔ controllers:
Componentes Java,
controlando la interacción entre
componentes
visuales,
redireccionando peticiones HTTP e
interactuando como punto de acceso
hacia los componentes del modelo.
✔ models: Componentes persistentes o
no del dominio de la aplicación, por
defecto Play usa el estándar JEE JPA
1.0 para la persistencia de datos.
✔ views: Plantillas HTML que permiten
renderizar componentes obtenidos a
través de los controladores. Play usa
una sintaxis similar a Ruby para las
plantillas de vistas.
✔ conf:
Configuraciones de
la
aplicación, tales como conexiones a
bases de datos, módulos adicionales,
internacionalización, mapeo de rutas
HTTP para interacciones REST, datos
iniciales, etc.
package models;
import play.*;
import play.db.jpa.*;
import play.data.validation.*;
import javax.persistence.*;
import java.util.*;
@Entity
public class Tarea extends Model{
@Required
public String titulo;
public boolean completada;
public Tarea(String titulo){
this.titulo = titulo;
}
public String toString(){
}
}
return id + " - " + titulo;
Todos los componentes del modelo en Play
extienden de la clase base Model, que
permite definir clases que se mapean a
tablas de forma automática. Adicionalmente
tiene agregados de validación como el
@Required usado para establecer un campo
como requerido; nótese que el atributo ID es
automáticamente definido en la clase base
Model.
Para habilitar una base de datos de
desarrollo configuramos Play para que la
genere por nosotros en memoria, en el
archivo conf/application.conf encuentre
y descomente (quitar el caracter #):
db=mem
CRUD
Play nos permite generar estructuras CRUD
(Create/Update/Delete) a través de uno de
Ahora acceder de nuevo a la dirección http://localhost:9000 para verificar las operaciones
CRUD, debería mostrar algo similar a la siguiente pantalla:
$> play run --deps
sus módulos de forma sencilla, para este
cometido
archivo
con
Comentarios de: atix20 (0)
No hay comentarios