vaadin

Libro de Vaadin: Vaadin 6.4Vaadin LtdMarko GrönroosVaadin marco 6.4.7Publicado: 25/10/2010Copyright © 2000-2010 Vaadin LtdResumenVaadin es un AJAX del lado del servidor de aplicaciones Web marco de desarrollo que permite a los desarrolladores a construirde alta calidad de las interfaces de usuario con Java. Proporciona una colección de prêt-a-uso de componentes de interfaz de usuario yun marco de limpieza para crear sus propios componentes. La atención se centra en la facilidad de uso, reutilización, extensibilidad,y cumplir los requisitos de las aplicaciones empresariales de gran tamaño. Vaadin se ha utilizado en la producción desde2001 y se ha demostrado que son idóneos para la construcción de aplicaciones comerciales exigentes.Todos los derechos reservados.Tabla de contenidosPrefacio ................................................. .................................................. ......................... ix1. Introducción ................................................. .................................................. .............. 11.1. Información general ................................................. .................................................. ......... 11.2. Ejemplo de aplicación Tutorial ............................................... ......................... 31.3. El apoyo a la IDE de Eclipse ............................................. .................................... 41.4. Objetivos y Filosofía ............................................... .......................................... 41.5. Antecedentes ................................................. .................................................. ..... 52. Introducción a Vaadin .............................................. ........................................... 72.1. Instalación Vaadin ................................................ ................................................. 72.1.1. Instalación del paquete de distribución .............................................. ............... 82.1.2. Inicio del Navegador de contenido .............................................. ...................... 82.1.3. Contenido del paquete ................................................ .................................... 92.1.4. Demo Aplicaciones ................................................ ................................. 112.2. Configuración del entorno de desarrollo ............................................. .............. 112.2.1. Instalar Java SDK ............................................... ................................. 122.2.2. Instalación de Eclipse IDE ............................................... ............................... 132.2.3. Instalación de Apache Tomcat ............................................... ......................... 142.2.4. Firefox y Firebug ............................................... ................................. 142.2.5. Vaadin plug-in para Eclipse .............................................. .......................... 152.3. Inicio rápido con Eclipse ............................................... ....................................... 182.3.1. A partir de Eclipse ................................................ ...................................... 182.3.2. Importación de Vaadin como Proyecto ............................................. .................... 182.3.3. Ejecución de las aplicaciones de demostración en Eclipse ............................................ ... 192.3.4. Depurar las aplicaciones de demostración en Eclipse ........................................... 232.3.5. Uso de inicio rápido como un esqueleto del proyecto ............................................ ....... 232.4.Your primer proyecto con Vaadin ........................................... .................................. 242.4.1. Crear el proyecto ............................................... ................................ 242.4.2. Explorando el Proyecto ............................................... ............................... 282.4.3. Instalación y Puesta en marcha del servidor Web ........................................... ....... 302.4.4. Ejecutar y depurar ............................................... .......................... 323. Arquitectura ................................................. .................................................. ............ 353.1. Información general ................................................. .................................................. ....... 353.2. Tecnológico de fondo ................................................ ................................. 383.2.1. AJAX ................................................. .................................................. .. 383.2.2. Google Web Toolkit ............................................... ................................. 383.2.3. JSON ................................................. .................................................. . 393.3. Las solicitudes Sesiones Java Servlet ............................................. ................... 393.4. Del lado del cliente del motor .............................................. .............................................. 393.5. Eventos y Oyentes ............................................... .......................................... 414. Escribir una aplicación Web .............................................. ............................................ 434.1. Información general ................................................. .................................................. ....... 434.2. Gestión de la ventana principal .............................................. ................................. 464.3. Windows Niño ................................................ .................................................. 464.3.1. Abrir y cerrar una ventana secundaria ............................................ .......... 474.3.2. Ventana de posicionamiento ................................................ ................................ 494.3.3. Modal Windows ................................................ ...................................... 494.4. Gestión de eventos con los oyentes .............................................. ............................ 504.5. Hacer referencia a los recursos ................................................ ..................................... 524.5.1. Interfaces y clases de recursos .............................................. .............. 53Libro de Vaadin iii4.5.2. Archivo de Recursos ................................................ ....................................... 534.5.3. Clase Recursos cargador ............................................... ......................... 544.5.4. Tema Recursos ................................................ .................................. 544.5.5. Flujo de recursos ................................................ ................................. 544.6. Cierre de una aplicación .............................................. .............................. 564.6.1. Cerrar una aplicación ............................................... ............................. 564.6.2. Manejo de la clausura de una ventana ............................................ ............... 564.7. Controlar errores ................................................ ................................................. 574.7.1. Indicador de error y el mensaje .............................................. ..................... 574.7.2. Notificaciones ................................................. .......................................... 574.7.3. Manejo de excepciones no capturadas ............................................... ............... 604.8. Configurar el entorno de aplicaciones ............................................. ................. 614.8.1. Crear GUERRA despliegue en Eclipse ............................................. .......... 61Contenido 4.8.2.Web aplicación ........................................... ............................ 614.8.3. Descriptor de despliegue web.xml ............................................. ............... 625. Componentes de interfaz de usuario ............................................... ........................................ 655.1. Información general ................................................. .................................................. ....... 665.2. Interfaces y Abstracciones ............................................... ................................ 675.2.1. Componente de la interfaz de ................................................ ............................. 685.2.2. AbstractComponent ................................................. ............................ 695.2.3. Componentes de campo (Field y AbstractField) .......................................... 695.3. Características comunes de componentes ............................................... ........................... 725.3.1. Leyenda ................................................. ................................................ 725.3.2. Descripción e información sobre herramientas ............................................... ........................... 735.3.3. Habilitado ................................................. ................................................ 745.3.4. Icono ................................................. .................................................. .... 755.3.5. Configuración regional ................................................. .................................................. 755.3.6. De sólo lectura ............................................... .............................................. 785.3.7. Nombre del estilo ................................................ ............................................ 785.3.8. Visible ................................................. .................................................. 795.3.9. Dimensionamiento de componentes ................................................ ................................ 805.3.10. Gestión de la selección de entrada ............................................... ........................... 815.4. Etiqueta ................................................. .................................................. ............ 825.5. Enlace ................................................. .................................................. .............. 855.6. TextField ................................................. .................................................. ...... 865.7. RichTextArea ................................................. ................................................. 875.8. Fecha y hora de entrada con DateField ............................................ ....................... 885.8.1. PopupDateField ................................................. ................................... 895.8.2. InlineDateField ................................................. .................................... 925.8.3. Resolución de tiempo ................................................ ..................................... 935.8.4. DateField Configuración regional ................................................ .................................... 935.9. Botón ................................................. .................................................. .......... 935.10. CheckBox ................................................. .................................................. ... 945.11. Selección de elementos de ................................................ ............................................... 955.11.1. Vinculación de componentes de selección a los datos ............................................. ..... 955.11.2. Básicos de selección de componentes ............................................... ....................... 995.11.3. ListSelect ................................................. ........................................ 1015.11.4. Selección de componentes nativos NativeSelect .......................................... 1025.11.5. Botón de radio y grupos de casilla de verificación con OptionGroup ...................... 1025.11.6. Selección de columnas gemelas con TwinColSelect ......................................... 1045.11.7. Permitir Agregar nuevos elementos .............................................. ................... 1045.11.8. Múltiples de selección de modo ............................................... ....................... 1055.11.9. Otras características comunes ............................................... ..................... 106ivLibro de Vaadin5.12. Tabla ................................................. .................................................. ......... 1065.12.1. Selección de elementos en una tabla ............................................. ...................... 1085.12.2. Tabla Características ................................................ ................................... 1095.12.3. Edición de los valores de una tabla ............................................ .................... 1125.12.4. Columna encabezados y pies de página .............................................. ................ 1155.12.5. Generado Columnas ............................................... .................... 1175.12.6. Formato Columnas ............................................... .................... 1205.12.7. Reglas de estilo CSS ............................................... .................................. 1215.13. Árbol ................................................. .................................................. .......... 1235.14. MenuBar ................................................. .................................................. ... 1255.15. Embebido ................................................. .................................................. 1265.15.1. Objetos incrustados ................................................ ............................. 1275.15.2. Imágenes incrustadas ................................................ ............................. 1275.15.3. Navegador Marcos ................................................ ................................. 1285.16. Subir ................................................. .................................................. ...... 1285.17. Forma ................................................. .................................................. ......... 1315.17.1. Forma como un componente de interfaz de usuario ............................................ ...... 1315.17.2. Enlazar a los datos de forma .............................................. ............................ 1335.17.3. Validar la información Formulario ............................................... ........................... 1365.17.4. Buffering para formularios de datos ............................................... ............................ 1385.18. ProgressIndicator ................................................. ...................................... 1395.18.1. Hacer de la Computación pesados ............................................... ................... 1395.19. Slider ................................................. .................................................. ........ 1405.20. LoginForm ................................................. .................................................. 1425.20.1. Personalización LoginForm ................................................ .................... 1435.21. Componente Composición con CustomComponent ......................................... 1456. Gestión de Diseño ................................................ .................................................. ... 1476.1. Información general ................................................. .................................................. ..... 1486.2. Ventana y diseño raíz Grupo ............................................. ........................... 1506.3. VerticalLayout y HorizontalLayout ............................................... .............. 1506.3.1. Dimensionamiento Incluida componentes ............................................... ............... 1516.4. GridLayout ................................................. .................................................. . 1546.4.1. Las células de tamaño de cuadrícula ............................................... ................................... 1556.5. FormLayout ................................................. .................................................. 1586.6. Grupo ................................................. .................................................. .......... 1596.7. SplitPanel ................................................. .................................................. ... 1616.8. Solapa ................................................. .................................................. .... 1636.9. Acordeón ................................................. .................................................. .. 1666.10. AbsoluteLayout ................................................. .......................................... 1676.11. CssLayout ................................................. .................................................. 1706.12. Diseño de formato ................................................ ......................................... 1726.12.1. Diseño Tamaño ................................................ ........................................ 1726.12.2. De composición de alineación de la célula ............................................... .......................... 1746.12.3. Diseño de Espacio de la célula ............................................... ............................. 1756.12.4. Márgenes de la disposición ................................................ ................................... 1776.13. Formatos personalizados ................................................ ............................................ 1787. Visual de Diseño de Interfaz de usuario con Eclipse (experimental) ........................................ 1817.1. Información general ................................................. .................................................. ..... 1827.2. Creación de una Nueva CustomComponent .............................................. ................. 1827.3. Usando el Editor de Visual .............................................. ..................................... 1847.3.1. Adición de nuevos componentes ............................................... ...................... 1847.3.2. Establecer las propiedades de componentes ............................................... ............... 185vLibro de Vaadin7.3.3. Edición de una AbsoluteLayout ............................................... ................... 1887.4. Estructura de un componente visual editable ............................................ .......... 1897.4.1. Referencias Sub-componente .............................................. ................... 1907.4.2. Constructor de Sub-componente .............................................. ........................ 1907.4.3. El Constructor ................................................ ................................... 1918. Temas ................................................. .................................................. ................. 1938.1. Información general ................................................. .................................................. ..... 1938.2. Introducción a las Hojas de Estilo en Cascada ............................................. ............... 1958.2.1. Reglas básicas CSS ............................................... ................................... 1958.2.2. Coincidencia en la clase de elemento .............................................. ..................... 1968.2.3. Coincidencia por Relación Descendiente .............................................. ..... 1978.2.4. Notas sobre la compatibilidad de ............................................... ........................... 1998.3. Creación y uso de Temas .............................................. .............................. 2008.3.1. El estilo de componentes estándar ............................................... ................ 2008.3.2. Temas integrados .............................................. ...................................... 2028.3.3. Mediante temas ................................................ ...................................... 2038.3.4. Tema herencia ................................................ ............................... 2038.4. Creación de un tema en Eclipse ............................................. ............................... 2049. Vinculación de componentes a los datos .............................................. ..................................... 2079.1. Información general ................................................. .................................................. ..... 2079.2. Propiedades ................................................. .................................................. ... 2099.2.1. Visores y editores de Propiedad .............................................. .................. 2109.2.2. ObjectProperty Aplicación ................................................ ........... 2119.2.3. Implementar la interfaz Propiedad .............................................. ....... 2119.3. Manteniendo las propiedades en las partidas .............................................. ................................ 2129.3.1. La aplicación PropertysetItem ............................................... .... 2139.3.2. Enrolle un Bean en una BeanItem ............................................ ............... 2139.4. Recopilación de artículos en contenedores .............................................. ............................ 2149.4.1. Iteración sobre un recipiente .............................................. ....................... 21410. Desarrollo de componentes personalizados ............................................... ........................... 21710.1. Información general ................................................. .................................................. ... 21810.2. Hacerlo de la manera simple en Eclipse ........................................... ...................... 22010.2.1. Creación de un Control ............................................... ................................ 22010.2.2. Volver a compilar el conjunto de widgets .............................................. .................. 22210.2.3. Plugin de configuración del proyecto relacionados .............................................. ............. 22310.3. Google Web Toolkit Reproductores .............................................. ............................. 22410.3.1. Extensión de un Widget Vaadin .............................................. ................... 22510.3.2. Ejemplo: Un selector de color Widget GWT ........................................... ...... 22610.3.3. Estilo Reproductores GWT ............................................... ........................... 22810.4. La integración de un Widget GWT .............................................. ................................ 22910.4.1. Deserialización del componente del servidor del Estado .................................. 23010.4.2. Serialización de Estado de componentes para servidor .......................................... 23110.4.3. Ejemplo: La integración del Widget Selector de color ....................................... 23210.5. Definición de un conjunto de widgets .............................................. ...................................... 23410.6. Componentes del lado del servidor .............................................. ................................. 23510.6.1. La unión a el Widget del lado del cliente ........................................... ............. 23510.6.2. Servidor-cliente de la serialización .............................................. ..................... 23510.6.3. Cliente-Servidor deserialización .............................................. ................. 23510.6.4. Ejemplo: Selector de color de un componente de servidor .................................... 23610.7. El uso de un componente personalizado .............................................. ............................ 23710.7.1. Ejemplo: Aplicación Selector de color ............................................. .......... 23710.7.2.Web la implementación de aplicaciones ........................................... .................... 238viLibro de Vaadin10.8. GWT Desarrollo Widget ............................................... .............................. 23910.8.1. Crear un proyecto Widget .............................................. ..................... 23910.8.2. Importar paquete de instalación GWT .............................................. ...... 24010.8.3. Escribir el Código ............................................... ................................. 24110.8.4. Compilación de Juegos GWT Widget .............................................. ................. 24110.8.5. Listo para funcionar ............................................... ...................................... 24510.8.6. GWT modo de desarrollo ............................................... ..................... 24610.8.7. Empaque un conjunto de widgets .............................................. ........................ 25110.8.8. Solución de problemas ................................................. ................................. 25111. Temas avanzados de aplicaciones Web .............................................. ........................... 25311.1. Las características especiales de las aplicaciones AJAX ............................................. ..... 25411.2. De nivel de aplicación de Windows .............................................. .............................. 25411.2.1. Creación de nuevas ventanas de nivel de aplicación ............................................ . 25511.2.2. Windows Crear dinámicamente ............................................... ............ 25611.2.3. Cerrar ventanas ................................................ ................................ 25911.2.4. Advertencias de Uso de Windows múltiples ............................................. ........ 26011.3. Incorporación de aplicaciones en páginas Web ............................................. .............. 26111.3.1. Incrustación dentro de un elemento div ............................................. ........... 26211.3.2. Incrustación dentro de un elemento iframe ............................................. ... 26411.4. Depuración y el modo de producción .............................................. ............................ 26611.4.1. Modo de depuración ................................................ ...................................... 26611.4.2. Análisis de diseños ................................................ .............................. 26711.4.3. Formatos personalizados ................................................ ................................. 26811.4.4. Funciones de depuración para desarrolladores de componentes ........................................ 26811.5. Recursos ................................................. .................................................. . 26811.5.1. URI controladores ................................................ ..................................... 26911.5.2. Parámetro controladores ................................................ ............................ 26911.6. Teclas de acceso directo ................................................ ............................................... 27111.6.1. Haga clic en Accesos directos para los botones por defecto ............................................. .......... 27111.6.2. Campo Atajos Enfoque ............................................... .......................... 27211.6.3. Acciones genéricas de acceso directo de ............................................... ..................... 27211.6.4. Apoyado Claves y las teclas modificadoras ............................................ . 27411.7. Impresión ................................................. .................................................. ...... 27511.8. Portal de Integración ................................................ ........................................... 27611.8.1. Implementación de un Portal .............................................. ............................ 27611.8.2. Creación de un proyecto de aplicación Portal en Eclipse .................................... 27711.8.3. Portlet descriptores de despliegue ............................................... ............ 27911.8.4. Portlet Hola Mundo ............................................... ............................... 28411.8.5. Instalación Vaadin en Liferay .............................................. ..................... 28411.8.6. Tramitación de las solicitudes de portlet ............................................... ................... 28611.8.7. Manejo de Cambios Portlet modo .............................................. ............ 28711.8.8. No Vaadin modos Portlet ............................................. ..................... 28911.9. Google App Engine Integración .............................................. ........................ 29111.10. Problemas comunes de seguridad ............................................... .............................. 29211.10.1. Desinfección de entrada del usuario para prevenir Cross-Site Scripting .......................... 29211.11. URI Fragmento e Historia de gestión con UriFragmentUtility .................. 29311.12. La captura de solicitudes HTTP ............................................... ............................ 29411.12.1. Usar objetos Request y Response ............................................. .. 29511.12.2. La gestión de cookies ................................................ ............................ 29611.13. Arrastrar y soltar ............................................... ............................................. 29711.13.1. Manejo de las gotas ................................................ ................................ 29811.13.2. Los artículos que cae en un árbol ............................................. .................... 29811.13.3. Al soltar elementos en una tabla ............................................. .................. 300viiLibro de Vaadin11.13.4. La aceptación de las gotas ................................................ ............................... 30011.13.5. Arrastrando componentes ................................................ ...................... 30311.13.6. Que cae en un componente .............................................. .................. 30411.13.7. Al arrastrar archivos desde fuera del explorador ........................................... 30511.14. Uso de Add-on de componentes ............................................. ............................. 30511.14.1. Descarga de complementos de Vaadin Directorio ...................................... 30511.14.2. Compilación de Add-on Juegos Widget en Eclipse .......................................... . 30611.14.3. Compilación de Add-on Juegos Widget con una secuencia de comandos Ant ............................... 30611.14.4. Solución de problemas ................................................. ............................... 30711.14.5. Extracción de conjuntos de widgets ............................................... ....................... 307Usuario A. Interface Definition Language (UIDL) ......................................... ..................... 309A.1. API para los componentes de Pintura .............................................. ............................. 310A.2. JSON representación de ................................................ ............................................ 311B. canciones de Vaadin ............................................. .................................................. ....... 315Índice ................................................. .................................................. ......................... 319

