[JAVA] Réflexion sur la façon d'utiliser Ionic-Native, Hybrid et HTML5 pour la production d'applications mobiles

Lorsque Ionic est construit, il n'est pas converti en Swift. Je voudrais comparer le développement HTML5 par Ionic et le développement natif / hybride en tant que méthode de production d'applications mobiles.

Comparaison

Développement HTML5

Fait référence à celui développé avec "Application à une seule page". Ionic entre également dans ce domaine.

Développement hybride

Dans cet article, nous excluons les applications HTML5 et faisons référence à Xamarin écrit en C # et NativeScript écrit en JavaScript (ReactNative, etc.).

Développement natif

Pour iOS, il fait référence à Swift / Objective-C, et pour Android, il fait référence à ceux développés avec Kotlin / Java. Dans la plupart des cas, les termes «développement d'applications pour smartphone» et «recrutement d'applications» font référence aux développeurs natifs.

Comparaison des appareils compatibles

En termes simples, le développement HTML5 / hybride est un outil polyvalent et le développement natif est un type de spécialisation en un point.

Type WEB Application pour smartphone
HTML5 Compatible avec les deux
Hybrid Compatible avec les deux
Native Soit iOS ou Android

La raison pour laquelle l'utilisation WEB d'Hybrid est △ est qu'il existe un projet de publication Web React Native.

https://github.com/necolas/react-native-web Démo http://necolas.github.io/react-native-web/storybook/

Cependant, comme il existe de nombreuses opinions qui "Ecrire dans React sur le WEB", il s'écrit △. Ainsi, sur les appareils compatibles, ce sera "HTML5> Hybride> Natif".

Grande différence entre HTML5 et natif / hybride

Il est à noter que "le développement HTML5 se reproduit en natif". Par exemple, les codes HTML5 (Ionic) et Native (Swift) pour l'affichage des alertes sont les suivants.

//Code ionique écrit en TypeScript
dispAlert(){
   const alert = this.alertCtrl.create({
    title: 'Affichage d'alerte', buttons: ['Fermer']
   });
   alert.present();
}
// Swift
@IBAction func dispAlert(sender: UIButton) {
    let alert: UIAlertController = UIAlertController(
      title: "Affichage d'alerte", message: "message", preferredStyle:  UIAlertControllerStyle.Alert
    )
    presentViewController(alert, animated: true, completion: nil)
}

Chaque API est appelée, mais en HTML5, "HTML qui ressemble exactement au dessin natif" est affiché par cette API. HTML5 reproduit le mouvement natif des alertes et des écrans de chargement en dessinant du HTML dans l'application où WebView est affiché. D'autre part, Native / Hybrid atteint l'API du système d'exploitation du smartphone lui-même, de sorte qu'une "alerte OS" est affichée.

Cela a eu un impact significatif sur les performances. Il y a dix ans, on disait qu'il était "lent à faire avec HTML" en raison de la lenteur du rendu de JavaScript et des faibles spécifications des appareils iOS / Android, mais c'est parce qu'il est "reproduit" de cette manière. est. Cependant, en 2017, quand j'ai regardé autour de moi, la vitesse de rendu de HTML5 et les spécifications de l'appareil ont considérablement augmenté, et maintenant on dit qu'il sera aussi rapide que Native.

Cependant, la vitesse de dessin est Native / Hybrid> HTML5.

Facilité de mise en œuvre de l'application

"Facile à mettre en œuvre", en d'autres termes, l'ampleur de la douleur. C'est une situation différente, je vais donc présenter quelques modèles.

Lors du développement d'applications iOS uniquement

Le développement natif est extrêmement facile. Il n'y a aucun intérêt à développer HTML5 / Hybrid avec des personnes inexpérimentées.

Lors du développement d'applications iOS et Android

La spécialité de l'hybride. Cependant, si vous avez un ingénieur Swift / Java, le développement natif peut être plus rapide que le développement hybride difficile, et je pense que le développement HTML5 est meilleur lorsque l'équipe de production Web crée des applications. Cela dépend des membres de l'équipe, et c'est la bonne réponse! Il n'y a pas une telle chose.

Lors du développement d'applications iOS / Android / Web

Pour les petites équipes, choisissez le développement HTML5. Cependant, s'il n'y a personne dans l'équipe capable d'écrire du HTML, il peut être préférable de développer dans le domaine de la spécialité (dans ce cas, il y a un problème avec ce qu'il faut faire avec l'application Web).

Par conséquent, je pense que la facilité de mise en œuvre d'une application dépend des exigences x ressources humaines. «Les balles d'argent n'existaient pas» est une expression surutilisée, mais ** résout tout! Eh bien, c'est un mensonge, n'est-ce pas?

Réfléchissez à la façon d'utiliser Ionic

Inconvénients du développement HTML5

Puisque le développement HTML5 "reproduit le natif", s'il y a un grand changement dans la conception de l'appareil, il sera nécessaire de le mettre à jour pour le suivre. Le fait que le "plug-in Cordova" qui accède directement aux fonctions natives possède également une couche intermédiaire entraîne une dépendance de version, et s'il y a un changement destructeur au niveau du système d'exploitation, il peut être difficile de suivre le rythme (cela s'applique également au développement hybride).

Le développement natif est l'application mobile la plus performante, et quelle que soit l'évolution du développement HTML5, il ne la renversera pas.

Courbe de croissance considérée au niveau du produit

Ce qui est souvent dit dans le développement HTML5 est l'attrait du "déploiement multiple d'une seule ressource". Si vous développez WEB / iOS / Android séparément, non seulement le coût initial augmentera, mais des modifications de conception mineures et des améliorations fonctionnelles seront traitées en conséquence. Il est en réalité difficile d'avoir autant de ressources humaines à tout moment (et les ressources humaines pour le développement d'applications natives ont tendance à être rares).

Un autre problème sérieux est que le nombre d'applications a été publié autant que le nombre d'étoiles, et le taux de téléchargement a chuté. Étant donné que les temps ont changé depuis qu'un certain nombre d'applications ont été téléchargées après la sortie de l'application, la méthode générale consiste à la publier au moindre coût, à tester rapidement l'hypothèse, à la retirer si elle ne fonctionne pas et à continuer à travailler dessus si elle fonctionne, à faire croître le produit. Est devenu une cible.

Dans cet esprit, il est possible d'adopter différentes méthodes de développement pour le processus de test d'hypothèse et le processus de croissance. Ce n'est pas lequel du développement HTML5 / hybride / natif est supérieur, mais la vérification d'hypothèse est effectuée en détail avec l'application HTML5, et quand elle atteint une certaine échelle et peut être monétisée, elle sera remplacée par un développement hybride / natif pour améliorer encore l'expérience utilisateur. Je pense que c'est devenu une mesure réaliste. Le nombre de concepteurs capables d'écrire du HTML a augmenté et il est bon de développer HTML5 en tant que maquette.

En ce sens, je vois souvent un ton comme "Ionic (développement HTML5) vs React Native (développement hybride)", mais je ne pense pas que cela puisse être un axe de comparaison. C'est une couche complètement différente.

C'est un article qui ne tire aucune conclusion, mais qui fournit seulement une perspective, mais j'espère que vous le trouverez utile. De plus, si vous êtes intéressé par le développement HTML5 et Ionic dans cet article, vous pouvez également obtenir Introduction à la création d'applications mobiles avec Ionic <Compatible Web / iPhone / Android>. Je suis heureux.

À la prochaine.

Recommended Posts

Réflexion sur la façon d'utiliser Ionic-Native, Hybrid et HTML5 pour la production d'applications mobiles
Comment utiliser l'icône Font Awesome pour ul et li
Procédures pour transmettre RealmObject à Fragment et comment utiliser Parceler
Comment utiliser StringBurrer et Arrays.toString.
Comment utiliser EventBus3 et ThreadMode
Comment utiliser l'égalité et l'égalité (comment utiliser l'égalité)
Comment utiliser des séquences \ t Escape différentes pour Mac et Windows-java
J'étais curieux de savoir comment utiliser correctement Optional orElse () et orElseGet ().
Comment utiliser binding.pry pour afficher le fichier
Comment utiliser OrientJS et OrientDB ensemble
Comment définir différentes versions source / cible pour le code de production et le code de test
Comment configurer et utiliser kapt
(Pour les débutants) [Rails] Technologie de gain de temps! Comment installer et utiliser Slim
[Ruby] Comment utiliser slice pour les débutants
Comment utiliser les méthodes substring et substr
Comment utiliser @Builder et @NoArgsConstructor ensemble
[Java] Comment utiliser la classe FileReader et la classe BufferedReader
[Ruby] Comment utiliser la méthode gsub et la sous-méthode
Comment utiliser un tableau pour les clés HashMap
Comment utiliser le contrôle segmenté et les points à noter
Comment utiliser la portée et le traitement des passes (servist)
[Pour les super débutants] Comment utiliser l'autofocus: vrai
[Java] Comment utiliser la classe Calendar et la classe Date
Explication de Ruby on rails pour les débutants ④ ~ À propos des règles de dénomination et comment utiliser form_Tag ~
Comment créer l'application Docker + Springboot (pour l'apprentissage de base)
Comment utiliser un tableau pour la clé TreeMap
Rails / Ruby: Comment obtenir du texte HTML pour Mail
Comment utiliser Truth (bibliothèque d'assertions pour Java / Android)
[Pour ceux qui créent des portfolios] Comment utiliser font-awesome-rails
Comment utiliser et appliquer la classe JFrame / Canvas de Java
Comment utiliser GitHub pour les super débutants (développement d'équipe)
Comment ajouter un autre projet en tant que bibliothèque Maven avec CircleCI et l'utiliser pour la construction
Comment utiliser rbenv
Comment utiliser with_option
Comment utiliser java.util.logging
Comment utiliser la carte
Comment utiliser Twitter4J
Comment utiliser active_hash! !!
Comment utiliser MapStruct
Comment utiliser TreeSet
[Comment utiliser l'étiquette]
Comment utiliser l'identité
Comment utiliser le hachage
Comment utiliser Dozer.mapper
Comment utiliser Gradle
Comment utiliser org.immutables
Comment utiliser java.util.stream.Collector
Comment utiliser VisualVM
Comment utiliser Map
Comment utiliser les jetons SAS pour les hubs d'événements Azure (Java)
Comment utiliser OpenCV 4 sur Android et afficher la vue en direct de la caméra
[À voir absolument pour l'apprenti ingénieur Java] Comment utiliser l'API Stream
[Pour ceux qui créent des portefeuilles] Comment utiliser Chart kick
Comment appeler et utiliser l'API en Java (Spring Boot)