miércoles, enero 12, 2011

Aplicaciones Web con OpenXava

De acuerdo con Wikipedia, OpenXava es un marco de trabajo de código abierto para desarrollar aplicaciones de gestión de una forma efectiva. Permite el desarrollo rápido y fácil de mantenimientos y listados pero, a su vez, es lo suficientemente flexible para desarrollar complejas aplicaciones de gestión de la vida real como contabilidad, facturación, gestión de personal, nóminas, gestión de almacenes, etc.

Actualmente OpenXava genera aplicaciones web Java (J2EE/JavaEE), que pueden ser desplegadas en cualquier portal Java (JSR-168) como una aplicación de portlets.OpenXava es una herramienta libre.

Para poder trabajar con la aplicación de demostración es necesario descargar el programa desde el sitio web  http://www.openxava.org/web/guest/home y, preferiblemente el ambiente de desarrollo de Eclipse para J2EE desde el sitio http://www.eclipse.org/downloads/

Siguiendo las instrucciones del mismo sitio web, es fácil poner en producción la aplicación web de ejemplo, así como es sorprendente ver que toda la aplicación de ejemplo queda reducida a estas dos clases en JAVA, ya que OpenXava provee automáticamente el resto:

package org.openxava.escuela.modelo;
 
import javax.persistence.*;
import org.openxava.annotations.*;
 
@Entity
public class Alumno {
    @Id @Column(length=2) @Required private int numero;
    @Column(length=40) @Required private String nombre;
    @ManyToOne @DescriptionsList private Profesor profesor;
 
    public int getNumero() { return numero; }
    public void setNumero(int numero) { this.numero = numero; }
    public String getNombre() { return nombre; }
    public void setNombre(String nombre) { this.nombre = nombre; }
    public Profesor getProfesor() { return profesor; }
    public void setProfesor(Profesor profesor){ this.profesor = profesor; }
}

package org.openxava.escuela.modelo;
 
import java.util.*;
import javax.persistence.*;
import org.openxava.annotations.*;
 
@Entity
public class Profesor {
    @Id @Column(length=5) @Required private String codigo;
    @Column(length=40) @Required private String nombre;
    @OneToMany(mappedBy="profesor") private Collection<Alumno> alumnos;
 
    public String getCodigo() { return codigo; }
    public void setCodigo(String codigo) { this.codigo = codigo;}
    public void setAlumnos(Collection<Alumno> alumnos) { this.alumnos = alumnos; }
    public void setNombre(String nombre) { this.nombre = nombre; }
    public String getNombre() { return nombre; }
    public Collection<Alumno> getAlumnos() { return alumnos; }
}


En el siguiente video se puede encontrar una breve introducción a OpenXava provista por el grupo de AltainetGroup:

Multiprocesamiento recursivo en JAVA 7

Una de las estrategias de diseño de algoritmos más comunes es la de "divide y vencerás", en la cual, un problema de tamaño relativ...