Afortunadamente mucha gente sigue pensando que el mundo de los RIAS sobre HTML sigue teniendo cabida (y muchaaaa), y que ni Flash/Flex, ni Silverlight (ni JavaFX en un hipotético futuro) se van a comer toda la tarta.
Vaadin es un framework web creado para desarrollar aplicaciones RIA sin plugins y con una arquitectura server-driven (como mi querido y añorado Jaxcent), con un modelo orientado a componentes y pensando en la simplificad de la programación, no es necesario conocert ni HTML, ni XML ni Javascript :) .
Algunas características interesantes:

  • Java-only programming
  • No JavaScript programming
  • Custom application theme support
  • Partial page updates
  • Template based HTML layouts
  • Event-listener model
  • Embed to a HTML or JSP page
  • Supported Web Browsers:
  • o Internet Explorer releases 6, 7, and 8
  • o Mozilla Firefox 3o
  • Safari 3 and 4
  • o Opera 9.6
  • Single Jar-file deployment
  • Compatible with Firebug debugger
  • Server-side application state management
  • Application logic executed in server
  • Java Servlet API 2.3 Compatible
  • Rn as portlet in a JSR-168 compatible portal
Tiene muchas de las características que me gustan en los frameworks Web:
- Documentación y Tutoriales: desde el típico Paso a Paso: http://vaadin.com/tutorial/ a un PDF de referencia http://vaadin.com/book al JavaDoc de su API, con vídeos,…

