Tavoite-J | |
---|---|
Kieliluokka | moniparadigma : heijastava , oliosuuntautunut , toiminnallinen , pakottava , komentosarja |
Esiintyi | 2008 |
Kehittäjä | 280 North Inc. |
Tyyppijärjestelmä | dynaaminen , heikko , ankka |
Vaikutettu | Objective-C , JavaScript |
Lisenssi | LGPL |
Verkkosivusto | cappuccino.org |
Objective-J on ohjelmointikieli, joka on kehitetty osana Cappuccinoa , verkkosovelluskehystä. Sen syntaksi on lähes identtinen Objective-C :n kanssa . Objective-J on JavaScriptille sama kuin Objective-C C-ohjelmointikielelle: se on tiukka mutta kompakti superjoukko. Objective-J lisää perinteisen periytymisen ja Smalltalk/Objective-C-tyylisen dynaamisen lähetyksen JavaScriptiin. Puhtaalla Javascriptillä on jo oliosuuntauksen ja periytymisen käsite prototyyppityyppisenä kielenä, mutta Objective-J lisää JavaScriptiin mahdollisuuden käyttää luokkapohjaista ohjelmointia.
Objective-J:llä kirjoitetut ohjelmat vaativat esikäsittelyn, ennen kuin JavaScript-virtuaalikone voi suorittaa ne verkkoselaimessa. Tämä vaihe voidaan suorittaa suorituksen aikana verkkoselaimessa käyttämällä kääntäjää, joka kääntää Objective-J-ohjelmat puhtaaksi JavaScript-koodiksi. Objective-J-kääntäjä on kirjoitettu JavaScriptillä, joten Objective-J-ohjelmien käyttöönotto ei vaadi erityisiä selaimen lisäosia.
Objective-J:n ensimmäinen täysimittainen käyttö liittyy Cappuccino-kehykseen perustuvan 280Slides -verkkosovelluksen luomiseen. Vaikka Objective-J:tä voidaan käyttää (ja kehittää) Cappuccinosta riippumatta, Objective-J luotiin ensisijaisesti tukemaan Cappuccino-pohjaista verkkokehitystä.
Objective-J on JavaScriptin pääjoukko, mikä tarkoittaa, että mikä tahansa kelvollinen JavaScript-koodi on myös kelvollinen Objective-J-koodi. Seuraava esimerkki havainnollistaa Objective-J-määritelmää luokkalle nimeltä Address. Tämä luokka laajentaa CPObject-juuriluokkaa, jolla on samanlainen rooli kuin NSObjectilla Objective-C:ssä. Pääobjektin nimeä lukuun ottamatta tämä koodi on myös esimerkki Objective-C:n luokkamäärityksestä.
@toteutusosoite : CPObject { CPSstring name ; _ CPString kaupunki ; } - ( id ) initWithName: ( CPString ) aNimi kaupunki: ( CPSstring ) aKaupunki { itse = [ super init ]; nimi = aNimi ; kaupunki = aCity ; palauttaa itsensä ; } - ( void ) setName: ( CPString ) aName { nimi = aNimi ; } - ( CPString ) nimi { return name ; } + ( id ) newAddressWithName: ( CPString ) aNimi kaupunki: ( CPString ) aKaupunki { return [[ self alloc ] initWithName : aname city : aCity ]; } @loppuKuten Objective-C:n kohdalla, luokkamenetelmien ja ilmentymämenetelmien määritelmät alkavat kirjaimilla '+' (plus) ja '-' (miinus).
Toisin kuin Objective-C, Objective-J:n objekteja ei tarvitse vapauttaa, koska JavaScript-roskankerääjä vapauttaa ne automaattisesti.