Τα smartphone συνεχίζουν να κερδίζουν όλο και περισσότερο χώρο κάτω από τον ήλιο, όχι μόνο ως εργαλείο για την κατανάλωση φωτογραφιών γατών και βίντεο xxx, αλλά και ως εργαλείο εργασίας. Ως εκ τούτου, η ζήτηση για ανάπτυξη κινητής τηλεφωνίας αυξάνεται. Είναι γενικά αποδεκτό ότι αληθινά και ωραία είναι τα Objective-C/Swift για iOS και Java/Kotlin για Android. Χωρίς αμφιβολία, αληθινό και ωραίο, αλλά υπάρχει ένας μεγάλος αριθμός πραγματικών σεναρίων στα οποία η χρήση πλαισίων πολλαπλών πλατφορμών είναι προτιμότερη σε σύγκριση με εγγενή εργαλεία.

Μερικοί προγραμματιστές περιμένουν τα πλαίσια πολλαπλών πλατφορμών να λύσουν όλα τα προβλήματα της ζωής τους, ενώ άλλοι τα αντιλαμβάνονται με εχθρότητα. Και τα δύο «αντιμαχόμενα στρατόπεδα» έχουν τις δικές τους λανθασμένες αντιλήψεις που προκαλούνται από μια παρανόηση του πώς και του τι λειτουργεί. Αυτό ρίχνει λάδι στη φωτιά, καθώς χρησιμοποιούνται συναισθήματα αντί για τεχνικά επιχειρήματα.

Επίσης, μεταξύ των προγραμματιστών, ειδικά των αρχαρίων, υπάρχουν πολλοί μύθοι σχετικά με τα πλαίσια για κινητά μεταξύ πλατφορμών. Στο άρθρο μας θα αναλύσουμε τα πιο δημοφιλή από αυτά. Αλλά πρώτα, ας δούμε την ανάπτυξη κινητής τηλεφωνίας μέσα από τα μάτια μιας επιχείρησης που δίνει χρήματα για όλο το IT blackjack.

Γιατί χρειαζόμαστε εργαλεία πολλαπλών πλατφορμών;

Ιστορικά, υπήρχε πάντα ανταγωνισμός στην αγορά υπολογιστών και κάθε κατασκευαστής παρείχε το βέλτιστο σύνολο των λεγόμενων εγγενών (εγγενών) εργαλείων για την ανάπτυξη εφαρμογών για τα λειτουργικά συστήματα και τις συσκευές του.

Εγγενή εργαλεία = παρέχονται από τον ιδιοκτήτη του οικοσυστήματος.

Όλα τα άλλα σημάδια της «γέννησης» είναι ΔΕΥΤΕΡΕΥΟΝΤΑ - η συμπεριφορά και η διεπαφή των εφαρμογών, η πρόσβαση στις λειτουργίες του λειτουργικού συστήματος, η απόδοση κ.λπ.

Επιπλέον, σχεδόν πάντα αποδεικνύεται ότι τα εγγενή εργαλεία είναι ασύμβατα μεταξύ τους όχι μόνο σε επίπεδο γλωσσών ανάπτυξης, αποδεκτών συμβάσεων και αρχιτεκτονικών, αλλά και σε επίπεδο μηχανισμών εργασίας με το λειτουργικό σύστημα και τις βιβλιοθήκες. Ως αποτέλεσμα, για την υλοποίηση των ίδιων αλγορίθμων και διεπαφών, ήταν απαραίτητο να γραφτεί μια εφαρμογή για πολλά περιβάλλοντα σε διαφορετικές γλώσσες προγραμματισμού και στη συνέχεια να διατηρηθεί σε βάση «μία εντολή ανά πλατφόρμα». Ταυτόχρονα, οι δυνατότητες και η εμφάνιση των εφαρμογών σε διαφορετικές πλατφόρμεςαχ σχεδόν πάντα πανομοιότυπα κατά 90%. Για λόγους ενδιαφέροντος, συγκρίνετε την υλοποίηση των αγαπημένων σας προγραμμάτων για iOS και Android.

Δεύτερος σημαντικό σημείο- τη διαθεσιμότητα των απαραίτητων γνώσεων και εμπειρίας εντός της ομάδας: εάν δεν είναι, τότε θα χρειαστεί χρόνος για να μάθουμε.

Προκειμένου να λυθούν και τα δύο αυτά προβλήματα, εργαλεία ανάπτυξης πολλαπλών πλατφορμών (όχι μόνο για κινητά) έχουν εμφανιστεί εδώ και καιρό στην αγορά, προσφέροντας:

  • μεγιστοποιήστε την κοινή βάση κώδικα σε μια γλώσσα προγραμματισμού, έτσι ώστε το προϊόν να είναι ευκολότερο στην ανάπτυξη και τη συντήρηση.
  • χρησιμοποιούν υπάρχουσες ικανότητες και ειδικούς για την υλοποίηση εφαρμογών σε νέες πλατφόρμες.

Δεδομένου ότι υπάρχουν πολλές γλώσσες προγραμματισμού (και περιβάλλοντα) τώρα (και ειδικοί που γνωρίζουν αυτές τις γλώσσες), υπάρχει αρκετός αριθμός εργαλείων για ανάπτυξη πολλαπλών πλατφορμών. Για παράδειγμα, θα επικεντρωθούμε στα δημοφιλή στην περιοχή μας PhoneGap, Xamarin, React Native και Qt.


Τώρα μπορούμε να μιλήσουμε για μύθους.

Μύθος 1. Μαγεία

Ο πιο συνηθισμένος μύθος που στοιχειώνει το μυαλό των εκκολαπτόμενων προγραμματιστών είναι η πίστη στους υπερ-αλγόριθμους (και στους υπερ-προγραμματιστές που τους δημιούργησαν) που μετατρέπουν ως δια μαγείας τις εφαρμογές cross-platform σε εγγενείς. Κάτι που μοιάζει με τη "μετατροπή κώδικα JavaScript σε Swift και στη συνέχεια μεταγλώττιση μιας εφαρμογής Swift". Αυτός ο μύθος τροφοδοτείται από τους ίδιους τους προγραμματιστές εργαλείων πολλαπλών πλατφορμών, υποσχόμενοι τη δημιουργία «εγγενών εφαρμογών» ως αποτέλεσμα. Και δεν είναι ότι κάποιος είναι πονηρός εδώ, αλλά η πλούσια φαντασία και η έλλειψη κατανόησης των βασικών μηχανισμών μερικές φορές οδηγούν τους προγραμματιστές να σκεφτούν σαμανιστικά κόλπα.

Η κύρια αρχή που διέπει τις λύσεις πολλαπλών πλατφορμών είναι η διαίρεση του κώδικα σε δύο μέρη:



Προκειμένου να συνδεθεί ο «εγγενής» κόσμος και ο «διαπλατφορμικός» κόσμος, είναι απαραίτητο να χρησιμοποιήσετε ένα ειδικό γέφυρα, είναι αυτός που καθορίζει τις δυνατότητες και τους περιορισμούς των πλαισίων πολλαπλών πλατφορμών.

Όταν χρησιμοποιείτε μια γέφυρα, η απόδοση μειώνεται πάντα με τη μετατροπή δεδομένων μεταξύ "κόσμων", καθώς και με τη μετατροπή κλήσεων και βιβλιοθηκών API.

Επομένως, όλες οι εφαρμογές πολλαπλών πλατφορμών πρέπει να έχουν ένα εγγενές τμήμα, διαφορετικά το λειτουργικό σύστημα απλά δεν θα μπορεί να τις εκτελέσει. Ας ρίξουμε λοιπόν μια πιο προσεκτική ματιά στα API και τους μηχανισμούς συστήματος που παρέχονται από το iOS, το Android και τα ίδια τα Windows. Ας περάσουμε στον επόμενο μύθο.

Μύθος 2. Όχι εγγενής!

Έτσι, έχουμε ένα cross-platform τμήμα της εφαρμογής που ζει σε ένα εικονικό περιβάλλον και αλληλεπιδρά με το λειτουργικό σύστημα μέσω της υποδομής πλαισίου και της γέφυρας.

Όλα τα λειτουργικά συστήματα: iOS, Android και Windows UWP - παρέχουν πρόσβαση στα ακόλουθα υποσυστήματα (σύνολα API συστήματος):

  • Το WebView (πρόγραμμα περιήγησης Ιστού ενσωματωμένο στην εφαρμογή) χρησιμοποιείται σε υβριδικές εφαρμογές που βασίζονται στο PhoneGap και λειτουργεί ως de facto τοπικός χρόνος εκτέλεσης ιστοτόπου.
  • Οι μηχανές JavaScript χρησιμοποιούνται στο React Native και στους αντίστοιχους του για γρήγορη εκτέλεση κώδικα JS και ανταλλαγή δεδομένων μεταξύ Native και JS.
  • Το OpenGL ES (ή DirectX) χρησιμοποιείται σε μηχανές παιχνιδιών και εφαρμογές που βασίζονται σε Qt/QML ή παρόμοια για την απόδοση της διεπαφής.
  • Το υποσύστημα διεπαφής χρήστη είναι υπεύθυνο για την εγγενή διεπαφή χρήστη της εφαρμογής, η οποία σχετίζεται με το React Native και το Xamarin.


Οι εφαρμογές πολλαπλών πλατφορμών έχουν ένα εγγενές τμήμα και την ίδια πλήρη πρόσβαση στα API συστήματος με τις "εγγενείς" εφαρμογές. Η διαφορά είναι ότι η κλήση της μεθόδου συστήματος περνά από την υποδομή γέφυρας και πλαισίου:

webview- η εφαρμογή βρίσκεται στο πρόγραμμα περιήγησής της, παρόμοια με έναν ιστότοπο μιας σελίδας. Δεν υπάρχει πρόσβαση σε εγγενή στοιχεία ελέγχου (κουμπιά, λίστες κ.λπ.), όλα βασίζονται σε HTML/CSS/JavaScript. Από την άλλη πλευρά, ένας προγραμματιστής ιστού θα αισθάνεται σαν μια πάπια στο νερό.

Μηχανές JavaScriptέγινε δημοφιλής σχετικά πρόσφατα, αφού ένας παρόμοιος μηχανισμός προστέθηκε στο iOS μόνο στην έκδοση 7.0. Από τα χαρακτηριστικά, αξίζει να εξεταστεί η ανάγκη σειριοποίησης πολύπλοκων δομών δεδομένων που μεταφέρονται μεταξύ JavaScript και Native περιβάλλοντος σε JSON. Αν περιγράψουμε εν συντομία μια τέτοια κατηγορία λύσεων, τότε στο περιβάλλον JavaScript, εκτελείται ο κώδικας JS που ελέγχει την εγγενή εφαρμογή.

OpenGL ES και DirectXείναι υποσυστήματα χαμηλού επιπέδου και χρησιμοποιούνται για τη σχεδίαση της διεπαφής χρήστη σε παιχνίδια και, για παράδειγμα, Qt/QML. Δηλαδή, όταν χρησιμοποιούν OpenGL / DirectX, οι ίδιοι οι προγραμματιστές σχεδιάζουν στοιχεία ελέγχου και κινούμενα σχέδια, τα οποία μπορούν να είναι παρόμοια μόνο με τα εγγενή. Από την άλλη, είναι ένα υποσύστημα χαμηλού επιπέδου με πολύ υψηλές επιδόσεις, γι' αυτό και χρησιμοποιείται σε μηχανές παιχνιδιών cross-platform.

Όλες οι εφαρμογές πολλαπλών πλατφορμών έχουν ένα εγγενές τμήμα, και επομένως, δυνητικά την ίδια πλήρη πρόσβαση στα API συστήματος με τις "εγγενείς". Επίσης, οι εφαρμογές πολλαπλών πλατφορμών κατασκευάζονται και συσκευάζονται από "εγγενή" εργαλεία σε "εγγενή" πακέτα εγκατάστασης. Το βασικό ερώτημα είναι πώς οργανώνεται η αλληλεπίδραση μεταξύ του τμήματος cross-platform και του εγγενούς τμήματος. Για παράδειγμα, μέσα σε ένα WebView ή χρησιμοποιώντας το Open GL ES / DirectX, δεν υπάρχει τρόπος να δημιουργήσετε μια διεπαφή χρήστη με εντελώς εγγενή εμφάνιση, αλλά υπάρχει πλήρης πρόσβαση στο GPS, τις ειδοποιήσεις Push και άλλες λειτουργίες. Και ο κώδικας JavaScript ή C# μπορεί να ελέγξει ελεύθερα την εγγενή εφαρμογή και τη συμπεριφορά της, παρέχοντας μια εντελώς φυσική εμφάνιση.

Συνοψίζοντας - ναι, "μη εγγενής" όσον αφορά τα εργαλεία ανάπτυξης που χρησιμοποιούνται (όχι από την Apple, την Google). Αλλά μια εφαρμογή μπορεί να είναι εντελώς εγγενής όσον αφορά την πρόσβαση στα API του συστήματος και να παρέχει μια εντελώς εγγενή εμφάνιση και αίσθηση. Και προχωράμε στον επόμενο μύθο.

Μύθος 3. Δεκανίκι σε δεκανίκι

Εδώ θα πρέπει να γίνει κατανοητό ότι τα εγγενή API δεν θεωρούνται δεκανίκια από προεπιλογή (αν και υπάρχουν διαφορετικές απόψεις εδώ), επομένως όλη η αγανάκτηση κατευθύνεται στο κομμάτι της cross-platform. Είναι προφανές ότι το περιβάλλον εκτέλεσης (για παράδειγμα, WebView, μηχανή JavaScript ή Mono) είναι επίσης δύσκολο να χαρακτηριστεί δεκανίκι - ώριμες ώριμες λύσεις με μακρά ιστορία.

Φαίνεται ότι το δεκανίκι είναι το πώς το cross-platform τμήμα ενσωματώνεται με το εγγενές. Για να κατανοήσουμε καλύτερα πώς λειτουργούν τα διαφορετικά πλαίσια, θα χρησιμοποιήσουμε το παράδειγμα των PhoneGap, Xamarin, Qt και React Native για να εξετάσουμε τους μηχανισμούς του λειτουργικού συστήματος που χρησιμοποιούνται για τη σύνδεση μεταξύ των πλατφορμών και των εγγενών τμημάτων.

Θα ξεκινήσουμε με το PhoneGap. Παρακάτω είναι η αρχιτεκτονική ανώτατου επιπέδου μιας εφαρμογής που βασίζεται σε αυτό το πλαίσιο.



Η εφαρμογή PhoneGap είναι στην πραγματικότητα μια εγγενής εφαρμογή που εμφανίζει ένα WebView ως το μόνο στοιχείο ελέγχου διεπαφής χρήστη. Μέσα από αυτόν λαμβάνει χώρα η αλληλεπίδραση με το εγγενές μέρος. Όλα τα τυπικά WebViews σε iOS, Android και Windows UWP υποστηρίζουν τη δυνατότητα προσθήκης εγγενών χειριστών για ιδιότητες και μεθόδους JS. Ταυτόχρονα, ο κώδικας JS ζει στο απομονωμένο περιβάλλον του και δεν γνωρίζει τίποτα για το εγγενές τμήμα - απλώς τραβάει τις απαραίτητες μεθόδους JS ή αλλάζει τις απαραίτητες ιδιότητες JS. Όλα βρίσκονται μέσα στο τυπικό web DOM, το οποίο απλώς προσθέτει νέα στοιχεία που σχετίζονται με την εγγενή υλοποίηση.



Κατά τη δημιουργία εφαρμογών στο React Native, ο προγραμματιστής θα χρειάζεται σχεδόν πάντα να εφαρμόσει το εγγενές τμήμα σε Objective-C, Java ή C # και η διαχείριση της ίδιας της εγγενούς εφαρμογής θα προέρχεται από JavaScript. Στην πραγματικότητα, η μηχανή JavaScript είναι ένα στοιχείο WebView που είναι διαθέσιμο ξεχωριστά. Η αλληλεπίδραση περνά από την ίδια γέφυρα JS όπως στην περίπτωση του PhoneGap. Ωστόσο, στο React Native, ο κώδικας JS δεν διαχειρίζεται το δέντρο web DOM, αλλά την εγγενή εφαρμογή.

Λάβετε υπόψη ότι λόγω περιορισμών στο iOS (δεν υπάρχει τρόπος να εφαρμοστεί το JIT), ο κώδικας JavaScript ερμηνεύεται αμέσως και δεν μεταγλωττίζεται. Γενικά, αυτό δεν επηρεάζει σημαντικά την απόδοση σε πραγματικές εφαρμογέςαλλά αξίζει να το θυμάστε.

Τώρα σκεφτείτε τα κλασικά Xamarin.iOS και Xamarin.Android, καθώς το Xamarin.Forms (που υποστηρίζει το Windows UWP) είναι ένα πρόσθετο σε αυτά.



Το Xamarin χρησιμοποιεί τη βιβλιοθήκη Mono για να αλληλεπιδράσει με το λειτουργικό σύστημα προορισμού, το οποίο επιτρέπει την κλήση εγγενούς κώδικα χρησιμοποιώντας τον μηχανισμό P/Invoke. Χρησιμοποιείται επίσης για την επικοινωνία με εγγενή API σε iOS/Android. Δηλαδή, τα περιτυλίγματα σε C# δημιουργούνται για όλες τις δημόσιες εγγενείς μεθόδους API, οι οποίες, με τη σειρά τους, καλούν API συστήματος. Έτσι, όλα τα API του συστήματος είναι προσβάσιμα από μια εφαρμογή Xamarin.

Και τέλος, ας δούμε το Qt, καθώς υπάρχουν πολλές ερωτήσεις σχετικά με αυτό από έμπειρους προγραμματιστές.



Το Qt είναι ένα "πράγμα από μόνο του", αυτό έχει και θετικά και περιορισμούς. Οι βιβλιοθήκες Qt απλώς συνδέονται με τα API του συστήματος C++ που βρίσκονται σε όλα τα λειτουργικά συστήματα. Για τη σχεδίαση της διεπαφής χρήστη, χρησιμοποιούνται μηχανισμοί χαμηλού επιπέδου, αλλά η δική του μηχανή γραφικών που υποστηρίζει εγγενές στυλ. Ταυτόχρονα, στο Android, πρέπει να έχετε πρόσβαση στο Java API μέσω μιας ειδικής γέφυρας (JNI bridge) και για τα Windows UWP, να χρησιμοποιήσετε τον μετατροπέα κλήσεων Open GL ES σε DirectX, καθώς το Open GL δεν είναι διαθέσιμο για το UWP.

Συνοψίζοντας: όλα τα πλαίσια πολλαπλών πλατφορμών χρησιμοποιούν τις τυπικές εγγενείς λειτουργίες των λειτουργικών συστημάτων, είναι ώριμα, δημιουργημένα από έμπειρες ομάδες και την κοινότητα ανοιχτού κώδικα με την υποστήριξη κολοσσών της βιομηχανίας πληροφορικής. Και τέλος, ήρθε η ώρα για το πιο «δυνατό» επιχείρημα.

Μύθος 4. Σιγά σιγά

Ένα σημαντικό ατού που αρέσει να χρησιμοποιούν οι άνθρωποι σε διαφωνίες σχετικά με πλαίσια πολλαπλών πλατφορμών είναι η χαμηλή απόδοση. Και πάλι, ανάλογα με τι να συγκρίνετε και σε ποιους παπαγάλους να μετρήσετε.

Θυμηθείτε ότι ένα χαρακτηριστικό των εφαρμογών πολλαπλών πλατφορμών είναι η παράλληλη ύπαρξη δύο κόσμων που συνδέονται με μια γέφυρα:

  • PhoneGap: HTML/JS και Native Java / Objective-C / C#;
  • React Native: JS και Native Java / Objective-C / C#;
  • Xamarin: Mono και Native Java / Objective-C;
  • Qt: C++ και Native Java/Objective-C.

Έτσι, κατά τη σύγκριση της απόδοσης, είναι απαραίτητο να ληφθεί υπόψη η ταχύτητα της εργασίας:

  • cross-platform μέρος?
  • εγγενές μέρος?
  • γέφυρα.

Αν πληκτρολογήσετε σε μια μηχανή αναζήτησης, για παράδειγμα, react native vs swift performance, μπορείτε να δείτε πολλές διαφορετικές δοκιμές και πολλοί από αυτούς σημειώνουν ότι η απόδοση μειώνεται απότομα όταν χρησιμοποιείτε ενεργά τη γέφυρα, συμπεριλαμβανομένου του ενεργού χειρισμού της διεπαφής χρήστη από κώδικα πολλαπλών πλατφορμών. Για το Xamarin, η κατάσταση μοιάζει η ίδια - το τμήμα cross-platform είναι πολύ γρήγορο και συγκρίσιμο με το εγγενές τμήμα στην επεξεργασία δεδομένων, ωστόσο, όταν χρησιμοποιείτε μια γέφυρα, η απόδοση μπορεί να μειωθεί. Το Qt λειτουργεί γενικά σε επίπεδο C++, το οποίο είναι γρήγορο από μόνο του. Εάν εξετάσουμε λύσεις που βασίζονται στο PhoneGap, τότε εδώ η απόδοση θα εξαρτάται σε μεγάλο βαθμό από το WebView, αλλά και πάλι δεν πρέπει να αλλάξετε ενεργά τη διεπαφή χρήστη στον κώδικα JavaScript ή να εκτελέσετε επιστημονικούς υπολογισμούς.

Αργά? Ναι, είναι πιθανές οι πτώσεις απόδοσης λόγω ακατάλληλης αλληλεπίδρασης με το λειτουργικό σύστημα μέσω της γέφυρας. Ωστόσο, οι ίδιοι οι κόσμοι μεταξύ πλατφορμών είναι εξίσου γρήγοροι με τους εγγενείς.

Οι εφαρμογές για κινητά έχουν γίνει ένας απαραίτητος σύντροφος της ζωής μας. Με τη βοήθειά τους, μπορούμε όχι μόνο να διασκεδάσουμε και να απλοποιήσουμε τη ζωή μας, να κάνουμε αγορές ή να παραγγείλουμε ορισμένες υπηρεσίες στο Διαδίκτυο, αλλά και να προωθήσουμε την επιχείρησή μας, να αυξήσουμε τη βάση πελατών μας και, κατά συνέπεια, να πολλαπλασιάσουμε τα κέρδη μας. Και αν κανείς δεν μπορεί να αμφισβητήσει την ανάγκη δημιουργίας μιας εφαρμογής για την επιχείρησή του, τότε με την επιλογή του τύπου εφαρμογής για κινητά, ενδέχεται να προκύψουν κάποιες δυσκολίες.

Ολα σύγχρονες εφαρμογέςγια κινητές συσκευές μπορούν να χωριστούν σε εγγενείς και πολλαπλές πλατφόρμες και καθεμία από αυτές τις δύο ομάδες έχει και τις δύο τις δικές της δυνάμειςκαθώς και οι ελλείψεις του.

Οι εγγενείς εφαρμογές είναι εφαρμογές που έχουν αναπτυχθεί ειδικά για μια συγκεκριμένη πλατφόρμα στην κατάλληλη γλώσσα προγραμματισμού. Έτσι, κατά τη δημιουργία μιας εφαρμογής για Android, χρησιμοποιείται Java και για εφαρμογές IOS, Objective-c ή Swift. Κατά τη δημιουργία τέτοιων έργων, οι ειδικοί λαμβάνουν υπόψη όλα τα χαρακτηριστικά των πλατφορμών, δίνοντας ιδιαίτερη προσοχή στο σχεδιασμό UI / UX, στις απαιτήσεις / συστάσεις των προγραμματιστών λειτουργικών συστημάτων, καθώς και στις τελευταίες τάσεις στη βιομηχανία κινητής τηλεφωνίας. Ένας ειδικός δεν θα είναι σε θέση να κατακτήσει πλήρως όλες τις παραπάνω γλώσσες, επομένως, για να αναπτύξετε ένα εγγενές προϊόν για διαφορετικές πλατφόρμες, είναι απαραίτητο να συνδέσετε διαφορετικούς προγραμματιστές και αυτό είναι ένα επιπλέον κόστος και ο χρόνος ανάπτυξης θα είναι εντυπωσιακός. Ταυτόχρονα όμως, οι εφαρμογές θα «ακονιστούν» για μια συγκεκριμένη πλατφόρμα, θα αποκτήσουν πρόσβαση στους εσωτερικούς πόρους και τις λειτουργίες της συσκευής και θα λειτουργούν όσο το δυνατόν πιο αποτελεσματικά.

Παρά τη σημαντική λίστα πλεονεκτημάτων της εγγενούς ανάπτυξης, οι πελάτες δεν θέλουν πάντα να ξοδεύουν χρόνο και χρήμα για την ανάπτυξή τους, συνδέοντας αρκετούς πλοιάρχους στη διαδικασία δημιουργίας. Η καλύτερη επιλογή σε τέτοιες περιπτώσεις είναι η ανάπτυξη πολλαπλών πλατφορμών, η οποία σας επιτρέπει να δημιουργείτε εφαρμογές για οποιαδήποτε πλατφόρμα χρησιμοποιώντας τυπικές τεχνολογίες Ιστού. Σε αυτή την περίπτωση, η ανάπτυξη μπορεί να πραγματοποιηθεί από ένα άτομο που έχει απαραίτητη γνώσηκαι εμπειρία με HTML5, JavaScript και CSS3. Οι εξελίξεις μεταξύ πλατφορμών μπορούν να μεταγλωττιστούν σε αρχείο .apk για Android και αρχείο .ipa για IOS. Έτσι, με βάση μια ανάπτυξη, μπορείτε να αποκτήσετε δύο εφαρμογές για δημοφιλή λειτουργικά συστήματα, ξοδεύοντας λιγότερο χρόνο και χρήματα σε αυτό. Ωστόσο, τέτοιες εξελίξεις έχουν επίσης τα μειονεκτήματά τους, επομένως είναι πολύ επιθυμητό να προσεγγίσουμε κάθε συγκεκριμένη περίπτωση ξεχωριστά και να επιλέξετε την καταλληλότερη επιλογή - εγγενή ανάπτυξη ή ανάπτυξη πολλαπλών πλατφορμών.

Τμήματα πελάτη και διακομιστή της εφαρμογής

Οι περισσότερες σοβαρές εφαρμογές έχουν τη δική τους πλευρά πελάτη, η οποία συχνά ονομάζεται frontend, και μια πλευρά διακομιστή, το backend. Το frontend είναι υπεύθυνο για αυτό που βλέπετε στην οθόνη της κινητής συσκευής σας, δηλαδή για ολόκληρη την οπτική αναπαράσταση της εφαρμογής, συμπεριλαμβανομένου του σχεδιασμού, του μεγέθους και της θέσης των παραθύρων, των μενού, των κουμπιών, των βελών και οποιωνδήποτε άλλων στοιχείων. Επίσης, το frontend είναι υπεύθυνο για την αντίδραση της εφαρμογής σε ορισμένες ενέργειες χρήστη που στοχεύουν στη μετάβαση σε διαφορετικές ενότητες της εφαρμογής, στην κλήση νέων μενού κ.λπ.

Το backend είναι το τμήμα διακομιστή της εφαρμογής και βρίσκεται σε έναν απομακρυσμένο διακομιστή που μπορεί να βρίσκεται οπουδήποτε και να ελεγχθεί χρησιμοποιώντας μια μεγάλη ποικιλία εργαλεία λογισμικού. Η σχέση μεταξύ των τμημάτων πελάτη και διακομιστή πραγματοποιείται μέσω του API (διεπαφή προγραμματισμού εφαρμογών). Με άλλα λόγια, το API είναι ένα είδος ενδιάμεσου μεταξύ του frontend και του backend, το οποίο μεταδίδει αιτήματα από την πλευρά του πελάτη στον διακομιστή, επιστρέφοντας τα δεδομένα που είναι απαραίτητα για τον χρήστη.

Ανάπτυξη Frontend

Το τμήμα πελάτη της εφαρμογής είναι εξαιρετικά σημαντικό, αφού ο ίδιος ο χρήστης θα ασχοληθεί με αυτό και η γενική του ιδέα για την εφαρμογή θα εξαρτηθεί από την ευκολία του frontend. Μπορεί να αναπτυχθεί τόσο χειροκίνητα, αλλά για αυτό πρέπει να είστε καλά γνώστες HTML5, CSS3 και java-script, και με τη βοήθεια των λεγόμενων πλαισίων. Στην πρώτη περίπτωση, χρησιμοποιείται συχνά το περιβάλλον ανάπτυξης Apache Cordova, το οποίο είναι επίσης κοινώς γνωστό ως PhoneGap. Χρησιμοποιώντας αυτό το πλαίσιο, μπορείτε να δημιουργήσετε εφαρμογές για οποιαδήποτε πλατφόρμα χρησιμοποιώντας τεχνολογίες ιστού που η Cordova μετατρέπει σε κώδικα που είναι κατανοητός για μια συγκεκριμένη πλατφόρμα. Το Cordova ανοίγει ουσιαστικά απεριόριστες δυνατότητες για προγραμματιστές ιστού που δεν χρειάζεται να μάθουν Objective-C ή Swift, Java ή Kotlin για να δημιουργήσουν εφαρμογές για συγκεκριμένα λειτουργικά συστήματα.

Ενώ η Cordova δεν έχει όρια στη διεπαφή χρήστη και στη λογική, τα πλαίσια προσφέρουν έτοιμες λύσεις προτύπων. Από τη μία πλευρά, αυτό επιταχύνει και απλοποιεί σημαντικά τη διαδικασία ανάπτυξης, καθώς ένας ειδικός μπορεί να χρησιμοποιήσει έτοιμα κουμπιά, λίστες, πεδία εισαγωγής, κάρτες και άλλα στοιχεία διεπαφής χρήστη. Από την άλλη πλευρά, ένας ειδικός μπορεί να χρησιμοποιήσει για ανάπτυξη μόνο εκείνα τα εργαλεία και τα στοιχεία που είναι διαθέσιμα στο επιλεγμένο πλαίσιο. Το πιο δημοφιλές από αυτά είναι το Ionic, το οποίο σας επιτρέπει να δημιουργείτε εφαρμογές cross-platform για κάθε γούστο. Αυτό το πλαίσιο έχει μια μεγάλη ενσωματωμένη συλλογή τυπικά στοιχεία, που μιμούνται οπτικά εγγενείς εφαρμογές, αλλά ο σχεδιασμός τους μπορεί να αλλάξει εάν είναι απαραίτητο. Ταυτόχρονα, ο προγραμματιστής μπορεί να συνδέσει πολλά πρόσθετα πρόσθετα που επεκτείνουν τις δυνατότητες του ιονικού πλαισίου και το έργο που δημιουργήθηκε σε αυτό το πλαίσιο μπορεί να ξεκινήσει απευθείας στο παράθυρο του προγράμματος περιήγησης και να αξιολογήσει πώς θα φαίνεται και θα λειτουργεί. εφαρμογή που δημιουργείταιχωρίς την ανάγκη εξομοιωτή ή εγκατάστασης σε smartphone.

Ανάπτυξη backend

Ενώ σχεδιαστές και προγραμματιστές με γνώση HTML, CSS, JS και πλαισίων ασχολούνται με την πλευρά του πελάτη, προγραμματιστές διαφορετικού προφίλ ασχολούνται με το backend. Για τη διαμόρφωση των διακομιστών, μπορούν να χρησιμοποιηθούν διαφορετικές γλώσσες προγραμματισμού και εργαλεία, το κύριο πράγμα είναι να διαμορφώσετε σωστά την εργασία και την αλληλεπίδρασή τους με το τμήμα πελάτη. Εδώ πρέπει να χρησιμοποιήσετε κατάλληλα συστήματαδιαχείριση βάσεων δεδομένων (βάσεις δεδομένων). Αυτό μπορεί να είναι η παραδοσιακή MySQL, η Redis, η PostgreSQL ή οποιαδήποτε άλλη βάση δεδομένων (για παράδειγμα, MongoDB) που είναι κατάλληλη για την υλοποίηση ενός συγκεκριμένου έργου και στην οποία ο προγραμματιστής του back-end γνωρίζει καλά. Οι προγραμματιστές μπορούν να χρησιμοποιήσουν PHP, NodeJS, C#, Ruby, Python, Java και άλλες γλώσσες προγραμματισμού για να δημιουργήσουν την πλευρά του διακομιστή της εφαρμογής.

Οι ειδικοί του φορητού στούντιο KitApp προσεγγίζουν το θέμα της ανάπτυξης εξαρτημάτων frontend και backend με ολοκληρωμένο και μέγιστο υπεύθυνο τρόπο. Οι προγραμματιστές μας θα δημιουργήσουν για εσάς μια εφαρμογή πολλαπλών πλατφορμών οποιασδήποτε πολυπλοκότητας και κατεύθυνσης όσο το δυνατόν πιο γρήγορα και αποτελεσματικά! Επικοινωνήστε μαζί μας και οι ειδικοί μας θα σας συμβουλεύσουν άμεσα για όλες τις ερωτήσεις σας!

Διαπλατφορμικές εφαρμογές - να είσαι ή να μην είσαι; Το ερώτημα δεν είναι εύκολο, αφού κάθε επιχείρηση έχει τους δικούς της στόχους και απαιτήσεις για εφαρμογές για κινητά. Αλλά σήμερα σίγουρα θα καταλάβουμε ποια ανάπτυξη είναι κατάλληλη για εσάς.

Τι είναι οι εφαρμογές πολλαπλών πλατφορμών;

Οι εφαρμογές πολλαπλών πλατφορμών είναι εφαρμογές που αναπτύσσονται και στη συνέχεια εκτελούνται ταυτόχρονα σε Android και iOS. Η ουσία της ανάπτυξης είναι πηγήΗ εφαρμογή μεταφράζεται σε εγγενή, δηλαδή κατανοητή σε μια συγκεκριμένη φορητή συσκευή. Ως αποτέλεσμα, το πρόγραμμα μπορεί να αλληλεπιδράσει με το λειτουργικό σύστημα που είναι εγκατεστημένο σε αυτό.

Θυμηθείτε: οι εγγενείς εφαρμογές, σε αντίθεση με τις πολλαπλές πλατφόρμες, έχουν γραφτεί για ένα συγκεκριμένο λειτουργικό σύστημα.

Πλεονεκτήματα της ανάπτυξης πολλαπλών πλατφορμών

  • επέκταση της βάσης χρηστών λόγω της εμφάνισης της εφαρμογής ταυτόχρονα σε πολλά καταστήματα.
  • Ο ενιαίος πηγαίος κώδικας σάς εξοικονομεί από το να χρειάζεται να προσλάβετε πολλούς προγραμματιστές για κάθε πλατφόρμα.
  • Το 75% της βάσης κώδικα μιας εφαρμογής πολλαπλών πλατφορμών μπορεί να επαναχρησιμοποιηθεί, προσαρμόζοντάς την για νέα έργα.

Μειονεκτήματα της ανάπτυξης πολλαπλών πλατφορμών

1. Μεγάλη εξάρτηση από φορητή συσκευή

Οι εφαρμογές μεταξύ πλατφορμών συνήθως δεν λειτουργούν εκτός σύνδεσης. Επομένως, οι δυνατότητές τους εξαρτώνται σε μεγάλο βαθμό από το ότι ο χρήστης έχει σταθερή σύνδεση στο Διαδίκτυο. Εκδοχή λειτουργικό σύστημακαι το μοντέλο της συσκευής είναι επίσης σημαντικά. Μια εφαρμογή πολλαπλών πλατφορμών είναι σχεδόν εγγυημένη ότι θα υποβαθμίσει την απόδοση μιας συσκευής παλαιότερης από ένα έως δύο χρόνια. Ενώ η εγγενής εφαρμογή θα λειτουργεί σταθερά ακόμη και σε ένα αρχαίο gadget με ξεπερασμένο υλικολογισμικό. Επομένως, εάν δεν θέλετε οι πελάτες σας να διαβάζουν θυμωμένες κριτικές σχετικά με το πώς η εφαρμογή σας τελικά «τελείωσε» το smartphone κάποιου, επιλέξτε την εγγενή ανάπτυξη.

2. Μη φιλική διεπαφή χρήστη

Οι χρήστες είναι τόσο εθισμένοι εμφάνισηκαι τη λειτουργικότητα των gadget τους, ότι περιμένουν μέγιστη ανταπόκριση από τις εφαρμογές που είναι εγκατεστημένες σε αυτά. Θέλουν να είναι σίγουροι ότι κάθε κουμπί είναι στη σωστή του θέση, ότι η σελίδα κυλά με τη βέλτιστη ταχύτητα για αυτούς και ότι οποιαδήποτε ενέργεια ακολουθείται από άμεση αντίδραση. Οι εφαρμογές πολλαπλών πλατφορμών είναι συνήθως δύσκολο να προσαρμοστούν στη συσκευή και δεν μπορούν να καυχηθούν για απόδοση υψηλής ταχύτητας.

Το πρόβλημα είναι ότι δεν υπάρχουν κατευθυντήριες γραμμές για πρότυπα ανάπτυξης - ανάπτυξης πολλαπλών πλατφορμών από τους δημιουργούς του ΛΣ. Επομένως, μια εφαρμογή πολλαπλών πλατφορμών που έχει κατασκευαστεί "για Android" δεν θα είναι βολική για έναν χρήστη iOS και αντίστροφα. Μπορείτε, φυσικά, να δημιουργήσετε ξεχωριστά σχέδια για κάθε πλατφόρμα, αλλά όσον αφορά το κόστος εργασίας, αυτό θα ισοδυναμεί με τη δημιουργία δύο διαφορετικών εφαρμογών, αν και στην ίδια γλώσσα.

3. Ο αγώνας για την υπεροχή μεταξύ των αναπτυξιακών εργαλείων

Στην αγορά λύσεων ανάπτυξης πολλαπλών πλατφορμών, ο ανταγωνισμός γίνεται όλο και πιο σκληρός κάθε μέρα. Μέχρι στιγμής, το React Native και το Xamarin είναι τα πιο δημοφιλή μεταξύ των προγραμματιστών, αλλά το Vue Native, για παράδειγμα, μπορεί κάλλιστα να τα ξεπεράσει. Σε αυτή την περίπτωση, οι πρώην ηγέτες του αγώνα θα χάσουν το πιο σημαντικό πλεονέκτημα - την υποστήριξη λειτουργικού κώδικα. Και αυτό μπορεί να συμβεί με οποιοδήποτε εργαλείο πολλαπλών πλατφορμών.

Η εγγενής ανάπτυξη δεν φοβάται ένα τέτοιο πρόβλημα. Η εισαγωγή νέων εργαλείων είναι σταδιακή και η γνώση πολλών γλωσσών προγραμματισμού, η οποία είναι υποχρεωτική για έναν στενό ειδικό, θα του επιτρέψει να αντιμετωπίσει γρήγορα όλες τις καινοτομίες. Επιπλέον, υπάρχουν τεράστιες επαγγελματικές κοινότητες γύρω από κάθε λειτουργικό σύστημα, με αποτέλεσμα κάθε δυσκολία που έχει προκύψει να επιλύεται αναζητώντας ένα παρόμοιο πρόβλημα στα φόρουμ, όπου χιλιάδες άνθρωποι είναι έτοιμοι να προτείνουν και να βοηθήσουν στην επίλυσή του.

Ποια εφαρμογή είναι κατάλληλη για την επιχείρησή σας;

Πριν απαντήσετε σε αυτήν την ερώτηση, είναι εξαιρετικά σημαντικό να αναλύσετε την επιχείρησή σας. Τμήματα καταναλωτών, η αξία του χρόνου και των χρηματικών πόρων, το επιθυμητό βάθος ενσωμάτωσης εφαρμογών με συσκευές χρηστών, καθώς και σαφώς καθορισμένοι μακροπρόθεσμοι στόχοι - το ελάχιστο από το οποίο θα εξαρτηθεί η επιλογή σας. Αλλά θα το κάνουμε πιο εύκολο αν απαντήσετε στις σχετικές ερωτήσεις αμέσως.

1. Τι χρησιμοποιεί το κοινό σας;

Εάν γνωρίζετε ότι η αναλογία του αριθμού των χρηστών iOS και Android μεταξύ των πελατών σας είναι κοντά στο 50/50, επιλέξτε την εγγενή ανάπτυξη. Αυτό θα δείξει ότι σέβεστε εξίσου τις ανάγκες όλων των πελατών σας, ανεξάρτητα από το επίπεδο εισοδήματός τους.

Η σύνδεση μεταξύ της επιλογής μιας κινητής συσκευής και του επιπέδου φερεγγυότητας επιβεβαιώθηκε για άλλη μια φορά από την App Annie. Ως αποτέλεσμα μιας μελέτης του αριθμού των λήψεων και των πωλήσεων εφαρμογών για κινητές συσκευές σε Google Playκαι App Storeτο πρώτο τρίμηνο του 2018, αποδείχθηκε ότι οι χρήστες smartphone Android κατέβασαν 135% περισσότερες εφαρμογές από τους επισκέπτες στο κατάστημα iOS. Την ίδια στιγμή, το App Store απέφερε στους ιδιοκτήτες του 85% περισσότερα έσοδα από το Google Play.

Ο δρόμος προς την επιτυχία είναι προφανής: παίξτε σε δύο γήπεδα ταυτόχρονα. Πιο συγκεκριμένα δύο καταστήματα. Απλώς υπολογίστε σε ποια πρέπει να εμφανίζεται πρώτη η εφαρμογή. Φυσικά, εάν μια ταυτόχρονη κυκλοφορία δεν αποτελεί μέρος της ψηφιακής στρατηγικής σας).

2. Πόσο χρόνο ανάπτυξης έχετε;

Το οικονομικό κόστος του έργου εξαρτάται από την απάντηση σε αυτό το ερώτημα. Το γεγονός είναι ότι από την άποψη του χρόνου που αφιερώνεται στην ανάπτυξη, μια εφαρμογή πολλαπλών πλατφορμών φαίνεται να είναι μόνο μια πιο κερδοφόρα λύση. Στην πραγματικότητα, η προσαρμογή του για πλατφόρμες μπορεί να διαρκέσει σχεδόν όσο η δημιουργία δύο εγγενών εφαρμογών, καθώς οι προγραμματιστές θα πρέπει να γράψουν πρόσθετα μέρη του κώδικα για προβληματικές περιοχές.

Με μια εγγενή εφαρμογή, σίγουρα δεν θα υπάρχουν τέτοια προβλήματα, κάτι που είναι πολύ σημαντικό για τη διατήρηση ενός κοινού που είναι εξαιρετικά δυσανεκτικό σε λάθη και σφάλματα. Σύμφωνα με τα στατιστικά στοιχεία της Compuware, το 79% των χρηστών είναι έτοιμοι να επανεκκινήσουν την εφαρμογή εάν δεν λειτουργούσε σωστά κατά την πρώτη εκκίνηση, αλλά μόνο το 16% συμφωνεί να της δώσει άλλη μια ευκαιρία. Τα υπόλοιπα πιθανότατα απλώς θα απεγκαταστήσουν το πρόγραμμα.

3. Ποιες δυνατότητες της συσκευής σκοπεύετε να χρησιμοποιήσετε;

Έχουμε ήδη μιλήσει για το γεγονός ότι μόνο οι εγγενείς εφαρμογές μπορούν να αναπαράγουν βαριά γραφικά γρήγορα και χωρίς απώλεια ποιότητας. Αλλά αυτό τεχνικά πλεονεκτήματαη εγγενής ανάπτυξη δεν περιορίζεται. Πάρτε για παράδειγμα την εφαρμογή Facebook. Χάρη στην κυκλοφορία ξεχωριστών εκδόσεων για Android και iOS, η κύλιση έχει γίνει πιο ομαλή, οι χρόνοι φόρτωσης εικόνων έχουν μειωθεί και όλα τα προβλήματα της προσωρινής μνήμης έχουν επιλυθεί.


Επιπλέον, οι εγγενείς εφαρμογές έχουν άμεση πρόσβαση σε όλες τις υπηρεσίες της συσκευής, επιτρέποντάς σας να λαμβάνετε πληροφορίες σχετικά με την τοποθεσία του χρήστη ή τη λίστα επαφών. Οι εφαρμογές πολλαπλών πλατφορμών πρέπει να χρησιμοποιούν ειδικά εγγενή πρόσθετα, τα οποία επηρεάζουν αρνητικά την ταχύτητα μεταφοράς δεδομένων και τις υπερφορτώσεις ΕΜΒΟΛΟσυσκευές.

4. Τι αποτελέσματα αναζητάτε;

Μια ψηφιακή στρατηγική είναι μια λίστα στόχων που μπορεί να επιτύχει η εταιρεία σας χρησιμοποιώντας ψηφιακά εργαλεία. Η επιλογή του τελευταίου εξαρτάται σε μεγάλο βαθμό από τα οφέλη που θέλετε να έχετε στο τέλος.


Αποσυνθέστε τη διαδικασία από ιδέα σε αποτέλεσμα σημείο προς σημείο, λαμβάνοντας υπόψη όλους τους διαθέσιμους πόρους. Οι ανακαλύψεις μπορεί να είναι οι πιο απροσδόκητες.

Για παράδειγμα, μπορεί να διαπιστώσετε ότι η μετάφραση του αποκριτικού ιστότοπού σας με πολλές δυνατότητες και διαδραστικά στοιχεία σε μια εφαρμογή πολλαπλών πλατφορμών, όπως αρχικά σχεδιάζατε, είναι πολύ δαπανηρή εργασία. Ή, τέλος, βεβαιωθείτε ότι ένας ιστότοπος για κινητά χάνει πάντα από μια εφαρμογή για κινητά - όπως ακριβώς χάνει η ανάπτυξη πολλαπλών πλατφορμών από τη μητρική. Και ανάμεσα στους λόγους, βρείτε αυτούς για τους οποίους μιλήσαμε παραπάνω.

Συμπέρασμα: μια εφαρμογή πολλαπλών πλατφορμών είναι επωφελής μόνο σε μία περίπτωση - δημιουργείτε μια δοκιμαστική έκδοση της εφαρμογής, είστε περιορισμένοι από άποψη χρόνου, χρημάτων και ειδικών στενού προφίλ. Σε όλες τις άλλες περιπτώσεις, μια εγγενής εφαρμογή θα σας προσφέρει πολλαπλάσια οφέλη, καθώς πρόκειται για ένα ποιοτικά διαφορετικό επίπεδο ανάπτυξης.

Φαίνεται ότι εδώ έχουμε ανάπτυξη πολλαπλών πλατφορμών, η οποία καθιστά δυνατή τη δημιουργία καθολικών εφαρμογών για διαφορετικές πλατφόρμες. Έγραψα την εφαρμογή πιο γρήγορα, την κυκλοφόρησα αμέσως παντού - κέρδος! Και δεν χρειάζεται εγγενής ανάπτυξη. Ή χρειάζεται ακόμα; Ρωτήσαμε τους ειδικούς μας σχετικά με τις αποχρώσεις και των δύο προσεγγίσεων στην ανάπτυξη εφαρμογών για κινητά.

Ο "προγραμματιστής κινητής τηλεφωνίας" είναι μια ευρεία έννοια. Ένας προγραμματιστής που υλοποιεί μέρη ενός λειτουργικού συστήματος για κινητά είναι επίσης προγραμματιστής κινητών. Και αν ο στόχος είναι να γίνετε ακριβώς ένας τέτοιος προγραμματιστής, τότε πρέπει να ξεκινήσετε γενικά με την εκμάθηση C ++, ένα λειτουργικό σύστημα για κινητά και το υλικό των φορητών συσκευών.

Αν εννοείτε έναν προγραμματιστή που εφαρμόζει προσαρμοσμένη εφαρμογές για κινητά, τότε πρέπει να ξεκινήσετε με την εγγενή ανάπτυξη.

Γιατί αυτό? Η εγγενής ανάπτυξη σάς επιτρέπει να εξερευνήσετε καλύτερα και βαθύτερα τις δυνατότητες συγκεκριμένων λειτουργικών συστημάτων (και εφαρμογών για αυτά) και υλικού κινητής τηλεφωνίας.

Από την πλευρά του χρήστη, η εγγενής ανάπτυξη σίγουρα κερδίζει. Οι εγγενείς εφαρμογές λειτουργούν πιο γρήγορα, η διεπαφή τους είναι πιο ανταποκρινόμενη και οικεία στους χρήστες ενός συγκεκριμένου λειτουργικού συστήματος κινητής τηλεφωνίας, χρησιμοποιούν καλύτερα τις δυνατότητες υλικού των συσκευών, λειτουργούν καλύτερα εκτός σύνδεσης και είναι λιγότερο «με λάθη».

Η αρχική ιδέα της ανάπτυξης πολλαπλών πλατφορμών είναι να μειωθεί το κόστος εργασίας του προγραμματιστή. Εν συντομία, μπορεί να εκφραστεί ως εξής: "Το έκανα μια φορά, λειτουργεί σε οτιδήποτε." Η ιδέα είναι καλή και σωστή (από την πλευρά του προγραμματιστή), αλλά υπάρχουν ερωτήματα σχετικά με την ποιότητα. Οποιαδήποτε ευελιξία συνοδεύεται από συμβιβασμό από την αρχή και η ανάπτυξη κινητών δεν αποτελεί εξαίρεση.

Κατά την επιλογή του τύπου ανάπτυξης για μια συγκεκριμένη εργασία, ο προγραμματιστής πρέπει να αξιολογήσει εάν αυτός ο συμβιβασμός είναι αποδεκτός. Υπάρχει ένας αριθμός εργασιών όπου η χρήση της ανάπτυξης πολλαπλών πλατφορμών θα ήταν αρκετά δικαιολογημένη, για παράδειγμα, σε δοκιμαστικά έργα, εκδόσεις ιστότοπων για κινητές συσκευές, παιχνίδια που χρησιμοποιούν πλαίσια όπως το Unity 3D.

Ταυτόχρονα, για έργα που επιλύουν προβλήματα κινητών επιχειρήσεων (με υψηλό φορτίο, ανάγκη υποστήριξης λειτουργίας εκτός σύνδεσης, με στόχο τη μακροπρόθεσμη ανάπτυξη), η εγγενής ανάπτυξη θεωρείται ως η μόνη βέλτιστη (και για ορισμένες εργασίες, η μόνη δυνατή ) επιλογή.

Ταυτόχρονα, τα κύρια μειονεκτήματα της εγγενούς ανάπτυξης είναι ο χρόνος ανάπτυξης (απαιτείται περισσότερος) και η ανάγκη για διαφορετικούς πόρους (προγραμματιστές σε διαφορετικές εγγενείς γλώσσες προγραμματισμού). Υπάρχουν τρόποι για να μετριαστούν αυτές οι ελλείψεις - για παράδειγμα, να χρησιμοποιήσετε κάποιο είδος πλατφόρμας εφαρμογών για κινητά (κλάση MEAP) για ανάπτυξη, που σας επιτρέπει να δημιουργείτε εγγενείς εφαρμογές.

Αναβάθμιση Υποβάθμιση

, Διευθυντής Τεχνολογικής Ανάπτυξης της εταιρείας πληροφορικής "ID - Management Technologies"

Οποιαδήποτε βιβλιοθήκη ή πλαίσιο πολλαπλών πλατφορμών βασίζεται στους ίδιους εγγενείς μηχανισμούς που υλοποιούν άμεσα την εγγενή ανάπτυξη. Απλώς, στην περίπτωση των λύσεων πολλαπλών πλατφορμών, οι ροές εργασίας είναι χτισμένες με τέτοιο τρόπο ώστε να «εξομαλύνουν τις γωνίες» όσον αφορά τη διεπαφή της τελικής λύσης σε έναν συγκεκριμένο κοινό παρονομαστή.

Κατά κανόνα, η οικουμενικότητα δεν είναι πάντα η απάντηση στο έργο της δημιουργίας μιας λειτουργικής λύσης για φορητές συσκευές: ο προγραμματιστής λειτουργεί τόσο καλύτερα, τόσο βαθύτερα κατανοεί τους μηχανισμούς της συσκευής διάφορες διαδικασίεςαπό μέσα, όπως λένε, «κάτω από την κουκούλα».

Επίσης, ένα πλήρως λειτουργικό μοντέλο θα ήταν η ταυτόχρονη κατάκτηση των βασικών στοιχείων των δύο προσεγγίσεων, δεν υπάρχει τίποτα αδύνατο σε μια τέτοια μαθησιακή εργασία στο αρχικό στάδιο. Για παράδειγμα, ένα τέτοιο σενάριο μπορεί να αποδειχθεί αρκετά εφικτό και πολλά υποσχόμενο: ξεκινήστε να εργάζεστε σε ένα παράδειγμα πολλαπλών πλατφορμών και παράλληλα, ανεξάρτητα ή με τη βοήθεια συναδέλφων, μελετήστε ποιες εγγενείς ευκαιρίες υπάρχουν για την ανάπτυξη τρεχουσών λύσεων και πώς μπορούν εφαρμοστεί στην πράξη.

Σε αυτήν την περίπτωση, είναι ευκολότερο να επιτευχθεί μια ολοκληρωμένη κατανόηση του τρόπου με τον οποίο λειτουργεί κατ' αρχήν η διαδικασία ανάπτυξης κινητής τηλεφωνίας, η οποία ονομάζεται από άκρο σε άκρο. Αυτό είναι επίσης χρήσιμο επειδή οποιαδήποτε, ακόμη και η πιο προηγμένη, καθολική πλατφόρμα υστερεί σε σχέση με την εγγενή στις δυνατότητές της: οι κατασκευαστές υλικού και λειτουργικού συστήματος κινητών συχνά συνεργάζονται και αυξάνουν συνεχώς τις δυνατότητες των τελικών λύσεων - τις δυνατότητες των πλατφορμών ανάπτυξης για κινητά, ειδικά των λύσεων πολλαπλών πλατφορμών , αναπόφευκτα υστερούν .

Νέα προϊόντα στην κατηγορία των κινητών εμφανίζονται συνεχώς στην αγορά, μερικά από αυτά είναι πολύ μπροστά από την εποχή τους - πάρτε τη Samsung και την ανάπτυξη μιας συσκευής με αναδιπλούμενη οθόνη: είναι προφανές ότι, λόγω μιας ριζικά διαφορετικής διεπαφής , οι υπάρχουσες πλατφόρμες ανάπτυξης δεν είναι έτοιμες για τέτοια πράγματα.

Εδώ θα βοηθήσει η βαθιά γνώση των εγγενών πλατφορμών: μόνο ένας προγραμματιστής με βαθιά, συστημική γνώση της ανάπτυξης κινητών, δηλαδή εγγενών πλατφορμών, μπορεί να αντισταθμίσει τη φυσική υστέρηση σε σχέση με το υλικό και το λειτουργικό σύστημα. Μόνο ένας τέτοιος ειδικός θα μπορεί να αυξήσει τη λειτουργικότητα της λύσης του για τις πιο πρόσφατες κινητές συσκευές με βάση όχι αρκετά προηγμένες πλατφόρμες ανάπτυξης που είναι διαθέσιμες αυτήν τη στιγμή.

Η ανάπτυξη πολλαπλών πλατφορμών είναι εξαιρετική για τη δημιουργία πρωτοτύπων, τη γρήγορη δοκιμή μιας ιδέας, κ.λπ. Μόλις πρόκειται για τη δημιουργία πραγματικά θεμελιωδών προϊόντων, ο προγραμματιστής αναπόφευκτα έρχεται στην ανάγκη να μελετήσει σε βάθος τα βασικά στοιχεία της διαδικασίας, δηλαδή την εγγενή ανάπτυξη.

Αναβάθμιση Υποβάθμιση

, Κοσμήτορας της Σχολής Ανάπτυξης iOS GeekUniversity, εκπαιδευτική πύλη GeekBrains

Σύντομη απάντηση: εάν δεν υπάρχει εμπειρία στον προγραμματισμό, τότε, φυσικά, πρέπει να επιλέξετε εγγενή ανάπτυξη. Η ανάπτυξη πολλαπλών πλατφορμών είναι καλή για επαγγελματίες που μετακινούνται από συναφείς τομείς στην ανάπτυξη κινητών τηλεφώνων. Για παράδειγμα, εάν είστε προγραμματιστής front-end με καλή γνώση JavaScript, χρησιμοποιώντας το πλαίσιο React Native (βάσει του πλαισίου React), μπορείτε γρήγορα και ανώδυνα να προσπαθήσετε να κυριαρχήσετε στην ανάπτυξη για κινητά. Παρόμοια με τον προγραμματιστή .NET, θα είναι ευκολότερο να κυριαρχήσετε στο πλαίσιο Xamarin.

Η ανάπτυξη μεταξύ πλατφορμών είναι επίσης επωφελής για τον πελάτη - είναι ευκολότερο να βρει κανείς μια ομάδα προγραμματιστών που, ακολουθώντας ένα κοινό μοτίβο, θα αναπτύξει μια εφαρμογή για δύο πλατφόρμες ταυτόχρονα.

Τα πλεονεκτήματα είναι προφανή, αλλά ποια είναι τα μειονεκτήματα της ανάπτυξης πολλαπλών πλατφορμών;! Πιστεύεται ότι όσο πιο περίπλοκη και λεπτή είναι η λειτουργικότητα σε μια εφαρμογή για κινητά, τόσο πιο δύσκολη, αν όχι αδύνατη, η εφαρμογή της με εργαλεία πολλαπλών πλατφορμών - αυτό συχνά υπερτερεί όλων των πλεονεκτημάτων των καθολικών εργαλείων. Από την εμπειρία μου, υπάρχουν αρκετές μεγάλες εταιρείες που, με την ανάπτυξη της εφαρμογής τους, αναγκάστηκαν να εγκαταλείψουν τις cross-platform υπέρ της εγγενούς ανάπτυξης. Έτσι, για μικρά έργα και, ενδεχομένως, εργασίες ανεξάρτητου επαγγελματία, αρκούν γενικές λύσεις, ενώ για μεγάλα έργα ταιριάζουν καλύτερα οι εγγενείς λύσεις.

Η ζήτηση και για τις δύο περιοχές είναι αρκετά υψηλή, αλλά για εγγενή ανάπτυξη είναι κάπως υψηλότερη: κατόπιν αιτήματος της Swift στο hh.ru στη Ρωσία - 369 κενές, Kotlin - 397, React Native - 111, Flutter - 13 Xamarin - 18. Αλλά υπόλοιπο βέβαιος, ένας καλός ειδικός στο Δεν θα υπάρξει δουλειά σε κανέναν τομέα.

Αναβάθμιση Υποβάθμιση

Αρχικά, είναι σημαντικό να σημειωθεί ότι οποιαδήποτε εφαρμογή για κινητά αποτελείται από πολλά επίπεδα:

  • UI - τι βλέπει ο χρήστης.
  • επιχειρηματική λογική - για ποιον σκοπό έχει γραφτεί η εφαρμογή.
  • άλλα στοιχεία πλατφόρμας - εργασία με το δίκτυο, τις βάσεις δεδομένων και άλλα στοιχεία του συστήματος που χρησιμοποιούνται από την επιχειρηματική λογική.

Ανάλογα με τη συγκεκριμένη εφαρμογή, το μέγεθος των εξαρτημάτων σε αυτά τα στρώματα μπορεί να ποικίλλει πολύ. Για παράδειγμα, η εφαρμογή ανάγνωσης ειδήσεων ενός ιστότοπου θα είναι πολύ διαφορετική από έναν πελάτη VPN.

Η ίδια η ανάπτυξη μπορεί να χωριστεί σε τρεις τύπους: εγγενής, πλήρως cross-platform και υβριδική.

εγγενής ανάπτυξη

Στην εγγενή ανάπτυξη, και τα τρία επίπεδα γράφονται χρησιμοποιώντας το ίδιο σύνολο εργαλείων. Ως εκ τούτου, μπορούν να αλληλεπιδρούν μεταξύ τους χωρίς καμία επιπλέον πολυπλοκότητα.

Οφέλη της εγγενούς ανάπτυξης:

Υβριδική Ανάπτυξη

Αυτός ο τύπος ανάπτυξης συνδυάζει και τις δύο προηγούμενες προσεγγίσεις. Το επίπεδο επιχειρηματικής λογικής είναι χτισμένο ως "φορητό" στοιχείο και η ενοποίηση διεπαφής χρήστη και πλατφόρμας δημιουργείται χρησιμοποιώντας τυπικά εργαλεία. Υπάρχουν πολλές γλώσσες για τη σύνταξη γενικής λογικής: C/C++ (ώριμο και ισχυρό), KotlinNative (πολύ ενεργά ανεπτυγμένο) και JavaScript (λιγότερο κοινό).

Πλεονεκτήματα:

  • τα πιο κατάλληλα συστατικά για αυτό παραμένουν εγγενή.
  • Η κοινή λογική δημιουργείται μια φορά.

Ελαττώματα:

  • εάν ένα κοινό στοιχείο θα δημιουργηθεί από μια κινητή ομάδα, τότε είναι απαραίτητο να αποκτήσετε εμπειρία σε άλλη γλώσσα.
  • υπάρχει ένα γενικό κόστος για την ενσωμάτωση στοιχείων πολλαπλών πλατφορμών.

Με ποιο είδος ανάπτυξης είναι καλύτερο να ξεκινήσετε;

Για να απαντήσετε σε αυτήν την ερώτηση, πρέπει να καταλάβετε τι είδους έργα θέλετε να δημιουργήσετε. Τα μικρά έργα μπορούν να είναι καθαρά cross-platform και αυτό θα δικαιολογηθεί πλήρως. Εδώ θα σας συμβούλευα να ρίξετε μια πιο προσεκτική ματιά στο Flutter.

Αλλά σήμερα θα ξεκινούσα με την εγγενή ανάπτυξη. Πρώτον, τα περισσότερα έργα σήμερα δημιουργούνται εγγενώς. Αυτό σημαίνει ότι θα έχετε περισσότερες ευκαιρίες να αλλάξετε έργα/εταιρείες. Δεύτερον, με την πάροδο του χρόνου θα είναι δυνατή η μετάβαση στην ανάπτυξη υβριδικών πολλαπλών πλατφορμών. Αυτό θα σας επιτρέψει να αναπτυχθείτε σε τεχνικά θέματα.

Αναβάθμιση Υποβάθμιση

Κατά τη γνώμη μου, είναι καλύτερο να ξεκινήσετε με τη μητρική και στη συνέχεια, αν το θέλετε πραγματικά, να κατακτήσετε ένα ή περισσότερα εργαλεία πολλαπλών πλατφορμών. Μια εξαίρεση μπορεί να είναι η ανάπτυξη παιχνιδιών, καθώς είναι γραμμένα κυρίως στο Unity και πρόκειται για μια μηχανή πολλαπλών πλατφορμών.

Αν μιλάμε για τα πλεονεκτήματα της εγγενούς ανάπτυξης, τότε για έναν προγραμματιστή σημαίνει λιγότερα εμπόδια και περισσότερα διαφορετικά εργαλεία για εργασία. Θα έχει επίσης περισσότερες πηγές πληροφοριών για την επίλυση σύνθετων ζητημάτων που προκύπτουν κατά τη διαδικασία δημιουργίας μιας εφαρμογής - δεν είναι μυστικό ότι υπάρχουν πολλές περισσότερες συμβουλές και κόλπα για εγγενή ανάπτυξη στο Διαδίκτυο από ό,τι για ανάπτυξη πολλαπλών πλατφορμών.

Για τον τελικό χρήστη, η εγγενής ανάπτυξη σημαίνει ότι η εφαρμογή θα έχει οικείες, προβλέψιμες διεπαφές και μοτίβα συμπεριφοράς - με την προϋπόθεση ότι η εφαρμογή είναι γραμμένη σύμφωνα με όλους τους οδηγούς.

Μια εφαρμογή πολλαπλών πλατφορμών δεν καταφέρνει πάντα να συμμορφώνεται πλήρως με τους οδηγούς και των δύο πλατφορμών και αυτό μπορεί να δημιουργήσει πρόσθετες δυσκολίες για τον προγραμματιστή και τον χρήστη. Το πιο απλό παράδειγμα- η κατάσταση με το κουμπί "Πίσω": στο Android υπάρχει σχεδόν σε όλες τις οθόνες, ενώ στο iOS όχι. Εάν δημιουργήσετε μια εφαρμογή πολλαπλών πλατφορμών χωρίς αυτό το κουμπί, ορισμένοι χρήστες Android ενδέχεται να αισθανθούν δυσφορία.

Αξίζει επίσης να αναφερθούν οι διαφορές στο κόστος ανάπτυξης. Εάν το έργο είναι απλό, τότε η επιλογή της ανάπτυξης πολλαπλών πλατφορμών σάς επιτρέπει να εξοικονομήσετε τον προϋπολογισμό, καθώς, στην πραγματικότητα, δεν αναπτύσσετε ξεχωριστά προϊόντα για διαφορετικές πλατφόρμες, αλλά ένα για όλους. Αλλά εάν το έργο μεγαλώσει, τότε η ζυγαριά αρχίζει να γέρνει προς την άλλη κατεύθυνση και η εγγενής ανάπτυξη μπορεί να είναι πιο κερδοφόρα.

Όσον αφορά την ταχύτητα των εφαρμογών, τα προϊόντα cross-platform είναι πιο αργά. Για παράδειγμα, αυτά που βασίζονται σε τεχνολογίες Ιστού έχουν ως στρώμα ένα πρόγραμμα περιήγησης, το οποίο επιβραδύνει σημαντικά την εφαρμογή.

Αναβάθμιση Υποβάθμιση

Η επιλογή μιας προσέγγισης πολλαπλών πλατφορμών ή εγγενούς προσέγγισης εξαρτάται στην πραγματικότητα από δύο παράγοντες: τη φύση της ανάπτυξης κινητής τηλεφωνίας που εσείς προσωπικά θέλετε να κάνετε ή το αίτημα των εργοδοτών με τους οποίους ενδιαφέρεστε να εργαστείτε. Έτσι, για παράδειγμα, αν κοιτάξουμε το Upwork (μια πλατφόρμα για την εύρεση ειδικών εξ αποστάσεως για έργα και εργασίες), μπορούμε να δούμε μια σαφή υπεροχή των προσφορών προς την κατεύθυνση του Xamarin και του React Native. Τα πλεονεκτήματα εδώ είναι προφανή: είναι φθηνό, γρήγορο και θα σας επιτρέψει να υλοποιήσετε έργα σε όλες τις πλατφόρμες ταυτόχρονα. Ωστόσο, αν λάβουμε υπόψη τις μεγάλες εταιρείες πληροφορικής με την αναζήτηση εργαζομένων στο σπίτι, τότε υπάρχει σημαντική έμφαση στην εγγενή ανάπτυξη, παρά το γεγονός ότι αυτός ο τύπος απαιτεί περισσότερο χρόνο και είναι πιο ακριβός.

Στην εταιρεία μας, δίνουμε προτεραιότητα και επιλέγουμε την εγγενή ανάπτυξη, επειδή επιτρέπει στους σχεδιαστές και τους προγραμματιστές να δημιουργήσουν ένα πιο ομαλό, πιο διαισθητικό UX/UI. Επιπλέον, η εγγενής ανάπτυξη παρέχει πιο ευέλικτο έλεγχο στις λειτουργίες του συστήματος.

Αναβάθμιση Υποβάθμιση

Εάν θέλετε να γίνετε προγραμματιστής κινητών, τότε η απάντηση είναι προφανής: πρέπει να επιλέξετε οποιοδήποτε από τα εγγενή περιβάλλοντα ανάπτυξης και να βασιστείτε στο Objective-C/Swift για iOS ή Java/Kotlin για Android. Σε αυτήν την περίπτωση, όλα τα χαρακτηριστικά του συστήματος είναι στη διάθεσή σας, μπορείτε να ελέγξετε σχεδόν κάθε απόχρωση.

Εάν θέλετε απλώς να γράψετε ένα πρόγραμμα που θα λειτουργεί και σε τηλέφωνα, τότε δεν μπορείτε να σκεφτείτε πολύ και να επιλέξετε σε τι είναι περισσότερο η ψυχή σας ή σε τι έχετε κάποια αξιοσημείωτη εμπειρία: C ++, React Native, Xamarin ή πεντακόσιες χιλιάδες Πλαίσια JS για ανάπτυξη πολλαπλών πλατφορμών. Ή ακόμα και να συνεχίσετε να δημιουργείτε τους δικούς σας [responsive] ιστότοπους.

