Developpez.com - Mac
X

Choisissez d'abord la catégorieensuite la rubrique :


Interview : Patrick Geiller Créateur de JSCocoa

Date de publication : 11 novembre 2008

Par Aurelien Gaymay (Le monde Mac selon kOrt3x) (Blog)
 

Interview de Patrick Geiller, Créateur de JSCocoa, langage permettant de créer des applications Cocoa avec du JavaScript.

            

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 sous Mac ?
III. Pouvez-vous nous dire rapidement ce qu'est le JSCocoa ?
IV. Quel sont ces avantages et inconvénients ?
V. Pourquoi passer du temps à apprendre ce nouveau langage ?
VI. Pouvez-vous nous donner quelques exemples de code et résultat en JSCocoa ?
VII. Que sera le projet JSCocoa dans l'avenir ? Evolution 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 ?
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 sous Mac ?

Je suis venu au Mac par le Mini, en 2005. Je lorgnais depuis longtemps sur 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 pate 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 le 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. Quel sont ces avantages et inconvénients ?

Des inconvénients ? il y en a toujours. ;-)
L'avantage majeur est le coté runtime : on peut charger du code a n'importe quel moment, exécuter une fonction quand on veut, tout ça quand l'application JSCocoa tourne.
On peut ainsi modifier ou debugger son application quand on veut. On peut même modifier le code ObjC existant et changer ainsi le comportement d'un bouton ou d'une fenêtre, toujours en runtime ! Alors que ObjC 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 ObjC), 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 developeur 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 code et résultat en JSCocoa ?

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


samplejscocoa

VII. Que sera le projet JSCocoa dans l'avenir ? Evolution 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 simulator, 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 a 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 membre est le bienvenu ! 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ébacle 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. De l'autre côté, on voit des dévelopeurs gagner des dizaines de milliers de dollars avec leur application, 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 OSX 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.


Liens




            

(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 plate-forme, permettant à des programmes informatiques et à des scripts d'accéder ou de mettre à jour le contenu, la structure ou le style de documents.

Valid XHTML 1.1!Valid CSS!

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.

Contacter le responsable de la rubrique Mac