Un problema notable del desarrollo Java Empresarial es su inherente complejidad. Tanto si usamos el estándar Java EE como Spring, nuestro equipo de desarrollo nunca será tan productivo como un equipo de desarrollo VisualBasic, PHP, Ruby&Rails, 4GL o incluso COBOL. La complejidad del desarrollo Java empresarial requiere de desarrolladores con mucho talento, y además éstos tienen que escribir demasiado código.
La solución ideal para este problema podría ser el enfoque de Desarrollo Dirigido por el Modelo (Model-Driven Development). Basicamente MDD establece que solo la parte del modelo de una aplicación se ha de desarrollar, y que el resto de la application se generará desde este modelo. De esta forma, el desarrollador escribe menos código y además más simple. Aún sí, una potente aplicación Java es creada. Una encarnación popular de la idea de MDD es Model-Driven Architecture (MDA).
Sin embargo, hoy día, el uso de MDD es todavía muy complejo. Es necesaria una gran inversión de tiempo, pericia y herramientas; usualmente construyendo nuestro propio DSL y combinandolo en una factoría de software, y esto cuesta mucho esfuerzo. Como consecuencia de esto, solo las grandes compañias pueden abordar MDD, y esto solo se amortiza cuando se usa multiples veces para proyectos diferentes. Y, por supuesto, MDD es una alternativa difícil para las pequeñas y medianas empresas.
Afortunadamente podemos disfrutar de las bondades de MDD sin sus penas. Simplemente hemos de quitar MDA, DSLs, UML y la generación de código de MDD y obtendremos un simple pero efectivo método de hacer Desarrollo Dirigido por el Modelo. OpenXava hace Model Driven Development de una manera ligera, y así puede es viable para las pequeñas y medianas empresas, y más barato para las grandes.
OpenXava permite desarrollar aplicaciones definiendo solo la parte del modelo de la aplicación y el resto es provisto por el marco de trabajo. Para definir la parte del modelo se usan simple clases Java con anotaciones Java 5.
De esta forma, escribiendo clases para Factura, Cliente, Producto, Pedido, etc. con los metadatos apropiados es suficiente para obtener una aplicación funcional. La interfaz de usuario, el acceso a la base de datos, el comportamiento para las tareas habituales, etc. son realizadas automáticamente por el marco de trabajo.
OpenXava no usa UML, DSL ni generación de código.