Cours développement d'application web avec le Framework Apache Pivot [Eng]
Participez au vote ☆☆☆☆☆★★★★★
Cours développement d'application web avec le Framework Apache Pivot
Présentation d'Apache Pivot
Bios d'orateur
- Greg Brown
- Architecte logiciel senior
- 15 ans d’expérience en développement d’applications client et serveur dans les services et la R & D
- Fondateur Apache Pivot
- Todd Volkert
- Architecte logiciel senior
- 13 ans d'expérience dans le développement d'applications Web et de clients riches
- Cofondateur d'Apache Pivot
Qu'est-ce que Apache Pivot?
- Plateforme open source pour la création d'applications Internet riches en Java (ou tout langage de script JVM: Groovy, JavaScript, Scala, etc.)
- Similaire à Adobe Flex ou Microsoft Silverlight, mais basé sur la JVM plutôt que sur Flash ou Silverlight.
- Les applications pivot peuvent être exécutées en tant qu'applet ou en tant qu'application de bureau autonome (installée ou lancée via Web Start).
- Comme d’autres plates-formes RIA, inclut des fonctionnalités qui facilitent la création d’applications graphiques modernes:
- Langage de balisage d'interface utilisateur basé sur XML déclaratif ("WTKX")
- Thèmes (aka "skins") / style
- liaison de données
- Effets et transitions (animations)
- Intégration de services Web (JSON / REST)
Pourquoi RIA?
- Les exigences fonctionnelles de nombreuses applications Web ont commencé à évoluer au-delà des capacités du navigateur.
- Difficile de créer une expérience utilisateur en HTML réellement comparable à celle d'une application de bureau
- Les plates-formes RIA établissent un lien entre les expériences Web et de bureau
- Permettre aux développeurs de créer des applications qui ressemblent davantage à des applications de bureau natives, mais qui peuvent être déployées via le Web. • Intègrent souvent des effets visuels destinés à améliorer l'expérience utilisateur globale (animations et autres comportements dynamiques).
Pourquoi Pivot?
- Fournir une option viable aux développeurs qui souhaitent créer des applications Internet riches en Java
- Flex: ActionScript
- Silverlight: C # / JavaScript
- JavaFX: script JavaFX
- Fournir une alternative réellement ouverte aux développeurs RIA
- Flex, Silverlight et JavaFX sont toutes des plateformes propriétaires.
- Pivot est complètement open source et entièrement dirigé par la communauté de développement de logiciels.
Vue d'ensemble de la plateforme
- Les classes de pivot sont regroupées dans les bibliothèques suivantes:
- - classes d'utilitaires communes, non liées à l'interface utilisateur (collections, traitement des événements, localisation, threading, E / S, etc.)
- - API client / serveur REST
- - WTK / Terra L & F
- - Composants de création de graphiques (nécessite le fournisseur de graphiques; actuellement basé sur JFreeChart)
Hiérarchie de classes WTK
Démo «évier de cuisine»
Application de démonstration «évier de cuisine»
"Bonjour WTKX!"
Balançoire
- Swing peut également être utilisé pour créer des AIR.
- Pivot et Swing utilisent Java2D sous le capot
- Pivot offre de nombreux avantages qui en font une alternative plus convaincante et moderne.
- Avantages du pivot: • Fournit un langage de balisage XML pour simplifier la construction de l'interface utilisateur
- Prise en charge intégrée des services de données basés sur JSON et REST
- Prise en charge intégrée de la liaison de données
- Prise en charge au niveau de la plate-forme pour les effets visuels et les transitions. • Tirant parti des nouvelles fonctionnalités du langage Java:
génériques, énumérations, boucles, variables et annotations
JavaFX
- Pivot permet aux développeurs de créer des applications en Java, par opposition au langage de script JavaFX. • Accent légèrement différent: «Application» par rapport à
“Rich” (livraison média) dans “RIA”
- Pas mutuellement exclusif!
GWT
- GWT permet également aux développeurs d’utiliser Java pour écrire des applications Web.
- L’environnement d’exécution d’une application GWT est le navigateur et non une machine virtuelle Java:
- Le code s’exécute comme interprété en JavaScript, pas en bytecode
- Ne prend pas en charge l’API Java complète (pas d’E / S, réseau, thread, réflexion, XML, etc.) - essentiellement, seul le langage Java
- Présentation effectuée via une manipulation CSS et DOM plutôt que par une API de dessin 2D
Application didactique «Stock Tracker»
- Exemple d'application simple mais pratique. • Souligne les fonctionnalités clés de la plateforme et les meilleures pratiques de développement.
Stock Tracker Caractéristiques principales
- Balisage de l'interface utilisateur à l'aide de WTKX
- Gestion des événements
- requêtes Web
- liaison de données
- localisation
WTKX
- Interface utilisateur pivot souvent définie dans WTKX
- La structure hiérarchique de XML est parallèle à la hiérarchie des composants, ce qui facilite la visualisation du résultat obtenu.
- Les développeurs connaissent la métaphore des balises.
- Peut toujours être défini dans le code - WTKX n’est qu’un «raccourci»
- Non compilé - représentation sérialisée du graphe d'objet
- Généralement chargé au moment de l'exécution à partir des fichiers JAR de l'application
- Peut charger dynamiquement (à partir du serveur, par exemple)
- Amorce rapide WTKX:
- Éléments
- Uppercase = instance de classe
- Minuscule = propriété
- Attributs = propriétés
- Namespaces = packages Java
- préfixe «wtkx» (identifiants, inclus, etc.)
- Code de script (logique)
- opérateurs de résolution:
- Utilisé dans les valeurs d'attribut WTKX
- '%' = résolution de la ressource (localisation)
- «@» = résolution de l’emplacement (URL relative)
- '$' = résolution variable
- Liaison WTKX: • Mappe les objets définis dans WTKX avec des variables membres Java («injection de dépendance»).
- wtkx: id mappe à l'annotation @WTKX
- L’implémentation de l’interface Bindable garantit que les liaisons sont traitées
- L'argument Resources permet à l'instance liée de conserver une référence au groupe de ressources utilisé pour traiter le fichier WTKX.
Gestion des événements
- WTKX = structure, code = comportement
- Généralement exécuté en réponse à un «événement» (bouton enfoncé, sélection modifiée, etc.)
- Les écouteurs d’événements sont souvent connectés à Bindable # initialize ()
- Peut également être enregistré dans un script en ligne, similaire au HTML
- Actions: • Extension de la classe abstraite .Action
- Définit la méthode abstraite perform ()
- Utilisé pour attacher des comportements d'application à plusieurs éléments de l'interface utilisateur (par exemple, un bouton de barre d'outils, un élément de menu, etc.)
- peut être activé / désactivé; les composants attachés reflètent l'état
Requêtes Web
- Moyens de communication natifs du serveur Pivot • Partie de la bibliothèque de classes “Web”
- Similaire à XMLHTTPRequest dans un navigateur Web
- Faciliter la communication et la mise en œuvre des services REST
- Utilisez JSON par défaut, mais vous pouvez utiliser n’importe quel format de données (XML, CSV, sérialisation Java, etc.).
- Les données de devis renvoyées par la requête HTTP GET à • Les arguments de chaîne de requête spécifient les symboles et les champs à récupérer, renvoie un fichier CSV:
- Stock Tracker utilise une instance de .GetQuery pour récupérer les données
- POST, PUT et DELETE également pris en charge
- Utilise une instance de org.apache.pivot.serialization.CSVSerializer pour désérialiser les données.
- Renvoie les guillemets sous forme d'instance utilisée comme données de modèle pour la vue tabulaire.
- Par défaut, CSVSerializer renvoie une liste de tableaux HashMaps.
- Non typé - toutes les données sont des chaînes
- Peut être configuré pour renvoyer des instances de tout type de Java Bean
- Stock Tracker utilise une classe de haricots StockQuote pour convertir les chaînes en nombres (pour le tri)
- Extension de .Query • Classe de base abstraite (générique) pour l'exécution d'opérations en arrière-plan
- Définit une seule méthode execute () abstraite qui renvoie le résultat de l'opération. • GetQuery renvoie Object (dans ce cas, les données de résultat).
- execute () est synchrone - bloque l'interface utilisateur
- Task fournit une surcharge prenant une instance de .concurrent. TaskListener
- L'appelant est averti de manière asynchrone par rappel lorsque la tâche a réussi ou échoué.
- L'interface utilisateur reste sensible
Liaison de données
- Mappe les valeurs entre un ensemble d’éléments de l’interface utilisateur et une structure de données, appelée «contexte de liaison».
- Élimine le code habituel fastidieux pour le remplissage manuel des données de terrain
- Utilise un modèle de chargement / stockage:
- load () renseigne l'interface utilisateur avec les valeurs du contexte • store () renseigne le contexte avec les valeurs de l'interface utilisateur • Mappe bien vers les applications basées sur REST:
- GET - charge ()
- POST / PUT - store ()
- Le contexte de liaison est soit une instance de org.apache.pivot.collections.Dictionary, soit un bean Java pouvant être encapsulé dans org.apache.beans.BeanAdapter (qui implémente Dictionary).
- Facile à lier aux données JSON renvoyées par une requête Web
- Les objets JSON sont renvoyés en tant qu'instances de HashMap, qui implémente Dictionary
- Stock Tracker utilise la liaison pour remplir le formulaire de détail de devis:
- la propriété «textKey» associe un texte d'étiquette à une clé de liaison
- Le contexte de liaison est une instance du bean StockQuote renvoyé par GetQuery / CSVSerializer. • Utilise le «mappage de liaison» pour transformer les données lors de la liaison:
Localisation
- Le texte traduisible et les autres ressources stockées dans des «ensembles de ressources». • Dans Pivot, les ensembles de ressources sont des fichiers JSON plutôt que des fichiers .properties.
- Utilisez UTF-8 en mode natif, par rapport à ISO-8859.
- Peut être hiérarchique, vs plat
- Ensembles de ressources Stock Tracker (par défaut et «fr»):
- Le formulaire de détail de devis utilise des étiquettes de formulaire localisées:
