Objective-J
Objective-J | |
Date de première version | 2008 |
---|---|
Paradigme | orienté objet, réflexif, impératif, fonctionnelle, Script |
Auteur | 280 North, Inc. |
Dernière version | 0.6 |
Typage | dynamique, faible, duck |
Influencé par | Objective-C, JavaScript |
Implémentations | Cappuccino |
Licence | LGPL |
Site web | https://www.cappuccino.dev |
modifier |
Objective-J est un langage de programmation développé en même temps que le framework Cappuccino. Sa syntaxe est sensiblement identique à celle de Objective-C. Par ailleurs il partage avec Javascript la même relation qu'il y a entre l'Objective-C et le langage C : il s'agit d'une sorte de sur-ensemble ajoutant la notion d'héritage ainsi que le typage dynamique du style Smalltalk/Objective-C au JavaScript.
Les programmes écrits en Objective-J ont besoin d'être compilés avant de pouvoir être lancés dans un navigateur web. Cette compilation peut être effectuée directement dans le navigateur au moment de l'exécution par un compilateur qui compile les programmes Objective-J en pur code Javascript. Le compilateur Objective-J est écrit en JavaScript, de ce fait le déploiement de programme écrit en Objective-J ne nécessite pas de plugin attaché au navigateur.
Application
[modifier | modifier le code]La première utilisation connue de l'Objective-J a été faite avec le framework Cappuccino pour le développement de l'application web 280Slides. Bien que l'Objective-J peut être utilisé (et a été conçu) indépendamment du framework Cappuccino, Objective-J a été, à la base, inventé pour supporter le développement web avec Cappuccino.
Syntaxe
[modifier | modifier le code]Objective-J est un sur-ensemble du Javascript, cela implique que n'importe quel code JavaScript valide est aussi valide dans du code Objective-J. L'exemple suivant montre la déclaration en Objective-J d'une classe nommée Address, cette classe est une sous classe de l'objet de base CPObject qui joue le même rôle que le NSObject en Objective-C/Cocoa. Même si ce n'est pas le même nom pour l'objet de base, ce code pourrait être aussi un exemple pour une déclaration de classe en Objective-C.
@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
Tout comme en Objective-C, la déclaration des méthodes de classes et des méthodes d'instances commencent respectivement par '+' (plus) et '-' (moins).
Gestion de la mémoire
[modifier | modifier le code]Contrairement à l'Objective-C, les objets en Objective-J n'ont pas besoin d'être libérés étant donné qu'ils sont automatiquement libérés par le ramasse-miettes en anglais : Garbage Collector de JavaScript.