JAVA BEAN


Un JavaBean o bean es un componente hecho en software que se puede reutilizar y que puede ser manipulado visualmente por una herramienta de programación en lenguaje Java.
Los JavaBeans se idearon como un mecanismo para diseñar componentes, generalmente de tipo gráfico, que pudiesen ser reutilizados por los entornos de desarrollo integrado (IDE). Para ello, el interfaz de un JavaBean debería ser capaz de mostrar sus propiedades en tiempo de ejecución. Esta característica ha hecho que los JavaBeans se utilicen en otros entornos, como puede ser el desarrollo de aplicaciones web.
Un JavaBean, o simplemente "bean", en el entorno JSP no es más que una clase Java que sigue ciertas convenciones en el nombrado de sus métodos, con el objeto de permitir que los motores JSP (como Tomcat) puedan conocer y acceder a las propiedades que contiene. Así, el JavaBean tiene propiedades (las cuales no son más que variables Java de esa clase) y, para cada una de ellas, deben definirse los métodos getPropiedad() y setPropiedad() que permiten leer y escribir el valor de la propiedad, respectivamente.
Las convenciones de codificación que exige la especificación para una clase JavaBeans son las siguientes:
∙ Una clase JavaBean debe tener un constructor sin argumentos.
∙ Una clase JavaBean no debería tener variables de instancia públicas.
∙ Para cada variable (o propiedad) deben crearse dos métodos cuyo nombre sea el nombre de la propiedad comenzando por letra mayúscula y precedido por "get" (para método de lectura) o "set" (para método de escrituta).
Así, un ejemplo de clase que sigue la convención Javabean podría ser la siguiente:
clase_javabean.java
public class clase_javabean {
public clase_javabean() { }
private String propiedad = "valor";
public String getPropiedad() {
return propiedad;
}
public void setPropiedad(String prop) {
propiedad = prop;
}
}



De esta forma, las propiedades del Javabean se exponen públicamente mediante esos métodos, cuyo nombre es conocido de antemano al seguir la regla de nombrado Javabean. Esto confiere la característica de instrospección que no es más que la capacidad que tienen los motores JSP como Tomcat de acceder directamente a las variables de la clase, al conocerse los métodos necesarios para ello.
Adicionalmante a lo anterior, las clases Javabean tienen la característica de que pueden implementar la interfaz "java.io.Serializable". Se denomina seriación al proceso de escribir el estado de un objeto en un flujo de octetos, permitiendo con ello almacenar objetos en archivos, transmitirlos por una red de comunicaciones y utilizarlos en aplicaciones distribuidas. Por otro lado, se conoce como persistencia a la capacidad que tiene un objeto para existir más allá de la ejecución de un programa (en un archivo, por ejemplo). De acuerdo con ello, puede observarse como la seriación es la clave para la implementación de la persistencia, ya que permite escribir un objeto en un flujo y volver a leerlo posteriormente.
En un flujo de bytes solamente se puede guardar y restablecer un objeto que implemente la interfaz Serializable. Esta interfaz no dispone de métodos, sólo sirve para indicar que una clase se puede seriar, para lo cual será necesario que todas las instancias de clases usadas sean de tipo primario o clases que también se puedan seriar (por ejemplo, esto no ocurre con la clase "Object", pero sí con "String").
Consecuentemente con lo anterior, una definición de clase Javabean que presente la capacidad de persistencia podría ser la siguiente:
clase_javabean_persistente.java
package paquete;
import java.io.Serializable;
public class clase_javabean_persistente implements Serializable {
public clase_javabean_persistente() { }
private String propiedad = "valor";
public String getPropiedad() {
return propiedad;
}
public void setPropiedad(String propiedad) { }
}



Los Javabean, conforme a lo anteriormente indicado, no son más que una clase Java que sigue unos criterios estándar para el nombrado de los métodos que permiten acceder públicamente a variables de dicha clase. Conforme con esto, el uso de Javabeans podría seguir haciéndose mediante la inclusión de código Java dentro del fichero JSP, creando por ejemplo una instancia del Javabean del siguiente modo:
<% paquete.clase_javabean instancia = new paquete.clase_javabean (); %>
o recuperar el valor de una variable mediante la llamada:
<%= instancia.getPropiedad() %>
No obstante, esto no implicaría ventaja substancial respecto al uso de los scriptlets. La principal ventaja de los Javabean es que tanto la creación de la instancia de la clase Javabean como el acceso a sus variables puede realizarse mediante etiquetas JSP, eliminando así el código Java de la página JSP. Las etiquetas JSP que permiten esto son:
a) "jsp:useBean": crea una instacia "nombre" de la clase Javabean "clase":
<jsp:useBean id="nombre" class="clase" type="tipo" scope="ámbito" />
donde se distinguen los siguientes parámetros:
∙ id: especifica el nombre de la instancia del JavaBean con el que será conocido dentro del ámbito en el que se define.
∙ class: indica la clase JavaBean que se va a instanciar.
∙ type: indica otra clase o interfaz de la que deriva el bean, haciendo que éste deba usarse como tipo de datos de esa clase o interfaz. Su valor puede ser el mismo que el del parámetro "class", una superclase de "class" o una interfaz implementada por "class". Así, por ejemplo, si el JavaBean va a implementar la interfaz Runnable para ejecución en segundo plano, se indicaría como tipo type="Runnable".
∙ scope: determina el ámbito en el que puede usarse el JavaBean, pudiendo ser:
► page: es accesible únicamente dentro de la página en la que se define.
► session: es accesible desde todas las páginas que procesen peticiones dentro de la misma sesión (objeto "session", asociado a un cliente, que ayuda a administrar datos específicos del mismo en la aplicación Web).
► application: es accesible desde todas las páginas de la misma aplicación Web.
b) "jsp:getProperty": obtiene el valor de la propiedad (variable) "propiedad" de la instancia de clase Javabean "nombre":
<jsp:getProperty name="nombre" property="propiedad" />
c) "jsp:setProperty": establece a "valor" el valor de la propiedad (variable) "propiedad “de la instancia de clase Javabean "nombre":
<jsp:setProperty name="nombreInstancia" property="propiedad" value="valor" />
Para que las etiquetas anteriores funcionen, el código Java del JavaBean requeriría:
∙ Variable miembro "propiedad".
∙ Funciones miembro públicas "getPropiedad()" y "setPropiedad()".
Como ejemplo de uso de estas etiquetas, se crea una instancia fuente de la clase bean FuenteBean, se modifica el valor de la propiedad codigo de esa instancia fuente y se recupera a continuación dicho valor:
<jsp:useBeanid="fuente" class="FuenteBean" />
<jsp:setProperty name="fuente" property="codigo" value="YO"/>
<jsp:getProperty name="fuente" property="codigo"/>
Resumiendo, el uso de JavaBeans permite eliminar gran parte del código Java de las páginas JSP, de forma que casi toda la lógica de programación de la página se encapsule en JavaBeans (reduciendo la página a código HTML o XML) que, además, podrán ser reutilizados. Esas clases o código Java podrán ser compilados y depurados utilizando las herramientas habituales de programación, ventaja importante frente a la inserción de código Java dentro de la página (que tiene que ser depurado en la propia carga de la página).

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.