Objective-J
Objective-J | |
---|---|
Парадигма | Декілька: рефлективна, об’єктно-орієнтована, функціональна, імперативна, скриптова |
Дата появи | 2008 |
Розробник | 280 North, Inc. |
Система типізації | динамічна, слабка, duck |
Під впливом від | Objective-C, JavaScript |
Ліцензія | LGPL |
Вебсайт | cappuccino.org |
Objective-J - це мова програмування, яка була розроблена у складі вебфреймворку Cappuccino. Синтаксис мови майже ідетичний з синтаксисом Objective-C та зберігає таке ж відношення щодо JavaScript, як Objective-C щодо C, а саме: є строгою, проте невеликою, надмножиною мови; додає традиційний механізм наслідування та динамічної відправки повідомлень у стилі Smalltalk/Objective-C. В чистому JavaScript, що базується на використанні прототипів, частково реалізовані відношення між об’єктами та наслідування, проте Objective-J доповнює JavaScript повноцінною можливістю програмувати класи.
Програми, написані на Objective-J, повинні бути пере-компільовані в Javascript перш ніж виконуватись у віртуальній машині програми-оглядача клієнта. Цей крок може бути здійснений самою програмою-оглядачем в ході виконання, або ж спеціальним компілятором, що транслює Objective-J програми в чистий JavaScript. Objective-J компілятор написаний на JavaScript, і тому не для розробки та розгортання на стороні клієнта не потрібно встановлювати додаткових розширень до веб оглядача. Objective-J можна скомпілювати і виконувати на Node.js
Першим відомим застосуванням Objective-J стала програма 280 Slides, що базується на фреймворку Cappuccino. І хоча дизайн Objective-J передбачає використання мови як самостійного інструменту, початковим призначенням мови була підтримка розробки веб аплікацій у Cappuccino.
- Mockingbird [Архівовано 21 грудня 2012 у Wayback Machine.]
- PicEngine [Архівовано 26 листопада 2012 у Wayback Machine.]
- GithubIssues
- TimeTable [Архівовано 21 листопада 2012 у Wayback Machine.]
- Enstore
- Almost At [Архівовано 30 травня 2009 у Wayback Machine.]
- Akshell - Online JavaScript Web-App IDE [Архівовано 8 квітня 2018 у Wayback Machine.]
- Archipel Project - Virtual machine orchestrator
- Spot Specific - Mobile App SDK and IDE [Архівовано 25 грудня 2012 у Wayback Machine.]
Objective-J є надмножиною JavaScript, і це означає, що будь-який написаний на Javascript код буле виконуватись і на Objective-J.
У посліуючому прикладі показано оголошення та реалізація Objective-J класу, що називається Address; цей клас розширює базовий об’єкт CPObject - аналог Objective-C NSObject. Різниця між наведеним прикладом та традиційним Objective-C полягає в тому, що CPObject відображає весь нижче-підпорядкований фреймворк Cappuccino, коли NSObject - Cocoa. В Objective-J не використовуються вказівники, і тому визнчення типів не містять символів зірочки. Змінні завжди оголошуються в секції @implementation.
@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
Як і в Objective-C, оголошення статичних та динамічних методів класів починаються з '+'(плюс) та '-'(мінус) відповідно.
Як і в режимі збирача сміття в Objective-C 2.0, пам’ять під об’єкти не потрібно звільняти самотужки, оскільки вона буде звільнена збирачем сміття Javascript у потрібний час.
- ↑ Demos in Cappuccino. Demos in Cappuccino. Архів оригіналу за 25 серпня 2013. Процитовано 26 лютого 2011.
- Офіційний сайт
- Learning Objective-J. Cappuccino Web Framework. Архів оригіналу за 25 серпня 2013. Процитовано 21 грудня 2012.