- Plugin para Entorno de Desarrollo: este tiene tanto para eNetBeans como para Eclipse y como destacado ofrece un editor visual (en Beta) y funcionalidades para crear Componentes, Wizards, ayuda integrada.
- Despliegue: el despliegue sólo implica un JAR, de hecho su WAR de ejemplo sólo implica este JAR
- Integración con Spring: a día de hoy y para mi imprescindible. En este artículo explican la integración básica http://vaadin.com/wiki/-/wiki/Main/Spring%20Integration, aunque yo a esto no lo llamo integración si no Disponibilizar el contexto de Spring pero bueno.
- Componentes: por un lado que ofrezca un gran conjunto de components out-of-the-box que te permitan desarrollar el 95% de tu aplicación y por otro que se puedan crear.

- lo que veo
- Soporte de la comunidad: ofrece foros, FAQs,…
- Soporte comercial: la experiencia me hace decir que en muchas ocasiones el soporte comercial de un producto es la forma más sencilla y barata de solucionar los problemas que todos los frameworks nos dan.
- Otras:
o Licencia: Apache License 2.0 (http://vaadin.com/license)

o Desarrollo de componentes
o Versión: salvo excepciones (que las hay) no me metería con una versión 0.X que la versión sea la 6 da seguridad, aunque también puede ser pura publicidad…y que la 6 fuese la primera release :)
o Integración con otros frameworks: en los artículos técnicos hablan sobre como integrar con Spring, Hibernate, JSP, Maven, Portales,…
o Que funcione en Opera :)
Y otras que me desagradan:

