Introduction au Framework Cappuccino

Le Framework

Le Framework Cappuccino, développé par la société 280north, est l’un des nombreux Frameworks à proposer une approche orientée application pour le web. Il a pour but de proposer un langage et une façon de travailler en adéquation avec l’esprit « Application desktop », dans le sens où le développeur n’aura jamais à manipuler directement de HTML ou de CSS, le langage fourni par l’application se chargeant de générer l’interface.

En effet, contrairement à la majorité des Frameworks visant à produire des applications web, Cappuccino repose sur un langage qui lui est propre, à savoir le langage Objective-J. Inspiré par Apple et le langage de développement mobile, Objective-C, que la firme propose, Objective-J est à JavaScript ce que Objective-C est au C, à savoir une surcouche du langage proposant une syntaxe différente et une bibliothèque d’outils et de fonctions pour la programmation. Le code Objective-J est ensuite « compilé » en JavaScript afin d’être exécuté et rendu par le navigateur. Il est tout à fait possible d’utiliser du code et des fonctions JavaScript dans un programme Cappuccino, bien que cela aille contre les directives des créateurs du Framework, qui vise à l’utilisation d’un langage et d’une syntaxe unique pour la totalité de l’applicatif.

A la façon de programmes traditionnels orientés desktop, il convient de créer son interface en initialisant des widgets et des panels, et en plaçant ces derniers par programmation. Un module WYSIWYG pour réaliser ses interfaces graphiques et générer le code est disponible pour le logiciel xCode, mais cela implique que la création d’interfaces graphiques via un GUI n’est possible que sous Mac.

Le Framework en lui-même ne propose aucun pilote de connexion directe à une base de données : l’utilisation recommandée est de déployer en amont un serveur (avec un accès en REST, par exemple) avec lequel on communiquera via des requêtes http. A défaut de proposer une connexion à une BDD, Cappuccino propose une manipulation des requêtes HTTP fort aisée.

Le langage

Voici un exemple de code Objective-J (déclaration de classe) :

@implementation Address : CPObject
{
   CPString name;
   CPString city;
}
- (id)initWithName:(CPString)aName city:(CPString)aCity
{
    self = [super init];

    name = aName;
    city = aCity;

    return self;
}
-(void)setName:(CPString)aName
{
      name = aName;
}
-(CPString)name
{
      return name;
}  
+(id)newAddressWithName:(CPString)aName city:(CPString)aCity
{
      return [[self alloc] initWithName:aname city:aCity];
}

@end

La déclaration de classe se fait ici avec le mot clé @implementation, on déclare ensuite les variables de classes dans le premier bloc d’accolades, puis enfin les méthodes :

- Les méthodes de classe sont préfixées par '+' et les méthodes d’instance préfixées de '-'

Bien que le code écrit en Objective-J soit "compilé" après en JavaScript, il convient tout de même d'allouer les variables avant des les utiliser : on utilise pour cela le mot clé alloc (voir exemple dans la méthode newAddressWithName). On ne désalloue cependant pas manuellement, le garbage collector (ramasse-miettes) proposé par JavaScript étant chargé de cette tâche.

Enfin, les variables sont typées, et même si cette information n'est plus pertinente lors du passage en JS, cela permet une meilleure lisibilité et une meilleure compréhension.

Conclusion

Le Framework, (dont la version 1.0 n'a toujours pas été officiellement publiée) cherche à fournir un environnement de développement Desktop (fortement orienté Mac OS)  pour le web : il fournit de ce fait des outils nécessaires et un éditeur d'interfaces graphiques pour Mac. Il reste cependant sensible à la concurrence avec tous les autres Frameworks JavaScript proposés pour le développement d'applications web et ne peut être utilisé, selon moi, que dans certains cas bien spécifiques.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.