|
|||||||||||||||||||||||||||||||||||||||||||||
|
Feelin est un cadre d'applications à code source ouvert orienté objet destiné à AmigaOS et ses amis (AmigaOS 4, AROS, MorphOS). Il se présente sous la forme d'une bibliothèque partagée et d'un système extensible de classes, qui sont actuellement orientées vers la création d'applications. Feelin se veut résolument moderne, mettant à profit des standards tels que le XML et le CSS pour révolutionner le développement des applications - au moins sur Amiga. ;-) ![]() Un puissant moteur objet La fin des identifiants numériques La plus grande force de Feelin vient de son moteur objet. Très tôt dans son développement il a été décidé d'utiliser des attributs, des valeurs et des méthodes dont les identifiants seraient des chaînes de caractères plutôt que des valeurs numériques. Le principal objectif était d'en finir une fois pour toutes avec les collisions pouvant se produire sous certains systèmes. Ainsi, le développeur n'a pas à se soucier de savoir si tel ou tel identifiant est déjà utilisé par un autre développeur. Il n'a pas besoin d'obtenir un numéro de série auprès d'un quelconque arbitre, puisque les représentations numériques des attributs et des méthodes sont allouées selon les besoins, au moment même où les applications fonctionnent. Cette particularité fut le déclencheur d'une longue liste d'améliorations et de possibilités. La fin du dispatcher Les identifiants des méthodes n'étant plus accessibles à la compilation des classes, il a fallu revoir totalement le système d'invocation. Si l'on prend l'exemple de BOOPSI, utilisée comme moteur de MUI, BGUI et Reaction, chaque classe définit une fonction centrale, appelée "dispatcher", qui ordonne l'appel (ou invocation) aux méthodes. Pour chaque méthode invoquée, le dispatcher choisi d'intercepter l'invocation en exécutant une fonction privée adaptée, ou de passer l'invocation à sa super-classe. Ce fonctionnement est bien trop lourd avec des identifiants dynamiques. Sous Feelin, les classes ne définissent pas de point central, mais associent pour chaque méthode interceptée ou implémentée une fonction. Ainsi, lorsqu'une méthode est invoquée, Feelin recherche dans la table de méthodes de la classe, la fonction associée. S'il ne trouve rien, il poursuit la recherche dans celle de sa super-classe et ainsi de suite. Ce mécanisme est "in-loop", c'est-à-dire que la recherche se fait sans quitter une boucle unique et très simple. Ainsi, malgré un système d'identifiants dynamiques qui pourrait sembler plus lourd, l'exécution est en fait bien plus optimisée et rapide. Des invocations sécurisées A noter, par ailleurs, que les invocations sous Feelin sont sécurisées : une invocation sur un objet détruit ou sur une adresse aléatoire ne plantera pas bêtement l'application. Un message d'erreur sera simplement inscrit au journal, ce qui permettra au développeur de corriger son code. Les identifiants dynamiques n'ont pas été qu'une amélioration pour le développeur et une évolution du moteur objet, ils ont aussi permis d'apporter à Feelin un de ses plus grands atouts : la génération à la volée d'applications au format XML. Des applications au format XML Les identifiants des attributs et des méthodes étant des chaînes de caractères, il ne fallut que peu d'efforts et de temps pour mettre en place la génération d'objets au format XML, ainsi que la gestion d'applications complètes. Un "Hello world !" en XML ressemble à ceci :
Les attributs et les méthodes utilisés dans l'application XML sont ceux disponibles dans les classes. Il n'existe pas de catalogue. Le système est une nouvelle fois totalement dynamique, n'importe quelle classe peut ainsi être utilisée dans l'application, au même titre qu'une application écrite en C. Bien sûr, l'utilisation de l'XML n'est pas une obligation pour la conception d'application, juste un moyen plus simple pour définir leur UI. Le principal objectif des applications au format XML et de séparer l'UI et le code de l'application. Pour le développeur, et l'utilisateur, c'est aussi la possibilité de modifier, avec un simple traitement de texte et sans la moindre compilation, l'UI de son application. La génération depuis des fichiers XML est principalement utilisée par l'éditeur de préférence de Feelin. Un système de préférence dynamique et modulable En lui-même, l'éditeur de préférence de Feelin n'est capable de rien. Sa puissance vient de sa modularité. Chaque classe pouvant définir des propriétés, ainsi qu'un fichier XML définissant le groupe de préférence permettant de les ajuster, l'éditeur de préférence agit comme un agrégateur, générant chaque groupe de préférence pour les réunir dans une application unique. Les préférences sont basées sur une version simplifiée du CSS, qui ne gère pas encore les sélectionneurs, mais offre tout de même l'héritage, les classes multiples ainsi que les pseudo-classes. Des ingrédients sympathiques pour une UI moderne et extrêmement configurable. Une UI moderne L'adoption du CSS a considérablement amélioré l'UI. Ainsi les pseudo-classes "touch", "focus" et "ghost" ont permis de définir quatre états différents par objet, avec chacun leurs couleurs, marges, remplissage, bordures... comme les éléments d'un page Web. Les propriétés classiques de CSS sont ainsi disponibles, telles que : margin, padding, border, min-width, min-height, max-width, max-height, width, height, background... Certaines, comme la propriété "background" ont été étendues pour proposer de nouvelles possibilités comme des dégradés, des motifs ou encore des images multiples (une image divisée en quatre parties, une pour chaque état). Feelin introduit également de nouvelles propriétés : "palette", par exemple, permet de définir les couleurs à utiliser pour dessiner un objet, avec le contrôle de leur contraste, leur luminosité et leur saturation. Feelin pose ainsi une distinction très claire entre les attributs et les propriétés de style. Un développement clair D'une façon générale, développer pour Feelin se fait simplement. Les attributs, valeurs, méthodes, propriétés, macros, etc. sont toujours clairement identifiables. Par exemple les macros qui commencent par "_", comme la macro _area_x, permettent d'obtenir une valeur, ici la position gauche d'un objet de la classe Area. Les macros de fonctions sont en majuscules et commencent par "F", comme la macro F_SUPERDO(). La lettre "F" est souvent utilisée pour identifier des éléments de Feelin. Feelin emploie très peu de structures, préférant définir des types : FBox, FRender, FAreaPublic. En conclusion Feelin offre de nombreux avantages et des possibilités uniques. Même si ses bases deviennent de plus en plus établies, ce système objet est encore jeune, il manque de classes et de soutien. Malgré l'aide merveilleuse de Guillaume Roguez (MorphOS) et de Jean-Christophe Frisch (AmigaOS 4), Feelin reste le fruit d'un développement individuel. En plus d'être une solution libre et gratuite, cet ambitieux projet a également pour volonté de fédérer une communauté dispersée.
|