Για να είμαι ειλικρινής, είμαι μάλλον δύσπιστος σχετικά με την ίδια την ιδέα της ανάπτυξης πολλαπλών πλατφορμών σε τόσο διαφορετικές (και αποκλίνουσες) πλατφόρμες όπως το Android και το iOS. Σε κανέναν από τους πωλητές δεν αρέσουν οι «λάθος» προγραμματιστές που προσπαθούν να καθίσουν σε δύο καρέκλες ταυτόχρονα. Όλοι προσπαθούν να συνδέσουν τους προγραμματιστές με εργαλεία και περιβάλλοντα, και δεν υπάρχει τάση σύγκλισης στο άμεσο μέλλον. Τι να πω, η Apple σε αυτόν τον αγώνα εγκατέλειψε ακόμη και την OpenGL, την πιο cross-platform από όλες τις βιβλιοθήκες μετά την Curl, αλλά τώρα έχει το δικό της Metal, που φαίνεται να κάνει το ίδιο πράγμα, μόνο καλύτερα και σε διαφορετική γλώσσα.

Από την άλλη πλευρά, πολύ συχνά η ανάπτυξη κινητής τηλεφωνίας είναι η δημιουργία δύο εφαρμογών που φαίνονται ίδιες για κάποια υπηρεσία δικτύου. Οι πελάτες δεν είναι πάντα έτοιμοι να πληρώσουν για δύο προϊόντα που φαίνονται εντελώς αδιάκριτα, επομένως η ζήτηση για τεχνολογίες ανάπτυξης πολλαπλών πλατφορμών υπάρχει και, ομολογουμένως, είναι αρκετά υψηλή. Οι προγραμματιστές επίσης δεν είναι αντίθετοι με την εξοικονόμηση χρημάτων, ειδικά αν θέλουν να πουλήσουν μια εφαρμογή για κινητά, δεν υπάρχει καμία επιθυμία να μάθουν Swift / Kotlin, αλλά το JS / C # είναι ήδη στα χέρια τους.

Φυσικά, η ανάπτυξη πολλαπλών πλατφορμών φέρνει μαζί της πολλές μη προφανείς αποχρώσεις. Όλες οι καθολικές λύσεις αναγκάζονται να χτίζουν κάστρα στην άμμο: είτε βασίζονται σε πολύπλοκα και εύθραυστα τεχνολογικές λύσεις(όπως το Xamarin), ή στο κινητό Μηχανές JavaScriptόπως το React Native. Ταυτόχρονα, οι πωλητές πλατφορμών δεν σκέφτονται καν να υποστηρίξουν κάποια από τις λύσεις και κάθε ενημέρωση του εγγενούς SDK είναι μεγάλος πονοκέφαλος για οποιοδήποτε πλαίσιο πολλαπλών πλατφορμών. Για να μην αναφέρουμε χαρακτηριστικά ειδικά για το σύστημα, όπως η πρόσβαση στην κάμερα, το μπρελόκ ή ακόμα και μια συνηθισμένη συλλογή φωτογραφιών, την οποία όλοι προσπαθούν να παρακάμψουν με διάφορους βαθμούς επιτυχίας. Οι προγραμματιστές που επιλέγουν το καθολικό μονοπάτι κρατούνται όμηροι του πλαισίου τους και συχνά η ανάπτυξη που υπόσχεται σημαντικές εξοικονομήσεις μετατρέπεται σε μάχη ενάντια σε γκανιότα.

Επίσης, συχνά σε λύσεις πολλαπλών πλατφορμών συνηθίζεται να θυσιάζουμε αυτό που υποδηλώνεται με τον όρο εμπειρία χρήστη (UX): πολλά πλαίσια προσπαθούν να χρησιμοποιήσουν στοιχεία ελέγχου που είναι όσο το δυνατόν γενικότερα και για τα δύο συστήματα και σχεδόν πάντα αυτή η λύση είναι εξίσου άβολη για όλους . Ή επιβραδύνετε. Ή εκτός μόδας. Ή αδειάζει την μπαταρία. Συνεχίστε τη λίστα μόνοι σας.

Οι εφαρμογές πολλαπλών πλατφορμών ξεχωρίζουν, οι πυρήνες των οποίων είναι γραμμένοι σε χαμηλό επίπεδο, το πιο κοινό για όλα τα λειτουργικά συστήματα: σε γλώσσες όπως η C/C++. Σε αυτήν την περίπτωση, συνηθίζεται να γενικεύεται η χρήση κώδικα που εξυπηρετεί την επιχειρηματική λογική και η διεπαφή γράφεται για κάθε πλατφόρμα ξεχωριστά. Στην ιδανική περίπτωση, θα μπορούσε να αποφευχθεί η αντιγραφή ενός κρίσιμου τμήματος της εφαρμογής, διατηρώντας παράλληλα την εμπειρία χρήστη που είναι συγκεκριμένη για κάθε πλατφόρμα. Ωστόσο, στην πραγματική ζωή τα πράγματα είναι πιο περίπλοκα. Για παράδειγμα, το Dropbox προσπάθησε να ζήσει με έναν πυρήνα χαμηλού επιπέδου για αρκετά συνεχόμενα χρόνια, αλλά τελικά τα παράτησε για πολλούς λόγους και τώρα είναι ευχαριστημένος με τις εγγενείς εφαρμογές πλατφόρμας. Παραπέμπω όσους ενδιαφέρονται στο περίεργο άρθρο τους για αυτό το θέμα.

Κατά τη γνώμη μου, η εξοικονόμηση σε πλατφορμικά πλαίσια είναι πάντα απατηλή. Πιθανώς, σε ορισμένα ασήμαντα έργα, όπου η εφαρμογή είναι απλώς μια έκδοση του κύριου ιστότοπου, εξαιρετικά βελτιστοποιημένη για κινητά, η γενικευμένη προσέγγιση λειτουργεί. Σε άλλες περιπτώσεις, κινδυνεύετε να επαναλάβετε τη μοίρα του Dropbox. Η συμβουλή μου είναι αν θέλετε να γίνετε προγραμματιστής κινητών, επενδύστε στην εκμάθηση της πλατφόρμας. Θα αποδίδουν πάντα, ακόμα κι αν πρέπει να συμμετάσχετε σε ένα έργο cross-platform.

Αναβάθμιση Υποβάθμιση

, Ανώτερος προγραμματιστής λογισμικού, Accenture Tver Technology Center

Η αγορά εφαρμογών για κινητές συσκευές αναπτύσσεται ενεργά και το σύνολο των τεχνολογιών για την ανάπτυξή τους αυξάνεται ανάλογα. Υπάρχουν αρκετά εργαλεία που μπορείτε να χρησιμοποιήσετε.

Για εγγενή ανάπτυξη στην πλατφόρμα Android, υπάρχει Java ή ένα περιτύλιγμα πάνω από το JVM - Kotlin. Για iOS, μπορείτε να χρησιμοποιήσετε το Objective-C ή ένα περιτύλιγμα πάνω του - Swift. Αυτές είναι όλες οι γλώσσες OOP που έχουν κληρονομήσει πολλά από το Smalltalk και το C.

Για ανάπτυξη μεταξύ πλατφορμών, χρησιμοποιείται πλέον το Flutter από την Google, για το οποίο θα πρέπει να γνωρίζετε το Dart. Ή React Native από το Facebook.

Για έναν αρχάριο προγραμματιστή κινητών τηλεφώνων, πιθανότατα, η προηγούμενη εμπειρία του και η γνώση γλωσσών θα είναι ο καθοριστικός παράγοντας. Εάν η Java είναι η βάση της εργαλειοθήκης του, θα μπορεί να μάθει τον κόσμο της ανάπτυξης κινητών μέσω της πλατφόρμας Android πολύ πιο γρήγορα, χρησιμοποιώντας την ίδια Java ή Kotlin.

Ταυτόχρονα, το Objective-C για την ανάπτυξη iOS έχει πάρει πολλά από το Smalltalk, καθώς και από την Java, οπότε αν θέλετε, μπορείτε να κάνετε μια επιλογή υπέρ του iOS. Λάβετε όμως υπόψη ότι η ανάπτυξη Android μπορεί να πραγματοποιηθεί σε Windows ή Linux, αλλά το iOS απαιτεί MacOS X. Αλλά για έναν προγραμματιστή JavaScript με γνώση του React, το React Native είναι προφανώς ο ταχύτερος τρόπος. Όπως και για τους προγραμματιστές του Dart, η επιλογή θα είναι υπέρ του Flutter.

Αφού ένας αρχάριος προγραμματιστής αποκτήσει μια ιδέα για το πώς είναι η ανάπτυξη για κινητά, ποια είναι τα πλεονεκτήματα και τα μειονεκτήματα της επιλεγμένης διαδρομής, θα αποφασίσει μόνος του εάν θα εργαστεί με οποιαδήποτε προσέγγιση ή θα λύσει προβλήματα χρησιμοποιώντας λύσεις πολλαπλών πλατφορμών.

Αυτή η προσέγγιση έχει τα πλεονεκτήματά της: η μέθοδος cross-platform καθιστά δυνατή την κυκλοφορία ενός έργου σε ένα παραγωγικό περιβάλλον λίγο πιο γρήγορα, χρησιμοποιώντας λιγότερους πόρους. Επιπλέον, είναι πιο εύκολο να διατηρηθεί. Αλλά έχει επίσης προφανή μειονεκτήματα τόσο για τον προγραμματιστή όσο και για τον χρήστη. Για παράδειγμα, ένας προγραμματιστής δεν χρειάζεται να γνωρίζει εγγενείς τεχνολογίες, αλλά πρέπει να ληφθούν υπόψη οι οδηγίες πλατφόρμας, καθώς μια εφαρμογή γραμμένη σύμφωνα με τις οδηγίες του iOS θα προκαλέσει δυσκολίες στους χρήστες Android και αντίστροφα.

Οι εφαρμογές μεταξύ πλατφορμών δεν μπορούν να επιτύχουν το ίδιο επίπεδο ενοποίησης συσκευών με τις εγγενείς εφαρμογές. Δηλαδή, εάν η εφαρμογή μιλάει για αλληλεπίδραση με μια συσκευή, όπως κάμερα, ημερολόγιο ή χρήση υπολογιστική ισχύςσυσκευές, είναι ευκολότερο να επιτευχθεί αυτό χρησιμοποιώντας την εγγενή προσέγγιση και θα είναι ταχύτερη και πιο παραγωγική.

Κατά την ανάπτυξη μιας εφαρμογής πολλαπλών πλατφορμών, οι ειδικοί λαμβάνουν υπόψη τις δυνατότητες του πλαισίου, το οποίο επιβάλλει περιορισμούς. Αξίζει επίσης να ληφθεί υπόψη ότι για να αναπτυχθεί ένα προϊόν στις εγγενείς τεχνολογίες, χρειάζονται ειδικοί για κάθε πλατφόρμα.

Εάν εργάζεστε ως ελεύθερος επαγγελματίας ή έχετε στόχο να καλύψετε τον μέγιστο αριθμό συσκευών με τα ελάχιστα κεφάλαια, εστιάστε στην ανάπτυξη πολλαπλών πλατφορμών σε περίπτωση εστίασης σε λύσεις για φορητές συσκευέςή εργασία στο μπροστινό μέρος.

Ποια είναι τα κύρια πλεονεκτήματα και μειονεκτήματα της ανάπτυξης εγγενών και πολλαπλών πλατφορμών για κινητά; Η ίδια η εγγενής ανάπτυξη είναι ακριβή επειδή η εταιρεία πρέπει να επενδύσει σε δύο ομάδες - iOS και Android. Για απλές εφαρμογές, η ταχύτητα ανάπτυξης Flutter / React Native είναι ταχύτερη.

Αλλά το συν είναι ότι η υποδομή είναι ήδη διαμορφωμένη και κατανοητή. Έχετε πρόσβαση σε οποιουσδήποτε πόρους συσκευής και μπορείτε να αναπτύξετε κάτω από έξυπνο ρολόι, αυτοκίνητα και άλλα.

