Mål-J | |
---|---|
Sprog klasse | multi- paradigme : reflekterende orienteret , objektorienteret , funktionel , imperativ , scripting |
Dukkede op i | 2008 |
Udvikler | 280 North Inc. |
Type system | dynamisk , svag , and |
Blev påvirket | Objective-C , JavaScript |
Licens | LGPL |
Internet side | cappuccino.org |
Objective-J er et programmeringssprog udviklet som en del af Cappuccino , en webapplikationsramme. Dens syntaks er næsten identisk med den for Objective-C . Objective-J er for JavaScript , hvad Objective-C er for C-programmeringssproget: det er et strengt, men kompakt supersæt. Objective-J tilføjer traditionel arv og Smalltalk/Objective-C-stil dynamisk afsendelse til JavaScript. Pure Javascript har allerede begrebet objektorientering og arv som et prototypesprog, men Objective-J tilføjer muligheden for at bruge klassebaseret programmering til JavaScript.
Programmer skrevet i Objective-J kræver forbehandling, før de kan udføres af den virtuelle JavaScript-maskine i en webbrowser. Dette trin kan finde sted under kørsel i en webbrowser ved hjælp af en compiler, der oversætter Objective-J-programmer til ren JavaScript-kode. Objective-J-kompileren er skrevet i JavaScript, så implementering af Objective-J-programmer kræver ikke nogen speciel browsertilføjelse.
Den første fuldskala brug af Objective-J er forbundet med oprettelsen af webapplikationen 280Slides baseret på Cappuccino-rammeværket. Selvom Objective-J kan bruges (og udvikles) uafhængigt af Cappuccino, blev Objective-J primært skabt til at understøtte Cappuccino-baseret webudvikling.
Objective-J er et supersæt af JavaScript, hvilket betyder, at enhver gyldig JavaScript-kode også er gyldig Objective-J-kode. Følgende eksempel illustrerer en Objective-J definition af en klasse kaldet Adresse. Denne klasse udvider CPObject-rodklassen, som spiller en rolle svarende til NSObjects i Objective-C. Med undtagelse af navnet på rodobjektet er denne kode også et eksempel på en klassedefinition i Objective-C.
@implementation adresse : CPObject { CPString navn ; CPString by ; } - ( id ) initWithName: ( CPString ) aName by: ( CPString ) aCity { self = [ super init ]; navn = et Navn ; by = aCity ; returnere selv ; } - ( void ) setName: ( CPString ) aName { name = aName ; } - ( CPString ) name { return name ; } + ( id ) newAddressWithName: ( CPString ) aName by: ( CPString ) aCity { return [[ self alloc ] initWithName : aname city : aCity ]; } @endeSom med Objective-C starter definitioner af klassemetoder og instansmetoder med henholdsvis '+' (plus) og '-' (minus).
I modsætning til Objective-C behøver objekter i Objective-J ikke at blive frigivet, da de automatisk frigives af JavaScript-skraldsamleren.