- La maquetación se hace en Java: como en GWT. En GWT existe el GWTDesigner para que el paso de la maqueta a la construcción no sean tan traumático (que lo es). Vaadin ofrece un editor visual sobre Eclipse…menos es nada.
- El modelo de programación basado en componentes requiere a diferencia del MVC típico una mayor disciplina, si no se tiende a hacer megaclases con lógica de presentación y de negocio…aún así me gusta este modelo :)
Algunas reflexiones:
- Su modelo de programación es el modelo de programación de Escritorio: como en GWT, Jaxcent,… y a diferencia de Struts, Spring MVC, JSF,…
- Comparado con GWT: las aplicaciones GWT corren en el navegador y las aplicaciones Vaading en el servidor. Vaadin usa GWT como motor de renderizado, de modo que pueden combinarse. Vaadin applications are run on the server and are inherently more secure since the application logic is not exposed to the client-side. By running the application on a real JVM (on the server) you can use all Java features, libraries and tools.
Comparando con JSF: ambos son modelos server-driven. En Vaadin la programación es Java y los componentes componentes de verdad (con sus eventos, sus propiedades,…)

- Por qué usarlo en lugar de GWT: El modelo server-driven es más seguro ya que la lógica no se expone al cliente. Además al correr en una JVM se pueden usar todas las características, librerías,… (yo añadiría porque no es de Google :) )
En su página de ejemplos:
http://demo.vaadin.com/sampler/
se pueden ver ejemplos de los componentes que ofrece organizados en categorías:
- Componentes básicos: incluyendo algunos nuevos de interés:


permite incluir contenido Flash

para incluir contenido de otras webs

- Componentes para entrada de datos:

a más de uno le resultará familiar de haberlo tenido que implementar :)

- Formularios: preparados para trabajar con Vos

- Tablas y árboles: como:




- Gestores de Layouts:




- Ventanas, Menús,…




Alguien con ganas de probarlo?

0 pensamientos:

Post a Comment

feedback!