Η ανάπτυξη μεταξύ πλατφορμών είναι επίσης ένα ωραίο πράγμα. Ωστόσο, δεν έχει αναπτυχθεί ακόμη ιδιαίτερα στην αγορά εργασίας πληροφορικής στη Ρωσία. Λογικοί ειδικοί - μετρήστε στα δάχτυλα. Η υποδομή-πλαίσιο είναι νέα, αλλά η κατάσταση σταδιακά αλλάζει προς το καλύτερο. Αυτή η εξέλιξη καθιστά δυνατή την εγγραφή για πολλές συσκευές ταυτόχρονα. Ακόμα κι αν γράφετε σε Flutter, για παράδειγμα, ενσωματώνεται εύκολα με τον εγγενή κώδικα.

Αναβάθμιση Υποβάθμιση

Η ανάπτυξη πολλαπλών πλατφορμών στοχεύει σε γρήγορα αποτελέσματα και σημαντική εξοικονόμηση προϋπολογισμού - γράφουμε έναν κωδικό για όλες τις συσκευές. Οι τομείς εφαρμογής του είναι είτε λύση για εσωτερική χρήση, όπου η χρηστικότητα του προϊόντος δεν είναι τόσο σημαντική και η λειτουργικότητα παίζει κυρίαρχο ρόλο, είτε η δημιουργία ενός γρήγορου «πιλοτικού» έργου, όταν ο πελάτης χρειάζεται να δείξει την αρχή ή ιδέα της εφαρμογής. Επιπλέον, εάν δεν υπάρχει ακριβής κατανόηση σχετικά με τη συσκευή με ποιο λειτουργικό σύστημα θα προβληθεί το πρωτότυπό σας, τότε η ανάπτυξη πολλαπλών πλατφορμών είναι η διέξοδος. Ωστόσο, πρέπει να καταλάβετε εκ των προτέρων ότι όλες οι συσκευές έχουν διαφορετική αρχιτεκτονική, επομένως από φυσική άποψη είναι σχεδόν αδύνατο να εκτελεστεί μια εφαρμογή υψηλής ποιότητας μόνο σε έναν κώδικα πολλαπλών πλατφορμών. Σε πολύπλοκα σενάρια, θα χρειαστεί να γράψετε εγγενή κώδικα. Επιπλέον, λόγω της ιδιαιτερότητάς της, η ανάπτυξη πολλαπλών πλατφορμών συνεπάγεται κόστος που δεν επιτρέπει στην εφαρμογή να είναι όσο το δυνατόν πιο αποτελεσματική. Αυτό είναι κατανοητό, σε αυτήν την περίπτωση, ο ενδιάμεσος κώδικας cross-platform πρέπει να μεταφραστεί για κάθε μία από τις πλατφόρμες, γεγονός που καθιστά την εφαρμογή πιο «βαριά» λόγω του γεγονότος ότι, εκτός από τον λειτουργικό κώδικα, περιέχει και το περιβάλλον εκτέλεσής της.

Πες άλλη γνώμη

Όλα είναι ξεκάθαρα, δείξτε τα συμπεράσματα

Λοιπόν, ποια αναπτυξιακή προσέγγιση πρέπει να ακολουθήσετε;

Όλα εξαρτώνται από την εργασία. Εάν χρειάζεται να γράψετε ένα πρωτότυπο εφαρμογής για πολλές πλατφόρμες ή έκδοση για κινητάστον ιστότοπο, μπορείτε να κοιτάξετε σε πλαίσια πολλαπλών πλατφορμών. Με αυτά, είναι πιθανό να γράψετε μια εφαρμογή πιο γρήγορα από ό,τι με την εγγενή ανάπτυξη, ειδικά αν εργάζεστε σε ένα πλαίσιο παρόμοιο με το συνηθισμένο εργαλείο σας, όπως το React Native.

Από την άλλη πλευρά, η καθολικότητα των εφαρμογών πολλαπλών πλατφορμών πρέπει να αντισταθμιστεί με κάποιο τρόπο. Κάπου εμφανίζεται ένα "μη εγγενές" στοιχείο διεπαφής, κάπου η αλληλεπίδραση με το σύστημα είναι χειρότερη, κάπου η ταχύτητα της εργασίας πέφτει, κ.λπ. Παρά το γεγονός ότι η εγγενής ανάπτυξη απαιτεί περισσότερους πόρους, πολλές εταιρείες το προτιμούν, επειδή στην έξοδο είναι ένα προϊόν πιο σταθερό και με φυσική εμφάνιση.

Από αυτή την άποψη, εάν μόλις ξεκινάτε την ανάπτυξη για κινητά, τότε θα ήταν καλύτερα να κάνετε πρώτα την εγγενή ανάπτυξη. Για αυτό, μπορείτε να βρείτε περισσότερες πληροφορίες στο Διαδίκτυο, θα κατανοήσετε βαθύτερα τις δυνατότητες της πλατφόρμας και δεν θα σας ενοχλούν οι επιμέρους αποχρώσεις της ανάπτυξης πολλαπλών πλατφορμών. Επιπλέον, εάν αποφασίσετε να κάνετε ανάπτυξη πολλαπλών πλατφορμών στο μέλλον, η γνώση που αποκτήσατε σίγουρα δεν θα σας επηρεάσει.

Σας υπενθυμίζουμε ότι μπορείτε να υποβάλετε την ερώτησή σας στους ειδικούς και θα συλλέξουμε απαντήσεις σε αυτήν εάν αποδειχθεί ενδιαφέρουσα. Ερωτήσεις που έχουν ήδη τεθεί μπορείτε να βρείτε στη λίστα ζητημάτων. Εάν θέλετε να ενταχθείτε στις τάξεις των ειδικών και να στείλετε μια απάντηση από την εταιρεία σας ή από εσάς προσωπικά, τότε γράψτε στο , θα σας πούμε πώς να το κάνετε.

Η ανάπτυξη πολλαπλών πλατφορμών σάς επιτρέπει να δημιουργήσετε μια εφαρμογή για κινητά που θα λειτουργεί ταυτόχρονα σε περιβάλλοντα iOS και Android. Αυτή είναι μια εναλλακτική λύση προϋπολογισμού για τη δημιουργία μιας εφαρμογής για κάθε λειτουργικό σύστημα ξεχωριστά.

Χαρακτηριστικά ανάπτυξης πολλαπλών πλατφορμών

Η ανάπτυξη μιας εφαρμογής για διαφορετικές πλατφόρμες είναι καλή και κακή ταυτόχρονα. Λοιπόν, γιατί μπορεί να γίνει πιο γρήγορα και φθηνότερα από πολλές εφαρμογές για κάθε λειτουργικό σύστημα. Και αυτό είναι κακό, γιατί ο συμβιβασμός αντικατοπτρίζεται στη λειτουργία της εφαρμογής.

Αυτά τα χαρακτηριστικά πρέπει να ληφθούν υπόψη πριν από την έναρξη του έργου:

  • Σε περιβάλλον πολλαπλών πλατφορμών, ο κώδικας γράφεται μία φορά. Για να λειτουργήσει η εφαρμογή σε διαφορετικό λειτουργικό σύστημα, ο κώδικας μεταφράζεται σε άλλη γλώσσα προγραμματισμού. Ο χρόνος και τα χρήματα που δαπανώνται για την ανάπτυξη είναι 1,5 φορές λιγότερο.
  • Οι εφαρμογές ενδέχεται να μην λειτουργούν σωστά.Στην ανάπτυξη πολλαπλών πλατφορμών, είναι αδύνατο να ληφθούν υπόψη όλες οι αποχρώσεις της εργασίας με την αρχιτεκτονική κάθε λειτουργικού συστήματος, επομένως οι εφαρμογές μπορούν να λειτουργούν πιο αργά από εκείνες που έχουν σχεδιαστεί ειδικά για iOS ή Android.
  • Η διεπαφή και οι απαιτήσεις σχεδίασης για τα στοιχεία διαφέρουν από λειτουργικό σύστημα σε λειτουργικό σύστημα.. Για παράδειγμα, στο iOS δεν υπάρχει κουμπί επιστροφής, όπως στο Android. Κατά την ανάπτυξη ενός ενοποιημένου σχεδίου, αυτό το σημείο πρέπει να ληφθεί υπόψη: στο iOS, το κουμπί είτε θα παραμείνει, αλλά δεν θα λειτουργεί, είτε θα πρέπει να αποκοπεί χειροκίνητα, και αυτό είναι πρόσθετη εργασία με τον κώδικα.

Τα περισσότερα σφάλματα μετάβασης από τη μια πλατφόρμα στην άλλη επιδιορθώνονται χειροκίνητα, αλλά είναι αδύνατο να επιλυθούν πλήρως τα προβλήματα προσαρμογής σε ένα "μη εγγενές" λειτουργικό σύστημα.

Άρα η ανάπτυξη πολλαπλών πλατφορμών είναι κακή;

Όχι, η ανάπτυξη πολλαπλών πλατφορμών είναι μια χαρά, αρκεί να μην απαιτείς περισσότερα από αυτά από όσα μπορεί να δώσει.

Αυτή η επιλογή μπορεί να επιλεγεί στις ακόλουθες περιπτώσεις:

  • Καλύψτε όλα τα λειτουργικά συστήματα με περιορισμένο προϋπολογισμό.Αν ένα το κοινό-στόχοΧρησιμοποιώντας πιο ενεργά το iOS ή το Android, μπορείτε να ξεκινήσετε με μια εγγενή εφαρμογή για ένα λειτουργικό σύστημα. Εάν η μέγιστη κάλυψη είναι σημαντική αμέσως, είναι προτιμότερο να επιλέξετε την επιλογή cross-platform.
  • Έλεγχος θέσης. Εάν υπάρχει μια πολλά υποσχόμενη ιδέα, αλλά δεν υπάρχει βεβαιότητα ότι θα λειτουργήσει, είναι παρακινδυνευμένο να επενδύσετε αμέσως έναν μεγάλο προϋπολογισμό στην ανάπτυξη. Είναι λογικό να ξεκινήσετε με ανάπτυξη πολλαπλών πλατφορμών, να μελετήσετε τις αντιδράσεις των χρηστών και να λάβετε στρατηγικές αποφάσεις με βάση αυτό.
  • Η εφαρμογή δεν χρησιμοποιεί πολύπλοκα κινούμενα σχέδια και δεν εκτελεί υπολογισμούς.Αυτές οι λειτουργίες φορτώνουν σοβαρά τη συσκευή και η εφαρμογή πολλαπλών πλατφορμών δεν έχει βελτιστοποιηθεί για την πλήρη χρήση των πόρων μιας συγκεκριμένης πλατφόρμας.
  • Η εφαρμογή χρησιμοποιεί μόνο τις βασικές λειτουργίες της συσκευής. Εμφάνιση πληροφοριών, μεταφόρτωση αρχείων, χρήση γεωγραφικής τοποθεσίας, παραγγελία - μια εφαρμογή πολλαπλών πλατφορμών μπορεί να χειριστεί όλα αυτά. Απαιτείται βαθύτερη ενοποίηση των δυνατοτήτων της συσκευής - θα πρέπει να επιλέξετε εγγενή ανάπτυξη.
  • Εταιρική εφαρμογή για εργαζόμενους.Εάν η εφαρμογή έχει αναπτυχθεί για στενές εσωτερικές εργασίες και οι άνθρωποι θα συνεργαστούν μαζί της μέσω προσωπικών gadget, μια εφαρμογή cross-platform θα είναι η καλύτερη επιλογή.

Δεν υπάρχει καθολική απάντηση στο ερώτημα εάν είναι δυνατή η χρήση λύσεων πολλαπλών πλατφορμών για το έργο σας. Συμπληρώστε την παρακάτω φόρμα: θα μελετήσουμε το έργο σας και θα επιλέξουμε την καλύτερη επιλογή για την υλοποίησή του.