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:
