- Objective-J
-
Objective-J Paradigm(s) Multi-paradigm: reflective, object oriented, functional, imperative, scripting Appeared in 2008 Developer 280 North, Inc. Typing discipline dynamic, weak, duck Influenced by Objective-C, JavaScript License LGPL Website cappuccino.org Objective-J is a programming language developed as part of the Cappuccino web development framework. Its syntax is nearly identical to the Objective-C syntax and it shares with JavaScript the same relationship that Objective-C has with the C programming language: that of being a strict, but small, superset; adding traditional inheritance and Smalltalk/Objective-C style dynamic dispatch. Pure JavaScript, being a prototype-based language, already has a notion of object orientation and inheritance, but Objective-J adds the use of class-based programming to JavaScript.
Programs written in Objective-J need to be preprocessed before being run by a web browser's JavaScript virtual machine. This step can occur in the web browser at runtime or by a compiler which translates Objective-J programs into pure JavaScript code. The Objective-J compiler is written in JavaScript; consequently, deploying Objective-J programs does not require a web browser plug-in.
Contents
Applications
The first widely known use of Objective-J was in the Cappuccino-based web application 280 Slides, which was developed by 280 North itself. Even though Objective-J can be used (and has been designed) independently from the Cappuccino framework, Objective-J has primarily been invented to support web development in Cappuccino.
Applications designed using the Cappuccino Framework[1]
- Mockingbird
- PicEngine
- GithubIssues
- TimeTable
- Enstore
- Almost At
- Akshell - Online JavaScript Web-App IDE
- Archipel Project - Virtual machine orchestrator
Syntax
Objective-J is a superset of JavaScript, which means that any valid JavaScript code is also valid Objective-J code.
The following example shows the definition and implementation in Objective-J of a class named Address; this class extends the root object CPObject, which plays a role similar to the Objective-C's NSObject. This example differs from traditional Objective-C in that the root object reflects the underlying Cappuccino framework as opposed to Cocoa, Objective-J does not use pointers and, as such, type definitions do not contain asterisk characters (in Objective-C, all objects must be dynamically allocated). In addition, instance variable definitions are never done in the @implementation file.
@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
As with Objective-C, class method definitions and instance method definitions start with '+' (plus) and '-' (dash), respectively.
Memory management
Like Objective-C 2.0's garbage-collected mode, objects in Objective-J do not need to be manually released because they are automatically freed by JavaScript's garbage collector.
See also
References
- ^ "Demos in Cappuccino". Demos in Cappuccino. http://cappuccino.org/learn/demos/. Retrieved 26 February 2011.
External links
- Official website
- "Learning Objective-J". Cappuccino Web Framework. http://cappuccino.org/learn/tutorials/objective-j-tutorial.php.
ECMAScript Dialects ActionScript · Caja · JavaScript (engines) · JScript · JScript .NET · Objective-J · QtScript · WMLScriptEngines
(comparison)Carakan · Futhark · InScript · JavaScriptCore (SquirrelFish) · JScript · KJS · Linear B · Narcissus · QtScript · Rhino · SpiderMonkey (TraceMonkey, JägerMonkey) · Tamarin · V8 · ChakraFrameworks,
librariesJavaScript
(comparison)Ample SDK · Clean AJAX · CougarXML · Dojo · Echo · Ext · Google Web Toolkit · jQuery · Lively Kernel · midori · MochiKit · MooTools · OpenLink AJAX · Prototype · Pyjamas · qooxdoo · Rialto · Rico · script.aculo.us · SmartClient · SproutCore · Spry · YUI LibraryLibraries
(list)PDFObject · SWFObject · SWFAddressActionScriptMultiple
implementationsCappuccino (JavaScript, Objective-J)People Other Categories:- Object-oriented programming languages
- JavaScript programming language family
Wikimedia Foundation. 2010.