Користувач:Romankozak/пісочниця

Стаття ред.

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.

Програмне забезпечення, шо використовує Cappuccino та Objective-J[1] ред.

Синтаксис ред.

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 у потрібний час.

Дивіться також ред.

Посилання ред.

  1. Demos in Cappuccino. Demos in Cappuccino. Процитовано 26 February 2011.

External links ред.