Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Framework JSF

No description
by

Claudia Rodriguez

on 2 October 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Framework JSF

¿Por qué utilizar Java 7? Java 7 Funciones de Java 7 En primer lugar el soporte a Java 6 finaliza en Febrero de 2013, y solo permanecerá en los archivos para pruebas de sistemas antiguos.

Java 7 es la versión más reciente de Java que incluye muchas características nuevas, mejoras y correcciones de bugs para mejorar la eficacia en el desarrollo y la ejecución de programas Java. Mejora del rendimiento, la estabilidad y la seguridad.
Mejoras en el lenguaje de programación Java que facilitan a los desarrolladores la escritura y optimización del código Java.
Mejoras en Java Virtual Machine para soportar lenguajes que no son Java. PDS Facelets JMS JTA Entre las nuevas características del lenguaje podemos citar: La adición de literales binarios y la capacidad de insertar underscores en literales numéricos.
El uso de un bloque de múltiples captura.
El try con recursos de bloque.
La mejora de las inferencias de tipo diamante con el operador.
Mejoras en la utilización de métodos con un número variable de argumentos.
Java 7 tiene los mejores mecanismos de bloque try-catch. Estos incluyen la capacidad de capturar más de una excepción en un bloque catch, y mejoras en la forma de excepciones que pueden ser lanzadas.
Nuevo API para el manejo de archivos java.nio.Files consistente en todos los OS y con mejor performance. Sintomas de SIGEF - Resolver todos los problemas como deficiencias de conocimiento de programancion con codigo en el frwk - Excesivo uso de memoria con proposito de caching - Estructuras de datos no apropiadas - Falta de Optimizacion - No uso de estandandares - Falta de evolucion de acuerdo a los cambios - Excesito uso de contenido estatico de clases - Malos algoritmos o no optimizados para la demanda - Ergonomia incorrecta del GC - Especificacion de middleware no adecuada - Una integracion no adecuada o no delimitada con los sistemas externos Framework JSF ¿Qué es JSF?
JavaServer Faces (JSF) es un tecnología y framework para aplicaciones Java basadas en web que simplifica el desarrollo de interfaces de usuario en aplicaciones Java EE. Es el estándar para una aplicación web de JAVA. Razones para usar JSF Es un framework basado en MVC. Orientado a componentes y eventos. Múltiples Implementaciones, varias gratis algunas pagas. A specification and reference Es una especificación y referencia a su implementación.

Componentes
Eventos
Validadores y Convertidores
Navigación
Datos del lado del servidor. Fácil de usar. Extendible componentización y arquitectura de rendering. Protocolo HTTP HTTP funciona como request and response como cliente y servidor. Recordando de HTTP La última revisión utilizada del protocolo http 1.1 fue en 1998 donde en una misma transacción pueda traer múltiples recursos. HTTP es un protocolo de capa de aplicación diseñada en el marco de la suite de protocolo de Internet. Actualmente se está modificando el protocolo para poder aumentar el performance en el uso de aplicaciones web y mobile. La base de http 2.0 es SPDY y HTTP Speed+Mobility (basado en SPDY). Porque importa, en 14 Años no se a modificado el protocolo y todas las aplicaciones web se basan en el. La inclusión de websockets (parte de HTML 5) y transacciones concurrentes para subir la velocidad mejora la forma de subir performace en la web. Entendiendo el Ciclo de Vida de JSF El Ciclo de Vida siempre se ejecuta, ya sea
un inicial request o un postback Usualmente un inicial request viene de un link en una página y hace render en otra página. Esto crea un view nuevo y lo asigna al FacesContext del request activo. En esta fase se crea el view, prepara los handlers de los eventos y validadores de los componentes en el view y salva el view en la instancia del FacesContext.

Si es un request inicial se crea un view vacío y se hace el render de los tags.

Si es un postback el view ya existe entonces se restaura el view con información del cliente o servidor (dependiendo de la configuración). Restore View Después que el tree de componente (view root) es restaurado, cada componente en el método decode extrae la información del request. El valor es guardado localmente en el componente, si hubo un error de conversión éste se agregará a una pila del facesContext y este mensaje saldrá en el render response. Apply Request Si el componente tiene encendido el atributo inmediato, entonces las validaciones, conversiones y eventos se procesarán en esta fase. En este punto, si la aplicación debe redirigir a otra página o hacer un render sin componentes, debe llamar FacesContext.renderComplete Al final de esta faceta los componentes están asignados con sus nuevos valores. En esta fase se procesan todas las validaciones registradas al tree de componentes, si se encuentra un valor invalido se agrega el mensaje al FacesContext y el ciclo de vida avanza directamente a la fase del render. Process Validation En este punto, si la aplicación debe redirigir a otra página o hacer un render sin componentes, debe llamar FacesContext.renderComplete Después que se ha determinado que los datos son válidos, se visita el tree de componentes y a los componentes que tenían un modelo asociado, se actualiza el modelo con el valor del componente.

Si existe un error de conversión se agrega el mensaje a FacesContext y se salta la fase de render para presentar este mensaje. Update Model Values En este punto, si la aplicación debe redirigir a otra página o hacer un render sin componentes, debe llamar FacesContext.renderComplete. Esta fase se encarga de manejar las fases de eventos a nivel de aplicación, así como hacer un summit a un form. Invoke Application Un ejemplo de evento de aplicación, si el evento es de un UICommand (botón o link) y el retorno de este componente se interpreta por el navigation handler, hará lo que diga la regla de esto. Render Response Durante esta fase se delega el render a la autoridad apropiada para hacer el rendering de las páginas.

Después que el render es completado, si el view state es grabado en el cliente o servidor. MVC son siglas de Model-View-Controller ¿Qué es MVC? MVC es un patrón de diseño que separa los datos de una aplicación, la interfaz de usuario y la lógica de negocio en tres componentes distintos.

Un model consiste en la data de la aplicación y las reglas de negocio.

Un controlador media los inputs convirtiendo sus comandos para el modelo o el view.

Un view solo debe contener presentación de los datos. La idea central de MVC es la reutilización de código y separación de preocupaciones. Un Ejemplo Simple de MVC en JSF package world.end;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.io.Serializable;

@ManagedBean
@SessionScoped
public class HelloBean implements Serializable {

private static final long serialVersionUID = 1L;

private String name;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
} <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">

<h:head>
<title>JSF 2.0 Hello World</title>
</h:head>
<h:body>
<h3>JSF 2.0 Hello World Example - hello.xhtml</h3>
<h:form>
<h:inputText value="#{helloBean.name}"/>
<h:commandButton value="Welcome Me" action="#{controlHello.navega}"/>
</h:form>
</h:body>
</html> La reutilización de view a través de Facelets. ¿Qué es Facelets? El término facelets se refiere a la tecnología de declaración del lenguaje visual (view).

Previamente era usado JavaServer Pages (JSP) como la tecnología de presentación para JavaServer Faces, pero ya no soporta las nuevas funciones de JEE6 de JSF. JSP es considerado una tecnología deprecada para JSF. Uso de XHTML para crear páginas web. Características de Facelets Soporte para librerías de etiquetas Facelets, además de JavaServer Faces y librerias de etiquetas JSTL. Soporte completo a Expression Language (EL) Facilidad en la creación del templating para los componentes y páginas. Las ventajas de Facelets para proyectos de desarrollo a gran escala son las siguientes: El apoyo a la reutilización de código a través de plantillas y componentes compuestos. Extensibilidad funcional de componentes y otros objetos del lado del servidor a través de la personalización. Tiempo de compilación más rápido. Validación de EL en tiempo de compilación. Alto rendimiento produciendo (rendering) package world.end;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.io.Serializable;

@ManagedBean
@RequestScoped
public class ControlHello {


public String navega() {
return "juan";
}
} Manage Bean @ManagedBean (javax.faces.bean.ManagedBean) esta anotación en una clase registra automáticamente la clase con el tiempo de ejecución como una clase de bean administrado. Por tanto, no es necesario registrarla en un XML.

