Objetivo-J | |
---|---|
clase de idioma | multiparadigma : orientado a la reflexión, orientado a objetos , funcional , imperativo , secuencias de comandos |
Apareció en | 2008 |
Desarrollador | 280 norte inc. |
sistema de tipos | dinámico , débil , pato |
sido influenciado | Objective-C , JavaScript |
Licencia | LGPL |
Sitio web | capuchino.org |
Objective-J es un lenguaje de programación desarrollado como parte de Cappuccino , un marco de aplicación web. Su sintaxis es casi idéntica a la de Objective-C . Objective-J es para JavaScript lo que Objective-C es para el lenguaje de programación C: es un superconjunto estricto pero compacto. Objective-J agrega herencia tradicional y envío dinámico de estilo Smalltalk/Objective-C a JavaScript. Pure Javascript ya tiene el concepto de orientación a objetos y herencia como lenguaje de tipo prototipo, pero Objective-J agrega la capacidad de usar programación basada en clases a JavaScript.
Los programas escritos en Objective-J requieren preprocesamiento antes de que puedan ser ejecutados por la máquina virtual de JavaScript en un navegador web. Este paso puede tener lugar en tiempo de ejecución en un navegador web utilizando un compilador que traduce los programas Objective-J en código JavaScript puro. El compilador de Objective-J está escrito en JavaScript, por lo que la implementación de programas de Objective-J no requiere ningún complemento especial del navegador.
El primer uso a gran escala de Objective-J está asociado con la creación de la aplicación web 280Slides basada en el marco Cappuccino. Aunque Objective-J se puede usar (y desarrollar) independientemente de Cappuccino, Objective-J se creó principalmente para admitir el desarrollo web basado en Cappuccino.
Objective-J es un superconjunto de JavaScript, lo que significa que cualquier código JavaScript válido también es código Objective-J válido. El siguiente ejemplo ilustra una definición de Objective-J de una clase llamada Dirección. Esta clase amplía la clase raíz CPObject, que desempeña un papel similar al de NSObject en Objective-C. Con la excepción del nombre del objeto raíz, este código también es un ejemplo de una definición de clase en Objective-C.
Dirección de @implementación : CPObject { CPString nombre ; CPString ciudad ; } - ( id ) initWithName: ( CPString ) aName city: ( CPString ) aCity { self = [ super init ]; nombre = unNombre ; ciudad = aCiudad ; devolver uno mismo ; } - ( void ) setName: ( CPString ) aName { name = aName ; } - ( CPString ) nombre { devolver nombre ; } + ( id ) newAddressWithName: ( CPString ) aName city: ( CPString ) aCity { return [[ self alloc ] initWithName : aname city : aCity ]; } @finalAl igual que con Objective-C, las definiciones de métodos de clase y métodos de instancia comienzan con '+' (más) y '-' (menos) respectivamente.
A diferencia de Objective-C, los objetos en Objective-J no necesitan liberarse, ya que el recolector de elementos no utilizados de JavaScript los libera automáticamente.