Interview de Patrick Geiller Créateur de JSCocoa

Aurelien Gaymay

Interview de Patrick Geiller, Créateur de JSCocoa, langage permettant de créer des applications Cocoa avec du JavaScript.
Cet interview a été réalisé par Aurelien Gaymay.

- Titre : Interview de Patrick Geiller Créateur de JSCocoa

- Auteur : Aurelien Gaymay

- Parution : 22 décembre 2008

- Mise à jour : 7 avril 2020

- Licence : Copyright ® 2008 Aurélien Gaymay. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Pouvez-vous vous présenter à nos lecteurs ?

- II. Comment avez-vous découvert le monde Mac et le développement sur Mac ? Et pensez-vous pouvoir vivre du développement sur Mac ?

- III. Pouvez-vous nous dire rapidement ce qu'est JSCocoa ?

- IV. Quels sont ses avantages et inconvénients ?

- V. Pourquoi passer du temps à apprendre ce nouveau langage ?

- VI. Pouvez-vous nous donner quelques exemples de codes et résultats en JSCocoa ?

- VII. Que sera le projet JSCocoa à l'avenir ? Évolution du langage ? Projets d'applications pour iPhone/iPod Touch ? Évolution de l'équipe de développement ?

- VIII. Que pensez-vous de la politique d'Apple à propos de l'App Store ?

- IX. Steve Jobs a annoncé le développement de « Snow Leopard », avec un nouveau moteur JavaScript, OpenCL, Grand Central et autres améliorations. Qu'en pensez-vous ?

- X. Liens

I - Pouvez-vous vous présenter à nos lecteurs ?

Patrick, 30 ans, programmeur :) J'ai développé en C++, PHP, JavaScript, et maintenant en Cocoa. (1)

II - Comment avez-vous découvert le monde Mac et le développement sur Mac ? Et pensez-vous pouvoir vivre du développement sur Mac ?

Je suis venu au Mac par le Mini, en 2005. Je lorgnais depuis longtemps la plateforme, car j'en entendais beaucoup de bien, même de la part des hackers de Slashdot. J'ai ensuite mis la main à la pâte avec XCode (2) et Interface Builder qui m'ont tout de suite séduit par leur facilité : on 'dessine' les liens entre composants, on dépose les objets qu'on veut instancier, on utilise Cocoa Bindings pour lier le tout, facile et élégant ! Maintenant, j'ai un iMac de début d'année. Je ne sais pas si je pourrai vivre du développement Mac, je tente le coup pour voir.

III - Pouvez-vous nous dire rapidement ce qu'est JSCocoa ?

JSCocoa permet d'écrire des applications OSX en JavaScript. Quiconque a déjà écrit un peu de JavaScript se sentira tout de suite à l'aise :

* Navigateur (JavaScript): document.getElementsByTagName('*') donne les nodes de la page.
* JSCocoa : NSWorkspace.sharedWorkspace.launchedApplications donne la liste des applications lancées.

JSCocoa est un pont entre JavaScript et Cocoa et donne accès à (quasi) toutes les fonctions disponibles pour le développeur qui utilise habituellement XCode.

IV - Quels sont ses avantages et inconvénients ?

Des inconvénients ? il y en a toujours. ;-)
L'avantage majeur est le côté runtime : on peut charger du code à n'importe quel moment, exécuter une fonction quand on veut, tout ça quand l'application JSCocoa tourne.
On peut ainsi modifier ou déboguer son application quand on veut. On peut même modifier le code Objective-C existant et changer ainsi le comportement d'un bouton ou d'une fenêtre, toujours en runtime ! Alors que Objective-C impose de recompiler à chaque fois.
Cet avantage est également l'inconvénient majeur : c'est plus lent, et comme le code n'est pas compilé il faut s'assurer de son exactitude par le biais de tests. (Ce qui est alors plus un avantage:) )
Ensuite on a tous les avantages de JavaScript : syntaxe point (a.b.c.d au lieu de [[[a b] c] d] en Objective-C), expressions régulières, utilisation simplifiée des tableaux (array[5] au lieu de [array objectAtIndex:5]) et des dictionnaires (hash['value'] ou hash.value au lieu de [hash objectForKey:@« value »] ).

V - Pourquoi passer du temps à apprendre ce nouveau langage ?

Précision ! :) JSCocoa n'est pas un nouveau langage, c'est une interface qui permet d'utiliser Cocoa (les librairies développeurs d'Apple) en JavaScript (le langage du web - Safari et JSCocoa utilisent tous deux JavascriptCore.framework).
Si vous connaissez Cocoa, la syntaxe change de [[NSWorkspace sharedWorkspace] activeApplication] en NSWorkspace.sharedWorkspace.activeApplication.
Si vous connaissez JavaScript, vous manipulez des objets Cocoa - NSWorkspace.sharedWorkspace.activeApplication - au lieu d'objets DOM (3) - document.getElementById('content').color = 'red'

VI - Pouvez-vous nous donner quelques exemples de codes et résultats en JSCocoa ?

Après avoir créé une vue Core Animation et récupéré un layer container parentLayer, voici comment rajouter un layer :

VII - Que sera le projet JSCocoa à l'avenir ? Évolution du langage ? Projets d'applications pour iPhone/iPod Touch ? Évolution de l'équipe de développement ?

Les bugs et issues sont listés sur Google Code : http://code.google.com/p/jscocoa/issues/list
Dans le futur proche :

- faire tourner sur iPhone : marche déjà sur le simulateur; je cherche un volontaire pour tester sur un iPhone ;

- créer un type de fichier .jscocoa lancé et exécuté directement, sans passer par Xcode ;

- intégrer JSCocoa à XCode : rajouter des templates pour créer des projets et fichiers .jscocoa.

Pour l'évolution du langage et de l'équipe, toute idée ou tout membre sont les bienvenus ! J'ai écrit JSCocoa pour répondre à mes attentes, quiconque veut le plier aux siennes peut le faire.

VIII - Que pensez-vous de la politique d'Apple à propos de l'App Store ?

Elle est peu lisible. J'ai surtout suivi la débâcle de l'application « I'm rich », d'abord autorisée puis suspendue. Si je ne suis pas client de ce genre d'applications, je ne comprends pas pourquoi les interdire — Ce n'est pas très « free market » de leur part.
D'un autre côté, on voit des développeurs gagner des dizaines de milliers de dollars avec leur(s) application(s), et ça, c'est extrêmement encourageant.

IX - Steve Jobs a annoncé le développement de « Snow Leopard », avec un nouveau moteur JavaScript, OpenCL, Grand Central et autres améliorations. Qu'en pensez-vous ?

Bonne nouvelle pour JSCocoa ! Rien à changer côté code, et d'après Apple 50 % de vitesse en plus.
Je suis largué côté Grand Central et OpenCL.
Aujourd'hui la majorité de mon code appelle des fonctions OS X de haut niveau, que ce soit pour du stockage de données ou des effets graphiques. À moins d'écrire un raytracer, un éditeur d'image ou de son, je ne vois pas encore comment utiliser ces technologies.

X - Liens

- Site Web : http://parmanoir.com/

- Site du Projet : http://inexdo.com/JSCocoa

- Google Code : http://code.google.com/p/jscocoa/

(1)Cocoa est l'API d'Apple pour développement orienté objet pour Mac OS X.

(2)Xcode est l'environnement de développement fourni par Apple qui permet de développer en C, C++, Objective-C, AppleScript, Java et d'autres encore.

(3)DOM : Document Object Model est une recommandation du W3C qui décrit une interface indépendante de tout langage de programmation et de toute plateforme, permettant à des programmes informatiques et à des scripts d'accéder ou de mettre à jour le contenu, la structure ou le style de documents.