Quelle est la différence entre HTML5, Native et une application hybride? Ce qui est mieux?


Réponse 1:
  • Application native: livrée via le Play Store, l'App Store, le Microsoft Store.Avoir la possibilité d'accéder à des bibliothèques natives comme la caméra, la géolocalisation, les contacts stockés dans l'appareil, le système de fichiers, l'accéléromètre, etc. Excellentes performances et animations fluides car ayant un accès direct à la bibliothèque graphique de l'appareil.Nécessite plus de temps de développement et de compétences.Android: JavaiOS / macOS: Objective C / SwiftWindows App: .Net frameworkPour la mise à jour de l'application, nous devons à nouveau mettre à jour le package et le déployer dans la boutique d'applications respective.Difficile à décoder .Application Web: livrée via le navigateur.Accès à quelques fonctions natives comme la caméra, le microphone.A moins de performances par rapport aux applications natives mais les performances dépendent également de la version du navigateur que nous utilisons le plus récent du navigateur, plus les performances.Compétences de développement requises: HTML, CSS et JavaScript Pour toutes les mises à jour de l'application, nous pouvons déployer directement sur le serveur et nos utilisateurs peuvent obtenir instantanément les mises à jour sans avoir à mettre à jour l'application par eux-mêmes. mais le code peut être minimisé via le processus de minification du code.Appli hybride: livrée via le Play Store, l'App Store, le Microsoft Store.Avoir la possibilité d'accéder à des bibliothèques natives comme Native App.Performances supérieures à l'application Web mais ne peut pas correspondre aux performances comme une application native.Compétences de développement requises: mêmes que l'application Web, mais des compétences supplémentaires sont également requises comme Cordova, PhoneGap, etc. peut être minimisé par le biais du processus de minification du code. Ce qui est mieux: dépend de la plate-forme Web: Web AppStore: Performance sage NativeDevelopment sage Hybrid.

Réponse 2:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 3:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 4:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 5:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 6:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 7:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 8:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 9:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 10:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 11:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 12:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 13:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 14:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 15:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 16:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 17:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 18:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.


Réponse 19:

Je vois beaucoup d'idées fausses dans les réponses ici.

Tout d'abord, les définitions:

  • HTML5 est une technologie utilisée pour spécifier (en partie) l'apparence visuelle d'une page Web. HTML5 peut être diffusé à partir d'un site Web et rendu sous la forme d'une "application Web" sur le téléphone. Il est également utilisé dans les applications hybrides pour disposer les parties visuelles (contrôles, etc.). Toute application que vous pouvez publier dans la boutique est, à un certain niveau, une application native. Quand les gens disent «application native», ils signifient souvent «pas hybride», mais il y a une fausse dichotomie implicite entre «native» et tout le reste, alors qu'en fait il existe de nombreuses options Une application hybride utilise spécifiquement une WebView pour rendre la plupart des contrôles / visuels éléments. Vous trouverez HTML5 et JavaScript pour la plupart des applications hybrides.

Je vais supposer que vous comparez vraiment "application web", "application écrite en Java pour Android et Objective C ou Swift pour iOS", et "application écrite en Cordova / PhoneGap". Ce ne sont pas les trois seules options, cependant, et je veux donc ajouter quelques options supplémentaires à comparer. Pour un résumé rapide des options que j'envisage, consultez ce tableau:

Comme vous pouvez le voir, «natif» et «hybride» ne sont pas les seules options. Cordova / Ionic sont des technologies hybrides: le rendu est effectué dans une WebView, mais vous pouvez utiliser des fonctionnalités natives de l'appareil qui ne sont pas disponibles sur un site Web (caméra, notifications, etc.).

Vous pouvez créer des applications multiplateformes qui ont des performances natives. La plupart des jeux utilisent des techniques de développement multiplateforme depuis des années et les jeux sont plus sensibles aux performances que la plupart des applications.

Unity3d, Cocos2d-x et de nombreux autres environnements de développement multiplateforme existent qui vous donneront des performances complètes pour votre jeu (dans certains cas mieux que "natif"), et vous n'avez besoin de l'écrire qu'une seule fois.

Mais les moteurs de jeu ne sont pas idéaux pour les applications générales, alors quelles options avons-nous là-bas?

Le développement «hybride» a pris beaucoup de retard au cours des dernières années. Zuckerberg a affirmé que l'hybride "n'est pas assez bon". Mais ensuite, Sencha Mobile a créé un clone Facebook basé sur WebView qui a prouvé que vous pouvez réellement le faire assez rapidement. Lisez à ce sujet dans The Making of Fastbook: An HTML5 Love Story.

Vous pouvez donc utiliser l'hybride, et Cordova / PhoneGap est probablement la plate-forme la plus mature sur laquelle s'appuyer. Cependant, il existe des options: Ionic Framework est basé sur Cordova, et il vous offre des contrôles spécifiques à la plate-forme supplémentaires pour que votre application ait l'air plus Android ou iOS sur sa plate-forme respective. Meteor vous permet de créer des applications à pile complète qui partagent du code et vous permet de cibler le code iOS, Android, Web-app et Server avec la même base de code.

