La idea de JavaBeans surge de una vieja necesidad de la Ingeniería del Software: contar con componentes reutilizables e independientes de la plataforma. El programador que hace el JB no hace nada misterioso, simplemente define una clase, tratando de encapsular (ocultar) su implementación y mostrando al exterior (el programador que usa el bean) solamente los métodos y propiedades que son públicos. Sólo se muestra aquello que forma parte del servicio que el bean ofrece al exterior.
Este concepto es un elemento esencial del trabajo eficiente en equipo, colaborar sin que cada ingeniero tenga que repetir el trabajo que ha realizado otro, sin que tenga que enfrentarse a las mismas dificultades que ha resuelto otro. El programador que usa el bean sólo debe preocuparse de lo QUE hace el bean (el servicio que ofrece), no tiene que enfrentarse al trabajo realizado por el diseñador del bean, es decir, le queda oculta la implementación (el COMO el bean ofrece el servicio).La idea va a a más: donde se ha dicho "equipo" se puede entender la comunidad global de desarrollo de software; de hecho existen numerosas empresas que ofrecen/venden beans a otros desarrolladores. En el caso de los JavaBeans la idea es que estos componentes reusables se puedan utilizar en diversos contextos: desde JavaBeans gráficos de capa cliente (controles de interfaz) hasta JavaBeans de capa web (normalmente representan entidades o reglas de negocio). Vamos a examinar dos tipos de JavaBeans: