310 votes

Comparaison entre Corona, Phonegap, Titanium

Je suis un développeur web et je veux déplacer mon site web les produits à l'iPhone. L'un des produits comme Google Maps: voir la carte sur l'écran du téléphone, vous pouvez déplacer ou redimensionner la carte et afficher des informations que nous ajoutons à la carte.

Je sais il y a des technologies qui vous permet d'utiliser le langage HTML, CSS et Javascript pour développer natif des applications de l'iPhone. J'ai identifié quelques-uns:

Il existe d'autres produits similaires? Quelles sont les différences entre eux? Lequel dois-je choisir?

368voto

DennisJZH Points 3767

Je l'ai enregistré avec stackoverflow juste dans le but de formuler des commentaires sur la plupart voté réponse sur le dessus. La mauvaise chose est stackoverflow ne pas permettre à de nouveaux membres à poster des commentaires. Donc, je dois faire ce commentaire plus ressembler à une réponse.

Rory Blyth réponse contient certains des points valables sur les deux javascript mobile cadres. Cependant, ses principaux points sont incorrectes. La vérité est que le Titane et PhoneGap sont plus semblables que différents. Ils exposent les fonctions de téléphone portable par le biais d'un ensemble d'Api javascript, et la logique de l'application (html, css, javascript) s'exécute à l'intérieur d'un natif WebView de contrôle.

  1. PhoneGap est pas seulement un natif wrapper d'une application web. Par le biais de la PhoneGap Api javascript, le "web app" a accès à la téléphonie mobile des fonctions telles que la Géolocalisation, Accéléromètre, Appareil photo, Contacts, Base de données, système de Fichiers, etc. Fondamentalement, toute fonction que le téléphone mobile SDK fournit peut-être en mode "bridge" pour le javascript monde. D'autre part, une normale web application qui s'exécute sur le navigateur web mobile n'a pas accès à la plupart de ces fonctions (sécurité étant la principale raison). Par conséquent, une application PhoneGap est plus d'une application mobile que d'une application web. Vous pouvez certainement utiliser PhoneGap pour envelopper une application web qui n'utilise pas de PhoneGap Api à tous, mais ce n'est pas ce que PhoneGap a été créé pour.

  2. Le titane ne PAS compiler votre code html, css ou javascript, code en natif bits". Ils sont emballés en tant que ressources de l'exécutable bundle, un peu comme une image intégrée de fichier. Lorsque l'application s'exécute, ces ressources sont chargés dans une UIWebView de contrôle et de courir là-bas (comme javascript, pas natif bits, bien sûr). Il n'y a pas une telle chose comme un javascript à du code natif (ou à l'objective-c) compilateur. Ceci est réalisé de la même manière dans PhoneGap. Du point de vue architectural, ces deux cadres sont très similaires.

Maintenant, sont-ils différents? Oui. Tout d'abord, le Titane semble être plus riche que PhoneGap en comblant plus de fonctions de téléphone portable de javascript. Plus nettement, PhoneGap n'expose pas beaucoup (le cas échéant) natif composants de l'INTERFACE utilisateur javascript. De titane, d'autre part, il possède une large UI Api qui peut être appelé en javascript pour créer et contrôler toutes sortes de natif de contrôles d'INTERFACE utilisateur. Utilizaing ces UI Api, Titane application peut paraître plus "natif" que d'une application PhoneGap. Deuxièmement, PhoneGap prend en charge plus de téléphone mobile de plates-formes que le Titane n'. PhoneGap Api sont plus générique et peut être utilisé sur différentes plates-formes telles que iPhone, Android, Blackberry, Symbian, etc. Le titane est principalement ciblé sur iPhone et Android, au moins pour l'instant. Certains de ses Api de la plate-forme spécifique (comme l'iPhone, l'INTERFACE utilisateur Api). L'utilisation de ces Api permettra de réduire la croix-plate-forme de la capacité de votre application.

Donc, si votre inquiétude pour votre application est pour le rendre plus "natif" de la recherche, le Titane est un meilleur choix. Si vous voulez être en mesure de "port" de votre application à une autre plate-forme plus facilement, PhoneGap sera mieux.

