J2ObjC. Derrière ce nom barbare (Java to Objective-C) se cache un outil qui va vous permettre de traduire votre code Java en Objective-C, principal langage de la plateforme iOS (iPhone et iPad).
Pour développer sur un iPhone, il vous faudra utiliser le langage Objective-C. Sur Android, il s’agit d’une base Java complétée par le framework Android. Grâce à l’outil J2ObjC, vous avez dorénavant la possibilité de traduire vos classes Java en fichier d’extension « .m ».
Pour ce faire, rendez-vous sur le site du projet et téléchargez l’outil. Lancez votre terminal et utilisez la commande suivante :
j2objc [-classpath path] [-sourcepath path] [-d outputDirectory]
Le principal intérêt pour Google de développer un tel outil est évident. A l’heure d’aujourd’hui, les développeurs d’applications sont les principaux moteurs de l’essor considérable des smartphones. Il est important de garder ceux qui ont déjà développer sur la plateforme mais il faut également en recruter de nouveaux. Google espère ainsi, grâce à ce projet, amener d’avantages de développeurs qui hésitent encore entre les deux plateformes.
L’une des question principale que l’on peut se poser concerne la gestion de la mémoire du téléphone, différente entre un smartphone Android qui possède un garbage collector et iOS qui n’en a pas. J2ObjC propose trois options lors de la génération des fichiers. Par défaut, la méthode du comptage de référence va être utilisée, la norme chez Apple. J2ObjC peut également garder le garbage collector qui est bel et bien présent sur MacOS. Laissez-tomber cependant si vous souhaiter traduire pour iOS. Enfin, J2ObjC gère l’Automatic Resource Counting, gestionnaire de mémoire recommandé par Apple mais qui est encore très récent. Le projet convergera par ailleurs sur cette dernière méthode dans le futur.
Autre élément important à prendre en considération, le projet J2ObjC ne prend pas en compte l’interface graphique. Autrement dit, seules les classes Java sont traduisibles et toute la partie graphique n’est pas générée en Objective-C. La raison est simple : l’interface utilisateur Android diffère en de nombreux points de celle d’iOS. Google s’intéresse seulement au code propre au moteur de l’application.
Le projet est open-source, en version 0.5, jongle entre beta et alpha et est disponible au téléchargement par ici.
Pour ne rater aucun bon plan, rejoignez notre nouveau channel WhatsApp Frandroid Bons Plans, garanti sans spam !
Je pensais que l'objective C avait des pointeurs (par exemple). Hum lol parce que Java n'a pas de pointeur ? :D Tout est un pointeur en Java.
Ouais c'est sûr, il n'a pas pour vocation de remplacer un dev, plutôt de rendre certains dev plus accessibles. Je n'ai pas eu le temps de le tester encore cependant, je verrais ça d'ici quelques jours.
Jamais utilisé un convertisseur, mais j'avais lu à l'époque justement que c'était pas forcément très au point. Et juste que plusieurs applications sur le PlayStore étaient des traductions d'où les soucis de stabilisation. Les gens se plaignaient d'ailleurs de ce système. Mais bon, ça a surement du évoluer dans le bon sens depuis ;) Tant mieux, parce quelle plaie de recoder ses applications dans différents langage...
Moi qui actuellement travaille uniquement sur du dev Android, je le vois bien l'intérêt. Maîtriser le Java et l'ObjC ainsi que les 2 API Android et iOS, suivre leur évolution, ... C'est pas à la porté de tout le monde. Alors Google arrive et dit : "Développeur : vous ne savez pas choisir ? On a la solution, concentrez vous sur le Java et Android, et en échange on vous facilite la tâche si éventuellement vous souhaitez adapter votre application sur la plate-forme concurrente". Ca mérite réflexion quand même ...
Hum. en fait j'en sais rien j'y connais rien a l'Objective-C. Je pensais que l'objective C avait des pointeurs (par exemple). D'un autre coté j'y connais pas grand chose au Java non plus. A part lancer des threads et appeler les méthodes du NDK, je ne m'en sers pas des masses !
Oui enfin c'est joli pour attirer les nouveau dev ou ceux qui ne connaissent pas énormément en programmation. (comme je l'ai dis juste avant ) Mais si tu est aussi dans le dev je crois qu'on sait tout les 2 qu'un tel outils aura , au final, toujours trop de lacune pour pouvoir faire du dev professionnel. Les traducteur de code dans un autre langage ça existe depuis longtemps mais ça reste toujours très moyens. Au mieux ça pourra accélérer un peu le dev mais quelqu'un devra toujours passer derrière.
Java Native peut très bien exécuter du code natif. C dans ce cas.
En général, google fait du bon travail question optimisation je trouve (voir GWT qui converti Java en javascript optimisé multi navigateur). Pour ma part, je pense essayer et juger après...
Tout à fait d'accord avec toi sur ce point. Le problème c'est que la logique de code d'un langage à l'autre est relativement facile à reproduire. En revanche, l'implémentation d'une UI n'a rien à voir en Java et en Objective-C. L'objectif ici est donc d'accélérer le travail sur iOS, pas de totalement le mâcher. Le développeur devra au maximum séparer son UI de sa logique. Ca aura peut être pour avantage de donner quelques bonnes habitudes à certains dev :p D'ailleurs Google précise bien sur la page de son projet qu'il ne s'agit pas d'un framework multiplateforme.
A partir du moment où seuls les dev java (donc Android par extension, pas iOS) peuvent utiliser cet outil, je vois pas en quoi Google se tire une balle dans le pied... Au contraire, si ce projet est bien conçu et fonctionne, les applications seront développées d'abord pour Android et seront transposées en Objective-C par la suite, gain de temps!
Oui, l'intérêt de l'outil en lui-même est évident :) Ceci dit, comme spécifié sur la page web du projet, celui-ci n'a pour but que de traduire quelques bouts de code sans UI. Or sans UI, on ne va pas bien loin...
Objective-C et Java c'est du pareil au même, tout ce qu'Objective-C fera, Java en sera capable, qu'est-ce qu'il ne faut pas entendre. En revanche il est possible d'intégrer du C ou C++ à du code Objective-C, c'est là que la conversion vers le Java risque d'être un peu plus compliqué.
Ce qui est byzarre, C'est qu'ils fassent une transalation dans ce sens, Cela eu été plus logique de proposer au développeurs Apple de migrer leur applications sur Android facilement. Je suppose que la raison est que le Java est un langage trop pourri pour pouvoir gérer tout ce que l'Objective-C est capable de faire. Bon en ce qui me concerne ça m'arrange que ce soit dans ce sens. C'est bien la première fois que je trouve un intérêt au Java !
... Je sais pas mais l’intérêt est assez évident... Il y a de nombreux développeur qui ne connaissent rien à l'objective-c et pas grand chose (voir rien) en java. Il y a aussi beaucoup de jeune qui apprennent à coder avant même qu'ils puissent accéder à un cursus en programmation.(Et mine de rien ils peuvent être très bon) Dans ses 2 cas l'objective-c ou le java c'est pareil au même. Pourtant ils veulent faire des appli smartphones. Du coup le premier choix à faire avant de commencer c'est : la plateforme( et donc le langage). Tu sais que tu ne peux pas apprendre 2 langage en même temps. donc dans un premier temps tu ne pourras développer que pour un OS. Ce sera long et en fin de compte tu risque de décider de rester sur une seule plateforme. Du coup c'est du 50/50 dans le choix de départ. Mais si on te dit que si tu code en java tu pourra porter tes classe en objective-C. tu te dis que c'est déjà pas mal et qu'en plus google vas peut-être améliorer cette portabilité. Du coup la balance penchera plus du coté java. CQFD. Ensuite vau mieux toutes lesappli sur android et ios que 1/3 sur google, 1/3 sur apple et 1/3 sur les 2.
"A l’heure d’aujourd’hui" j'adore ^^
L'intérêt pour Google c'est que le dev développera son application pour Android alors que la version iOS ne sera qu'une conversion de celle pour Android. Aujourd'hui on a plutôt l'effet inverse avec le développement pensé pour iOS et une bête adaptation sous Android. Je suis personnellement cet outils de prêt, il n'est pas exclu qu'on l'utilise dans mon entreprise pour s'éviter d'avoir 2 dev identique un sur Android et un sur iOS. Très bonne idée de la part de Google donc et en effet, l'intérêt d'un tel outil est assez évident ;)
Désolé de vous l'apprendre, mais l'Objectif C n'existe pas. Le nom c'est Objective-C. On est sur un site Android, mais quand même ;)
Désolé, j'ai du mal à suivre ton raisonnement et visiblement je ne suis pas le seul (cf. mynux) ! Ce qui intéresse Google est que les gens développe pour Android. Or il propose un outil pour les développeurs java (donc des développeurs a priori plus enclin à développer pour Android) leur permettant de plus facilement développer pour iOS. C'est plutôt curieux non?
Je suis d'accord, je ne vois pas l'évidence d'un tel projet. Pour un développeur, ce n'est pas ce genre d'outil qui va l'orienter vers Android ou iOS. Le nombres de smartphones (et de consommateurs associés) est très élevés des deux côtés. C'est cela qui va le convaincre de développer pour les deux platesformes. Au final, c'est le développeur et le consommateur qui sont gagnants mais je ne vois pas l'intérêt de Google.
Lorsque tu es développeur, que tu hésites entre les deux plateformes et qu'on te propose un outil permettant d'avoir les deux en développant seulement en Java, tu n'as plus à réfléchir et tu codes ainsi pour Android.
Google aime se tirer une balle dans le pied ?
Un peu de relecture de temps en temps ne fait pas de mal, non seulement pour les fautes d'orthographe mais surtout pour l'analyse : en quoi l'intérêt pour Google de développer un tel outil est évident? Comment peut-il espérer convaincre à faire venir des développeurs sur Android avec un convertisseur de code de java vers objectif C?? Ca serait plutôt l'inverse non? Google y a sûrement un intérêt mais certainement pas celui-là.
C'est beau, mais je ne suis pas convaincu de la qualité finale... Traduire oui, mais qu'en est il d'une vraie optimisation par rapport à la différence de langage ? Pas convaincu que ça produise des applications légères et stables... J'espère me tromper !
Ce contenu est bloqué car vous n'avez pas accepté les cookies et autres traceurs. Ce contenu est fourni par Disqus.
Pour pouvoir le visualiser, vous devez accepter l'usage étant opéré par Disqus avec vos données qui pourront être utilisées pour les finalités suivantes : vous permettre de visualiser et de partager des contenus avec des médias sociaux, favoriser le développement et l'amélioration des produits d'Humanoid et de ses partenaires, vous afficher des publicités personnalisées par rapport à votre profil et activité, vous définir un profil publicitaire personnalisé, mesurer la performance des publicités et du contenu de ce site et mesurer l'audience de ce site (en savoir plus)
En cliquant sur « J’accepte tout », vous consentez aux finalités susmentionnées pour l’ensemble des cookies et autres traceurs déposés par Humanoid et ses partenaires.
Vous gardez la possibilité de retirer votre consentement à tout moment. Pour plus d’informations, nous vous invitons à prendre connaissance de notre Politique cookies.
Gérer mes choix