Cíl-J | |
---|---|
Jazyková třída | multiparadigma : reflektivní , objektově orientovaný , funkční , imperativ , skriptování |
Objevil se v | 2008 |
Vývojář | 280 North Inc. |
Typový systém | dynamický , slabý , kachní |
Byl ovlivněn | Objective-C , JavaScript |
Licence | LGPL |
webová stránka | cappuccino.org |
Objective-J je programovací jazyk vyvinutý jako součást Cappuccino , frameworku webových aplikací. Jeho syntaxe je téměř totožná se syntaxí Objective-C . Objective-J je pro JavaScript tím, čím je Objective-C pro programovací jazyk C: je to přísná, ale kompaktní nadmnožina. Objective-J přidává do JavaScriptu tradiční dědičnost a dynamické odesílání ve stylu Smalltalk/Objective-C. Čistý Javascript již má koncept objektové orientace a dědičnosti jako jazyk prototypového typu, ale Objective-J přidává do JavaScriptu možnost používat programování založené na třídách.
Programy napsané v Objective-J vyžadují předběžné zpracování, než je bude moci spustit virtuální stroj JavaScript ve webovém prohlížeči. Tento krok může probíhat za běhu ve webovém prohlížeči pomocí kompilátoru, který překládá programy Objective-J do čistého kódu JavaScript. Kompilátor Objective-J je napsán v JavaScriptu, takže nasazení programů Objective-J nevyžaduje žádný speciální doplněk prohlížeče.
První plné využití Objective-J je spojeno s vytvořením webové aplikace 280Slides založené na frameworku Cappuccino. Ačkoli lze Objective-J používat (a vyvíjet) nezávisle na Cappuccinu, Objective-J byl primárně vytvořen pro podporu vývoje webu na bázi Cappuccina.
Objective-J je nadmnožinou JavaScriptu, což znamená, že jakýkoli platný kód JavaScriptu je také platným kódem Objective-J. Následující příklad ilustruje definici Objective-J třídy nazvané Address. Tato třída rozšiřuje kořenovou třídu CPObject, která hraje podobnou roli jako NSObject v Objective-C. S výjimkou názvu kořenového objektu je tento kód také příkladem definice třídy v Objective-C.
@implementation Address : CPObject { CPString name ; CPString město ; } - ( id ) initWithName: ( CPString ) aName město: ( CPString ) aCity { self = [ super init ]; jmeno = jmeno ; město = aMěsto ; vrátit se ; } - ( void ) setName: ( CPString ) aName { name = aName ; } - ( CPString ) name { return name ; } + ( id ) newAddressWithName: ( CPString ) aName city: ( CPString ) aCity { return [[ self alloc ] initWithName : aname city : aCity ]; } @konecStejně jako u Objective-C začínají definice metod tříd a metod instance '+' (plus) a '-' (mínus).
Na rozdíl od Objective-C není nutné objekty v Objective-J uvolňovat, protože je automaticky uvolňuje JavaScript garbage collector.