Mise à jour 8/13/2010: Lien vers un de Titane employé réponse à Mickey question.

Mise à jour 12/04/2010: J'ai décidé de faire ce post un examen annuel afin de garder ses informations à jour. Beaucoup de choses ont change dans une année qui a fait partie de l'information dans le post initial obsolètes.

Le plus grand changement est venu de Titane. Plus tôt cette année, Appcelerator publié Titanium 1.0, qui s'écarte radicalement de ses versions antérieures à partir du point de vue architectural. Dans la 1.0, la UIWebView contrôle n'est plus en usage. Au lieu de cela, vous appeler en Titane Api pour toutes les fonctions de l'INTERFACE utilisateur. Ce changement signifie plusieurs choses:

  1. INTERFACE utilisateur de votre application devient complètement natif. Il n'y a plus d'une INTERFACE web dans votre application depuis le natif de Titane Api de prendre le contrôle de tous vos besoins de l'INTERFACE utilisateur. Titane mérite beaucoup de crédit par les pionniers sur la "Croix-Plate-forme d'INTERFACE Natifs" de frontière. Il permet aux programmeurs qui préfèrent le look and feel de l'INTERFACE natifs, mais n'aime pas l'officiel langage de programmation alternative.

  2. Vous ne serez pas en mesure d'utiliser le langage HTML ou CSS dans votre application, comme la vue web a disparu. (Remarque: vous pouvez toujours créer l'affichage web en Titane. Mais il y a peu de Titane fonctionnalités que vous pouvez profiter de la vue web.)Titane Q&A: Ce qui s'est passé pour le HTML ET CSS?

  3. Vous ne serez pas en mesure d'utiliser les bibliothèques JS comme JQuery qui supposent l'existence d'un objet DOM. Vous continuez à utiliser du code JavaScript dans votre langage. Mais c'est à peu près la seule technologie web que vous pouvez utiliser si vous venez de Titane 1.0 en tant que programmeur web.

Titane vidéo: Ce qui est nouveau en Titane 1.0.

Maintenant, ne Titanium 1.0 compiler votre code JavaScript dans "native bits"? Pas de. Appcelerator enfin arrivé propre sur cette question avec ce blog des développeurs:Titane Guides de Projet: JS Environnement. Nous les programmeurs sont plus des gens authentiques que ceux dans le département de Marketing, n'est-ce pas? :-)

Passer à PhoneGap. Il n'y a pas beaucoup de nouvelles choses à dire à propos de PhoneGap. Ma perception est que PhoneGap développement n'a pas été très actif jusqu'à ce que IBM a sauté sur la carte, plus tard cette année. Certaines personnes ont même soutenu que IBM est de contribuer plus de code à PhoneGap que Nitobi est. Qui soit vrai ou pas, il est bon de savoir que PhoneGap est active développée.

PhoneGap continue de se fonder sur des technologies web, à savoir HTML, CSS et JavaScript. Il ne ressemble pas à PhoneGap a tout plan de pont natif fonctions de l'INTERFACE utilisateur pour JavaScript, comme le Titane est en train de faire. Tandis que l'INTERFACE Web est encore à la traîne natif de l'INTERFACE utilisateur sur les performances et une interface native, un tel écart est rapidement fermé. Il y a deux tendances dans les technologies du web qui assurent la brillante fonctionnalité de web mobile de l'INTERFACE utilisateur en termes de performances:

  1. Moteur JavaScript passer d'un interprète pour une machine virtuelle. JavaScript est JIT compilé en code natif pour une exécution plus rapide. Safari JS moteur: SquirrelFish Extrême

  2. De rendu de pages Web en mouvement de se fonder sur une CPU à l'aide de l'accélération GPU. Graphique intensif des tâches telles que la page de la transition et de l'animation 3D deviennent beaucoup plus lisse avec l'aide de l'accélération matérielle. Grâce à l'Accélération GPU de Compositing dans Chrome

Ces améliorations sont d'origine navigateurs de bureau sont livrés à des navigateurs mobiles rapidement. En fait, depuis iOS 3.2 et Android 2.0, le web mobile, contrôle de l'affichage est devenue de plus en plus performants et HTML5 sympathique. L'avenir du web mobile est tellement prometteur qu'il a attiré un grand gosse de la ville: JQuery a récemment annoncé son mobile framework web. Avec JQuery Mobile fournissant l'INTERFACE utilisateur de gadgets, et PhoneGap fournir des fonctionnalités de téléphonie, les deux combinés crée un parfait mobile, plateforme web, à mon avis.

Je devrais aussi mentionner que le Sencha Touch comme un autre mobile de l'INTERFACE utilisateur web gadget cadre. Sencha Touch version 1.0 a récemment été libéré sous une double licence qui inclut la GPLv3. Sencha Touch fonctionne bien avec PhoneGap comme JQuery Mobile.

Si vous êtes un GWT programmeur(comme moi), vous voudrez peut-être vérifier GWT Mobile, un projet open source pour créer les applications web mobiles avec GWT. Il comprend un PhoneGap GWT wrapper qui permet l'utilisation de PhoneGap dans GWT.

193voto

Rory Blyth Points 10420

De ce que j'ai recueillies, voici quelques différences entre les deux:

  • PhoneGap génère essentiellement natif des wrappers pour ce sont encore des web apps. Il crache un WhateverYourPlatformIs projet, construire et déployer. Si nous parlons de l'iPhone (qui est l'endroit où je passe mon temps), il ne semble pas très différente de la création d'une web app launcher (un raccourci qui obtient sa propre Tremplin icône, de sorte que vous pouvez le lancer comme (comme) une application native). Le "app" lui-même est encore en html/js/etc., et s'exécute à l'intérieur d'un hébergé contrôle de navigateur. Ce que PhoneGap fournit de l'au-delà qui est un pont entre le JavaScript et le périphérique natif Api. Donc, vous écrivez JavaScript contre PhoneGap Api, et PhoneGap fait alors les correspondants appel des indigènes. À cet égard, il est différent de déploiement d'un bon vieux web app.

  • Titane source sera compilée en natif bits. C'est, votre code html/js/etc. ne sont pas simplement attaché à un projet, puis hébergé à l'intérieur d'un contrôle de navigateur web - ils sont transformés en applications natives. Que signifie, par exemple, votre application l'interface est composée de natifs composants de l'INTERFACE utilisateur. Il y a des façons d'obtenir natif look-and-feel sans avoir une application native, mais... eh bien... ce qu'est un cauchemar qui s'avère généralement être.

Les deux sont semblables en ce que vous écrivez tous vos trucs, typique des technologies web (html/js/css/bla bla bla), et que vous avez accès à des fonctionnalités en natif par le biais de la coutume Api JavaScript.

Mais, encore une fois, PhoneGap apps (PhonGapps? Je ne sais pas... est-ce un nom stupide? Il est plus facile de dire, je le sais bien) démarrer leur vie comme des applications web et à la fin de leur vie comme des applications web. Sur l'iPhone, votre code html/js/etc. est juste exécuté à l'intérieur d'une UIWebView de contrôle, et la PhoneGap Api JavaScript de votre js les appels sont acheminés aux Api natives.

Titane apps deviennent des applications natives - ils sont développés à l'aide de web dev tech.

Qu'est-ce réellement dire?

  1. Un Titane application va vous regarder comme une "vraie" application, car, en fin de compte, il est une "vraie" application.

  2. PhoneGap application va ressembler à une application web hébergé dans un contrôle de navigateur, car, en fin de compte, il est une application web hébergé dans un contrôle de navigateur.

Ce qui est bon pour vous?

  • Si vous voulez écrire des applications natives à l'aide de web dev compétences, le Titane est votre meilleur pari.

  • Si vous voulez écrire une application web à l'aide de dev compétences que vous pourriez déployer de manière réaliste pour de multiples plateformes (iPhone, Android, Blackberry, et tout le reste, ils décident d'inclure), et si vous voulez accéder à un sous-ensemble de la plate-forme native fonctionnalités (GPS, accéléromètre, etc.) par l'unification de l'API JavaScript, PhoneGap est probablement ce que vous voulez.