Por defecto el nombre del bean (objeto), es el nombre simple de la clase, con la primera letra en minúscula. Un ManageBean (Objeto Manejado) siempre está dentro de algún tipo de scope (alcance). Scopes de los Manage Bean Application (@ApplicationScoped): Objetos disponibles para todas las peticiones de cualquier usuario en todas las vistas de la aplicación. Session (@SessionScoped): Objetos disponibles para todas las peticiones que formen parte de la misma sesión de un cliente (los valores permanecen entre peticiones de la misma sesión). View (@ViewScoped): Objetos disponibles para todas las peticiones que se realicen sobre la misma vista (página JSF) (los valores permanecen hasta que se navegue a otra página). Request (@RequestScoped): Objetos disponibles desde que se recibe una petición hasta que la respuesta se envía al cliente (alcance por defecto). Con relación al SessionScope Cada clase que use este scope se registrará en el HttpSession con una identificación única y se replicará entre el cluster, por tanto, la información que contiene tiene que ser serializable. El uso excesivo y sin control con este scope puede llevar el Out of Memory en una aplicación. Provee un importante mecanismo que permite a las páginas web comunicarse con la Lógica de Negocio (Manage Beans). EL es usado por ambos JSF y JSP. Expresion Language (EL) Evaluación diferida e inmediata de las expresiones. La capacidad de establecer, así como de obtener datos. La capacidad de invocar métodos. <h:inputText id="name" value="#{customer.name}" /> Ejemplo de Operaciones Arithmetic: +, - (binary), *, / and div, % and mod Logical: and, &&, or, ||, not, ! Relational: ==, eq, !=, ne, <, lt, >, gt, <=, ge, >=, le. Se pueden hacer comparaciones con otros valores, o contra booleano, cadena, un entero o flotante. Empty: el operador empty es una operación de prefijo que se puede utilizar para determinar si un valor es nulo o vacío. Conditional: A ? B : C. Evaluar B o C, dependiendo del resultado de la evaluación de A Agregar el código JavaScript necesario para una aplicación.

Usando la biblioteca de recursos incorporada en Ajax. La Funcionalidad Ajax se puede añadir a una aplicación JavaServer Faces en una de las siguientes maneras <h:inputText value="#{bean.message}">
<f:ajax />
</h:inputText> <h:commandButton id="submit" value="Submit">
<f:ajax event="click" />
</h:commandButton>
<h:outputText id="result" value="#{userNumberBean.response}" /> Ejemplos de Ajax <h:inputText id="userNo"
title="Type a number from 0 to 10:"
value="#{userNumberBean.userNumber}">
...
</h:inputText>
<h:commandButton id="submit" value="Submit">
<f:ajax event="click" execute="userNo" />
</h:commandButton> <h:commandButton id="submit" value="Submit">
<f:ajax event="click" execute="userNo" render="result"/>
</h:commandButton>
<h:outputText id="result" value="#{userNumberBean.response}"/> Richfaces Es una biblioteca de componentes ricos para JSF y un marco avanzado para integrar fácilmente las capacidades de AJAX en el desarrollo de aplicaciones empresariales. Los componentes se entregan listos para su uso fuera de la caja, para que los desarrolladores inmediatamente puedan ahorrar tiempo en tomar ventaja de las características de los componentes para crear aplicaciones web que proporcionan una mejor experiencia de usuario mucho más fiable y más rápido. Conversión: de datos string a objetos java. Convertidores y Validadores Validación: verifica la conversión para ver si está correcta. Repasando el ciclo de vida: El usuario rellena un campo de un formulario web.
El usuario hace clic al botón de enviar, envía los datos del formulario como una cadena al servidor. Este es el valor de la solicitud.
Solicitar los valores que se almacenan en objetos UIComponent como valores presentados.
Los valores presentados se convierten a tipos Java requeridos por la aplicación y se almacenan en los objetos componentes como valores locales.
Los valores locales son validados por la corrección (por ejemplo, el rango entero o cadena de longitud).
Después de la validación, los valores locales se almacenan en los objetos adecuados. <h:inputText value="#{payment.amount}">
<f:convertNumber minFractionDigits="2"/></h:inputText> Utilizando Convertidores Estándares <h:inputText value="#{payment.date}">
<f:convertDateTime pattern="MM/yyyy"/>
</h:inputText> Bean Validation La tecnología JavaServer Faces utiliza EL por las siguientes funciones: Ejemplo: Validar la entrada recibida del usuario para mantener la integridad de los datos es una parte importante de la lógica de la aplicación. La validación de datos puede tener lugar en diferentes capas, aún en la más simple de las aplicaciones.

Validación JavaBeans (Bean Validation) es un modelo de validación nuevo disponible como parte de la plataforma Java EE 6. El modelo de Bean Validation es apoyado por las restricciones en forma de anotaciones colocadas en un campo, un método o una clase de un componente JavaBeans, como un bean gestionado.

Ejemplo:

@DecimalMax -> @DecimalMax("30.00")
BigDecimal discount;
Full transcript