title: Apache Bval
text: # Apache Bval
  
  Apache BVal es una implementación en código abierto de la especificación Bean Validation (JSR303) para la plataforma Java, parte integrante de Java EE 6.
  
  # Apache Bval
  ## Origen
  
  La base original de código fue donada a Apache Software Foundation por la empresa Agimatec GmbH y se pone a disposición bajo los términos de Apache License 2.0. Apache Bval pasó a integrar los proyectos principales de la Fundación el 15 de febrero de 2012.
  
  # Apache Bval
  ## Materia
  
  Las aplicaciones computacionales suelen dedicar una parte considerable de su código fuente a la validación de datos. Suele tratarse de código a la medida, fragmentado, disperso y muchas veces duplicado en las diversas capas o componentes.Bean Validation provee un mecanismo estandarizado para llevar a cabo la validación de datos en JavaBeans. Todo servidor Java EE 6 debe, además, incluir un proveedor para Bean Validation. Apache Bval es una de las implementaciones de este estándar. El mecanismo de validación es declarativo, por medio de anotaciones, que dan lugar a restricciones (constraints) y pueden aplicarse tanto a propiedades individuales como a tipos completos. He aquí un ejemplo de restricción aplicada a una propiedad de un JavaBean:
  
  # Apache Bval
  ## Módulos
  
  Esta implementación de JSR-303 se subdivide en los siguientes módulos:
  * bval-core: Motor de metadatos de BVal.
  * bval-xstream: Metadatos XML para BVal con XStream (opcional).
  * bval-jsr303: Clases específicas de la implementación de JSR-303 Bean Validation 1.0
  * org.apache.bval.bundle: Paquete agregado OSGi para Apache BVal (bval-core + bval-jsr303).
  * bval-json: Componente opcional JSON para BVal (optional).
  * bval-guice: Componente opcional para la integración de BVal en Google Guice.
  * bval-tck: (Ejecutor del TCK) incorpora dependencias y ejecuta el TCK para JSR-303.
  * bval-extras: Rutinas y restricciones opcionales de BVal, no especificadas por JSR-303.
  Véase también Bean Validation.