Vous demandez peut-être: Pourquoi aurais-je envie d'écrire une PhoneGapp (j'ai décidé d'utiliser le nom) plutôt que d'une application web hébergée sur le web? Je ne peux pas encore accéder à certains natifs de l'appareil les fonctions de cette façon, mais aussi d'avoir la commodité de vrai déploiement sur le web plutôt que de forcer l'utilisateur à télécharger mon "native" application et de l'installer?

La réponse est: Parce que vous pouvez soumettre votre PhoneGapp à l'App Store et le facturer. Vous bénéficiez également que l'icône de lancement, ce qui rend plus difficile pour l'utilisateur d'oublier au sujet de votre application (je suis beaucoup plus susceptibles d'oublier un signet que l'icône d'une application).

Vous pourriez certainement la redevance pour l'accès à votre site web hébergé par web app, mais combien de personnes vont vraiment passer par le processus de le faire? Avec l'App Store, je chercher une application, appuyez sur le bouton "Acheter", entrez un mot de passe, et je suis fait. Il s'installe. Quelques secondes plus tard, je suis de l'utiliser. Si je devais utiliser un autre one-off web mobile de transaction de l'interface, ce qui signifie probablement avoir à taper mon nom, adresse, numéro de téléphone, numéro de CC, et d'autres choses que je ne veux pas taper, j'ai presque certainement ne serait pas aller de l'avant avec elle. Aussi, je fais confiance à Apple, je suis persuadé que Steve Jobs n'est pas un journal de mes infos, puis de facturer un tas de vilains abonnements à des magazines, à mon CC pour les coups de pied.

De toute façon, sauf pour le fait que développeur web tech est impliqué, PhoneGap et le Titane sont très différents, au point d'être seulement superficiellement comparables.

Je déteste les web apps, par la par la, et si vous lisez iTunes App Store reviews, les utilisateurs sont très bon à leur localisation. Je ne vais pas citer les noms, mais j'ai quelques "apps" sur mon téléphone et comme les ordures, et c'est parce qu'ils sont des applications web qui sont hébergés à l'intérieur UIWebView instances. Si je voulais utiliser une application web, j'avais ouvrez Safari et, vous le savez, accédez à l'un. J'ai acheté un iPhone parce que je veux que les choses qui sont de l'iPhone-y. Je n'ai pas de problème à l'aide, par exemple, un snazzy Google web app à l'intérieur de Safari, mais j'aimerais me sentir floués si Google vient d'faufilé un signet sur Tremplin, par la présentation d'une application web comme un natif.

Aller maintenant. Ma copine a qui pourriez-vous s'il vous plaît, arrêtez-aide-que-ordinateur-pour-trois secondes regard sur son visage.

62voto

user288299 Points 741

Je vais prendre un cours dans Android/iPhone de développement et nous avons passé 8 semaines avec du Titane (pas à plein temps) (Version Titane 1.4.2 et le temps était autour de novembre 2010). Voici mon expérience.

iPhone Android dual cibler

Même si l'API guides de prétendre que la fonctionnalité est disponible pour Android et iPhone, ce n'est pas le cas. Beaucoup de choses n'ont tout simplement pas travailler sur l'une des plates-formes. Certaines choses fonctionnent différemment.

Beaucoup de personnes dans la classe a fait des applications de l'iPhone, et ils ne peuvent pas le faire fonctionner sur Android, sans grandes réécrit. J'ai développé un outil simple pour enfants app appelé Animap (voir l'android market / Appstore en Suède) et a commencé à développer sous Windows. Une fois le Android cible a été de travail, j'ai ouvert le projet sur OS X. Il ne présente pas de construire des trucs pour iPhone, seulement pour Android. Vous devez commencer un double projet cible sous OS X. (Ok, j'ai copié les fichiers concernés dans un nouveau projet). Problème suivant: - les animations ne fonctionne pas sur iPhone (ils travaillent sur Android). Les événements de défilement ne fonctionne pas de la même chose sur l'iPhone. (j'.e sur Android vous obtenez le untouched cas lorsque l'utilisateur cesse de défiler et de communiqués de leur doigt de l'écran, ce n'est pas le cas sur les iPhone).

Puisque ce n'est pas mentionné quelque part, vous essentiellement besoin de faire l'essai et l'erreur de programmation sur la première plate-forme, puis sur l'autre plate-forme. Par essais et erreurs, je veux dire, il faut environ deux jours pour obtenir une Application simple comme Animap de travail sur l'autre plate-forme. Vous aurez également besoin d'avoir si (android) alors... ou si(iphone)... partout dans votre code...

Le téléchargement et l'installation

Vous devez suivre les instructions à la lettre. N'essayez pas d'utiliser java 64 bits. Il ne sera pas compiler le KitchenSink 1.4.0 démo de l'application. (1.3 fonctionne bien!) Vous devez mettre les fichiers directement sur le disque C tant de chemins d'accès sera de rendre le programme externe ne reçoit pas tous les paramètres de ligne de commande si ils arrivent à la longue. (Fine pour les petits programmes) 1/3 de l'époque, la chaîne s'arrête tout simplement et vous devez appuyer sur 'lancer' de nouveau. Alors il sera probablement de travail... très peu fiable. Le simulateur sera introuvable au démarrage, puis vous devez simplement tuer de adb.exe avec Ctrl+Alt+Suppr, puis réessayez.

Connexion réseau

Sur un wifi-réseau-vous parfois perd la connexion en direct et en Titane se bloque sur vous (la compilation/déploiement de l'interface) Si vous ne disposez pas d'une connexion internet, il ne démarre pas comme il ne peut pas vous connecter à leurs serveurs.

API

CSS, HTML et jQuery est un jeu d'enfant par rapport à cela. Titane ressemble à aucune autre vieux GUI API, et vous avez besoin de définir des propriétés pour chaque bouton/champ/etc. L'obtention d'un champ de mal, c'est juste pour facile, se souvenant de toutes les propriétés que doit être réglé? Avez-vous épeler avec des lettres majuscules au bon endroit? (tant que ce n'est pas interceptée par le compilateur, mais sera considéré comme une erreur d'exécution si vous avez la chance de tester cette partie)

En Titane choses simplement pause lorsque vous ajoutez un autre point de vue sur le haut d'un contrôle ou cliquez ailleurs dans l'interface graphique.

La Documentation

Plusieurs pages API porter le Android symbole, mais ne renvoie null lorsque vous essayez de créer le contrôle. Ils ne sont pas disponibles sur la plate-forme Android, malgré les symboles. Parfois, Android est fait mention à ne pas appuyer une méthode particulière, mais alors l'ensemble de l'API est manquant.

KitchenSink

La démo de l'application. Ai-je mentionné qu'il ne compile pas si vous le mettez dans votre projet Eclipse dossier, car le chemin est trop long? Doit être mis sur votre disque C dans le dossier racine. J'utilise actuellement un symbolik lien (mklink /J ...)

Sans-papiers, les méthodes de

Vous devez sans doute utiliser des choses comme étiquette.setText ("Hello World') pour modifier un label fiable mais ce n'est pas documenté.

Débogage

Titanium.API.info('Impressions sont la seule façon de debug');

L'édition

Les Api ne sont pas disponibles dans tout bon format de sorte que vous ne pouvez pas obtenir de l'ordinaire de l'achèvement de code avec l'aide etc. dans Eclipse. Aptana s'il vous plaît aider!

Matériel

Il semble que le compilateur/outils ne sont pas une application multithread un ordinateur rapide avec une vitesse de disque dur, vous devez faire beaucoup d'essais et d'erreur. Ai-je mentionné les pauvres de la documentation? Vous devez essayer tout ce qui est là-bas que vous ne pouvez pas faire confiance!

Des choses positives

  • Open Source
  • De précédents projets, je me suis promis de ne plus jamais l'utiliser à code source fermé à nouveau que vous ne pouvez simplement pas arranger les choses juste en jetant des heures et de la main-d'œuvre. Important lorsque vous êtes en retard dans le projet et besoin de fournir pour une dure limite. C'est open source et j'ai été en mesure de voir pourquoi l'outil de rupture de la chaîne et en fait le fixer ainsi.

  • Bugdatabase

  • Il est également ouvert. Vous pouvez tout simplement voir que vous n'êtes pas seul et faire une solution de contournement au lieu de 4 heures passées sur des essais et des erreurs.

  • La communauté

  • Semble être actif sur leurs forums.

Bugs

  • Titanium 1.4 n'est pas thread-safe. Cela signifie que si vous faites usage de threads (utilisez l'url: bien, dans un appel de createWindow) et du programme comme les threads de travail et d'envoyer des événements avec des données en arrière et en avant de vous lancer dans un grand nombre de très, très étrange de trucs perdu gestionnaires, perdu windows, trop d'événements, trop peu d'événements, etc. etc. C'est tout dépend du moment, de placer les lignes de code dans un ordre différent risque de plantage ou de guérir votre application. Ajout d'une fenêtre à une autre file.js les pauses de votre app.js l'exécution... Présente également des ordures de structures de données internes en Titane, car parfois ils peuvent mettre à jour des structures de données internes en parallèle, l'écrasement d'une juste valeur modifiée avec quelque chose d'autre.

Beaucoup de les problèmes que j'ai eu avec le Titane vient de mon arrière-plan en temps réel sur des systèmes comme celui qui OSE soutenir des centaines de threads, des événements et de la transmission de message. Cela est censé fonctionner en Titane 1.4 mais il n'a tout simplement pas le faire de manière fiable.

  • Javascript (ce qui est nouveau pour moi) meurt en silence sur des erreurs d'exécution. Cela signifie également que les petites et les bugs communs, comme les fautes d'orthographe dans un nom de variable ou de la lecture dans un pointeur null ne se bloque pas quand il le faut afin que vous pouvez déboguer. Au lieu des parties de votre programme juste arrêter de travailler, par exemple un gestionnaire d'événements, parce que vous avez égaré/misstyped un personnage.

  • Ensuite, nous avons de plus simple, les bugs en Titane, à l'instar de certains paramètres qui ne sont pas de travail dans les fonctions (ce qui est assez fréquent sur la plate-forme Android au moins).

  • D'essai et d'Erreur de débogage de la vitesse de cycle L'exécution de la Titnium Développeur sur plusieurs ordinateurs, j'ai remarqué que le goulot d'étranglement est le disque dur. Un disque SSD sur un ordinateur portable rend le cycle de production d'environ 3 à 5 fois plus rapide que sur un 4200 tr / min en voiture. Sur un bureau, d'avoir une double disques en RAID 1 (entrelacement mode) permet la construction d'environ 25 pour cent plus rapide que sur un seul disque dur avec un peu plus rapide CPU, et il bat aussi le disque SSD portable.

Résumé

  • À partir des commentaires dans ce fil, il semble y avoir un combat pour le nombre de plates-formes d'un outil comme celui-ci peut fournir de l'application. Le nombre d'API semble être la clé de vente-point.

Cela transparaît très bien lorsque vous commencez à l'utiliser. Si vous regardez le ouvert le bugtracker vous voyez que le nombre de bugs continue à augmenter plus vite que le nombre de bugs corrigés. C'est habituellement un signe que les développeurs de continuer à ajouter plus de fonctionnalités, plutôt que de se concentrer sur l'obtention d'un certain nombre de bugs vers le bas.

En tant que consultant en tentant de mettre plutôt des applications simples à multiplatforms pour un client, je ne suis pas sûr que c'est effectivement plus rapide que de faire de l'application native de développement sur deux plates-formes. Cela est dû au fait que, quand vous êtes à vitesse rapide avec du Titane, mais soudain, vous regardez en bas et de trouver vous-même dans un trou si profond que vous ne savez pas combien d'heures doit être dépensé pour une solution de contournement. Vous pouvez tout simplement PAS la promesse d'un certain nombre de fonctionnalités pour une certaine date/temps/coût.

À propos de moi: Été utilisation de Python pour deux ans avec wxPython. (GUI est inconsitent, mais ne brise jamais comme ça. Il sera peut-être moi qui n'ai pas compris le modèle de thread utilisé par Javascript et de Titane, mais je ne suis pas la seule fonction de leur ouvrir des forums de discussion, les objets graphiques sont soudainement en utilisant le mauvais contexte/pas de mise à jour..???) avant que j'ai une formation en C et ASM de programmation pour les appareils mobiles.

[edit - ajout de la partie avec des bugs et ne pas être thread-safe] [Edit - maintenant, pour avoir travaillé avec elle pendant un mois,+, la plupart du temps sur PC, mais sur certains OS X ainsi. Ajouté iPhone et Android double de mieux les cibler. Ajout de l'Essai et de l'Erreur de débogage de la vitesse de cycle.]

25voto

Evan Kirchhoff Points 281

Le SDK Corona (Ansca Mobile) utilise Lua comme langage de codage. Voir lua.org pour plus d'informations sur Lua.

Alors que nous prévoyons d'ajouter d'autres éléments d'intégration Web et d'interface utilisateur native, nous concentrerons notre attention sur les applications gourmandes en graphiques, telles que le développement de jeux, par opposition aux technologies Web. En d'autres termes, nous n'imaginons pas les personnes qui écrivent des applications Corona entièrement en Javascript / HTML / CSS.

18voto

Gorilla3D Points 718

Je travaille avec du Titane pour plus d'une semaine maintenant et se sentir comme j'ai un bon sentiment à propos de sa faiblesse.

1) Si vous en espérant que vous utilisez le même code sur de multiples plateformes bonne chance! Vous verrez quelque chose comme backgroundGradient et être surpris jusqu'à ce que vous trouvez sur la version android ne le supporte pas. Alors pour revenir à l'aide d'un gradient de l'image, peut aussi bien l'utiliser pour les deux versions de rendre le code plus facile à droite?

2) beaucoup de comportements bizarres, sur le Titane android sdk vous avez besoin de comprendre ce qu'est un "lourd" de la fenêtre est juste pour passer le bouton de retour au travail, ou même de faciliter l'orientation, le suivi des événements. Ce n'est pas la façon dont la plate-forme android est vraiment, c'est juste la façon dont Titane essaie de faire leur API de travail.

3) Votre jetés dans l'obscurité, les Choses se bloque et vous devez commencer à commenter le code, et puis quand vous le trouvez, ne jamais l'utiliser. Il y a certaines évident de bugs, comme l'orientation et les pourcentages sur android qui ont été un problème pendant plus de six mois.

4) les Bugs .... il y a beaucoup de bugs et ils seront présentés, de s'asseoir autour pendant des mois, se fixe en quelques jours. Je m'étonne même qu'ils sont la planification pour libérer un black berry mobile sdk quand il y a beaucoup d'autres problèmes avec android.

5) Titane Iphone contre Titane Android moteurs javascript sont complètement différents. Sur la version android, vous pouvez télécharger à distance des fichiers javascript, comprennent et utilisent les bibliothèques comme mootools, jquery et ainsi de suite. J'ai été dans le ciel quand j'ai trouvé ce parce que je n'ai pas à compiler mon application android. Android apk processus d'installation prend tellement de temps! Iphone rien de cela n'est possible, la version iphone est beaucoup plus rapide du moteur javascript.

Si vous rester à l'écart de beaucoup de natifs de l'INTERFACE utilisateur des pièces, je pense.e au lieu d'utiliser setInterval pour détecter les changements d'orientation, de collage avec des images gradient, oublier le bouton de retour, construire vos propres animations, oubliez-tête de la fenêtre, des barres d'outils et de tableaux de bord. Vous ne pouvez vraiment faire une api qui fonctionne sur les deux qui ne nécessite pas de beaucoup de réécriture. Mais à qui pointe son juste comme lent comme une webapp.

Donc, est-il utile? Après tout, la douleur, sa vaut chaque minute. Vous pouvez abstrait de la logique et de construire différentes de l'INTERFACE utilisateur pour chacun, plutôt que de si elseing partout. Le titane permet de faire des applications de fluides, que l'impression d'être rapide. Vous perdez le puissant disposition des capacités de chaque plate-forme, mais si vous pensez simple, les choses peuvent se faire dans une seule langue.

Pourquoi ne pas une web app? Sur le niveau d'entrée du marché des téléphones android son horriblement lent pour générer une webview et consomme beaucoup de mémoire que vous pourriez utiliser pour faire une logique plus complexe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X