Objective-J

Objective-J - мова програмування, що розробляється як частина Cappuccino - фреймворку для веб-додатків. Його синтаксис майже повністю ідентичний синтаксису Objective-C. Objective-J відноситься до JavaScript так само, як Objective-C до мови програмування C: є його строгим, але компактним надбезліччю. Objective-J додає в JavaScript традиційне спадкування і динамічну диспетчеризацію в стилі Smalltalk / Objective-C. У чистому Javascript як мовою прототипного типу вже існує поняття про об'єктної орієнтації та спадкуванні, але Objective-J додає в JavaScript можливість використовувати засноване на класах програмування.

Програмам, написаним на Objective-J, потрібна попередня обробка перед тим, як вони зможуть бути виконані віртуальною машиною JavaScript у веб-браузері. Цей етап може проходити під час виконання в веб-браузері за допомогою компілятора, який транслює програми на Objective-J в код на чистому JavaScript. Компілятор Objective-J написаний на JavaScript, і тому розгортання програм на Objective-J не вимагає наявності якої-небудь спеціальної надбудови для браузера.


1. Застосування

Перше повномасштабне застосування Objective-J пов'язане зі створенням веб-додатки 280Slides на основі фреймворку Cappuccino. Хоча Objective-J може бути використаний (і розроблявся) незалежно від Cappuccino, Objective-J в першу чергу був створений для підтримки веб розробки на основі Cappuccino.

2. Синтаксис

Objective-J - надмножество JavaScript, а це означає, що будь валідний код на JavaScript є також валідним кодом Objective-J. Наступний приклад ілюструє визначення на Objective-J класу з назвою Address. Цей клас розширює кореневої клас CPObject, який грає роль, подібну до ролі NSObject в Objective-C. За винятком назви кореневого об'єкту цей код також є прикладом визначення класу на мові 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 

Як і у випадку з Objective-C визначення методів класу і методів екземпляра починаються відповідно з '+' (плюс) і '-' (мінус).


3. Управління пам'яттю

На відміну від Objective-C, об'єкти в Objective-J не потребують звільнення, оскільки вони автоматично звільняються складальником сміття JavaScript.

Примітки