Native προγραμματισμός ή Webview

native vs android development

Στο σημερινό άρθρο θα ασχοληθώ με ένα θέμα σχετικό με την ανάπτυξη app και αφορά την επιλογή μεταξύ webview και native προγραμματισμού.

Σίγουρα οι γνώμες διίστανται και γνωρίζω ότι υπάρχει αρκετό κοινό από developers που υποστηρίζουν είτε το ένα είτε το άλλο και μάλιστα φανατικά.

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

Στις native εφαρμογές ο προγραμματιστής έχει περισσότερο έλεγχο και πρόσβαση πάνω στο λειτουργικό σύστημα και γενικότερα στις δυνατότητες της συσκευής. Για παράδειγμα είναι αδύνατο να ελέγξεις πόση είναι η διαθέσιμη μπαταρία ή να ενεργοποιήσεις το accelerator μέσω webview. (Με phonegap, κάποια πράγματα σαφώς και γίνονται άλλα το framework αυτό είναι ένα άρθρο από μόνο του).

Επιπλέον η ταχύτητα σε κάποιες περιπτώσεις της ανταπόκρισης του περιβάλλοντος είναι αισθητή υπέρ του native προγραμματισμού. Από το απλό κλικ μέχρι και τα πιο σύνθετα. Ένας απλός τρόπος για να διαπιστώσετε αυτή την αδυναμία είναι να προσπαθήσετε (πχ μέσω phonegap) να δημιουργήσετε και να διατρέξετε μια λίστα με όλα τα αρχεία της sd card σας. Εκεί θα δείτε πραγματική διαφορά στη ταχύτητα και είναι (φυσικά) λογικό.

native vs android development

Είναι αυτό αρκετό για να επιλέξει κάποιος αυτό το μοντέλο;

Εξαρτατάται από την εφαρμογή που πρέπει να υλοποιήσετε!Το webview έχει το πλεονέκτημα της ταχύτητας υλοποίησης της εφαρμογής (για γνώστες html javascdript css φυσικά ) με ένα αρκετά καλό αποτέλεσμα. Δεν χρειάζεται να ασχοληθείτε ούτε με layouts ούτε με customize components, φτάνει να γνωρίζετε καλή css και html (παρόλα αυτά νομίζω ότι τα πολύ σύνθετα layouts δεν είναι εύκολο να γίνουν χωρίς native προγραμματισμό).

Ένα άλλο μεγάλο πλεονέκτημα του webview είναι ότι πρακτικά δεν χρειάζεται να γνωρίζετε προγραμματισμό σε java ή objective c πέρα από κάποια στοιχειώδη για τη δημιουργία του εκτελέσιμου. Η υλοποίηση γίνεται όντως “παιχνίδι”.

Τέλος και εξίσου σημαντικό είναι ότι (σε κάποιο βαθμό) προσφέρει και ένα είδος αυτονομίας γιατί θεωρητικά θα μπορούσες να έχεις content (html κτλ) σε κάποιο server και έτσι η ενημέρωση να είναι εύκολη και άμεση χωρίς να χρειάζεται να κάνεις συνεχώς update στο store.(το έχω δει πειραματικά)

Όπως ανέφερα και πριν η επιλογή εξαρτάται από το είδος της εφαρμογής προς υλοποίηση. Για ένα app μικρό σε βάθος που βασίζεται πχ στην όμορφη παρουσίαση δεδομένων (πχ μια εφαρμογή ενός ξενοδοχείου) και δεν απαιτεί πολύπλοκες εσωτερικές δομές ή δυνατότητα αξιοποίησης ειδικών χαρακτηριστικών της συσκευής τότε ΝΑΙ σίγουρα η επιλογή του webview (και phonegap) είναι μάλλον η καλύτερη δυνατή επιλογή, πόσο μάλλον αν θες κάτι για περισσότερες από μία πλατφόρμες. Για όλες τις άλλες εφαρμογές νομίζω η επιλογή είναι ξεκάθαρη native και πάλι native.

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

Όπως καταλαβένετε αυτά που γράφω είναι από προσωπική εμπειρία και σε κάποιο βαθμό είναι και υποκειμενικά. Ο κάθε ένας ας γράψει αυτό που θεωρεί καλύτερο και γιατί!

Σε επόμενο άρθρο θα αναφερθώ στο phonegap framework που δίνει σαφώς περισσότερες δυνατότητες από ένα απλό webview και εκεί οι ισσοροπίες σίγουρα αλλάζουν

Κυριάκος Κατσαρής

Msc Μηχανικός Η/Υ τηλεπικοινωνιών και Δικτύων

aByte