Mais j'ai répertorié plus d'options que Cordova dans le tableau ci-dessus. Parfois, vous voulez des contrôles natifs, et plusieurs des options ci-dessus vous permettent de créer des contrôles natifs à partir de votre application multiplateforme.

React Native et Xamarin vous permettent de créer des contrôles natifs en vous demandant de créer des chemins de code différents pour chaque plate-forme: pour un contrôle particulier, vous définissez à quoi il ressemble sur Android et à quoi il ressemble sur iOS.

NativeScript et Tabris.js suppriment les contrôles communs, vous pouvez donc définir votre disposition une fois et la faire fonctionner sur les deux plates-formes. Il existe une nouvelle fonctionnalité Xamarin qui vous permet également de travailler de cette façon, bien que je n'aie pas entendu à quel point cela fonctionne.

Kivy n'utilise pas de contrôles natifs, mais est plutôt un moteur de jeu qui fournit simplement les outils dont vous avez généralement besoin pour écrire une application. Ainsi, au lieu de ressembler à une application Android ou iOS, il est plus probable de créer quelque chose qui ressemble à une application entièrement personnalisée. Les performances ne doivent pas être un goulot d'étranglement, mais vous pouvez ou non aimer le style.

Autres considérations:

  • Une mise à jour en direct de certaines des solutions basées sur JavaScript est la mise à jour en direct: la possibilité de pousser une nouvelle version d'une application vers les utilisateurs sans avoir à attendre qu'ils soient mis à niveau dans le magasin ou que le magasin approuve une mise à jour. Étant donné que l'approbation dans l'Apple Store peut varier de quelques jours à plusieurs semaines, la possibilité d'envoyer un patch aux utilisateurs presque immédiatement est puissante. Cela signifie également que vous n'aurez pas besoin de prendre en charge les anciennes versions de votre API, si vous en avez une, car vous pouvez garantir que l'application utilisera le dernier client d'API. En natif, vous avez accès aux outils de développement de plate-forme, qui sont généralement bons. En développement hybride, vous avez accès à la pile incroyablement bonne d'outils de débogage disponibles dans Chrome et aux outils de Safari pour déboguer votre application en temps réel. Les autres approches JavaScript ont généralement un moyen de câbler Chrome également, et React Native en particulier prend en charge le rechargement en direct: modifiez un aspect de la page que vous consultez et il le restituera comme si vous veniez d'exécuter tous les code à ce point à nouveau. C'est comme une fonction instantanée "relancez l'application et faites les mêmes choix". Les SDK natifs sont généralement verbeux et ennuyeux à utiliser pour effectuer des tâches courantes. La disponibilité d'un écosystème de plug-ins signifie que l'ajout de quelque chose comme les paiements dans l'application peut aller de la peine à l'ajout d'un plug-in et de l'interface utilisateur. Même chose pour la connexion à Facebook, les notifications, etc. L'écosystème de plug-ins de Cordova est l'un des meilleurs, mais NativeScript a l'air impressionnant. peut l'appeler directement. Depuis JavaScript. Sans plug-in natif. Si vous avez de sérieuses exigences en matière de traitement des données, vous voudrez probablement du "vrai" code natif, par lequel je veux dire C / C ++ / Go / Rust ou similaire. La plupart des applications n'en ont pas besoin, mais si vous le faites, presque tous les environnements ci-dessus ont un moyen pour vous de câbler votre code natif dans l'application, mais il peut être nécessaire de le câbler sur une base par plate-forme. Ceci n'est pas pris en compte dans le chiffre "économies" ci-dessus, car il ne s'applique pas à la plupart des applications. Les estimations du tableau ci-dessus ne sont en réalité que des estimations. Beaucoup sont tirés (de ma mémoire) de ce que l'équipe de développement de la technologie a revendiqué, mais beaucoup ne sont que des suppositions instruites. Votre kilométrage peut varier. Si vous devez utiliser un plug-in tiers pour votre application, il sera presque certainement disponible en natif pour iOS / Android, mais pas nécessairement pour autre chose. De nombreux plug-ins sont disponibles pour Cordova, mais si celui que vous souhaitez utiliser ne l'est pas, vous devez ajouter le coût supplémentaire de création d'un plug-in Cordova (ou autre) pour cette technologie. Si vous avez besoin de parties substantielles de votre code pour devenir un plug-in, pour être utilisé par d'autres entreprises, il y a suffisamment de personnes qui développent du code natif que vous êtes probablement bloqué en développement natif.

En conclusion: il y a très peu de raisons de développer en utilisant directement le SDK natif de la plateforme, et cela coûte presque deux fois plus cher de le faire. Sauf si vous allez fournir votre code sous forme de plug-ins pour d'autres, je recommande fortement de trouver une solution multiplateforme et de l'utiliser.

MODIFIÉ pour ajouter des informations sur Live Update ("hot patching") comme mentionné par Shai Alon dans les commentaires.