ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ. «Προγραμματισμός Διεπαφών Φορητών συσκευών»

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ. «Προγραμματισμός Διεπαφών Φορητών συσκευών»"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΑΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ ΣΤΗΝ ΕΚΠΑΙΔΕΥΣΗ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ «Προγραμματισμός Διεπαφών Φορητών συσκευών» (Mobile Interfaces Programming) ΚΑΖΟΛΕΑ ΙΩΑΝΝΑ ΤΟΥ ΗΛΙΑ ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ : ΔΙΟΝΥΣΙΟΣ ΠΟΛΙΤΗΣ ΘΕΣΣΑΛΟΝΙΚΗ,

2 ΠΕΡΙΛΗΨΗ Προγραμματισμός Διεπαφών Φορητών συσκευών Η παρούσα διπλωματική εργασία έχει ως θέμα τις φορητές συσκευές που έχουν κατακλίσει την ζωή μας και αποτελούν αντικείμενα που χρησιμοποιούμε καθημερινά. Τα έξυπνα κινητά αλλά και οι ταμπλέτες μας παρέχουν λειτουργίες, που καλύπτουν ποικίλες ανάγκες του σύγχρονου ανθρώπου. Οι λειτουργίες αυτές παρέχονται μέσω των εφαρμογών που αναπτύσσονται και μπορεί ο χρήστης να επιλέξει και να εγκαταστήσει στη συσκευή του. Παρουσιάζονται τα επικρατέστερα λειτουργικά συστήματα έξυπνων φορητών συσκευών και επικεντρωνόμαστε στο λειτουργικό σύστημα Android. Αναλύεται το λειτουργικό Android και δίνονται απαντήσεις σε ερωτήματα που καλούνται να δώσουν απαντήσεις οι προγραμματιστές εφαρμογών όπως: τι είναι το Android; Γιατί να επιλέξουν έναντι άλλων λειτουργικών συστημάτων; Ποια είναι τα βασικά χαρακτηριστικά της δομής του; Τι τύπο εφαρμογών να επιλέξουν για την υλοποίηση μιας εφαρμογής; Ποιες τακτικές πρέπει να ακολουθούνται για σωστές σχεδιάσεις διεπαφών εφαρμογών; Η διπλωματική αυτή στόχο έχει εκτός από το να απαντήσει τα παραπάνω ερωτήματα, να δείξει πόσο απλά είναι τα πράγματα προγραμματίζοντας κανείς με το APP Inventor της Google. Αναλύεται το περιβάλλον του App Inventor, πως προγραμματίζουμε Android εφαρμογές με αυτό και αναλύεται πόσο δυνατό εργαλείο είναι στον τομέα της εκπαίδευσης, αλλά και σε άλλους τομείς. Τέλος, με τις εμπειρίες που αποκτήθηκαν αναπτύχθηκε μια εφαρμογή με το εργαλείο App Inventor και περιγράφονται τα βήματα της ανάπτυξης της. Η εφαρμογή αφορά ένα κουίζ γνώσεων για το μάθημα της Γ λυκείου, «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον». 2

3 EXECUTIVE SUMMARY Προγραμματισμός Διεπαφών Φορητών συσκευών This thesis is about mobile devices which have become an indispensable part of our everyday life, some might say. Smartphones and tablets are designed to meet consumer s needs by developing a variety of applications to be selected and installed on the device. In the thesis, the predominant operating systems are being presented, but the main focus is the Android system. The thesis covers an analysis of the Android system, and will attempt to answer questions such as: what is the Android, why choose it over other operating systems, what are the key components of its structure, what type of applications can opt for an implementation, and what tactics should be followed for the proper and user-friendly design of interface applications running on Android? This thesis aims not only to answer the above questions, but also prove how easy it is to develop software by using APP Inventor of Google. The environment of App Inventor is analyzed, and there is a presentation on how to develop Android applications using the aforementioned software, and on how helpful App Inventor is as tool in the field of education, to name but one. Finally, an application was developed with App Inventor. "Developing applications programming environment " is a quiz aimed at tenth grade students; an analytical description of every step of the developing process is included as well. 3

4 ΕΥΧΑΡΙΣΤΙΕΣ Αρχικά θα ήθελα να ευχαριστήσω τον επιβλέποντα καθηγητή της διπλωματικής μου εργασίας, τον Κ. Διονύσιο Πολίτη ο οποίος μου εμπιστεύτηκα την ανάθεση της και για την καθοδήγηση του καθ όλη τη διάρκεια της δημιουργίας της. Επίσης ένα μεγάλο ευχαριστώ χρωστώ στην οικογένεια μου για τη στήριξη καθ όλη τη διάρκεια των σπουδών μου και κυρίως κατά την εκπόνηση της διπλωματικής εργασίας δείχνοντας κατανόηση και υπομονή. Τέλος ευχαριστώ θερμά τα αγαπημένα μου πρόσωπα και το φιλικό μου περιβάλλον και τα οποία μου συμπαραστέκονται καθημερινά. 4

5 Περιεχόμενα ΠΕΡΙΛΗΨΗ... 2 EXECUTIVE SUMMARY... 3 ΕΥΧΑΡΙΣΤΙΕΣ... 4 ΚΕΦΑΛΑΙΟ 1: ΕΙΣΑΓΩΓΗ... 8 ΚΕΦΑΛΑΙΟ 2 : Γλώσσες υπολογιστών Java Πλεονεκτήματα της Java Java VM (Virtual Machine) Χαρακτηριστικά της Java Πλατφόρμα Java Σύγκριση Java και C Java applets Java και συσκευές Ολοκληρωμένα περιβάλλοντα ανάπτυξης (IDEs- Integrated Development Enviroment) Γνωστά IDEs NetBeans IDE IntelliJ IDEA Eclipse JCreator JΒuilder Εικόνα 11. Το περιβάλλον του JCreator Σύγκριση Ολοκληρωμένα περιβάλλοντα ανάπτυξης (IDE- Integrated Development Enviroment) Java έως σήμερα! Java και Android ΚΕΦΑΛΑΙΟ 3: Φορητές συσκευές Smartphones Υπολογιστής ταμπλέτα (tablet) Λειτουργικά συστήματα Smartphone Στατιστικά στοιχεία αγοράς λειτουργικών συστημάτων Μάχη μεταξύ Android και Iphone Τα Μεγάλα "Πλήν" του Android

6 3.5.2 Τα Μεγάλα "Πλην" του ios Πίνακας σύνοψης διαφορών ΚΕΦΑΛΑΙΟ 4: Εφαρμογές Smartphones Ο κατακερματισμός και τα προβλήματα των προγραμματιστών Τύποι εφαρμογών κινητών συσκευών Πλεονεκτήματα-Μειονεκτήματα Native εφαρμογών (Native applications) Πλεονεκτήματα-Μειονεκτήματα Διαδικτυακών εφαρμογών (Web applications) Σύγκριση μεταξύ Native και Web προγραμματισμού ΚΕΦΑΛΑΙΟ 5: Android Ιστορική αναδρομή Τι είναι το Android Αρχιτεκτονική του Android Μηχανισμοί διαχείρισης μνήμης χαμηλής κατανάλωσης Εκδόσεις του Android ΚΕΦΑΛΑΙΟ 6: Διεπαφές χρήστη εφαρμογών Σχεδίαση και Ανάπτυξη Διεπαφής Χρήστη Σχεδίαση διεπαφών στο Android Συσκευές και Layouts Τεχνικές του Android για σωστά Interfaces Διάταξη των στοιχείων της διεπαφής Μέγεθος στοιχείων διεπαφής Παροχή εναλλακτικών πόρων Επιλογή των γραμματοσειρών Τα χρησιμοποιούμενα χρώματα Χρησιμοποιούμενα εικονίδια Εικονίδια εκκίνησης Action Bar Εικονίδια εφαρμογής ΚΕΦΑΛΑΙΟ 7: Εργαλεία προγραμματισμού Android Android SDK (Software Development Kit) Java Eclipse Android SDK Android Development Tool plug-in Android NDK (Native Development Kit)

7 7.3 HyperNext Android Creator App Inventor Android Τι είναι το AppInventor Η γλώσσα προγραμματισμού Kawa Το App Inventor στην εκπαίδευση Περιπτώσεις χρήσης του App Inventor Το περιβάλλον του App Inventor ΚΕΦΑΛΑΙΟ 8: Ανάπτυξη εφαρμογής με το εργαλείο App Inventor Παρουσίαση εφαρμογής Interface και κώδικας εφαρμογής ΚΕΦΑΛΑΙΟ 9: Συμπεράσματα και μελλοντικές προεκτάσεις ΠΑΡΑΡΤΗΜΑ Α: Αναφορές Βιβλιογραφία Web sites ΠΑΡΑΡΤΗΜΑ Β : Πλήρης κώδικας της εφαρμογής «Κουίζ Γνώσεων» στο App Inventor

8 ΚΕΦΑΛΑΙΟ 1: ΕΙΣΑΓΩΓΗ Η εργασία δομείται σε κεφάλαια ως εξής: Στο κεφάλαιο 2 αναφέρεται η γλώσσα προγραμματισμού Java κάνοντας ανασκόπηση στα βασικά χαρακτηριστικά της. Στο κεφάλαιο 3 γνωρίζουμε τις φορητές συσκευές και τα επικρατέστερα λειτουργικά συστήματα αυτών, γίνεται σύγκριση αυτών και με αναφορά σε στατιστικά στοιχεία. Στο κεφάλαιο 4 παρουσιάζονται οι κατηγορίες των εφαρμογών που προορίζονται για κινητές συσκευές και μελετούνται τα υπέρ και τα κατά τους από την σκοπιά του προγραμματιστή καθώς και ποια προβλήματα αντιμετωπίζουν οι προγραμματιστές στη σύγχρονη εποχή. Στο κεφάλαιο 5 αφιερώνεται αποκλειστικά στο Android. Γνωρίζουμε την αρχιτεκτονική του, τις εκδόσεις του και γενικά τα χαρακτηριστικά του. Στο κεφάλαιο 6 γίνεται αναφορά στη διεπαφή χρήστη μιας εφαρμογής και αναλύονται κάποιες στρατηγικές για σχεδίαση σωστών και επιτυχημένων διεπαφών στο Android. Στο κεφάλαιο 7 πραγματεύεται καθαρά τεχνικές και εργαλεία προγραμματισμού Android και αναλύονται τα βασικά χαρακτηριστικά τους. Ένα μεγάλο μέρος αυτού του κεφαλαίου αφιερώνεται στην παρουσίαση του App Inventor. Αναλύονται τα χαρακτηριστικά του, το περιβάλλον και λεπτομέρειες σχετικά με την δημιουργία εφαρμογών με αυτό. Στο κεφάλαιο 8 τέλος παρουσιάζεται η υλοποίηση μιας εφαρμογής «Κουίζ Γνώσεων ΑΕΠ», που αφορά το μάθημα της Γ λυκείου «Ανάπτυξη εφαρμογών σε Προγραμματιστικό περιβάλλον», που υλοποιήθηκε μέσα από το App Inventor. Στο κεφάλαιο 9 παρουσιάζονται τα συμπεράσματα και ιδέες για μελλοντική εργασία. 8

9 ΚΕΦΑΛΑΙΟ 2 : Γλώσσες υπολογιστών 2.1 Java Η ραγδαία εξάπλωση του Internet και του World-Wide Web δημιούργησαν την ανάγκη νέων τρόπων ανάπτυξης και διανομής του λογισμικού. Οι απαιτήσεις αυτές οδήγησαν στην δημιουργία της γλώσσας προγραμματισμού Java, από την εταιρία Sun microsystems TM το Η java είναι μια σύγχρονη αντικειμενοστραφής γλώσσα προγραμματισμού με αρκετά χαρακτηριστικά που δεν συναντώνται σε άλλες γλώσσες. Σχεδιάστηκε με σκοπό την ανάπτυξη εφαρμογών που θα τρέχουν σε ετερογενή δικτυακά περιβάλλοντα χωρίς αλλαγή. Εικόνα 1. Λογότυπο Java Ως γλώσσα βασίστηκε στη C++. Για την ακρίβεια οι δύο γλώσσες έχουν την ίδια σύνταξη με αρκετά όμως πρόσθετα χαρακτηριστικά και διαφοροποιήσεις. 2.2 Πλεονεκτήματα της Java Η Java κατά την πρώτη εμφάνισή της δελέασε τους προγραμματιστές αλλά και τους διευθυντές ανάπτυξης των εταιρειών πληροφορικής με την υπόσχεση ότι θα γράψουν κώδικα μια φορά και θα τρέχει σε οποιοδήποτε PC, σε οποιοδήποτε λειτουργικό σύστημα, ακόμα και σε άλλες συσκευές όπως οι υπολογιστές τσέπης και τα κινητά τηλέφωνα! Η έκφραση «write once, run anywhere» (γράφεις μια φορά και τρέχει οπουδήποτε) είναι ίσως το πιο βασικό μήνυμα που θέλει να περάσει η Sun Java. 9

10 Ένα από τα βασικά πλεονεκτήματα της Java έναντι των περισσότερων άλλων γλωσσών είναι η ανεξαρτησία του λειτουργικού συστήματος και πλατφόρμας. Τα προγράμματα που είναι γραμμένα σε Java τρέχουνε ακριβώς το ίδιο σε κάθε αρχιτεκτονική (δηλαδή συνδυασμό επεξεργαστή και λειτουργικού συστήματος) χωρίς να χρειαστεί να ξαναγίνει μεταγλώττιση (compiling) ή να αλλάξει ο πηγαίος κώδικας για κάθε διαφορετικό λειτουργικό σύστημα (πχ Windows, Linux, Unix, Macintosh). Για να επιτευχθεί όμως αυτό χρειαζόταν κάποιος τρόπος έτσι ώστε τα προγράμματα γραμμένα σε Java να μπορούν να είναι «κατανοητά» από κάθε υπολογιστή ανεξάρτητα του είδους επεξεργαστή (Intel x86, IBM, Sun SPARC, Motorola) αλλά και λειτουργικού συστήματος (Windows, Unix, Linux, BSD, MacOS). Ο λόγος είναι ότι κάθε κεντρική μονάδα επεξεργασίας κατανοεί διαφορετικό κώδικα μηχανής. Ο συμβολικός κώδικας (assembly) που μεταφράζεται και εκτελείται σε Windows είναι διαφορετικός από αυτόν που μεταφράζεται και εκτελείται σε έναν υπολογιστή Macintosh. Η λύση δόθηκε με την ανάπτυξη της Εικονικής Mηχανής (Virtual Machine ή VM ή ΕΜ στα ελληνικά). 2.3 Java VM (Virtual Machine) Μια συνηθισμένη γλώσσα προγραμματισμού (π.χ. C, C++, PASCSAL) μεταγλωττίζει τον πηγαίο κώδικα του προγράμματος σε εκτελέσιμη μορφή που να καταλαβαίνει ο επεξεργαστής. Η μορφή αυτή είναι η γλώσσα μηχανής που καταλαβαίνει ο επεξεργαστής. Η εκτελέσιμη μορφή ενός προγράμματος για ένας συγκεκριμένο επεξεργαστή δεν είναι δυνατό να χρησιμοποιηθεί σε διαφορετικής αρχιτεκτονικής επεξεργαστή, δηλαδή δεν μπορούμε να χρησιμοποιήσουμε το εκτελέσιμο πρόγραμμα για Windows σε ένα σύστημα Macintosh. Έτσι, είναι απαραίτητο η εκ νέου μεταγλώττιση του πηγαίου κώδικα (source code) για κάθε αρχιτεκτονική στην οποία θέλουμε να τρέξουμε το πρόγραμμα. Αντίθετα, αυτό που κάνει την Java ενδιαφέρουσα και διαφορετική από τις άλλες γλώσσες προγραμματισμού είναι ότι περιέχει ένα ολοκληρωμένο περιβάλλον εκτέλεσης των εφαρμογών, που η Sun ονομάζει νοητή μηχανή ή αλλιώς Virtual Machine VM. Η νοητή αυτή μηχανή κάθεται μεταξύ του προγράμματος σε Java και του λειτουργικού συστήματος, προσφέροντας έτσι στο πρόγραμμα έναν εικονικό υπολογιστή. Ο κώδικας της Java εκτελείται σε αυτόν τον νοητό υπολογιστή εγγυώντας μια σταθερή και προκαθορισμένη συμπεριφορά ανεξάρτητα από το λειτουργικό σύστημα ή το hardware. Έτσι οι μεταγλωττιστές της Java μετατρέπουν τον πηγαίο κώδικα όχι απευθείας σε εκτελέσιμο ( π.χ. exe) αλλά σε ένα γενικό κώδικα που είναι ανεξάρτητος από την πλατφόρμα εκτέλεσης. Αυτός ο κώδικας ονομάζεται bytecode. Τα bytecodes είναι 10

11 εντολές σε δυαδική μορφή οι οποίες δεν αντιστοιχούν σε κάποιο συγκεκριμένο λειτουργικό, αλλά στο εικονικό μηχάνημα, το Java Virtual Machine. Το JVM αποτελείται από ένα σύνολο προγραμμάτων, που σκοπός τους είναι να μετατρέψουν τα bytecodes σε οδηγίες για το αντίστοιχο λειτουργικό που θα τα χρησιμοποιήσει. Το κύριο πρόγραμμα του JVM που αναλαμβάνει την παραπάνω λειτουργία είναι ο java interpreter. Το πρόγραμμα αυτό πριν εκτελέσει την μετατροπή των byte codes, εξετάζει την εγκυρότητά τους διασφαλίζοντας έτσι την ομαλή λειτουργία και την ακεραιότητα του συστήματος. Java interpreters, βρίσκονται επίσης ενσωματωμένοι σε διάφορους web browsers, έτσι ώστε να είναι δυνατή η εκτέλεση java κώδικα σε μορφή applet. Εικόνα 2. Java Virtual Machine Το Java Virtual Machine (JVM), μεταφράζει τις εντολές σε πραγματικό χρόνο και τις εκτελεί χρησιμοποιώντας τις βιβλιοθήκες του συγκεκριμένου λειτουργικού συστήματος. Δηλαδή, το JVM υλοποιείται ως πρόγραμμα σε κάθε πραγματικό λειτουργικό σύστημα και αναλαμβάνει να μετατρέψει κάθε εντολή του bytecode σε εντολή του πραγματικού επεξεργαστή (java bytecode to native code translation, όπως ονομάζεται η διαδικασία). Υπάρχουν JVM σχεδόν για κάθε πλατφόρμα (Windows, Linux, Solaris, κ.ά.). Αυτή η διαδικασία της μετατροπής γίνεται κατά την εκτέλεση ενός προγράμματος σε java. 11

12 Άρα τι συμβαίνει όταν εκτελείται μια εφαρμογή σε java; Η νοητή μηχανή διαβάζει τον ενδιάμεσο κώδικα (bytecode) και το μεταφράζει βήμα προς βήμα ή το μεταγλωττίζει για τη συγκεκριμένη πλατφόρμα φορτώνοντας παράλληλα και τις απαραίτητες κλάσεις και βιβλιοθήκες, τις οποίες φυσικά χρησιμοποιεί. Τι σύστημα εκτέλεσης (Runtime system) εκτελεί το μεταφρασμένο ή μεταγλωττισμένο κώδικα, καλώντας πλέον ρουτίνες του συγκεκριμένου λειτουργικού συστήματος. Στο παρακάτω σχήμα απεικονίζεται η διαδικασία της μεταγλώττισης ενός προγράμματος σε C++ και ενός προγράμματος Java Εικόνα 3. διαδικασία της μεταγλώττισης C++ και Java Εικόνα 4. Java Virtual Machine Αυτό το μεγάλο πλεονέκτημα της java, δηλαδή ότι τα αρχεία του πηγαίου κώδικα Java (.java) μεταγλωττίζονται σε αρχεία bytecode, είναι και ταυτόχρονα μειονέκτημα όσον αφορά τους χρόνους εκτέλεσης. Καθώς η διαδικασία αυτή γίνεται κατά την εκτέλεση 12

13 ενός προγράμματος Java, συνεπάγεται ότι είναι γενικά πιο αργή από τις παραδοσιακές γλώσσες προγραμματισμού (π.χ. C++). Αν και αυτό το μειονέκτημα τείνει να ελαχιστοποιηθεί καθώς με σύγχρονες τεχνικές, όπως Just in time (JIT) compilers και εξελιγμένο scheduling των εντολών στο JVM, η απόδοση της java έχει βελτιωθεί σε μεγάλο βαθμό. Για παράδειγμα ένα καλά σχεδιασμένο και καλογραμμένο πρόγραμμα σε Java μπορεί να φτάσει στο 90% της απόδοσης ενός αντίστοιχου προγράμματος σε C++). Παρόλα αυτά δεν θα πάψει να είναι πιο αργή από τις παραδοσιακές γλώσσες. 2.4 Χαρακτηριστικά της Java Αντικειμενοστραφής. Ως αντικειμενοστραφής (object-oriented) η Java εστιάζει τη δραστηριότητα του προγραμματιστεί στο ορισμό αντικειμένων και λειτουργιών πάνω σε αυτά. Στη java ιδιαίτερη σημασία έχει η έννοια της κλάσης. Μια κλάση περιγράφει μια συλλογή δεδομένων καθώς και τις λειτουργίες που αυτά επιδέχονται. Κάθε κλάση προέρχεται από κάποια άλλη ήδη ορισμένη κλάση μέσω κληρονομικότητας (inheritance). Κατ αυτό τον τρόπο, ορίζεται μια ιεραρχία κλάσεων,η οποία έχει στην κορυφή της τη βασική κλάση Object. Μια κλάση είναι απλά μια περιγραφή της μορφής των αντικειμένων τα οποία περιέχει. Αντικείμενα μιας κλάσης μπορούν να οριστούν και να χρησιμοποιηθούν σε ένα πρόγραμμα Java.Κάθε αντικείμενο δημιουργείται κατά τη διάρκεια εκτέλεσης ενός προγράμματος Java και υπάρχει μέχρι να καταστραφεί. Δημιουργία ανεξάρτητων εφαρμογών και applets (applet = προγράμματα που περιλαμβάνονται σε HTML σελίδες και εκτελούνται από τον Web Browser). Είναι Interpreted γλώσσα. Αυτό σημαίνει ότι ο java compiler δεν παράγει εκτελέσιμο κώδικα αλλά μια μορφή ψευδοκώδικα (bytecode) το οποίο από μόνο του δεν τρέχει σε καμία μηχανή. Προκειμένου λοιπόν να εκτελεστεί απαιτείται η χρήση ενός interpreter (=διερμηνέα) για να μετατρέψει το bytecode σε πραγματικό εκτελέσιμο κώδικα. Αυτό το χαρακτηριστικό δίνει τη δυνατότητα στα java bytecodes να μπορούν να τρέξουν σε οποιοδήποτε μηχάνημα, κάτω από οποιοδήποτε λειτουργικό, αρκεί να έχει εγκατασταθεί ένας java interpreter. Επίσης ένα άλλο χαρακτηριστικό του java bytecode είναι το μικρό του μέγεθος, (μόλις λίγα Kilobytes). Αυτό το κάνει ιδανικό για μετάδοση μέσω του δικτύου. 13

14 Κατανεμημένη (distributed). Δηλαδή ένα πρόγραμμα σε Java είναι δυνατό να το φέρουμε από το δίκτυο και να το τρέξουμε. Επίσης είναι δυνατό διαφορετικά κομμάτια του προγράμματος να έρθουν από διαφορετικά sites. Συμπαγής. Η Java έχει σχεδιαστεί ώστε να είναι δυνατή η ανάπτυξη συμπαγούς (compact) και αξιόπιστου λογισμικού. Η γλώσσα έχει ένα ισχυρό σύστημα τύπων, το οποίο επιτρέπει εκτενείς ελέγχους κατά τη διάρκεια της μετάφρασης των προγραμμάτων, βοηθώντας έτσι την ανάπτυξη αξιόπιστου λογισμικού. Ένα άλλο στοιχείο το οποίο βοηθάει την ανάπτυξη αξιόπιστου λογισμικού είναι το μοντέλο μνήμης.η Java δεν παρέχει στον προγραμματιστή εντολές για παραχώρηση και αποδέσμευση μνήμης,ή χρησιμοποίηση δεικτών προς τη μνήμη. Η διαχείριση της μνήμης γίνεται εξολοκλήρου από το σύστημα εκτέλεσης.κατά τη δημιουργία ενός αντικειμένου, το σύστημα εκτέλεσης αναλαμβάνει να δεσμεύσει το απαραίτητο ποσό μνήμης για την αποθήκευση του αντικειμένου. Επιπλέον,όταν το σύστημα εκτέλεσης εντοπίσει κάποιο αντικείμενο το οποίο είναι αδύνατο να προσπελαστεί από οποιοδήποτε σημείο του εκτελούμενου προγράμματος,αναλαμβάνει να αποδεσμεύσει τη μνήμη που καταλαμβάνει το αντικείμενο και να την κάνει διαθέσιμη στο υπόλοιπο πρόγραμμα Ασφαλής (secure). Η Java είναι μια ασφαλής (safe) γλώσσα. Στο δίκτυο όμως ελλοχεύουν πολλοί κίνδυνοι για τον χρήστη παραλήπτη μιας δικτυακής εφαρμογής, γι' αυτό η Java έχει σχεδιαστεί έτσι ώστε να ελαχιστοποιείται η πιθανότητα προσβολής του συστήματος του χρήστη από κάποιο applet γραμμένο για τέτοιο σκοπό. Προγράμματα τα οποία έχουν αναπτυχθεί με αυτήν μπορούν να εκτελεστούν από πολλούς χρήστες με διαφορετικά δικαιώματα πρόσβασης στο σύστημα, χωρίς να είναι δυνατόν να αρπάξουν ανεπιθύμητες παρενέργειες, εκούσιες ή ακούσιες. Αυτό επιτυγχάνεται με ένα ειδικό πρόγραμμα που ονομάζεται ελεγκτής ενδιάμεσου κώδικα (bytecode verifier), ο οποίος ερευνά τον ενδιάμεσο κώδικα και εντοπίζει ύποπτα σημεία, των οποίων η εκτέλεση θα μπορούσε να προκαλέσει ανεπιθύμητες ενέργειες στο υπολογιστικό περιβάλλον του χρήστη. Αυτό είναι αναγκαίο να γίνει, καθ όσον ο ενδιάμεσος κώδικας μπορεί να παραχθεί με πολλούς τρόπους και όχι απαραίτητα με μετάφραση πηγαίου κώδικα από έναν έμπιστο μεταφραστή. Είναι multithreaded. Η εγγενής υποστήριξη πολυνηματικών εφαρμογών είναι ένα χαρακτηριστικό της. Προκειμένου να το επιτύχει αυτό σε συστήματα με έναν 14

15 επεξεργαστή, το Java runtime system (interpreter) υλοποιεί ένα δικό χρονοδρομολογητή (scheduler), ενώ σε συστήματα που υποστηρίζουν πολυεπεξεργασία η δημιουργία των threads ανατίθεται στο λειτουργικό σύστημα. Φυσικά όλα αυτά είναι αόρατα τόσο στον προγραμματιστή όσο και στον χρήστη. Η Java υποστηρίζει πολλαπλά νήματα εκτέλεσης (multi threaded). Τα πολλαπλά νήματα εκτέλεσης αποτελούν ένα προγραμματιστικό μοντέλο για ανάπτυξη λογισμικού, που απαιτεί την ταυτόχρονη εκτέλεση πολλών διεργασιών. Οι διεργασίες μοιράζονται τον ίδιο χώρο μνήμης για την εκτέλεσή τους και τη διαχείριση δεδομένων. Τα πολλαπλά νήματα εκτέλεσης αποτελούν επίσης και μια αποδοτική λύση σε πολλά προβλήματα, αφού συνήθως η εναλλαγή εκτέλεσης ανάμεσα στα διάφορα νήματα δεν είναι ιδιαίτερα δαπανηρή. Παραθυρικές εφαρμογές πού χρησιμοποιούν πολλαπλά νήματα εκτέλεσης παρουσιάζουν βελτιωμένη απόκριση προς το χρήστη και, από προγραμματιστικής άποψης, είναι συνήθως ευκολότερες να αναπτυχθούν. Η υποστήριξη πολλαπλών νημάτων εκτέλεσης απαιτεί την ύπαρξη μηχανισμών συγχρονισμού μεταξύ των νημάτων. Αυτό είναι απαραίτητο προκειμένου να αποφεύγεται η ταυτόχρονη προσπέλαση του ιδίου αντικειμένου, κάτι που επιβάλλεται συνήθως στις περισσότερες εφαρμογές. Υποστηρίζει πολυμεσικές (multimedia) εφαρμογές. Με αυτό εννοούμε ότι η Java παρέχει ευκολίες στη δημιουργία multimedia εφαρμογών. Αυτό επιτυγχάνεται τόσο με την ευελιξίας της σαν γλώσσα όσο και με τις πλούσιες και συνεχώς εμπλουτιζόμενες βιβλιοθήκες της. Η Java καθιστά δυνατή τη μεταφορά εκτελέσιμου περιεχομένου σε εφαρμογές πολύμέσων. Πριν τη Java, οι εφαρμογές πολύ μέσων περιείχαν κείμενο,ακίνητη ή κινούμενη εικόνα,ήχο,κλπ. Αυτό πού έλειπε ήταν η δυνατότητα εκτέλεσης προγραμμάτων στο περιβάλλον του χρήστη. Αυτό το κενό καλύπτεται από τη Java, η οποία επιτρέπει να μεταφερθεί εκτελέσιμος κώδικας και να εκτελεσθεί στον περιηγητή του χρήστη. Ένα πλεονέκτημα είναι ότι κατ αυτό τον τρόπο οι δυνατότητες των περιηγητών μπορούν να επεκταθούν χωρίς περιορισμούς, κάτι που απορρέει επίσης από το ότι η γλώσσα είναι δυναμική Οι σημαντικότερες εκδόσεις της Java, μαζί με τις ημερομηνίες κυκλοφορίας τους είναι: JDK 1.0 (Ιανουάριος 21, 1996) JDK 1.1 (Φεβρουάριος 19, 1997) J2SE 1.2 (Δεκέμβριος 8, 1998) 15

16 J2SE 1.3 (Μάιος 8, 2000) J2SE 1.4 (Φεβρουάριος 6, 2002) J2SE 5.0 (Σεπτέμβριος, 30, 2004) Java SE(standard edition) 6 (Δεκέμβριος 11, 2006) Java SE 7 (Ιούλιος 28, 2011) 2.5 Πλατφόρμα Java Πλατφόρμα είναι το hardware ή software περιβάλλον όπου τρέχει ένα πρόγραμμα. Η Java πλατφόρμα διαφέρει από τις άλλες πλατφόρμες, γιατί είναι μία software-only πλατφόρμα που τρέχει πάνω από άλλες hardware πλατφόρμες. Οι υπόλοιπες πλατφόρμες περιγράφονται σαν συνδυασμός hardware και software. Η πλατφόρμα Java αποτελείται από δύο στοιχεία: την υλοποίηση του Java Virtual Machine (JVM) και το Application Programming Interface (API) Η παρακάτω εικόνα προέρχεται από το site της Oracle Εικόνα 5. API και Java Virtual Machine απομονώνουν το πρόγραμμα από το υποκείμενο υλικό Σύμφωνα με το on-line documentation ένα API είναι μια μεγάλη συλλογή από έτοιμα προγραμματιστικά στοιχεία που παρέχουν την χρήσιμες δυνατότητες στον Java προγραμματιστή να γράψει μια πλήρη διαδραστική εφαρμογή. Είναι δηλαδή βιβλιοθήκες κώδικα που παρέχουν βασικές συναρτήσεις έτοιμες για χρήση. Αυτά τα στοιχεία έχουν την μορφή class και interface τα οποία είναι ομαδοποιημένα σε βιβλιοθήκες. Αυτές οι βιβλιοθήκες είναι γνωστές ως πακέτα (packages). Το ερώτημα που παραμένει είναι πως βρίσκω το κατάλληλο JVM για να το εγκαταστήσω και πως λειτουργεί; Η πλήρη απάντηση βρίσκεται στο on-line tutorial της Oracle ( Σύμφωνα με το online documentation, στη γλώσσα προγραμματισμού Java, ο κώδικας 16

17 μας γράφεται σε απλή μορφή text κειμένου (με την χρήση του Notepad) το οποίο έχει κατάληξη.java. Από το αρχείο αυτό, και εφόσον δεν περιέχει συντακτικά λάθη στις εντολές του, κατά την διαδικασία της μεταγλώττισης (compilation) θα δημιουργηθεί ένα δεύτερο αρχείο με κατάληξη.class. Το.class αρχείο δεν περιέχει κώδικα που μπορεί να καταλάβει ο επεξεργαστής του υπολογιστή σας, αλλά περιέχει bytecodes γλώσσα μηχανής για το Java Virtual Machine (JVM). Στην συνέχεια αναλαμβάνει το JVM να μετατρέψει τα bytecodes σε κατανοητή γλώσσα μηχανής για τον υπολογιστή σας έτσι ώστε να τρέξει επιτυχώς το πρόγραμμα σας. Η παρακάτω εικόνα προέρχεται από το site της Oracle ( Εικόνα 6. Διαδικασίας ανάπτυξης λογισμικού Η πλατφόρμα του JVM θα τεθεί σε λειτουργία όταν κατεβάσετε και εγκαταστήσετε το JRE (Java Runtime Environment) από την ιστοσελίδα της Oracle. Πρέπει όμως να κατεβάσετε το κατάλληλο JRE για το αντίστοιχο λειτουργικό σύστημα που έχετε στον υπολογιστή σας (Windows, Linux, κτλ). Μετά την εγκατάσταση του JRE θα έχουμε την δυνατότητα μόνο να τρέχουμε εφαρμογές java στον σύστημα μας. Για να είμαστε σε θέση να αναπτύσσουμε και να τρέχουμε εφαρμογές τότε θα πρέπει να κατεβάσουμε το JDK (Java Development Kit) το οποίο είναι και το κύριο εργαλείο ανάπτυξης εφαρμογών java αλλά και περιέχει το JRE για να τρέχουμε και να δοκιμάζουμε τις εφαρμογές μας. Η διαδικασία δηλαδή που πρέπει να ακολουθήσουμε είναι: Κατεβάζουμε το JDK εργαλείο ανάπτυξης εφαρμογών Java. Το JDK συμπεριλαμβάνει το JRE έτσι ώστε να δοκιμάζουμε τις εφαρμογές μας. Εκτελώντας την εντολή javac θα ενεργοποιήσουμε την διαδικασία μεταγλώττισης του αρχείου με κατάληξη.java. Ένα δεύτερο καινούργιο αρχείο θα δημιουργηθεί με κατάληξη.class. Το καινούργιο αρχείο αντιπροσωπεύει την εκτελέσιμη έκδοση της εφαρμογής μας. 17

18 Εάν θέλουμε να τρέξουμε την εφαρμογή μας σε διαφορετικό υπολογιστή, τότε απλά εγκαθιστούμε το JRE στο καινούργιο σύστημα και τρέχουμε το αρχείο με κατάληξη.class. Η παρακάτω εικόνα προέρχεται από το site της Oracle ( Εικόνα 7.Μέσω της Java VM, η ίδια εφαρμογή μπορεί να λειτουργεί σε πολλαπλές πλατφόρμες. Το πρώτο βήμα που έχουμε να κάνουμε, έτσι ώστε να έχουμε την δυνατότητα να δημιουργήσουμε εφαρμογές σε Java, είναι να κατεβάσουμε την τελευταία έκδοση του JDK από την Oracle ( 7u2-download html). Για παράδειγμα αν χρησιμοποιήσω java σε υπολογιστή που έχει Windows λειτουργικό σύστημα, θα κατεβάσω την Windows έκδοση του JDK. 2.6 Σύγκριση Java και C++ Η Java μοιάζει πολύ με την C++, με τους δημιουργούς της να μην κρύβουν ότι θέλησαν να φτιάξουν μια γλώσσα ίδια με τη C++ αλλά με την πλήρη υποστήριξη των αντικειμένων και του αντικειμενοστραφούς προγραμματισμού από την αρχή. Ας μην ξεχνάμε ότι η C++ αποτελεί εξέλιξη της C μια γλώσσα που γράφτηκε πριν από δεκαετίες (μεταξύ του 1969 και του 1973) και που όπως είναι φυσικό δεν είχε λάβει υπόψη της τα αντικείμενα. Η java επιτρέπει, και πολλές φορές επιβάλλει στους 18

19 προγραμματιστές τις πρακτικές του σωστού αντικειμενοστραφούς προγραμματισμού, χαρακτηριστικό που οδηγεί σε πολύ καλύτερα αποτελέσματα. Η ομοιότητα με τη C++ επιτρέπει στις εταιρείες κατασκευής λογισμικού να μεταφέρουν τις εφαρμογές τους εύκολα και γρήγορα στην πλατφόρμα Java. Ένας γνώστης της C++ δεν θα είχε κανένα πρόβλημα να διαβάσει κώδικα σε java. Όπως και στη C++ έτσι και στη Java οι περισσότερες από τις συναρτήσεις του συστήματος έρχονται σε έτοιμες βιβλιοθήκες (run time library). Είναι οι βιβλιοθήκες αυτές που εξασφαλίζουν στον προγραμματιστή έναν ενιαίο τρόπο διαχείρισης της επικοινωνίας με το χρήστη, την επικοινωνία με τα δίκτυα και πολλά άλλα. Στη Java η συνέπεια σε αυτές τις βιβλιοθήκες είναι το χαρακτηριστικό που επιτρέπει την εκτέλεση μιας εφαρμογής σε πολλές πλατφόρμες. Στην κακή υλοποίηση αυτών των βιβλιοθηκών εστιάστηκε και η δικαστική διαμάχη της Sun εναντίον της Microsoft, καθώς η πρώτη υποστήριξε ότι το προϊόν της άλλαξε σε αντίθεση με τη συμφωνία των δύο εταιρειών. Το αποτέλεσμα ήταν να κερδίσει τη δικαστική διαμάχη η Sun, η οποία από το 1996 δίνει τη στάμπα της με το σταγονόμετρο, μετά από ιερά εξέταση και αφού έχει πλήρως επιβεβαιώσει τη συμμόρφωσή τους με τις δικές τις προδιαγραφές. Αν και η Java έχει βασιστεί σε μεγάλο βαθμό στη C++ έχει ορισμένες σημαντικές διαφορές, συγκεκριμένα: Java Παράγει Java Bytecode Portable C++ Παράγει Native code Απαιτείται εκ νέου μεταγλώττιση Ασφαλής (τρέχει μέσω του JVM) Μόνο όσους χρειάζεται ορίζει το λειτουργικό σύστημα Εκτέλεση κώδικα Java από το Web, Applets Δεν είναι δυνατή η εκτέλεση κώδικα μέσα από το Web 2.7 Java applets Η Java μπορεί να χρησιμοποιηθεί τόσο για αυτόνομες εφαρμογές όσο και για εφαρμογές που εκτελούνται αποκλειστικά στο Web και αποκαλούνται μικροεφαρμογές ή αλλιώς applets. 19

20 Αυτόνομες εφαρμογές μπορούν να εκτελεστούν απ ευθείας από το διερμηνέα της γλώσσας. Αυτό φυσικά προϋποθέτει την ύπαρξη του διερμηνέα, αλλά διερμηνείς της Java έχουν αναπτυχθεί για πολλά περιβάλλοντα. Από προγραμματιστικής πλευράς ο προγραμματιστής αρκεί να ορίσει μια κλάση η οποία να περιέχει μια μέθοδο με όνομα main.όταν ο διερμηνέας κληθεί με το όνομα αυτής της κλάσης, η εκτέλεση θα αρχίσει από αυτή τη μέθοδο. Τα Applets είναι μικρά προγράμματα που εκτελούνται μέσω ενός περιηγητή. Το μέγεθός τους είναι συνήθως μικρό καθώς έχουν σχεδιαστεί για να «κατεβαίνουν» από το Internet και μετά να εκτελούνται τοπικά. Οι περιηγητές πρέπει να είναι σε θέση να αναγνωρίζουν και να εκτελούν ενδιάμεσο κώδικα Java. Ένα applet είναι ένα αντικείμενο που προέρχεται από κάποια υποκλάση της Applet. Σελίδες HTML μπορούν να περιέχουν applets, που μπορούν να μεταφέρονται μέσω του δικτύου και να εκτελούνται. Οι σελίδες προσδιορίζουν τις συντεταγμένες της οθόνης όπου θα εμφανιστεί και θα εκτελεστεί το applet. Ένα applet περιέχει ορισμένες μεθόδους που καλούνται όταν συμβούν κάποια γεγονότα, όπως πχ. το πάτημα του πλήκτρου του ποντικιού πάνω στο applet. Η Java προσφέρει ακόμα ένα πλεονέκτημα, που δεν έχει αφήσει ασυγκίνητους τους κατασκευαστές λογισμικού. Δεν θα βρείτε καμία διαφορά χρησιμοποιώντας πόρους, μεταβλητές και κλάσεις από τον ίδιο υπολογιστή, από το τοπικό δίκτυο ή ακόμα και από το Internet. Έτσι η Java αναδεικνύεται σε ένα ιδιαίτερα λειτουργικό εργαλείο στους Network Computers, όπου η επεξεργασία και η αποθήκευση των πληροφοριών γίνεται από το κεντρικό σύστημα, με το NC να χρησιμοποιείται για την εμφάνιση των στοιχείων. 2.8 Java και συσκευές H Java έχει γίνει ένα από τα πιο γνωστά εμπορικά σήματα και ήδη είναι η ευρύτερα διαδεδομένη τεχνολογία στο τομέα της. Μπορεί να υποστηρίξει και άλλες συσκευές εκτός από υπολογιστές, όπως παιχνίδια, έξυπνα κινητά τηλέφωνα (smartphones), οικιακές συσκευές και αυτοκίνητα. Μια εφαρμογή σε java μπορεί να έχει τοποθετηθεί στο κινητό τηλέφωνο, στη μνήμη ROM, ή να μεταφερθεί σε πραγματικό χρόνο με ασύρματη επικοινωνία. Παραδείγματα είναι μια εφαρμογή θερμιδομετρητή για κινητά, τα ημερολόγια με τα ραντεβού κ.α. Η εκτέλεση της μικρής αναγκαστικά εφαρμογής για να χωρέσει στη μνήμη ενός τηλεφώνου ακολουθεί τη γνωστή μέθοδο της Java. Ένα ειδικό λογισμικό προσφέρει την επικοινωνία της εφαρμογής με την οθόνη του κινητού. 20

21 Η νοητή μηχανή της Java που είναι πλέον ενσωματωμένη στο λειτουργικό σύστημα του κινητού εκτελεί την εφαρμογή και ελέγχει την επικοινωνία με το χρήστη. Οι εφαρμογές τις Java δεν σταματάνε εδώ. Υπάρχουν λύσεις και προγράμματα για άλλες συσκευές ακόμα και για μικροσυσκευές με την picojava, που απευθύνεται σε ολοκληρωμένα κυκλώματα, για να αποτελέσουν την καρδιά καταναλωτικών προϊόντων. Προϊόντα που θα διαθέτουν εξυπνάδα και φυσικά θα τρέχουν εφαρμογές Java. Στην περίπτωση μιας επιχείρησης, η τεχνολογία Java αποτελεί επιλογή, για την απόδοση, την αποτελεσματικότητα και την ευελιξία. 2.9 Ολοκληρωμένα περιβάλλοντα ανάπτυξης (IDEs- Integrated Development Enviroment) Για τη δημιουργία κάποιου προγράμματος σήμερα αυτό που είναι απαραίτητο είναι η ύπαρξη κάποιου είδους κειμενογράφου και ενός μεταγλωττιστή (compiler) ή διερμηνέα (interpreter) μέσω του οποίου θα είναι δυνατή η μετατροπή του κώδικα από υψηλού επιπέδου γλώσσα σε γλώσσα μηχανής. Έτσι για παράδειγμα, για την ανάπτυξη μίας Java εφαρμογής σε ένα windows σύστημα αρκεί η ύπαρξη ενός σημειωματάριου (notepad) και η εγκατάσταση της επιθυμητής έκδοσης της Java Virtual Machine. Σε αυτήν την περίπτωση ο προγραμματιστής κατά την διάρκεια της ανάπτυξης της εφαρμογής του θα πρέπει να μεταγλωττίζει και να τρέχει την εφαρμογή μέσω της γραμμής εντολών ξανά και ξανά, έχοντας ως μόνο του βοηθό στην περίπτωση ύπαρξης κάποιου σφάλματος τα μηνύματα σφάλματος του μεταγλωττιστή. Αυτό σημαίνει την κατανάλωση πολύ χρόνου και κόπου ακόμη και για τις πιο απλές εφαρμογές. Όσο το μέγεθος και η πολυπλοκότητα των εφαρμογών (άρα και του κώδικα) αυξάνεται, τα μεγέθη αυτά αυξάνονται σχεδόν εκθετικά, πράγμα που καθιστά αυτή τη μέθοδο ανάπτυξης μη πρακτική. Για παράδειγμα στη Java ένα αντικείμενο μπορεί να έχει χιλιάδες μεθόδους που είναι αδύνατον να τις θυμόμαστε όλες. Δεν χρειάζεται πλέον, τις θυμάμαι το ολοκληρωμένο περιβάλλον ανάπτυξη- IDE! Έτσι η λύση σε αυτό το πρόβλημα δίνουν τα ολοκληρωμένα περιβάλλοντα ανάπτυξης λογισμικού (Integrated Development Environment), ευρέως γνωστά ως IDEs. Τα IDEs είναι ολοκληρωμένες εφαρμογές μέσα στις οποίες μπορεί να πραγματοποιηθεί κάθε απαραίτητη διαδικασία για την ανάπτυξης μίας εφαρμογής. Συνδυάζουν τα χαρακτηριστικά πολλών εργαλείων σε ένα πλήρες πακέτο διευκολύνοντας και επιταχύνοντας την εργασία του προγραμματιστή. Επίσης είναι σχεδιασμένα να 21

22 μεγιστοποιούν την παραγωγικότητα του προγραμματιστή παρέχοντας ισχυρά συνδεδεμένα συνιστούντα μέρη με παρόμοια διεπαφή χρήστη. Αυτό σημαίνει πως ο προγραμματιστής, στην περίπτωση που χρησιμοποιούνται διαφορετικά προγράμματα ανάπτυξης, καταβάλλει λιγότερη προσπάθεια να μεταβεί από το ένα πρόγραμμα στο άλλο. Ωστόσο, επειδή ένα IDE είναι από τη φύση του πολύπλοκο, η παραγωγικότητα του προγραμματιστή αυξάνεται όσο αποκτά μεγαλύτερη γνώση και οικειότητα από την χρήση αυτού του εργαλείου. Οι συνηθέστερες λειτουργίες που παρέχονται είναι η συγγραφή του κώδικα, η τροποποίησή του, η μεταγλώττισή του, η εκτέλεσή του καθώς και κάποια διαδικασία εντοπισμού σφαλμάτων. Ο βασικός σκοπός τους είναι να περιορίσουν και κατά κάποιο τρόπο να κρύψουν όλες τις ρυθμίσεις που χρειάζονται για το συντονισμό των διαφορετικών κομματιών, ο συνδυασμός των οποίων είναι απαραίτητος για την επιτυχημένη εκτέλεση μίας εφαρμογής. Αυτό έχει σαν συνέπεια την ευκολότερη εκμάθηση μιας γλώσσας προγραμματισμού καθώς και την αύξηση της παραγωγικότητας Γνωστά IDEs Τα τελευταία χρόνια έχουν αναπτυχθεί πολλά ολοκληρωμένα περιβάλλοντα ανάπτυξης λογισμικού για την Java: Μερικά από τα διασημότερα και ευρύτερα χρησιμοποιούμενα είναι τα παρακάτω: NetBeans IDE To NetBeans IDE είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης εφαρμογών που βασίζεται στην πλατφόρμα NetBeans. Η πλατφόρμα NetBeans IDE επιτρέπει την ανάπτυξη της εφαρμογής NetBeans IDE από ένα σύνολο συστατικών μονάδων λογισμικού που ονομάζονται modules. Ένα module είναι ένα συμπιεσμένο αρχείο Java το οποίο περιέχει κλάσεις, που είναι προορισμένες να αλληλεπιδρούν με NetBeans Open APIs, και ένα αρχείο που το χαρακτηρίζει ως module. Εφαρμογές που έχουν αναπτυχθεί πάνω σε modules μπορούν να επεκταθούν προσθέτοντας νέα modules. 22

23 Εικόνα 8. NetBeans IDE Το περιβάλλον του NetBeans IDE Το NetBeans IDE διανέμεται δωρεάν και είναι λογισμικό ανοιχτού κώδικα. Υποστηρίζει την ανάπτυξη όλων των ειδών εφαρμογών Java (lava SE, web, EJB και mobile εφαρμογές). Επιπλέον, υποστηρίζει την ανάπτυξη εφαρμογών με την χρήση του Ant τον έλεγχο εκδόσεων, με την χρήση των CVS, Subversion, Mercurial και Clearcase, και την επεξεργασία κώδικα (refactoring). Όλες οι λειτουργίες του IDE παρέχονται από τα modules. Κάθε module παρέχει μία απαιτούμενη λειτουργία όπως υποστήριξη ανάπτυξης εφαρμογών Java, επεξεργασία κώδικα, υποστήριξη συστημάτων διαχείρισης εκδόσεων CVS και SVN. Το NetBeans IDE παρέχει όλα τα απαιτούμενα modules για την ανάπτυξη εφαρμογών Java στο αρχικό πακέτο που κατεβάζει κανείς, το οποίο επιτρέπει στον χρήστη να αρχίσει άμεσα την ανάπτυξη μιας εφαρμογής. Τα modules επιτρέπουν την επέκταση του IDE. Νέες λειτουργίες, όπως η υποστήριξη επιπλέον γλωσσών προγραμματισμού μπορούν να προστεθούν μετά την αρχική εγκατάσταση. 23

24 Στην ηλεκτρονική διεύθυνση μπορείτε να κατεβάσετε και να εγκαταστήσετε την τελευταία έκδοση του Netbeans. Τα σημαντικότερα χαρακτηριστικά του είναι: Καλύτερη υποστήριξη για τις τελευταίες τεχνολογίες Java Είναι η πρώτη ελεύθερη IDE που παρέχει στήριξη για την JDK 8, JDK 7, Java EE 7 περιλαμβανομένων των σχετικών αναβαθμίσεων της HTML5, και JavaFX 2. Με τη συνεχή βελτίωση του Java Editor, πολλά πλούσια χαρακτηριστικά και ένα ευρύ φάσμα εργαλείων, templates και δειγμάτων, το NetBeans IDE καθορίζει τα πρότυπα για την ανάπτυξη τεχνολογιών αιχμής Γρήγορη και έξυπνη επεξεργασία κώδικα Ένα IDE είναι κάτι πολύ περισσότερο από ό, τι ένα πρόγραμμα επεξεργασίας κειμένου. Το NetBeans ξεχωρίζει γραμμές, λέξεις και φράσεις, και τονίζει τον πηγαίο κώδικα συντακτικά και σημασιολογικά. Παρέχει, επίσης, code templates, συμβουλές και εργαλεία refactoring. Ο συντάκτης υποστηρίζει πολλές γλώσσες από την Java, C / C + +, XML και HTML, για την PHP, Groovy, Javadoc, JavaScript και JSP. Επειδή ο συντάκτης είναι επεκτάσιμος, μπορείτε να κάνετε σύνδεση για την υποστήριξη πολλών άλλων γλωσσών. Εύκολη και αποτελεσματική διαχείριση του έργου Οι μεγάλες εφαρμογές, με χιλιάδες φακέλους και αρχεία, και εκατομμύρια γραμμές κώδικα, είναι ένα δύσκολο έργο. Το NetBeans IDE παρέχει διαφορετικές προβολές των δεδομένων, από πολλαπλά παράθυρα για τη δημιουργία εφαρμογών και τη διαχείρισή τους αποδοτικά, επιτρέποντάς να εστιάσετε στα δεδομένα γρήγορα και εύκολα. Ακόμα και εάν νέοι προγραμματιστές ενταχθούν στο έργο σας, μπορούν να κατανοήσουν τη δομή επειδή ο κώδικας είναι καλά οργανωμένος. Η ταχεία ανάπτυξη User Interface Διαθέτει για τον σχεδιασμός GUIs(γραφικών διεπαφών χρήστη) για Java SE, HTML5, Java EE, PHP, C / C + +, και Java ME γρήγορα και εύκολα χρησιμοποιώντας συντάκτες και drag-and-drop εργαλεία στο IDE. Για τις εφαρμογές Java SE, το NetBeans GUI Builder φροντίζει αυτόματα τη σωστή απόσταση και την ευθυγράμμιση, ενώ υποστηρίζει και επί τόπου επεξεργασία 24

25 Εντοπισμός σφαλμάτων κώδικα Το κόστος του προβληματικού κώδικα αυξάνει όσο περισσότερο παραμένει στερεωμένη. NetBeans παρέχει στατικά εργαλεία ανάλυσης, το εργαλείο που χρησιμοποιείται ευρέως είναι το FindBugs, για τον εντοπισμό και τον καθορισμό κοινών προβλημάτων σε κώδικα Java. Το NetBeans Profiler παρέχει εξειδικευμένη βοήθεια για τη βελτιστοποίηση της ταχύτητας της εφαρμογής και τη χρήση της μνήμης, και το καθιστά ευκολότερο να κτιστούν αξιόπιστη και επεκτάσιμες Java SE, JavaFX και Java EE εφαρμογές. Περιλαμβάνει ένα οπτικό αποσφαλματωτή για τις εφαρμογές Java SE, επιτρέποντάς σας να διορθώσετε user interfaces, χωρίς να ψάχνετε σε πηγαίο κώδικα. Απλά παίρνοντας GUI στιγμιότυπα των εφαρμογών σας και με κλικ στα στοιχεία διεπαφής χρήστη μπορεί να μεταβεί πίσω στο σχετικό κώδικα. IntelliJ IDEA Το IntelliJ είναι ένα αρκετά δημοφιλές εμπορικό ολοκληρωμένο περιβάλλον ανάπτυξης λογισμικού, κυρίως για Java εφαρμογές. Εκτός της Java παρέχει υποστήριξη και για άλλες γλώσσες προγραμματισμού όπως JavaScript, HTM- L/XHTML/CSS, XML/XSL, Ruby. Επιπλέον της ασικής έκδοση της Java υποστηρίζεται η χρήση πολλών τεχνολογιών και περιβάλλοντων εργασίας όπως Spring, Hibernate, Web Services, Struts, JSP, JSF, EJB, AJAX. Στο πακέτο παρέχεται ένας αναπτυγμένος κειμενογράφος ο οποίος προσφέρει κάποιες πολύ χρήσιμες υπηρεσίες. Τέτοιες είναι η αυτόματη παραγωγή κώδικα,η ανάλυση κώδικα κατά την ώρα πληκτρολόγησης, ο αυτόματος σχολιασμός σύμφωνα με το πρότυπο της Java και ο έλεγχος λαθών και πιθανών παραλήψεων κατά την ώρα πληκτρολόγησης. 25

26 Εικόνα 9. Περιβάλλον IntelliJ Το περιβάλλον του intellij IDEA Το IntelliJ, όπως και τα περισσότερα IDEs, προσφέρει πολλά εργαλεία που διευκολύνουν τη συγγραφή κώδικα. Η αυτόματη παραγωγή κώδικα, όπως η δημιουργία μεθόδων δημιουργών σε κλάσεις, η ανάλυση και ολοκλήρωση κώδικα, ο έλεγχος λαθών κατά την διάρκεια της πληκτρολόγησης, ο αυτόματος σχολιασμός σύμφωνα με το πρότυπο της Java είναι λειτουργίες που βοηθούν τον προγραμματιστή να αυξήσει την παραγωγικότητα του και μειώνουν τον κίνδυνο λαθών. Επιπλέον δίνεται η δυνατότητα χρήσης εργαλείων που βοηθούν την παρακολούθηση της πορείας ανάπτυξης του κώδικα καθ όλη τη διαδικασία παραγωγής. Υποστηρίζεται η χρήση αρκετών γνωστών συστημάτων διαχείρισης εκδόσεων (Version Control Systems), ενώ παράλληλα παρέχεται ένα ισχυρό εργαλείο παρακολούθησης της τοπικής ιστορίας. Επιπλέον, υπάρχουν ενσωματωμένα περιβάλλοντα για το χτίσιμο της εφαρμογής (Ant/Maven), για τον έλεγχο της εφαρμογής μέσω δοκιμών μονάδας Junit 26

27 και συστήματα διαχείρισης εκδόσεων, ενώ τέλος προσφέρεται ένα πολύ εύχρηστο περιβάλλον μεταγλώττισης, εκτέλεσης και αποσφαλμάτωσης (debugging). Eclipse Το Eclipse είναι μία πλατφόρμα ανάπτυξης λογισμικού η οποία διατίθεται δωρεάν, είναι ανοιχτού κώδικα και αποτελείται από ένα IDE και ένα plug-in σύστημα ώστε να είναι εύκολη η επέκτασή της. Υποστηρίζει πολλές γλώσσες προγραμματισμού κάποιες από τις οποίες είναι:c, C++, COBOL, Python, Perl, PHP. Η ανάπτυξή του έχει γίνει σε γλώσσα Java και χρησιμοποιείται για την ανάπτυξη εφαρμογών σε Java, αλλά με την χρήση διάφορων plug-ins, και σε άλλες γλώσσες όπως: C, C++, COBOL, Python, PHP. Εικόνα 10. Το περιβάλλον του Eclipse Το περιβάλλον του Eclipse Στα δυνατά του σημεία περιλαμβάνεται η αυτόματη συμπλήρωση κώδικα βασισμένη σε συμβάσεις που χρησιμοποιούνται από τους προγραμματιστές. Ανάμεσα στα αρκετά 27

28 θετικά του, ένα επιπλέον είναι η πλήρης φορητότητα του ως εφαρμογή και η υποστήριξη της για όλες τις γνωστές πλατφόρμες. To Eclipse χρησιμοποιεί plug-ins για να παρέχει περισσότερες λειτουργίες πέρα από το σύστημα runtime, σε αντίθεση με άλλες εφαρμογές που η λειτουργικότητα τους είναι καθορισμένη. Ο μηχανισμός plug-in που χρησιμοποιεί είναι ένα ελαφρύ πλαίσιο εργασίας που αποτελείται από πολλές συνιστώσες. Εκτός από την δυνατότητα που δίνει στο Eclipse να επεκτείνει τη χρήση του και σε άλλες γλώσσες προγραμματισμού, επιτρέπει την εργασία με: στοιχειοθετικές γλώσσες όπως η LaTeX, διαδικτυακές εφαρμογές όπως η telnet, και συστήματα διαχείρισης βάσεων δεδομένων. Η αρχιτεκτονική του plug-in υποστηρίζει την συγγραφή αρχείων οποιαδήποτε κατάληξης στο περιβάλλον του Eclipse. Το Eclipse υποστηρίζει από την αρχή τη γλώσσα Java και το σύστημα διαχείρισης εκδόσεων CVS, με την υποστήριξη του Subversion να είναι διαθέσιμη από εξωτερικά plug-ins. Το Eclipse SDK περιλαμβάνει τα Eclipse Development Tools, τα οποία παρέχουν ένα IDE με ενσωματωμένο μεταφραστή της Java και με ένα πλήρες μοντέλο των αρχείων πηγαίου κώδικα της Java. Αυτό επιτρέπει την χρήση προχωρημένων τεχνικών αλλαγής και ανάλυσης κώδικα. Επιπλέον, το IDE χρησιμοποιεί ένα workspace, το οποίο είναι ένα σύνολο μεταδεδομένων για ένα καθορισμένο αριθμό αρχείων, επιτρέποντας τις τροποποιήσεις των αρχείων έξω από το IDE εφόσον το αντίστοιχο workspace ενημερωθεί αμέσως μετά τις αλλαγές. Στο επίσημο site της eclipse μπορούμε να κατεβάσουμε και να εγκαταστήσουμε την τελευταία έκδοση του Eclipse ( Η εγκατάσταση του Eclipse είναι πολύ εύκολη και δεν απαιτείται ούτε καν installer γι αυτό και για να δουλέψει χρειάζεται το JRE (Java Runtime Enviroment). JCreator Το γραφικό ενδιάμεσο του JCreator φαίνεται στην εικόνα και αποτελείται από τέσσερα βασικά τμήματα: Το τμήμα File View που παριστάνει σε δενδρική μορφή όλα τα αρχεία που μπορεί ένα περιέχει ένα project. 28

29 Εικόνα 11. Το περιβάλλον του JCreator Επιτρέπει την προσθήκη νέων κλάσεων στο project μέσω προτύπων και πλαισίων διαλόγου. Το τμήμα Data View παρέχει μια σύνοψη της δομής της τρέχουσας κλάσης με τη μορφή ενός δένδρου και επιτρέπει τη προσθήκη μεθόδων και μεταβλητών μελών στην κλάση με τη βοήθεια πλαισίων διαλόγου. Και το τμήμα Code View. Το JCreator παρέχει τη δυνατότητα εμφάνισης αρίθμησης των γραμμών του πηγαίου κώδικα, αυτόματη στοίχιση, συμπλήρωση λέξεων κατά την πληκτρολόγηση και απόκρυψη τμημάτων κώδικα, για παράδειγμα του σώματος μιας μεθόδου. Το τμήμα που εκτείνεται κατά μήκος του κάτω μέρους του παραθύρου περιλαμβάνει πληροφορίες που σχετίζονται με αποτελέσματα εξόδου των εφαρμογών Java (General Output) καθώς επίσης και με αποτελέσματα εξόδου ύστερα από τη μεταγλώττιση ενός αρχείου (Build Output). Δεν περιλαμβάνει εργαλείο αποσφαλματωτή του κώδικα και κατά συνέπεια δεν υποστηρίζει βηματική εκτέλεση του κώδικα. Η έκδοση JCreator pro (shareware έκδοση ) περιλαμβάνει αποσφαλματωτή και επιπλέον λειτουργίες. JΒuilder 29

30 Το JBuilder είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης (IDE) για τη γλώσσα προγραμματισμού Java από την Embarcadero Technologies. Αρχικά αναπτύχθηκε από την Borland JBuilder αλλά τελικά αγοράστηκε από την Embarcadero Technologies το Εικόνα 12. Το περιβάλλον του JBuilder Οι κύριοι ανταγωνιστές του JBuilder είναι τα προϊόντα από Eclipse Foundation (Eclipse), JetBrains (IntelliJ IDEA), και η Oracle (JDeveloper και NetBeans). Ένα ολοκληρωμένο περιβάλλον ανάπτυξης λογισμικού σε Java (Java IDE), με υποστήριξη GUI με έναν εύχρηστο τρόπο ταχείας ανάπτυξης εφαρμογών βασισμένων στο Swing. Για κάθε αρχείο πηγαίου κώδικα που συμμετέχει στην υπό ανάπτυξη εφαρμογή μπορούμε να προβάλλουμε ή τον ίδιο τον κώδικα (source view) ή ένα προσχέδιο του GUI της εφαρμογής (design view). Το τελευταίο έχει τη μορφή μίας φόρμας στην οποία μπορούμε να σύρουμε, από ένα ειδικό μενού επιλογών, εικονίδια που αναπαριστούν οπτικά στοιχεία του Swing και τα οποία έτσι προστίθενται στο πρόγραμμα μας, με τον JBuilder να αναλαμβάνει την αυτοματοποιημένη συγγραφή του αντίστοιχου κώδικα σύμφωνα με έτοιμα πρότυπα. 30

31 Ο προγραμματιστής με αυτόν τον τρόπο έχει τη δυνατότητα να σχεδιάσει το σκελετό της εφαρμογής του μέσα σε λίγα λεπτά χωρίς να γράψει ούτε μία εντολή. Ωστόσο θα χρειαστεί τελικά να μεταβεί σε source view και να γράψει πραγματικό κώδικα σε Java προκειμένου να υλοποιήσει την ουσιαστική λειτουργικότητα του προγράμματος (π. χ. να προσδιορίσει την ακριβή λειτουργία ενός αρχικά κενού χειριστή συμβάντων που δημιουργήθηκε αυτόματα από τον JBuilder, όταν ο προγραμματιστής εισήγαγε ένα πλήκτρο τύπου JButton στη φόρμα που αναπαριστά το κεντρικό παράθυρο της εφαρμογής). Κάθε διαφορετικό παράθυρο της εφαρμογής αντιπροσωπεύεται από διαφορετικό αρχείο πηγαίου κώδικα, ενώ υπάρχει και ένα ειδικό αρχείο που δε σχετίζεται με το GUI και όπου βρίσκεται η συνάρτηση main() του προγράμματος. Το επίσημο site είναι το και από τη σελίδα μπορείτε να επιλέξτε την δωρεάν πλατφόρμα του JΒuilder, τη γλώσσα και την έκδοση που θέλετε να κατεβάσετε. Η τελευταία έκδοση είναι η JBuilder 2008 R Σύγκριση Ολοκληρωμένα περιβάλλοντα ανάπτυξης (IDE- Integrated Development Enviroment) IDE License Written in Java Windows Linux Mac OS X Other Platforms GUI builder Eclipse JDT IBM EPL Yes Yes Yes Yes Solaris Yes JBuilder Proprietary Yes Yes Yes Yes Solaris Yes JCreator Proprietary No Yes No No No MyEclipse Proprietary Yes Yes Yes Yes Yes NetBeans CDDL, GPL2 Yes Yes Yes Yes Solaris Yes IntelliJ IDEA ALv2, proprietary Yes Yes Yes Yes Solaris Yes 31

32 2.11 Java έως σήμερα! Ο λόγος που αναφερθήκαμε στην τόσο σημαντική γλώσσα προγραμματισμού Java είναι ότι σήμερα φτιάχνονται κατά κόρον διάφορες εφαρμογές και παιχνίδια ή ακόμα στήνονται και ιστοσελίδες πάνω σε αυτήν. Η google είχε διαλέξει αυτήν για την συγγραφή εφαρμογών για το λειτουργικό σύστημα Android Java και Android Οι εφαρμογές για το λειτουργικό σύστημα Android αναπτύσσονται και γράφονται στην γλώσσα προγραμματισμού Java. Όπως αναφέρεται και παραπάνω η Java αναπτύχθηκε καιρό μετά τη C και τη C + + και ενσωματώνει πολλά από τα ισχυρά χαρακτηριστικά των ισχυρών γλωσσών, ενώ αντιμετωπίζει ορισμένα από τα μειονεκτήματά τους. Παρόλα αυτά, οι γλώσσες προγραμματισμού είναι τόσο ισχυρές όσο είναι και οι βιβλιοθήκες τους. Οι βιβλιοθήκες αυτές υπάρχουν για να βοηθήσουν τους προγραμματιστές να δημιουργήσουν εφαρμογές. Το Android στηρίζεται σε μεγάλο βαθμό στα χαρακτηριστικά και στις αρχές της Java. Ορισμένα από τα σημαντικότερα βασικά χαρακτηριστικά της Java, τα οποία όπως αναφέραμε παραπάνω είναι: Είναι εύκολη στην εκμάθηση και στην κατανόηση. Η Java είναι εύκολη στην εκμάθηση για διάφορους λόγους. Δεν υπάρχει βεβαίως καμία έλλειψη της Java από πόρους για να σας βοηθήσει να μάθετε τη γλώσσα όπως για παράδειγμα δικτυακοί τόποι, σεμινάρια, βιβλία και τάξεις σε σχολές και φροντιστήρια. Η Java είναι ένα από τα πιο ευρέως συζητήσιμες, διδασκόμενες και χρησιμοποιούμενες γλώσσες προγραμματισμού στον πλανήτη. Χρησιμοποιείται για πολλούς διαφορετικούς τύπους σχεδίων προγραμματισμού, δεν έχει σημασία η κλίμακά τους, από εφαρμογές web, desktop έως και εφαρμογές για φορητές συσκευές και κινητά τηλέφωνα. Αν έρχεστε από ένα παραδοσιακό υπόβαθρο σε θέματα προγραμματισμού όπως η C ή C + +, θα βρείτε τη σύνταξη αρκετά παρόμοια. Ακόμα και για προγραμματιστές που χωρίς προηγούμενη εμπειρία σε Java, η επιλογή της είναι σίγουρα από τις ευκολότερες γλώσσες για να μάθουν. Τέλος είναι μία από τις πιο αναγνώσιμες από τον άνθρωπο γλώσσες στον κόσμο των προγραμματιστών εννοώντας ότι ένα 32

33 πρόσωπο που δεν ξέρει πολλά για τον προγραμματισμό μπορεί αν δει λίγο κώδικα Java να έχει μια ιδέα τι κάνει ένα κομμάτι κώδικα. Έχει σχεδιαστεί ώστε να είναι ανεξάρτητα από την πλατφόρμα, με τη χρήση εικονικών μηχανών. Οι περισσότερες γλώσσες προγραμματισμού, θα πρέπει να χρησιμοποιήσουν ένα compiler για να μετατρέψει τον κωδικό σας σε γλώσσα μηχανής. Την οποία η συσκευή μπορεί να καταλάβει. Όμως διαφορετικές συσκευές χρησιμοποιούν διαφορετικές γλώσσες μηχανής. Αυτό σημαίνει ότι μπορεί να χρειαστεί διαφορετική μετατροπή για κάθε διαφορετική συσκευή και με άλλα λόγια, ο κωδικός σας δεν είναι φορητός. Στην περίπτωση της Java δεν συμβαίνει αυτό. Η Java compilers μετατρέπουν τον κώδικά σας από τα αναγνώσιμα από τον άνθρωπο αρχεία πηγαίου κώδικα Java σε κάτι που ονομάζεται "bytecode" στον κόσμο της Java. Όταν πρόκειται να εκτελεστεί η εφαρμογή σε ένα μηχάνημα, το Java Virtual Machine που πρέπει να είναι εγκατεστημένο σε αυτό θα αναλάβει να διαβάσει τα αρχεία "bytecode". Στη συνέχεια τα μεταφράζει σε γλώσσα μηχανής που να υποστηρίζεται από το λειτουργικό σύστημα και τον επεξεργαστή της συσκευής έτσι ώστε να εκτελεστεί. Οι Android εφαρμογές τρέχουν σε μια ειδική εικονική μηχανή που ονομάζεται Dalvik VM. Το Dalvik VM μπορεί να παρομοιαστεί ως φούσκα στην οποία οι Android εφαρμογές τρέχουν, επιτρέποντάς σας να μην έχετε να ανησυχείτε για το αν η συσκευή είναι ένα Motorola, HTC ή Ericsson. Έχει σχεδιαστεί ώστε να είναι ασφαλή Προηγουμένως μιλήσμε για την φούσκα. Επειδή η Java εφαρμογές τρέχουν μέσα στην φούσκα που είναι μια εικονική μηχανή, έχουν απομονωθεί από το υλικό (hardware) της συσκευής. Ως εκ τούτου, μια εικονική μηχανή μπορεί να ενσωματώσει, να περιέχει, και να διαχειρίζονται την εκτέλεση κώδικα με ασφαλή τρόπο σε σχέση με γλώσσες που λειτουργούν σε κώδικα μηχανής άμεσα. Η πλατφόρμα Android παίρνει τα πράγματα ένα βήμα παραπέρα. Κάθε εφαρμογή Android τρέχει στο λειτουργικό σύστημα χρησιμοποιώντας ένα διαφορετικό λογαριασμό χρήστη δηλαδή της Dalvik VM. Οι Android εφαρμογές παρακολουθούνται στενά από το λειτουργικό σύστημα και τερματίζετε η λειτουργία τους αν δεν παίζουν ωραία (π.χ. όταν χρησιμοποιούν πάρα πολύ επεξεργαστική ισχύ, αν σταματήσουν να ανταποκρίνονται, κατασπαταλούν πόρους, κλπ.). Ως εκ τούτου, είναι σημαντικό για την ανάπτυξη 33

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

35 ΚΕΦΑΛΑΙΟ 3: Φορητές συσκευές Οι Φορητές συσκευές αποτελούν ένα ευρύ σύνολο. Στην ενότητα αυτή παρουσιάζονται οι δύο επικρατέστερες φορητές συσκευές (Smartphones, tablet) με τα χαρακτηριστικά τους καθώς και οι ανάγκες που επιχειρούν να ικανοποιήσουν, οι οποίες ταυτίζονται αλλά και ποικίλουν σε μεγάλο βαθμό. Η παρούσα εργασία καταπιάνεται με ένα υποσύνολο αυτών των συσκευών τα Smartphones που αποτελούν πλέον μέρος της καθημερινότητας μας και όλο και περισσότεροι χρήστες τα προτιμούν έναντι των συμβατικών τηλεφώνων. Παρακάτω παρουσιάζονται τα λειτουργικά συστήματα που τα υποστηρίζουν, συγκρίνονται και αναλύεται εκτενέστερα το λειτουργικό σύστημα Android. 3.1 Smartphones Το smartphone είναι ένα κινητό τηλέφωνο που προσφέρει μεγαλύτερη υπολογιστική ισχύ και συνδεσιμότητα από ένα απλό κινητό. Μπορεί να θεωρηθεί ότι τα smartphones είναι φορητοί υπολογιστές ενσωματωμένοι σε ένα κινητό τηλέφωνο. Τα σημερινά μοντέλα, προσφέρουν δυνατότητες αναπαραγωγής πολυμέσων, λήψης φωτογραφιών και βίντεο σε υψηλή ανάλυση, πλοήγησης μέσω GPS (Global Position System) και γρήγορη πρόσβαση στο διαδίκτυο μέσω Wi-Fi ή 3G τεχνολογίας. Τα συμβατικά κινητά είναι ικανά να τρέξουν εφαρμογές βασισμένες σε πλατφόρμες όπως η Java Micro Edition (JME) και η BREW (Binary Runtime Environment for Wireless) ενώ τα smartphones επιτρέπουν στον χρήστη να εγκαταστήσουν και να τρέξουν πιο προηγμένες εφαρμογές βασισμένες σε μια συγκεκριμένη πλατφόρμα. Επιπροσθέτως, τα smartphones «τρέχουν» ολόκληρο λειτουργικό σύστημα προσφέροντας μια πλατφόρμα την οποία μπορούν να χρησιμοποιήσουν οι προγραμματιστές για να αναπτύξουν εφαρμογές. Τα πιο κοινά λειτουργικά συστήματα για smartphones είναι το Android, το BlackBerry, το ios, το Symbian OS, το Windows Phone και διάφορες ενσωματωμένες Linux διανομές όπως το Maemo και το MeeGo. To Android είναι και αυτό χτισμένο πάνω στο Linux ενώ το ios έχει προέλθει από τα λειτουργικά συστήματα BSD και NeXTSTEP τα οποία βασίζονται στο Unix. Τα smartphones έκαναν την εμφάνισή τους στα τέλη της δεκαετίας του Το κύριο χαρακτηριστικό των Smartphone είναι το λειτουργικό σύστημα. Όλες οι λειτουργίες και όλα τα προγράμματα εκτελούνται ακριβώς όπως σε έναν υπολογιστή. Διαθέτουν συνήθως γραφικό περιβάλλον και οθόνες αφής, ενσωματωμένο wifi και σύστημα προσανατολισμού και πλοήγησης GPS (Global Positioning System). Τα smartphones με 35

36 ενσωματωμένη μνήμη και δυνατότητα πρόσβασης στο internet, μπορούν να κάνουν λήψη εφαρμογών, apps όπως αναφέρονται συχνά. Οι apps είναι εφαρμογές που εκτελούνται στην μνήμη των κινητών και μπορούν να εκτελέσουν διάφορες λειτουργίες όπως πρόσβαση σε ιστοσελίδες ή αναφορά της θέσης και της κατάστασης της συσκευής. Οι apps καθορίζονται ως εφαρμογές που μπορούν να εγκατασταθούν στο τηλέφωνο με ή χωρίς κόστος ανά πάσα στιγμή και να λειτουργούν αυτόνομα όποτε ο χρήστης το θελήσει. Έγινε λήψη περισσοτέρων από 30 δισεκατομμυρίων apps μέχρι τις αρχές του 2012 (Gartnet 2012, Paul 2012). Οι πιο δημοφιλείς apps αφορούν παιχνίδια, όμως συνήθως οι πιο χρήσιμες από αυτές απαιτούν ένα ολόκληρο οικοσύστημα από παρόχους περιεχομένου,πως για παράδειγμα εφαρμογές που μοιράζονται δεδομένα για την αγροτική παραγωγή ή όπως εφαρμογές που δίνουν τη δυνατότητα παροχής διευκολύνσεων ηλεκτρονικών πληρωμώ Τα Smartphones (έξυπνο τηλέφωνο) είναι μικροί υπολογιστές που χωρούν στην παλάμη ενός χεριού και επιτρέπουν πολλές περισσότερες λειτουργίες από μόνο φωνητικές κλήσεις και SMS. Έκανα την εμφάνισή τους στα τέλη της δεκαετίας του Ποια η διάφορα των Smartphones από τα υπόλοιπα τηλέφωνα; Τα απλά κινητά τηλέφωνα θέτουν κάποια όρια στις εφαρμογές που μπορούν να αξιοποιήσουν οι χρήστες τους, επειδή οι συσκευές αυτές διαθέτουν κάποιο δικό τους λογισμικό στο οποίο δεν μπορούμε να επέμβουμε καθώς έχει τη λεγόμενη κλειστή αρχιτεκτονική. Στις συσκευές Smartphone ισχύει ακριβώς το αντίθετο. Το βασικό σημείο διαφοροποίησης των Smartphones είναι η ενσωμάτωση πλήρους λειτουργικού συστήματος. Μία πλήρης πλατφόρμα που διαθέτει περιηγητή αντίστοιχο με αυτούς που συναντάμε στους προσωπικούς υπολογιστές, ενσωματωμένο wifi για ασύρματη συνδεσιμότητα με το διαδίκτυο, υποστήριξη 3G/4G σύνδεσης, δυνατότητα αναπαραγωγής πολυμέσων, διαθέτουν γραφικό περιβάλλον, οθόνες αφής και σύστημα προσανατολισμού και πλοήγησης GPS (Global Positioning System). Τα smartphones με ενσωματωμένη μνήμη και δυνατότητα πρόσβασης στο internet, έχουν στη διάθεση τους πληθώρα εφαρμογών (apps) τις οποίες μπορούν να κάνουν λήψη. Οι apps είναι εφαρμογές που εκτελούνται στην μνήμη των κινητών και μπορούν να εκτελέσουν διάφορες λειτουργίες όπως πρόσβαση σε ιστοσελίδες ή αναφορά της θέσης και της κατάστασης της συσκευής. Έτσι ένα Smartphone παρέχει διάφορες 36

37 λειτουργίες και επιτρέπει στους χρήστες να επιλέξουν οι ίδιοι τις εφαρμογές που θέλουν να εγκαταστήσουν και να χρησιμοποιήσουν. Αυτό σημαίνει ότι οι χρήστες μπορούν να προσωποποιήσουν το εύρος των εφαρμογών στις συσκευές τους αυτές, με τέτοιο τρόπο ώστε να ταιριάζουν στον τρόπο ζωής τους και τη δουλειά τους. Έτσι με τα Smartphones, οι χρήστες μπορούν να μπουν στο διαδίκτυο, να δουν βίντεο στο Youtube, να λαμβάνουν , να ενημερώνονται για τις τελευταίες ειδήσεις ή να είναι σε συνεχή επαφή με τους φίλους σου μέσω Facebook ή Twitter, επιλέξουν το δικό τους ημερολόγιο, τηλεφωνικό κατάλογο, να ακούσουν τη μουσική τους μέσω ενός MP3 προγράμματος της προτίμησης τους και πολλά άλλα. Εν ολίγοις ένα Smartphone είναι ένα κινητό τηλέφωνο με χαρακτηριστικά PDA με δυνατότητες επικοινωνίας. Ολοένα και περισσότεροι χρήστες σήμερα επιλέγουν ως κινητό τηλέφωνο ένα Smartphone για πολλούς λόγους: Είναι γρήγορο και εύκολο στη χρήση Μπορούν εύκολα να περιηγηθούν στο διαδίκτυο / Internet από το τηλέφωνό όταν είναι μακριά από pc Μπορούν να λαμβάνουν αμέσως και να ενημερώνονται από τα κοινωνικά δίκτυα Υπάρχει διαθέσιμη μια τεράστια ποικιλία από εφαρμογές (Apps) Μπορούν να προσαρμόσουν το Smartphone στις δίκες τους ανάγκες 3.2 Υπολογιστής ταμπλέτα (tablet) Υπολογιστής ταμπλέτα ή tablet θεωρείται μια επίπεδη κινητή συσκευή η οποία είναι αρκετά μεγαλύτερη από ένα κινητό τηλέφωνο, αλλά μικρότερη από έναν προσωπικό υπολογιστή. Διαθέτει οθόνη μεγέθους από 7 έως 11 ίντσες η οποία υποστηρίζει λειτουργίες αφής. Οι δυνατότητές της είναι παρόμοιες με αυτές των έξυπνων κινητών τηλεφώνων, με την διαφορά να εντοπίζεται στην πλήρη απουσία της υποστήριξης τηλεφωνικών κλήσεων και της αποστολής σύντομων μηνυμάτων κειμένου (SMS). Η επεξεργαστική ισχύς μιας υπολογιστικής ταμπλέτας συνήθως είναι μεγαλύτερη από αυτή ενός έξυπνου κινητού (δικαιολογείται και λόγω μεγέθους). Η μεγάλη διαφορά όμως των ταμπλετών με τα smartphones, η οποία δεν γίνεται αντιληπτή στον χρήστη είναι το λειτουργικό σύστημα που χρησιμοποιούν. Κάποιες από αυτές τις συσκευές χρησιμοποιούν λειτουργικό σύστημα που συναντάται και σε smartphones και κάποιες άλλες όχι. Για παράδειγμα, η υπολογιστική ταμπλέτα ipad 37

38 διαθέτει το λειτουργικό σύστημα ios το οποίο συναντάται επίσης στο iphone, το αντίστοιχο έξυπνο κινητό τηλέφωνο της εταιρίας Apple. Όμως η ταμπλέτα Surface της εταιρίας Microsoft διαθέτει λειτουργικό σύστημα που συναντάται στους σταθερούς υπολογιστές (με την προσθήκη λειτουργιών αφής) και όχι το λειτουργικό σύστημα Windows Phone που συναντάται στα έξυπνα κινητά τηλέφωνα της εταιρίας. 3.3 Λειτουργικά συστήματα Smartphone Όταν επιλέγουμε Smartphone, επιλέγουμε και το λειτουργικό σύστημα στο οποίο τρέχει. Αυτό το λογισμικό είναι ο εγκέφαλος πίσω από το Smartphone και υπάρχουν μεγάλες διαφορές ανάμεσα τους. Υπάρχουν λειτουργικά συστήματα συγκεκριμένων κατασκευαστών αλλά και ελεύθερα συστήματα. Τα επικρατέστερα λειτουργικά συστήματα (OS) της αγοράς, που χρησιμοποιούνται από τα σύγχρονα smartphones είναι το Android της Google, το ios της Apple, το Symbian της Nokia, το BlackBerry OS της RIM και τα Windows Phone της Microsoft. Το Android της Google είναι το λειτουργικό σύστημα που θα μας απασχολήσει στην παρούσα εργασία. Είναι το λειτουργικό σύστημα για κινητά που δημιούργησε η Google, γι αυτό και τα κινητά που το χρησιμοποιούν συχνά τα αποκαλούμε Android κινητά. Σαν πλατφόρμα είναι η πιο γρήγορα αναπτυσσόμενη σήμερα και χρησιμοποιείται από πολλούς κατασκευαστές κινητών τηλεφώνων, ενώ στην αγορά υπάρχουν πολλές διαθέσιμες συσκευές σε όλες τις κατηγορίες τιμών. Σήμερα το Android θεωρείται σε παγκόσμιο επίπεδο το ίδιο δημοφιλές με το ios της Apple. ios της Apple είναι ένα λογισμικό για κινητά το οποίο αναπτύχθηκε και διανέμεται από την Apple Inc. Αρχικά παρουσιάστηκε το 2007 για το iphone, ενώ υποστηρίζει και άλλες συσκευές της Apple όπως το ipod touch (Σεπτέμβριος 2007), το ipad (Ιανουάριος 2010) και το Apple TV (δεύτερης γενιάς) (Σεπτέμβριος 2010). Αντίθετα από το Windows Phone της Microsoft και το Android της Google, η Apple δεν δίνει την άδεια για την εγκατάσταση του λογισμικού ios σε συσκευές που δεν είναι κατασκευής Apple. Στις Ιανουαρίου 2013, το App Store της Apple περιείχε περισσότερο από εφαρμογές ios, από τις οποίες ήταν συμβατές για ipad. Αυτές οι εφαρμογές έχουν μεταφορτωθεί συνολικά περισσότερα από 50 δισεκατομμύρια φορές 38

39 Windows Phone είναι το όνομα του Λειτουργικού Συστήματος της Microsoft για κινητά, σε μια προσπάθεια να αναχαιτίσει την επίθεση από το ios της Apple και το Android της Google. Ανακοινώθηκε στις αρχές του Περιέχει το Microsoft Office Mobile με Word, Excel και Powerpoint ώστε να μπορείς να έχεις σημαντικά έγγραφά πάντα μαζί σου Το Symbian είναι ένα λειτουργικό σύστημα κινητών και έξυπνων τηλεφώνων, το οποίο κυκλοφόρησε το 2001, είναι λογισμικό ανοιχτού κώδικα και χρησιμοποιείται ευρέως από την εταιρία κινητής τηλεφωνίας Nokia. Σε σύγκριση με το λειτουργικό σύστημα ios του iphone της Apple και το Android της Google, το Symbian θεωρείται απαρχαιωμένο. Ωστόσο, το Symbian είναι πολύ σταθερό λειτουργικό σύστημα και στις τελευταίες εκδόσεις ανταποκρίνεται πολύ καλά στις σύγχρονες απαιτήσεις. Το Blackberry OS είναι το λειτουργικό σύστημα που ανέπτυξε η κατασκευάστρια εταιρία RIM για τα έξυπνα τηλέφωνα της ίδιας εταιρίας. Είναι δημοφιλής κυρίως στις ΗΠΑ και τον Καναδά, και διακρίνεται για το ότι είναι το πιο ασφαλές λειτουργικό σύστημα σήμερα, καθώς είναι το μόνο που έχει επιλογή για firewall. Η πλατφόρμα BlackBerry είναι διαθέσιμη μόνο σε συσκευές BlackBerry. 3.4 Στατιστικά στοιχεία αγοράς λειτουργικών συστημάτων Η εταιρεία ερευνών και στατιστικών μετρήσεων Gartner, ανακοίνωσε τα δικά της στατιστικά στοιχεία για τις πωλήσεις κινητών τηλεφώνων και smartphones παγκοσμίως το πρώτο τρίμηνο του Όσον αφορά στα λειτουργικά συστήματα (βλ. εικόνα 13), το Android κυριαρχεί στις πωλήσεις smartphones «κατακτώντας» ποσοστό 74,4%, κάτι που συνιστά αύξηση σε σχέση με το πρώτο τρίμηνο του περασμένου έτους, όταν το αντίστοιχο ποσοστό της πλατφόρμας της Google κυμαινόταν στο 56,9%. Το ios παρέμεινε στη δεύτερη θέση, παρουσιάζοντας ποσοστιαία πτώση στο μερίδιο των πωλήσεων (18,2% από 22,5%) παρά το γεγονός ότι σε απόλυτο αριθμό σημείωσε ελαφρά αύξηση (περίπου 15%). Πτώση σημείωσαν, τόσο σε απόλυτο αριθμό όσο και σε μερίδιο της αγοράς, όλοι οι υπόλοιποι της λίστας, πλην της Microsoft που κατάφερε να πετύχει διπλάσιες πωλήσεις σε σχέση με το 2012 πλησιάζοντας «απειλητικά» τη RIM στην τρίτη θέση. 39

40 Εικόνα 13. Στατιστικά στοιχεία πωλήσεων λειτουργικών συστημάτων 1ο τρίμηνο 2013 Όσον αφορά το δεύτερο τρίμηνο του 2013 (βλ. εικόνα 14) το Android παραμένει στην κορυφή των πωλήσεων, συνέχισε στην αύξηση της ηγετικής της θέση συγκεντρώνοντας 79% της αγοράς κατά το δεύτερο τρίμηνο. Η Microsoft προσπέρασε την BlackBerry για πρώτη φορά, αφού έφτασε στη θέση Νο 3 με μερίδιο αγοράς 3,3 τοις εκατό κατά το δεύτερο τρίμηνο του Εικόνα 14. Στατιστικά στοιχεία πωλήσεων λειτουργικών συστημάτων 2ο τρίμηνο Μάχη μεταξύ Android και Iphone Εικόνα 15 Σήμερα, όπως φαίνεται και από τις παραπάνω μετρήσεις, η μάχη για την επικράτηση στην αγορά των smartphones μαίνεται μεταξύ δύο κολοσσών, του ios της iphone και του Android της Google. Όπως φαίνεται το iphone δείχνει να έχει ακόμη υψηλό μερίδιο 40

41 και οι κάτοχοί του διατείνονται πως προσφέρει ανώτερη εμπειρία στο χρήστη και μεγαλύτερη ποικιλία εφαρμογών. Ενδεχομένως κάτι τέτοιο να ισχύει, μιας και το iphone ήταν αυτό που κυκλοφόρησε πρώτο εισάγοντας παράλληλα καινοτόμες τεχνολογίες στην αγορά. Η εργασία όμως αυτή όμως δεν θα απασχοληθεί με συγκρίσεις για το ποιο από τα δύο είναι καλύτερο ή πιο δημοφιλές. Μια τέτοια συζήτηση θα ήταν ανούσια, άλλωστε εμπεριέχει και το προσωπικό γούστο του καθενός. Το πιο ουσιώδες είναι ποια είναι τα θετικά και αρνητικά της κάθε πλατφόρμας, με γνώμονα την ανάπτυξη εφαρμογών. Ένα από τα πιο δυνατά σημεία του Android είναι πως η ανάπτυξη εφαρμογών γίνεται σχεδόν αποκλειστικά στη Java, ίσως την πιο δημοφιλή, πιο ολοκληρωμένη και καλύτερα δομημένη γλώσσα που υπάρχει σήμερα. Επιπλέον, η υλοποίηση Android εφαρμογών μπορεί να γίνει με μικρό κόστος από την πλευρά του προγραμματιστή. Ο υποψήφιος Android developer θα πρέπει να διαθέτει έναν προσωπικό υπολογιστή με οποιοδήποτε λειτουργικό σύστημα, ένα κινητό Android για το σωστό τεστάρισμα των εφαρμογών του και τέλος έναν λογαριασμό developer στο Android Market, για τον οποίο απαιτείται η εφ' άπαξ καταβολή ενός τιμήματος της τάξης των 25$ (ισχύον τίμημα κατά τη σύνταξη των σημειώσεων). Από την πλευρά του iphone, η ανάπτυξη γίνεται σε Objective C, μια γλώσσα που αποτελεί υπερσύνολο της C. Αντίστοιχα, το κόστος για να είναι σε θέση κάποιος να υλοποιήσει εφαρμογές iphone και να τις διαθέσει στην αγορά είναι σαφώς μεγαλύτερο. Απαιτείται ένας υπολογιστής Mac, ένα iphone για το τεστάρισμα των εφαρμογών του και ένας λογαριασμός developer, για τον οποίο θα πρέπει να καταβάλλει το ποσό των 100$ κάθε χρόνο (ισχύουσα τιμή κατά τη σύνταξη της εργασίας). Συγκρίνοντας τώρα τις τιμές των συσκευών, μία νέα συσκευή iphone κοστίζει κατά μέσο όρο 450 (ανάλογα με την έκδοση) ενώ μια αξιοπρεπέστατη συσκευή Android μπορεί να κοστίζει λιγότερο από 200. Λαμβάνοντας υπόψη όλα τα παραπάνω, είναι σαφές πως όσον αφορά τα κόστη αλλά και τις τεχνολογίες που εμπλέκονται για την υλοποίηση εφαρμογών, το Android έχει σαφές προβάδισμα. Από την άλλη πλευρά, υπάρχει η αίσθηση πως οι χρήστες iphone είναι περισσότερο διατεθειμένοι να πληρώσουν για να αγοράσουν μια εφαρμογή από ότι οι χρήστες Android. Αυτό οφείλεται στο γεγονός πως το iphone καλώς ή κακώς θεωρείται στις μέρες μας ως status symbol, ένα gadget δηλαδή που πολλοί από τους κατόχους του είναι σταθεροί οπαδοί του. Τέτοιοι χρήστες δεν είναι επιφυλακτικοί στο 41

42 να πληρώσουν και να κατεβάσουν μια εφαρμογή και αυτή η συμπεριφορά λειτουργεί προς όφελος των developers. Αντίθετα, το Android βασίζεται όπως θα δούμε και στη συνέχεια στο Linux και έχει έναν καθαρά open source χαρακτήρα. Πολλοί από τους χρήστες του Android ασπάζονται αυτή την open source φιλοσοφία και δεν είναι διατεθειμένοι να πληρώσουν για μία εφαρμογή, ή για να το θέσουμε σε πιο σωστή βάση, θα αγόραζαν μια εφαρμογή μόνο αν είναι εγγυημένα χρήσιμη και προσεγμένη. Ένα ακόμη πλεονέκτημα για τους developers iphone εφαρμογών αποτελεί το γεγονός πως το iphone είναι ένα. Διαθέτει μία οθόνη συγκεκριμένων διαστάσεων, ένα δεδομένο interface διάδρασης με τον χρήστη και συγκεκριμένο σετ από αισθητήρες, άρα οι developers της συγκεκριμένης πλατφόρμας δεν θα χρειαστεί ποτέ να "πονοκεφαλιάσουν" κατά την ανάπτυξη μιας εφαρμογής και να γράψουν τον κατάλληλο κώδικα για να μπορεί αυτή να τρέχει χωρίς προβλήματα σε συσκευές με διαφορετικά χαρακτηριστικά. Αντίθετα, όσον αφορά το Android υπάρχει πληθώρα συσκευών με διαφορετικά χαρακτηριστικά όπως οθόνες διαφορετικών διαστάσεων και αναλύσεων, διαφορετικά σετ αισθητήρων, διαφορετικά interfaces διάδρασης κ.α. τα οποία οι developers θα πρέπει να λαμβάνουν υπ' όψιν κατά την ανάπτυξη των εφαρμογών τους ώστε αυτές να τρέχουν απροβλημάτιστα και με ομοιόμορφο τρόπο σε όλες τις συσκευές. Αυτό προϋποθέτει έξτρα δουλειά και πρόνοια από την πλευρά του προγραμματιστή. Στον παρακάτω πίνακα παραθέτουμε μια σύγκριση κάποιον βασικών χαρακτηριστικών των δύο λειτουργικών συστημάτων που παρουσιάζουν ενδιαφέρον κυρίως ως προς την ανάπτυξη εφαρμογών Τα Μεγάλα "Πλήν" του Android Επιστρέφοντας στο Android, ένα πολύ μεγάλο αρνητικό είναι το Fragmentation, το οποίο πολύ αναφέρουν, λίγοι όμως γνωρίζουν τι είναι. Επειδή το άρθρο δεν απευθύνεται σε Developers και Power Users αλλά στον απλό καθημερινό χρήστη, θα προσπαθήσουμε να περιγράψουμε με τον πιο απλό τρόπο την κατάσταση. Κάθε νέα έκδοση του Android έρχεται με ένα νέο API Level. Όταν δημιουργούμε μια εφαρμογή, στηριζόμαστε σε ένα συγκεκριμένο API. Αν δημιουργήσετε μια εφαρμογή σε API της έκδοσης 4.0 του Android, αυτό σημαίνει ότι ο χρήστης δε θα μπορεί να εκτελέσει την εφαρμογή σε προγενέστερη έκδοση. Ένα άλλο θέμα που παρουσιάζεται, είναι με την ανάλυση της οθόνης, κάθε νέο API Level προσφέρει τη δυνατότητα δημιουργίας 42

43 εφαρμογών σε ακόμα υψηλότερες αναλύσεις. Αν η εφαρμογή είναι σε API της έκδοσης 2.1, τότε σε μια συσκευή με έκδοση ενδεχομένως να μην παρουσιάζει και την καλύτερη εμφάνιση Τα Μεγάλα "Πλην" του ios Το πρώτο και μεγάλο αρνητικό μέχρι σήμερα είναι το φαινόμενο του Jailbreak. Η διαδικασία του Jailbreak ονομάζεται το ξεκλείδωμα του συστήματος αρχείων της συσκευής ώστε να μπορεί ο χρήστης να παραμετροποιεί τη συσκευή του όπως επιθυμεί ή να εγκαθιστά εφαρμογές μέσω καταστημάτων πέραν του Apple App Store. Γιατί να κάνει ο χρήστης Jailbreak; Απλά, γρήγορα και περιληπτικά, χρήση του Bluetooth για αποστολή αρχείων, εγκατάσταση του Cydia Store, να μπορεί να πειράξει διάφορα πράγματα στο σύστημα όπως το να προσθέσει εφαρμογές τύπου SBSettings για να έχει γρηγορότερη πρόσβαση σε λειτουργίες της συσκευής, ή το Winterboard που σου επιτρέπει να επέμβεις στο Desktop της συσκευής. Αξίζει να σημειώσουμε ότι με το Jailbreak της συσκευής, η εγγύηση της συσκευής χάνεται δια παντός. Ένα άλλο μεγάλο αρνητικό που είχε το ios μέχρι πρόσφατα ήταν ο συγχρονισμός της συσκευής μέσω itunes και μόνο. Ενώ το Android σου επέτρεπε να κάνεις συγχρονισμό των επαφών και των εφαρμογών μέσω ενός Gmail λογαριασμού μέσω WiFi και μέσω Mobile Internet, η Apple σου έδινε τη δυνατότητα να κάνεις συγχρονισμό μόνο μέσω itunes και μόνο μέσω ενός Η/Υ. 3.6 Πίνακας σύνοψης διαφορών Στον παρακάτω πίνακα συνοψίζονται οι διαφορές των δύο επικρατέστερων λειτουργικών συστημάτων στα σημαντικότερα χαρακτηριστικά: Android ios Γλώσσα προγραμματισμού Java Objective C Τιμές των συσκευών ~ 200 ~ 450 Λογαριασμός developer 25$ 100$ Περιβάλλον ανάπτυξης ανοικτού κώδικα Κλειστό περιβάλλον Διαθέσιμο για Πολλά κινητά τηλέφωνα και ταμπλέτες, συμπεριλαμβανομένων Αποκλειστικά iphone της Apple, ipod Touch, ipad, Apple TV (2nd and 3rd 43

44 Kindle Fire (τροποποιημένο android), LG, HTC, Samsung, και άλλα generation) Widgets Ναι Όχι, εκτός NotificationCenter Δυνατότητα Προσαρμογής Δυνατή η αλλαγή σχεδόν στα πάντα Περιορισμένη, εκτός αν είναι ξεκλειδωμένα Interface Touch screen Touch screen Διαθέσιμη γλώσσα (ες) 32 γλώσσες 34 γλώσσες App store Google Play Apps. Άλλα καταστήματα app όπως το Amazon και Getjar διανείμει Android apps Apple app store 850,000+ Apps Πρώτη έκδοση 23 Σεπτεμβρίου Ιουλίου

45 ΚΕΦΑΛΑΙΟ 4: Εφαρμογές Smartphones Τα smartphones έχουν εισέλθει δυναμικά στην αγορά παρουσιάζοντας μία σταθερά ανοδική πορεία πωλήσεων με εξαιρετικές προοπτικές περαιτέρω ανάπτυξης. Αναπόσπαστο κομμάτι των smartphones αποτελούν οι εφαρμογές κινητών (mobile applications) οι οποίες μπορούν να καλύψουν μία πληθώρα αναγκών. Πολλές εταιρίες και πολλοί προγραμματιστές, έχουν ήδη αναπτύξει τις δικές τους εφαρμογές για κινητές συσκευές, προσφέροντας υπηρεσίες προστιθέμενης αξίας στους καταναλωτές, καθώς μία mobile εφαρμογή μπορεί να εξυπηρετήσει προσωπικές, επαγγελματικές, ενδοεπιχειρηματικές ανάγκες. 4.1 Ο κατακερματισμός και τα προβλήματα των προγραμματιστών Παραπάνω συγκρίνοντας τα δύο επικρατέστερα λειτουργικά (Android και ios) εντοπίσαμε κάποια σοβαρά προβλήματα που αντιμετωπίζουν οι προγραμματιστές. Οι κατηγορίες των προβλημάτων είναι η αμοιβή, το κόστος υλοποίησης και το πιο βασικό θα λέγαμε είναι η δυσκολία των προγραμματιστών να προσαρμόσουν και να υλοποιήσουν μια εφαρμογή σε πολλές διαφορετικές συσκευές. Είτε πρόκειται για φορητούς υπολογιστές, tablets ή smartphones, ο αριθμός των νέων φορητών συσκευών που εισέρχονται στην αγορά αυξάνεται με ταχείς ρυθμούς. Προβλέπεται στα επόμενα χρόνια η ολοένα και αυξανόμενη ποικιλία των συσκευών που θα είναι διαθέσιμες στους καταναλωτές, καλύπτοντας όλο και περισσότερους τομείς των αναγκών της καθημερινότητας αλλά και δυσκολεύοντας περαιτέρω το έργο των προγραμματιστών που θα πρέπει να ξοδέψουν ακόμα περισσότερο χρόνο τελειοποιώντας τις εφαρμογές τους για όσο το δυνατόν μεγαλύτερο μέρος των συσκευών. Έτσι κατά την ανάπτυξη μίας εφαρμογής για κινητές συσκευές, προκύπτουν εμπόδια και δυσκολίες λόγο του κατακερματισμού στο υλικό (hardware) αλλά και στο λογισμικό (software) των κινητών συσκευών. Ο όρος κατακερματισμός σημαίνει ότι οι χρήστες που χρησιμοποιούν φορητές συσκευές είναι κατανεμημένοι σε διαφορετικές πλατφόρμες. Υπάρχουν τεράστιες διαφορές μεταξύ των συσκευών, οπότε η δημιουργία μιας εφαρμογής που απευθύνεται σε όλες (ή τουλάχιστον στο μεγαλύτερο ποσοστό αυτών) φαίνεται αρκετά δύσκολη υπόθεση. Οι κινητές συσκευές υποστηρίζονται από λειτουργικά συστήματα τα οποία διακρίνονται από συγκεκριμένα γνωρίσματα. Για να αναπτυχθεί μια εφαρμογή για ένα λειτουργικό σύστημα χρησιμοποιείται συγκεκριμένη γλώσσα προγραμματισμού, στην οποία επένδυσε ο 45

46 κατασκευαστής, και συγκεκριμένα εργαλεία ανάπτυξης που παρέχονται από τον κατασκευαστή. Το πρόβλημα του κατακερματισμού όμως δεν σταματάει εκεί αφού ακόμη και οι διαφορετικές εκδόσεις του ίδιου λειτουργικού συστήματος ορισμένες φορές παρουσιάζουν μεγάλες διαφορές μεταξύ τους. Ακόμα και συσκευές που μπορεί να βασίζονται στο ίδιο λειτουργικό σύστημα είναι πιθανό να παρουσιάσουν διαφορές μεταξύ τους λόγω των διαφορετικών υλικοτεχνικών (hardware) γνωρισμάτων της συσκευής για παράδειγμα το πως υποστηρίζεται η ανίχνευση αφής, διαφέρει στην εκάστοτε συσκευή. Ο παρακάτω πίνακας περιέχει τις διαφορές που παρουσιάζονται στα επικρατέστερα λειτουργικά συστήματα σε χαρακτηριστικά που αφορά την ανάπτυξη μιας εφαρμογής, όπως στις γλώσσες προγραμματισμού, τον τύπο των εκτελέσιμων αρχείων, τα περιβάλλοντα ανάπτυξης, και τα διαδικτυακά καταστήματα για την αγορά εφαρμογών (app stores). Android ios Windows Phone Symbian Blackberr y/rim Έκδοση 1.5 Cupcake, ios 1.x, WinMo Symbian RIM 4.5, λειτουργικού συστήματος 1.6 Donut, Éclair, 2.2 Froyo, Gingerbread, 3.1 Honeycomb, 3.2 Honeycomb, ios 2.x, ios 3.x, ios 4.x, ios 5.x, ios 6.x ios 7.x 2003, WinMo 5, WinMo 6.5, Windows Phone 7.x, Windows OS 6.0, Symbian OS 6.1, Symbian OS 7.0, Symbian RIM 4.6, RIM 5.0, RIM 6.0, RIM 7.0, RIM 7.1, Ice Cream Sandwich, Phone 8 OS 8.0, Symbian Blackberry x Jelly Bean, OS 9.0, 4.2.x Jelly Bean, Symbian 4.3 Jelly Bean EPOC KitKat (εκδόσεις 1 έως 5) 46

47 Περιβάλλον Java και XML Objective- C#, Java, Java ανάπτυξης C, Visual Basic C++ Objective C++, C, C++ Γλώσσα προγραμματι σμού.apk.app.xap.pkg.cod Κατάληξη Android SDK Xcode Visual Symbian BB Java εκτελέσιμου αρχείου Studio, Windows SDK Eclipse Plug-in Phone development tools Application Android Apple Windows Nokia BlackBerry Stores Marketplace/Goog Store/App Phone Store App le Store Marketplace World Play Χαρακτηρίστηκα μιας εφαρμογής στο κάθε λειτουργικό σύστημα 4.2 Τύποι εφαρμογών κινητών συσκευών Υπάρχουν τρία είδη εφαρμογών για κινητές συσκευές, οι native εφαρμογές, οι διαδικτυακές εφαρμογές (Web applications) και οι Υβριδικές εφαρμογές (Hybrid applications). Κάθε μια έχει τα δικά την μειονεκτήματα και πλεονεκτήματα. Οι native εφαρμογές για smartphones τρέχουν αποκλειστικά στη συσκευή. Κάθε native εφαρμογή προορίζεται και είναι σχεδιασμένη να τρέχει σε ένα συγκεκριμένο λειτουργικό σύστημα κινητών όπως το Android και το ios. Αποτελείται από ένα εκτελέσιμο αρχείο το οποίο αποθηκεύεται στη συσκευή (.apk για Android,.app για Iphone). Η εφαρμογή αυτή μπορεί να υπάρχει προεγκαταστημένη ως μέρος του λειτουργικού συστήματος αλλά και να γίνει διαθέσιμη με την εγκατάσταση της από τον 47

48 χρήστη μέσω του ηλεκτρονικού καταστήματος της εταιρείας, της οποίας ανήκει το λειτουργικό σύστημα που χρησιμοποιεί η εκάστοτε συσκευή (πχ το Google Play του Android, App Store της Apple). Μετά την εγκατάσταση συνήθως δημιουργείται ένα εικονίδιο στη επιφάνεια εργασίας με το οποίο ο χρήστης μπορεί να εκκινήσει την εφαρμογή κάθε φορά που θέλει να την χρησιμοποιήσει. Κατά την πρώτη εκτέλεση η εφαρμογή θα συνδεθεί άμεσα με το λειτουργικό σύστημα, χωρίς κανένα ενδιάμεσο στρώμα λογισμικού. Με αυτόν τον τρόπο μπορεί να έχει πρόσβαση στις λειτουργίες των εφαρμογών που συνοδεύουν το λειτουργικό σύστημα, αποκτώντας πλήρη έλεγχο της συσκευής. Οι Native εφαρμογές αναπτύσσονται συνήθως χρησιμοποιώντας ένα IDE. Τα IDE s όπως αναφέρθηκε παραπάνω, παρέχουν εργαλεία για τη δημιουργία αποσφαλμάτωσης, τη διαχείριση του σχεδίου, τον έλεγχο της έκδοσης, και άλλα εργαλεία που χρειάζονται οι επαγγελματίες προγραμματιστές. Οι Web εφαρμογές για smartphones είναι διαδικτυακές εφαρμογές ειδικά σχεδιασμένες για χρήση σε smartphone ή tablet και ανοίγουν μέσω του web browser της συσκευής, με την επίσκεψή στην αντίστοιχη ηλεκτρονική διεύθυνση (URL) της εφαρμογής. Γενικά η πρόσβαση στα web applications για smartphones γίνεται μέσω του browser. Μπορούν να τρέξουν σε οποιαδήποτε πλατφόρμα που υποστηρίζει browser όπως android, ios, Symbian ή BlackBerry. Ονομάζονται εφαρμογές ανεξάρτητης πλατφόρμας καθώς εκτελούνται στον browser της συσκευής, χωρίς να απαιτείται εγκατάσταση σε κάθε συσκευή ξεχωριστά, αποφεύγοντας με αυτόν τον τρόπο τα διάφορα ηλεκτρονικά καταστήματα (marketplaces) των παρόχων των λειτουργικών συστημάτων και τις διαφορετικές απαιτήσεις που θα πρέπει να πληρεί μια εφαρμογή για να γίνει διαθέσιμη μέσω αυτών. 4.3 Πλεονεκτήματα-Μειονεκτήματα Native εφαρμογών (Native applications) Για τη δημιουργία μιας native εφαρμογής ο προγραμματιστής θα πρέπει να γράψει τον πηγαίο κώδικα, στην γλώσσα προγραμματισμού που υποστηρίζει το λειτουργικό σύστημα της συσκευής, και να συμπεριλάβει οτιδήποτε άλλο είναι απαραίτητο για την λειτουργία της εφαρμογής, όπως για παράδειγμα εικόνες, ηχητικά αρχεία κλπ. Χρησιμοποιώντας εργαλεία που παρέχονται από την εταιρεία που δημιούργησε το λειτουργικό σύστημα, τα παραπάνω αρχεία μεταγλωττίζονται και παράγεται ένα αρχείο το οποίο αποτελεί την εφαρμογή που θα αποθηκευτεί στη συσκευή. Τα εργαλεία αυτά, 48

49 σε συνδυασμό με επιπρόσθετες ευκολίες αποτελούν το περιβάλλον ανάπτυξης εφαρμογών (SDK) που προορίζονται για το εκάστοτε λειτουργικό σύστημα. Η διαδικασία ανάπτυξης μιας native εφαρμογής παρουσιάζει διαφορές μεταξύ των διαφορετικών λειτουργικών συστημάτων, όμως τα περιβάλλοντα ανάπτυξης (SDK s) διαφέρουν μεταξύ τους. Έχουν δημιουργηθεί για να εξυπηρετούν τις ανάγκες ενός συγκεκριμένου λειτουργικού συστήματος και παρέχουν διαφορετικά εργαλεία. Έτσι προκύπτει ότι βασικότερο μειονέκτημα των native εφαρμογών είναι ότι ο κώδικας που γράφτηκε για ένα συγκεκριμένο λειτουργικό σύστημα δεν μπορεί να χρησιμοποιηθεί σε κάποιο άλλο, που σημαίνει πως πρέπει να γραφτεί διαφορετικός κώδικας για την ίδια εφαρμογή ανάλογα με το λειτουργικό σύστημα. Επίσης πρέπει να ληφθεί υπόψη και οι αλλαγές που μπορεί να υπάρχουν σε hardware χαρακτηριστικά πχ. retina display, ή εντελώς διαφορετικά hardware setup σε android συσκευές. Αν μια εφαρμογή στοχεύει διάφορα λειτουργικά συστήματα, αυξάνει την πολυπλοκότητα ανάπτυξης και συντήρησής της καθώς πρέπει να ξαναγραφτεί ο κώδικας για το εκάστοτε λειτουργικό σύστημα. Οι προγραμματιστές μπορούν να επιλέξουν να εξυπηρετήσουν μόνο ένα τμήμα της αγοράς (πλατφόρμα) με την ανάπτυξη εφαρμογών για μόνο ένα υποσύνολο των λειτουργικών συστημάτων, και κατά συνέπεια ένα υποσύνολο των μοντέλων των συσκευών. Ακόμη και αν έχουν κάνει την επιλογή τους όμως, μπορεί να υποχρεωθούν να φιλοξενήσουν διαφορετικές εκδοχές για την ίδια πλατφόρμα (π.χ. ios 6.x, ios 5.x, και τις διάφορες εκδόσεις του Android), αλλά και μια μεγάλη ποικιλία αναλύσεων οθόνης και αναλογίας εικόνας. Η ανάπτυξη εφαρμογών για τα μοντέλα συσκευών που αντιπροσωπεύουν την πλειοψηφία των συσκευών έχει γίνει μια δαπανηρή και χρονοβόρα διαδικασία. Αυτός ο κατακερματισμός, επηρεάζει σοβαρά κάθε οικοσύστημα, καθιστώντας πιο δύσκολο για τους μικρούς προγραμματιστές να ανταγωνιστούν, δεδομένου ότι είναι απίθανο να έχουν τους πόρους για να υποστηρίξουν την αυξανόμενη λίστα των μοντέλων συσκευών που χρησιμοποιούνται σήμερα. Μπορούν επίσης να είναι σε μειονεκτική θέση σε οικονομίες κλίμακας για την προώθηση των εφαρμογών τους, εάν δεν είναι διαθέσιμες ή δεν λειτουργούν σωστά στα περισσότερα μοντέλα συσκευών. Τέλος ένα μικρό μειονέκτημα μπορεί να θεωρηθεί και το γεγονός πως για να γίνει update η εφαρμογή, πρέπει να ξανά-ανέβει στο εκάστοτε store (αφού εγκριθεί κτλ), να 49

50 την ξανά-κατεβάσει και να την ξανά-κάνει install ο εκάστοτε χρήστης (στην περίπτωση της web app το update είναι πολύ πιο άμεσο). Τα πλεονεκτήματα των Native εφαρμογών όμως είναι πολλά και είναι ο λόγος που συνεχίζουν να υλοποιούνται και να είναι η βασικότερη μορφή εφαρμογής σε κινητές συσκευές. Ένα από τα βασικότερα πλεονεκτήματα είναι ότι η κάθε εφαρμογή έχει φτιαχτεί ειδικά για την συγκεκριμένη συσκευή και λειτουργικό, πράγμα που σημαίνει πως εκμεταλλεύεται πολύ καλά όλα τα advanced χαρακτηριστικά της εκάστοτε συσκευής και αλληλεπιδρά με το λειτουργικό σύστημα κάνοντας χρήση των διαθέσιμων διεπαφών με τη χρήση των διεπαφών προγραμματισμού εφαρμογών (API, Application Programming Interface) που παρέχει το κάθε λειτουργικό σύστημα για την ανάπτυξη και λειτουργία των εφαρμογών. Οι διεπαφές προγραμματισμού παρέχουν τη δυνατότητα σε μια native εφαρμογή να αλληλεπιδρά με την οθόνη αφής, το πληκτρολόγιο, να συνδέεται σε δίκτυα, να επεξεργάζεται ηχητικά αρχεία που λήφθηκαν μέσω του μικροφώνου, να παράγει ήχους μέσω των ηχείων και να ελέγχει την κάμερα για λήψη φωτογραφιών ή βίντεο, το GPS, την πυξίδα, το γυροσκόπιο, κτλ.. Αυτά είναι μερικά από τα παραδείγματα από τις δυνατότητες που παρέχουν τα παραπάνω εργαλεία, αφού στο σύνολό τους παρέχουν πρόσβαση σε οποιοδήποτε χαρακτηριστικό της συσκευής. Σε συνδυασμό με την πρόσβαση στα τεχνικά χαρακτηριστικά της συσκευής, το λειτουργικό σύστημα παρέχει μεθόδους αλληλεπίδρασης και με υπηρεσίες υψηλότερου επιπέδου, οι οποίες είναι απαραίτητες για την παροχή υψηλού επιπέδου εμπειρίας στο χρήστη. Οι διεπαφές προγραμματισμού υψηλού επιπέδου προσφέρουν μια σειρά από υπηρεσίες όπως η πλοήγηση στο διαδίκτυο, η πρόσβαση στο ημερολόγιο, τις επαφές, το φωτογραφικό υλικό και φυσικά η δυνατότητα τηλεφωνικών κλήσεων, αποστολής και λήψης γραπτών μηνυμάτων. Οι υπηρεσίες αυτές συνήθως υλοποιούνται από εφαρμογές που είναι προεγκατεστημένες σχεδόν σε όλα τα λειτουργικά συστήματα. Το σημαντικό είναι ότι σε μια native εφαρμογή γίνεται να συνδυαστούν πολλές από τις παραπάνω λειτουργίες, καθώς με προγραμματιστικό τρόπο δίνεται η δυνατότητα πρόσβασης της εφαρμογής σε αυτές τις υπηρεσίες. Οι προγραμματιστικές διεπαφές που απαιτούνται για την πλήρη αξιοποίηση της κινητής συσκευής και κατ επέκταση του λειτουργικού συστήματος, είναι συγκεκριμένες και στενά συνδεδεμένες με το λειτουργικό σύστημα για το οποίο δημιουργήθηκαν. Το 50

51 γεγονός αυτό προσθέτει πολυπλοκότητα και κόστος στην ανάπτυξη μιας native εφαρμογής με παρουσία σε διάφορα λειτουργικά συστήματα, αφού για κάθε λειτουργικό σύστημα απαιτείται η ανάπτυξη της ίδιας εφαρμογής χρησιμοποιώντας διαφορετικές προγραμματιστικές διεπαφές. Παρόλα αυτά ο ρόλος τους είναι ιδιαίτερα σημαντικός, αφού είναι εκείνες που καθιστούν εφικτή την ανάπτυξη ιδιαίτερα πολύπλοκων εφαρμογών. Επίσης στις native εφαρμογές είναι διαθέσιμο ένα σύνολο εργαλείων γραφικής διεπαφής. Το κάθε λειτουργικό σύστημα παρέχει ένα σύνολο από τα βασικά γραφικά συστατικά όπως κουμπιά, μενού, tab bars, ειδοποιήσεις και πολλά ακόμη. Εφαρμογές που κάνουν χρήση αυτών των γραφικών συστατικών κληρονομούν την εμφάνιση του συγκεκριμένου λειτουργικού συστήματος στο οποίο εγκαθίσταται, με αποτέλεσμα η εμπειρία που εισπράττει ο χρήστης να είναι μέσα στα πλαίσια που έχει συνηθίσει. Αυτό αυξάνει τον βαθμό δυσκολίας ανάπτυξης των εφαρμογών γιατί πλέον ο προγραμματιστής πρέπει να λάβει υπ όψιν του κατά την σχεδίαση της διεπαφής χρήστη την μεγάλη ποικιλία μεγεθών και αναλύσεων που μπορεί η εφαρμογή του να συναντήσει, η τεχνικές πλοήγησης είναι διαφορετικές οι εμφάνιση των στοιχείων είναι διαφορετική αλλά το πιο σημαντικό, οι συνήθειες των χρηστών είναι διαφορετικές. Ποτέ δεν πρέπει, ένας προγραμματιστής όταν φτιάχνει μια εφαρμογή για παράδειγμα στο περιβάλλον Android η οποία υπάρχει ήδη για κάποια άλλη πλατφόρμα, να προσπαθεί να μεταφέρει ακριβώς την διεπαφή χρήστη. Είναι λάθος τακτική η προσπάθεια αναπαραγωγής μιας διεπαφής από την μια πλατφόρμα στην άλλη. Οι χρήστες πρέπει να νιώθουν «σαν στο σπίτι τους» όταν χρησιμοποιούν μια εφαρμογή στην συσκευή τους, έτσι αυτή πρέπει να έχει εμφάνιση (το ονομαζόμενο look & feel) που συμβαδίζει με την γενικότερη φιλοσοφία του Android και της εκάστοτε πλατφόρμας. Για παράδειγμα, δεν θέλουμε μια εφαρμογή για Android να θυμίζει το ios της Apple! Άλλωστε η φιλοσοφία των εφαρμογών διαφέρει κατά πολύ στις δυο πλατφόρμες. Έτσι κάθε λειτουργικό σύστημα αποτελείται από τα δικά του ιδιαίτερα γραφικά εργαλεία. Ακόμη και μεταξύ διαφορετικών εκδόσεων του ίδιου λειτουργικού παρατηρούνται διαφορές. Η γραφική διεπαφή είναι ένα πολύ σημαντικό κομμάτι για την επιτυχία του λειτουργικού συστήματος με αποτέλεσμα να υπάρχουν συνέχεια βελτιώσεις, άρα και διαφοροποιήσεις. Η διαφοροποίηση που παρατηρείται ανάμεσα σε αυτά τα εργαλεία καθιστούν απαραίτητη την εξοικείωση του σχεδιαστή, της εφαρμογής, με τα εργαλεία και τα συστατικά που παρέχονται. 51

52 Στα συν των Native εφαρμογών συγκαταλέγεται ότι το user interface και η απόκρισή είναι πολύ πιο γρήγορα και συνήθως πιο εντυπωσιακά από τα αντίστοιχα μιας web εφαρμογής. Ένα άλλο σημαντικό πλεονεκτήματα είναι πως δεν χρειάζεται σύνδεση στο internet για να χρησιμοποιηθεί η εφαρμογή (εκτός φυσικά και αν αυτό είναι requirement της ίδιας της εφαρμογής). 4.4 Πλεονεκτήματα-Μειονεκτήματα Διαδικτυακών εφαρμογών (Web applications) Εικόνα 16. Λογότυπα (Web έναντι Native εφαρμογών) Στην περιγραφή των native εφαρμογών έγινε αισθητό το μέγεθος κατακερματισμού των λειτουργικών συστημάτων που υπάρχει στο πεδίο της ανάπτυξης εφαρμογών για κινητές συσκευές. Λύση σε αυτό το πρόβλημα προσπαθεί να δώσει η κατηγορία των διαδικτυακών εφαρμογών παρέχοντας την δυνατότητα ανάπτυξης εφαρμογών που θα εκτελούνται σε διαφορετικά λειτουργικά συστήματα και συσκευές χρησιμοποιώντας αποκλειστικά τεχνολογίες διαδικτύου (π.χ. HTML, HTML 5, CSS και Javascript, Adobe Flash, κλπ). Με τον τρόπο αυτό οι προγραμματιστές αποφεύγουν το τεράστιο εμπόδιο της εκμάθησης νέων γλωσσών προγραμματισμού για κάθε διαφορετικό λειτουργικό σύστημα για το οποίο δημιουργούν μια εφαρμογή. Το γεγονός ότι το πεδίο των διαδικτυακών εφαρμογών διαθέτει ήδη αρκετά εργαλεία ανάπτυξης δε σημαίνει ότι αυτά μπορούν να χρησιμοποιηθούν στο χώρο των κινητών συσκευών χωρίς περαιτέρω εξέλιξη. Οι κινητές συσκευές, όπως περιγράφεται παραπάνω, έχουν ιδιαίτερα χαρακτηριστικά που καθιστούσαν τις υπάρχουσες τεχνολογίες ανεπαρκείς. Η πραγματική αφετηρία των διαδικτυακών εφαρμογών ήταν η προσέλευση της HTML5 και η συνεχής εξέλιξη των περιηγητών οι οποίοι πλέον μπορούν να εκμεταλλευτούν αυτές τις νέες δυνατότητες. 52

53 Το κυριότερο μειονέκτημα των διαδικτυακών εφαρμογών είναι ότι αντίθετα με τις native εφαρμογές, οι οποίες έχουν ως περιβάλλον εκτέλεσης το λειτουργικό σύστημα και άρα συνδέονται άμεσα με αυτό, οι διαδικτυακές εφαρμογές εκτελούνται στον περιηγητή ιστού (browser). Ο περιηγητής ιστού είναι και αυτός με την σειρά του, μία native εφαρμογή, άρα έχει άμεση πρόσβαση στα APIs του λειτουργικού συστήματος, όμως μόνο μερικά από αυτά είναι διαθέσιμα στις εφαρμογές που εκτελούνται σε αυτόν. Ενώ οι native εφαρμογές έχουν πλήρη πρόσβαση στη συσκευή στην οποία εκτελούνται, οι web εφαρμογές έχουν περιορισμένη πρόσβαση σε πολλά χαρακτηριστικά της συσκευής και σε κάποιες περιπτώσεις η πρόσβαση απουσιάζει τελείως. Η απουσία πρόσβασης οφείλεται σε δύο κυρίως λόγους. Ο πρώτος είναι η ασφάλεια της συσκευής. Οι native εφαρμογές είναι διαθέσιμες μέσω διαφόρων marketplaces τα οποία πριν διαθέσουν μια εφαρμογή στους χρήστες, εξετάζουν τις λειτουργίες της και ελέγχουν εάν διαθέτει χαρακτηριστικά που θα μπορούσαν να είναι επιβλαβή για την συσκευή ή για τα ευαίσθητα προσωπικά δεδομένα του χρήστη. Στις web εφαρμογές αυτός ο έλεγχος απουσιάζει αφού είναι διαθέσιμες μέσω οποιουδήποτε εξυπηρέτη (server). Ο δεύτερος λόγος είναι η απουσία υλοποίησης διαφόρων προγραμματιστικών διεπαφών, έχοντας ως αποτέλεσμα την απουσία πρόσβασης σε διάφορες λειτουργίες της συσκευής. Ένα άλλο αρνητικό χαρακτηριστικό που πρέπει να αναφερθεί είναι ότι μια διαδικτυακή εφαρμογή μπορεί να είναι όσο αποδοτική της επιτρέπει ο περιηγητής. Όπως αναφέρθηκε νωρίτερα, οι διαδικτυακή προσέγγιση χρησιμοποιεί τον περιηγητή ιστού ως περιβάλλον εκτέλεσης. Το γεγονός αυτό επηρεάζει αρνητικά την απόδοση αφού η απόδοση της εφαρμογής δεν εξαρτάται μόνο από την επεξεργαστική ισχύ της συσκευής στην οποία εκτελείται, αλλά και από τον ίδιο τον περιηγητή. 4.5 Σύγκριση μεταξύ Native και Web προγραμματισμού Ένα από τα διλήμματα με τα οποία έρχονται αντιμέτωποι οι προγραμματιστές εφαρμογών για φορητές συσκευές είναι για το αν θα αναπτύξουν μία native εφαρμογή για τη συσκευή ή μία web based εφαρμογή, δηλαδή μία mobile εκδοχή ενός ιστοτόπου. Η ανάπτυξη app αφορά την επιλογή μεταξύ webview και native προγραμματισμού. Σίγουρα οι γνώμες διίστανται και υπάρχει αρκετό κοινό από developers που υποστηρίζουν είτε το ένα είτε το άλλο και μάλιστα φανατικά. 53

54 Εικόνα 17. Native έναντι Web εφαρμογών Προηγουμένως αναφέραμε τα χαρακτηριστικά της κάθε κατηγορίας καθώς και τα πλεονεκτήματα και μειονεκτήματα της κάθε υλοποίησης. Στον παρακάτω πινάκα φαίνονται συγκεντρωτικά οι διαφορές των δύο τύπων εφαρμογών για τα σημαντικότερα χαρακτηριστικά. Χαρακτηριστικά εφαρμογής Native εφαρμογές Web εφαρμογές Διαθέσιμη έμμεσα διαθέσιμη και έγκριση από app store απαιτεί εγκατάσταση διαθέσιμη στην τρέχουσα συσκευή άμεσα διαθέσιμη μέσω Browser πάντα διαθέσιμη ανεξαρτήτως συσκευής Διατήρηση λειτουργίας συνεχή απαιτείται πάντα σύνδεση στο διαδίκτυο Ποιότητα υψηλή ποιότητα δυνατότητες του δικτύου Πρόσβαση στη συσκευή πλήρης, μέσω native APIs σε όλα τα χαρακτηριστικά της συσκευής περιορισμένη προσφέρουν σημαντικά λιγότερες λειτουργίες Πλατφόρμα προορίζεται για ένα λειτουργικό σύστημα ανεξαρτησία πλατφόρμας Διεπαφή η γραφική διεπαφή χρήστη κληρονομείται από υστερούν εξαιτίας των περιορισμών των 54

55 το λειτουργικό σύστημα περιηγητών Προγραμματισμός κατακερματισμός, υψηλό κόστος, μεγάλος χρόνος υλοποίησης αποφυγή κατακερματισμού χαμηλό κόστος Ενημερώσεις (update) απαιτούν συνεχείς αυτόματη ενημέρωση εφαρμογών ενημερώσεις, απώλεια ελέγχου διαχείρισης τους 55

56 ΚΕΦΑΛΑΙΟ 5: Android Προγραμματισμός Διεπαφών Φορητών συσκευών Πλέον κυκλοφορούν στην αγορά περισσότερες από 1 δισεκατομμύριο συσκευές smartphone και tablet απειλώντας άμεσα την ύπαρξη και τις πωλήσεις των ηλεκτρονικών υπολογιστών. Το Android έπαιξε πολύ σημαντικό ρόλο σε αυτή την εξέλιξη, με το λειτουργικό της Google να έχει καταφέρει να εγκατασταθεί σε περισσότερες συσκευές από ότι όλες οι συσκευές των Apple, BlackBerry και Windows συνολικά. Μέχρι στιγμής έχουν κυκλοφορήσει περισσότερες από 39 διαφορετικές εκδόσεις του Android από το 2008 και μετά, χωρίς να υπολογίζονται μέσα σε αυτές όλες οι προσαρμοσμένες εκδόσεις της εκάστοτε εταιρίας. 5.1 Ιστορική αναδρομή To Android δημιουργήθηκε το 2003 στην Καλιφόρνια από τους Rubin, Miner, Sears και White. Αρχικός τους σκοπός ήταν να δημιουργήσουν ένα λειτουργικό για έξυπνα κινητά τα, οποία θα γνωρίζουν που βρίσκεται ο ιδιοκτήτης τους ανά πάσα στιγμή. Αρχικά η ομάδα του Android λειτουργούσε μυστικά, αλλά η μεγάλη ανάπτυξη στο λειτουργικό ξεκίνησε μετά την εξαγορά του από την Google τον Ιούλιο του Η μικρή εταιρεία Android Inc, μια μικρή εταιρεία με έδρα το Palo Alto στην California των ΗΠΑ, ήταν η αρχή της φημολογίας περί σχεδίων της Google για να διεισδύσει στην αγορά κινητής τηλεφωνίας. Η Google, που οι περισσότεροι γνωρίζουν, είναι μια Αμερικάνικη πολυεθνική βαθιά επενδυμένη στην ομώνυμη μηχανή αναζήτησης, υπηρεσίες "cloud" και στις τεχνολογίες διαφήμισης. Από τη χρονιά εκείνη μέχρι και το 2007 η Google δούλευε σιωπηλά πάνω στο Android κατοχυρώνοντας πατέντες και ψάχνοντας συνεργάτες. η οποία είναι μια κοινοπραξία εταιριών λογισμικού, κατασκευής hardware και τηλεπικοινωνιών, οι οποίες είναι αφιερωμένες στην ανάπτυξη και εξέλιξη ανοιχτών προτύπων στις φορητές συσκευές. Η πρώτη παρουσίαση της πλατφόρμας Android έγινε στις 5 Νοεμβρίου 2007, παράλληλα με την ανακοίνωση της ίδρυσης του οργανισμού Open Handset Alliance. Η Google δημοσίευσε το μεγαλύτερο μέρος του κώδικα του Android υπό τους όρους της Apache License, μιας ελεύθερης άδειας λογισμικού. Το 2007 δημιουργήθηκε η Open Handset Alliance, ένας συνεταιρισμός που αποτελούνταν από τη Google, την HTC, την Samsung, την Qualcomm (κατασκευαστές επεξεργαστών) και άλλους με σκοπό να κάνουν το Android ένα ανοικτό λογισμικό και 56

57 να κυκλοφορήσουν τα πρώτα smartphones με Android. Πράγματι, το πρώτο smartphone με λειτουργικό Android κυκλοφόρησε ένα χρόνο μετά από την HTC και ονομαζόταν HTC Dream. Εικόνα 18. HTC Dream Εικόνα 19 HTC Dream με λειτουργικό Android Από εκεί και μετά η ιστορία είναι λίγο πολύ γνωστή: με πρώτη τη Samsung, δεκάδες εταιρείες υιοθέτησαν το Android ως λειτουργικό και κατάφεραν να το κάνουν το κυρίαρχο λειτουργικό αυτή τη στιγμή στην αγορά. Η αναφορά της Samsung δεν είναι τυχαία, αφού είναι η πρώτη εταιρεία στις πωλήσεις κινητών παγκοσμίως και η εξάπλωση του Android οφείλεται κατά μεγάλο βαθμό σε αυτήν. Τι είναι το Android Το Android όπως έχουμε αναφέρει ήδη παραπάνω αποτελεί ένα λειτουργικό σύστημα το οποίο χρησιμοποιείται τα τελευταία χρόνια σε ολοένα και αυξανόμενο αριθμό έξυπνων κινητών τηλεφώνων (smarthphone), καθώς και σε ηλεκτρονικές ταμπλέτες (tablet pc s). Όλες οι λειτουργίες του κινητού τηλεφώνου ελέγχονται από εφαρμογές (applications) τις οποίες οι χρήστες μπορούν να κατεβάσουν και να εγκαταστήσουν ελεύθερα. Αξίζει να σημειωθεί ότι τα Android αποτελεί ελεύθερο λογισμικό ανοιχτού κώδικα (free and open source software), πράγμα που σημαίνει ότι οι κατασκευαστές κινητών τηλεφώνων ή άλλων ηλεκτρονικών συσκευών έχουν τη δυνατότητα να το χρησιμοποιήσουν στα προϊόντα τους ελεύθερα και χωρίς κόστος. Το γεγονός αυτό αποτέλεσε τον καταλύτη στη διάδοση του λειτουργικού αυτού συστήματος. Παράλληλα τα εργαλεία για την κατασκευή εφαρμογών υπάρχουν ελεύθερα στο διαδίκτυο, έτσι 57

58 ώστε οποιοσδήποτε προγραμματιστής να έχει τη δυνατότητα να κατασκευάσει και να δημοσιεύσει εφαρμογές. Το Android SystemDevelopment Kit παρέχει στους προγραμματιστές όλα τα εργαλεία και APIs για να αρχίσουν να αναπτύσσουν λογισμικό για την πλατφόρμα Android χρησιμοποιώντας τη γλώσσα προγραμματισμού Java. Στη συνέχεια θα γίνει σύντομη περιγραφή στα εργαλεία αυτά και μια ανάλυση των βασικών στοιχείων που αφορούν στην ανάπτυξη εφαρμογών σε λειτουργικό σύστημα Android. 5.2 Αρχιτεκτονική του Android Με το λειτουργικό σύστημα Android μπορούν να δημιουργηθούν πολύ ισχυρές εφαρμογές για ένα smartphone. Σκοπός ενός λειτουργικού συστήματος, όπως και του Android είναι να δίνει την δυνατότητα στον χρήστη να χρησιμοποιεί τους πόρους του συστήματος με μια διεπαφή κατανοητή και περισσότερο κοντά στον άνθρωπο. Η πλατφόρμα του Android είναι χωρισμένη σε τέσσερα επίπεδα στρωμάτων λογισμικού και πέντε ομάδες, όπως φαίνονται στο παρακάτω σχήμα. Τα επίπεδα αυτά από το χαμηλότερο προς το υψηλότερο είναι ο πυρήνας Linux, οι βασικές βιβλιοθήκες και το Android runtime, το Applications Framework και το στο υψηλότερο επίπεδο συναντάμε τις εφαρμογές του συστήματος Android. Το κάθε επίπεδο χαρακτηρίζεται από ξεκάθαρους και αυστηρά καθορισμένους ρόλους που θα αναλυθούν παρακάτω. Εικόνα 19. Επίπεδα του συστήματος Android 58

59 Πρώτο επίπεδο πυρήνας Linux. Στο κατώτερο επίπεδο της λογισμικής στοίβας του Android συναντάμε τον πυρήνας (Kernel). Πυρήνα ονομάζουμε το τμήμα ενός λειτουργικού, το οποίο αναλαμβάνει την διασύνδεση των εφαρμογών με το hardware. Το Android βασίζεται στον πυρήνα Linux στην έκδοση 2.6 και τον χρησιμοποιεί για τις βασικές υπηρεσίες του συστήματος όπως ασφάλεια, διαχείριση μνήμης, διαχείριση διεργασιών, δικτύωση και τους οδηγούς συσκευών (drivers). Για παράδειγμα στον Android Kernel μίας συσκευής, ενσωματώνονται όλοι οι drivers για τα διάφορα υποσυστήματά της, όπως οι drivers για το WiFi, το Bluetooth, το GPS κτλ. Ο πυρήνας λειτουργεί επίσης ως ένα ενδιάμεσο επίπεδο αφαίρεσης μεταξύ της στοίβας λογισμικού και του υλικού. Χτίζοντας τα υπόλοιπα επίπεδα του Android πάνω από τον πυρήνα του Linux διασφαλίζεται ένα πολύ σημαντικό χαρακτηριστικό για το λειτουργικό αυτό σύστημα. Αυτό σημαίνει ότι αν κάποιος κατασκευαστής κινητών συσκευών επιθυμεί να διαθέσει τις συσκευές του με το λειτουργικό σύστημα Android το μόνο που χρειάζεται, να κάνει είναι να υλοποιήσει τους οδηγούς που απαιτούνται για τα περιφερικά που διαθέτει κάθε συσκευή του. Όλα τα υπόλοιπα επίπεδα της στοίβας μπορούν να μείνουν ως έχουν μιας και αυτά βασίζονται αποκλειστικά στο κατώτατο επίπεδο του πυρήνα του Linux και καθόλου στο υπάρχον υλικό (εξ ου και η ονομασία επίπεδο αφαίρεσης υλικού). Η επιλογή της έκδοσης πυρήνα 2.6, είχε σαν αποτέλεσμα κάθε καινούρια έκδοση του πυρήνα που κυκλοφορούσε να πρέπει να προσαρμοστεί, αντίστοιχα με την έκδοση 2.6, πριν μπορέσουν οι χρήστες του Android να επωφεληθούν από τα νέα χαρακτηριστικά που τυχόν θα έχουν εισαχθεί. Με την έκδοση 3.3 του πυρήνα του Linux, έχει γίνει η πολυπόθητη από πολλούς συγχώνευση του κώδικα του Android. Πλέον τα νέα χαρακτηριστικά που εισάγονται στον πυρήνα γίνονται άμεσα διαθέσιμα και στο λειτουργικό σύστημα Android. Επιπλέον, ανοίγουν οι πόρτες για την εκτέλεση του Android ακόμη και σε προσωπικούς υπολογιστές. Δεύτερο επίπεδο βασικών βιβλιοθηκών και Android Runtime. Το Android περιλαμβάνει ένα σύνολο βασικών βιβλιοθηκών γραμμένων σε C και C++ που χρησιμοποιούνται από διάφορα συστατικά μέρη του συστήματος. Οι βιβλιοθήκες αυτές, γίνονται διαθέσιμες στους προγραμματιστές μέσω του πλαισίου εφαρμογών του Android. Παρέχουν τις βασικές λειτουργικότητες όπως αυτή των γραφικών, του ήχου και άλλες. 59

60 Οι βιβλιοθήκες αυτές δεν αποτελούν εφαρμογές που μπορούν να στηθούν από μόνες τους. Υπάρχουν για να χρησιμοποιούνται και να ενσωματώνονται από τις εφαρμογές ώστε να έχουν πρόσβαση στις διάφορες λειτουργίες που παρέχει η καθεμία και να μπορούν να κληθούν από προγράμματα υψηλότερου επιπέδου. Αποτελούν ένα από τα δομικά υλικά των εφαρμογών, και είναι αναπόσπαστο κομμάτι τους. Από την έκδοση Donut και μετά, οι κατασκευαστές μπορούν να γράφουν τις δικές τους τέτοιες βιβλιοθήκες με την χρήση της Εργαλειοθήκης NDK (Native Development Kit). Μερικές από τις κύριες βιβλιοθήκες του Android είναι: Βιβλιοθήκη συστήματος C : μια ενσωμάτωση της standard βιβλιοθήκης συστήματος της C (libc) τροποποιημένη για κινητές συσκευές βασισμένες στο Linux. Βιβλιοθήκες Πολυμέσων : Υποστηρίζει αναπαραγωγή και εγγραφή πολλών δημοφιλών μέσων ήχου και εικόνας, όπως: MPEG4, H.264, MP3, AAC, AMR, JPG, και PNG Surface Manager : διαχειρίζεται την πρόσβαση στο υποσύστημα προβολής, και συνθέτει δισδιάστατα (2D) και τρισδιάστατα (3D) επίπεδα γραφικών τα οποία προέρχονται από πολλαπλές εφαρμογές. LibWebCore : μια μοντέρνα μηχανή υποστήριξης πλοήγηση στο διαδίκτυο (browser engine) η οποία χρησιμοποιείτε και από τον ενσωματωμένο browser του Android αλλά και από τις WebViews που ενσωματώνονται στις εφαρμογές. SGL : η μηχανή που παράγει δισδιάστατα γραφικά Βιβλιοθήκες 3D : μια υλοποίηση βασισμένη στα APIs του OpenGL ES 1. Οι βιβλιοθήκες χρησιμοποιούν είτε τρισδιάστατη επιτάχυνση υλικού, όπου αυτή είναι διαθέσιμη, είτε μια υψηλά βελτιωμένη τρισδιάστατη επιτάχυνση λογισμικού σε περίπτωση που η πρώτη δεν είναι διαθέσιμη. FreeType : παρέχει ευκρίνεια γραφικών στα bitmaps και τις γραμματοσειρές των εφαρμογών του συστήματος. QLite : μια πανίσχυρη και ταυτόχρονα πολύ ελαφριά σχεσιακή βάση δεδομένων διαθέσιμη σε όλες τις εφαρμογές. Android Runtime (Χρόνος Εκτέλεσης Εφαρμογής) Ο χρόνος εκτέλεσης των εφαρμογών του Android, βρίσκεται στο ίδιο επίπεδο με τις βασικές βιβλιοθήκες και την μηχανή Dalvik. 60

61 Βασικές βιβλιοθήκες: Το Android περιλαμβάνει ένα σύνολο βασικών βιβλιοθηκών που παρέχουν τις περισσότερες από τις διαθέσιμες λειτουργίες των βασικών βιβλιοθηκών της Java, οι οποίες όμως είναι γραμμένες ειδικά για τον διερμηνευτή του Android Μηχανή Dalvik είναι η εικονική μηχανή μέσω της οποίας τρέχουν οι εφαρμογές του Android. Η εικονική μηχανή Dalvik Οι εφαρμογές του περιβάλλοντος Android καθώς και πολλές από τις βιβλιοθήκες υψηλού επιπέδου (στο επίπεδο του Application Framework) είναι γραμμένες στην γλώσσα προγραμματισμού Java. Στην Java, όπως αναφέραμε σε προηγούμενο κεφάλαιο, υπάρχει η λεγόμενη Java Virtual Machine στην οποία εκτελείτε ο κώδικας bytecode των εφαρμογών. Στο Android δεν έχει χρησιμοποιηθεί ο τυπικός Java διερμηνευτής για ενσωματωμένα συστήματα Java ME αλλά υλοποιήθηκε ένας διερμηνευτής ειδικά για το Android που είναι βελτιστοποιημένος για μικρά ενσωματωμένα συστήματα με περιορισμένους πόρους (απαιτεί ένα ελάχιστο 64MB μνήμης) και ονομάζεται Dalvik. Το χαρακτηριστικό αυτό του Android το διαφοροποιεί από όλα τα άλλα ανταγωνιστικά λειτουργικά συστήματα κινητών συσκευών που χρησιμοποιούν γλώσσες όπως C, C++ και Objective C. Κάθε εφαρμογή στο Android εκτελείτε σε ένα δικό της στιγμιότυπο του Dalvik, δεν έχει επαφή με την άλλη ενώ εκτελούνται ταυτόχρονα, καθώς τρέχει μέσω τις δικής της εικονικής μηχανής στη δικιά της διεργασία απομονώνοντας την από τις υπόλοιπες εφαρμογές, διασφαλίζοντας έτσι την ευστάθεια και την ασφάλεια του λειτουργικού συστήματος. Τα αρχεία με τα bytecodes που παράγονται για εκτέλεση από τον Dalvik είναι αρκετά μικρότερα από τα αντίστοιχα Java bytecodes που παράγονται για εκτέλεση στον JVM (Java Virtual Machine) μειώνοντας έτσι σημαντικά τον χώρο που απαιτεί κάθε εφαρμογή για την εγκατάστασή της. Τα αρχεία εγκατάστασης των εφαρμογών έχουν την κατάληξη.apk και περιέχουν τα αρχεία.dex, που περιέχουν τα bytecodes προς εκτέλεση από τον Dalvik, καθώς και διάφορα συνοδευτικά αρχεία που η κάθε εφαρμογή χρειάζεται (εικόνες, ήχους κ.λπ). Τα αρχεία dex ουσιαστικά αποτελούν συμπιεσμένα δεδομένα για εξοικονόμηση χώρου κατά την εκτέλεση. 61

62 Προκειμένου τα.dex αρχεία να είναι μικρά τυχόν δεδομένα που εμφανίζονται πολλές φορές στις κλάσεις μιας εφαρμογής αποθηκεύονται μονάχα μία φορά και όπου χρειάζεται δημιουργούνται αναφορές σε αυτά. Μηχανισμοί διαχείρισης μνήμης χαμηλής κατανάλωσης Το Android είναι από τη φύση του multitasking λειτουργικό σύστημα και για αυτό επιτρέπει στις εφαρμογές του να τρέχουν σε πολλά νήματα ταυτόχρονα και να απασχολούν πολλές διαδικασίες εάν αυτό είναι αναγκαίο. Για να γίνει αυτό εφικτό η μηχανή Dalvik είναι σχεδιασμένη για να έχει ελάχιστο αντίκτυπο στη χρήση της μνήμης. Χάρη στον λιτό της σχεδιασμό, το σύστημα είναι σε θέση να τρέχει πολλές εικονικές μηχανές ταυτόχρονα. Μερικοί μηχανισμοί που εκτελεί η Dalkin για την σωστή διαχείριση της μνήμης είναι το εργαλείο dexopt, η διεργασία Zygote και ο συλλέκτης σκουπιδιών. Κατά την εκτέλεση των εφαρμογών στο Android πρέπει να γίνει επαλήθευση της δομής του.dex αρχείου και να εκτελεστούν κάποιες βελτιστοποιήσεις που αφορούν το μέγεθος του και την πολυπλοκότητα του κώδικά του. Το εργαλείο dexopt είναι αυτό που πραγματοποιεί τις παραπάνω βελτιστοποιήσεις. Η διαδικασία επαλήθευσης ορθότητας της εφαρμογής είναι γενικά χρονοβόρα διαδικασία και απαιτείται να γίνει μόνο μια φορά εκτός και αν τα αρχεία της εφαρμογής αλλάξουν (λόγο αναβάθμισης της εφαρμογής ή επανεγκατάστασης της). Στο Android, ο απαιτούμενος έλεγχος, προτιμάται να γίνεται κατά την εγκατάσταση της εφαρμογής προκειμένου να μειωθεί ο χρόνος της πρώτης εκκίνησης της εφαρμογής από τον χρήστη. Το εργαλείο dexopt για να επαληθεύσει την ορθότητα της δομής των αρχείων.dex τα φορτώνει σε ένα στιγμιότυπο του διερμηνευτή και ελέγχει όλες τις εντολές, όλων των κλάσεων που αυτό περιέχει προκειμένου να εντοπίσει προβληματικές δηλώσεις πριν αυτές δημιουργήσουν πρόβλημα στην εκτέλεση της εφαρμογής. Στο τέλος της διαδικασίας δημιουργεί ένα άθροισμα ελέγχου (checksum) και το αποθηκεύει στο αρχείο. Έκτος από τον έλεγχο δομικής ορθότητας των αρχείο, το dexopt, πραγματοποιεί και κάποιες βελτιστοποιήσεις που σαν σκοπό έχουν την αύξηση των επιδόσεων της εφαρμογής μέσω της μείωσης του μεγέθους και της πολυπλοκότητας του κώδικα της. Η διαδικασία βελτιστοποίησης είναι άρρηκτα συνδεδεμένη με την εκάστοτε έκδοση του διερμηνευτή και γιαυτό δεν μπορούν να πραγματοποιηθούν αλλού παρά μόνο στην συγκεκριμένη συσκευή που εγκαθίσταται η εφαρμογή. Για την μείωση του μεγέθους του κώδικα τυχόν άδειες μέθοδοι αντικαθίστανται από εντολές μη ενέργειας (nop instaructions) και συχνά χρησιμοποιούμενες μέθοδοι γίνονται inline κερδίζοντας έτσι 62

63 τον χρόνο που απαιτείται για την διαδικασία κλήσης μιας μεθόδου. Επιπλέον, για να πετύχει καλύτερη εκμετάλλευση της βοηθητικής μνήμης του επεξεργαστή (cache memory), τύποι δεδομένων που έχουν μέγεθος μικρότερο των 32bit συγχωνεύονται σε λέξεις των 32bit. Επιπλέον των βελτιστοποιήσεων και ελέγχων που γίνονται στο αρχείο.dex το Android Runtime περιβάλλον προσπαθεί να χειρίζεται την μνήμη με όσο το δυνατόν καλύτερο τρόπο. Στον Dalvik υπάρχουν τμήματα μνήμης που είναι κοινά και άλλα που ανήκουν μονάχα στην εκάστοτε εφαρμογή. Για την διαχείριση των κοινών τμημάτων μνήμης το Android χρησιμοποιεί το Zygote. Το Zygote είναι μια διεργασία που ξεκινά κατά την εκκίνηση του λειτουργικού συστήματος και είναι γονική διεργασία όλων των στιγμιότυπων του διερμηνευτή που ξεκινούν για εκτέλεση εφαρμογών. Το Zygote φορτώνει και αρχικοποιεί κλάσεις που χρησιμοποιούνται πολύ συχνά από τις εφαρμογές. Για παράδειγμα, τα.dex αρχεία των βιβλιοθηκών του συστήματος που είναι διαθέσιμες στις εφαρμογές. Ένας άλλος μηχανισμός του Android για σωστή διαχείριση μνήμης είναι ο συλλέκτης σκουπιδιών (garbage collector). Κάθε στιγμιότυπο του διερμηνευτή έχει τον δικό του συλλέκτη και άρα η περιοχή μνήμης που έχει στην διάθεσή του καθαρίζεται ανεξάρτητα από τους άλλους διερμηνευτές. Κύριος ρόλος του συλλέκτη είναι να ελευθερώνει περιοχές μνήμης που καταλαμβάνονται από δεδομένα που δεν θα χρειαστούν ξανά κατά την πορεία εκτέλεσης του της εφαρμογής. Τρίτο επίπεδο Applications Framework Στο επόμενο επίπεδο της αρχιτεκτονικής του Android λοιπόν, συναντάμε το πλαίσιο των εφαρμογών και ενδιαφέρει περισσότερο τον προγραμματιστή εφαρμογών. Το επίπεδο αυτό παρέχει υψηλού επιπέδου δομικές μονάδες οι οποίες μπορούν να χρησιμοποιηθούν για κατασκευή εφαρμογών. Παρέχει μια πληθώρα από API τα οποία δίνουν την δυνατότητα στους προγραμματιστές να ενσωματώσουν στις εφαρμογές τους και να αναπτύξουν δυνατές και πλούσιες σε υλικό εφαρμογές. Παρέχονται δυνατότητες όπως συνδεσιμότητα στο διαδίκτυο, δημιουργία διεπαφών χρήστη, πρόσβαση στα αποθηκευτικά μέσα της συσκευής, μπορούν να εκμεταλλευτούν όλα τα πλεονεκτήματα που τους προσφέρει το υλικό της συσκευής, να έχουν πρόσβαση σε πληροφορίες που έχουν σχέση με την τοποθεσία, να τρέξουν υπηρεσίες στο περιθώριο, να ορίσουν ειδοποιήσεις, και πάρα πολλές ακόμη δυνατότητες οι οποίες βασίζονται στα APIs που είναι διαθέσιμα. 63

64 Τα σημαντικότερα Apis του πλαισίου εφαρμογών είναι: Activity Manager (Διαχειριστής Δραστηριοτήτων): ελέγχει τον κύκλο ζωής των εφαρμογών και παρέχει δυνατότητα πλοήγησης από εφαρμογή σε εφαρμογή κρατώντας αποθηκευμένη στη μνήμη τη σειρά εκτέλεσης αυτών. Resource Manager (Διαχειριστής Πόρων): παρέχει πρόσβαση σε υλικό το οποίο δεν είναι σε μορφή κώδικα όπως πχ, εικόνες, κωδικοί χρωμάτων, αλφαριθμητικοί χαρακτήρες, αρχεία xml, πίνακες χαρακτήρων, κλπ. Location Manager (Διαχειριστής Τοποθεσίας): Χρησιμοποιείται για να μπορεί να γνωρίζει το τηλέφωνο που βρίσκεται ανά πάσα στιγμή. Notification Manager (Διαχειριστής Ειδοποιήσεων): επιτρέπει στις εφαρμογές πρόσβαση στις υπηρεσίες ειδοποιήσεων χρήστη π.χ ειδοποιήσεις στη μπάρα κατάστασης, δόνηση του κινητού, ενεργοποίηση της οθόνης. Content Provider (Πάροχος Περιεχομένου): δίνει τη δυνατότητα στις εφαρμογές να μοιράζονται ή να ανταλλάσσουν δεδομένα. Παραδείγματα δεδομένων, είναι οι επαφές χρήστη και οι βάσεις δεδομένων των εφαρμογών. Τέταρτο επίπεδο των εφαρμογών Στο ανώτερο επίπεδο βρίσκονται οι εφαρμογές του Android. Όλες οι εφαρμογές είναι γραμμένες σε Java. Είναι διαθέσιμες ένα σύνολο εφαρμογών που περιλαμβάνει client, εφαρμογή για αποστολή/λήψη SMS και για την πραγματοποίηση κλήσεων, κατάλογο επαφών, ημερολόγιο, χάρτες, περιηγητή διαδικτύου και πολλές άλλες. Φυσικά είναι στη διάθεση των προγραμματιστών και άρα των εφαρμογών όλα τα APIs του προηγούμενου επιπέδου Application Framework και όλες οι δυνατότητες που έχουν αναφερθεί από τα προηγούμενα επίπεδα λογισμικού. 5.3 Εκδόσεις του Android Οι εκδόσεις του Android Το Android έχει χτιστεί πάνω στο λειτουργικό σύστημα Linux, με τροποποιήσεις που να ταιριάζουν σε κινητές συσκευές. Από το 2008 που βγήκε το πρώτο Android smartphone μέχρι σήμερα έχουν βγει αρκετές εκδόσεις οι οποίες πάντα παίρνουν το Εικόνα 20. Γραφεία της Google 64

65 όνομά τους από γλυκά και επιδόρπια. H ονομασία των εκδόσεων αυτών ακολουθεί αλφαβητική σειρά, πχ Froyo, Gingerbread, Honeycomb, Ice Cream Sandwich, κλπ. Ας δούμε με χρονολογική σειρά τις κυριότερες εκδόσεις Android που κυκλοφόρησαν από το 2008 μέχρι σήμερα: Android 1.0 και Android 1.1 Η έκδοση 1.0 πρωτοκυκλοφόρησε το 2008 με το πρώτο Android smartphone HTC Dream. Android 1.5 Cupcake Κυκλοφόρησε την άνοιξη του 2009 και ήταν το πρώτο που είχε όνομα γλυκού. Εικόνα 21. Λογότυπο Cupcake Android 1.6 Donut Κυκλοφόρησε το φθινόπωρο του 2009 και συμπεριελάμβανε νέες βελτιώσεις όπως αυτόματη περιστροφή οθόνης και εφέ κίνησης κατά την περιήγηση στις διαφορετικές οθόνες. Android 2.0 Eclair Εικόνα 22. Λογότυπο Donut 65

66 Κυκλοφόρησε μόλις ένα μήνα μετά το Donut (φθινόπωρο 2009) και συμπεριελάμβανε αρκετές μικρές βελτιώσεις. Εικόνα 23. Λογότυπο Eclair Android Froyo Κυκλοφόρησε το Μάιο του 2010 και είναι συντόμευση της φράσης Frozen Yogurt (παγωμένο γιαούρτι). Είναι η πρώτη έκδοση του Android που υποστήριζε Adobe Flash. Εικόνα 24. Λογότυπο Froyo Android Gingerbread Κυκλοφόρησε τον Δεκέμβρη του 2010 και παραμένει μέχρι και σήμερα η πιο πολυπληθής έκδοση του Android. Ήταν πολύ πιο γρήγορο και εύχρηστο από τις προηγούμενες εκδόσεις και έδινε στους δημιουργούς εφαρμογών μεγαλύτερες δυνατότητες. 66

67 Εικόνα 25. Λογότυπο Gingerbread Android Honeycomb Κυκλοφόρησε τον Φεβρουάριο του 2011 και ήταν διαθέσιμη μόνο για tablets. Η πρώτη συσκευή που έτρεχε σε Honeycomb ήταν το tablet Motorola Xoom. Εικόνα 26. Λογότυπο Honeycomb Android Ice Cream Sandwich Κυκλοφόρησε τον Οκτώβρη του 2011 και έφερε πάρα πολλές αλλαγές στο λειτουργικό σύστημα. Μερικές από αυτές είναι η δυνατότητα χρήσης μαλακών κουμπιών δηλαδή κουμπιών πάνω στην οθόνη (πίσω, αρχική, κλπ) ενώ μέχρι τότε όλα τα κινητά είχαν εξωτερικά κουμπιά. Άλλες δυνατότητες ήταν το Face Unlock, καλύτερη χρήση των φωνητικών εντολών, αναδιαμόρφωση του περιβάλλοντος χρήσης, βελτίωση της ταχύτητας απόκρισης κλπ 67

68 Εικόνα 27. Λογότυπο Ice Cream Sandwich Android Jelly Bean Κυκλοφόρησε τον Ιούνιο του 2012 και αποτελεί την καλύτερη έκδοση του Android μέχρι σήμερα. Το περιβάλλον χρήσης και η απόκρισή του είναι πιο γρήγορα και καλοφτιαγμένα από ποτέ ενώ περιλαμβάνει πάρα πολλές μικρές βελτιώσεις σε όλο το σύστημα, όπως για παράδειγμα στην χρήση φωνής (υπαγόρευση κειμένου) και στην κάμερα. Η πρώτη συσκευή που είχε το Jelly Bean ήταν το tablet Google Nexus 7 ενώ η έκδοση Android 4.2 πρωτοεμφανίστηκε στα Nexus 4 και Nexus 10. Εικόνα 28. Λογότυπο Jelly Bean 68

69 Android 4.4 KitKat ονομάζεται η νέα έκδοση του Android Η επόμενη έκδοση του λειτουργικού συστήματος Android 4.4, σύμφωνα και με το επίσημο της εν τέλη δεν θα ονομάζετε Key Lime Pie όπως όλοι περιμέναμε εδώ και χρόνια αλλά Kit Kat. Η Google σε συνεννόηση με την Nestle που κατέχει τα πνευματικά δικαιώματα του ονόματος Kit Kat, βάπτισε την νέα έκδοση Android με το όνομα του πολυαγαπημένου σνακ. Εικόνα 29. Λογότυπο KitKat Λέγεται ότι η επόμενη έκδοση θα είναι η Android 5.0 που θα ονομάζεται Key Lime Pie. Πρέπει να σημειωθεί ότι οι εταιρείες κατασκευής smartphones πολλές φορές προσαρμόζουν το Android στα δικά τους γούστα, βάζοντας νέες δυνατότητες και χαρακτηριστικά, όπως είναι για παράδειγμα το Touchwiz της Samsung. Άλλωστε το Android είναι ανοιχτό λογισμικό που σημαίνει ότι μπορεί ο καθένας να επέμβει και να το επεξεργαστεί όπως εκείνος νομίζει. 69

70 ΚΕΦΑΛΑΙΟ 6: Διεπαφές χρήστη εφαρμογών Η διεπαφή χρήστη ή αλλιώς το user interface είναι ένα από τα σημαντικότερα κομμάτια μιας εφαρμογής. Για την ανάπτυξη μιας εφαρμογής απαιτούνται δύο πράγματα: η συγγραφή του κώδικα και ο σχεδιασμός της διεπαφής Αυτά τα δύο στοιχεία είναι το ίδιο σημαντικά για την επιβίωση μιας εφαρμογής και είναι στενά συνδεδεμένα μεταξύ τους. Δουλειά του προγραμματιστή λοιπόν, δεν είναι μόνο να γράψει τον κώδικα σωστά αλλά και να κατασκευάσει ένα εύχρηστο και όμορφο περιβάλλον εργασίας. Ο κώδικας σαφώς και πρέπει να είναι σωστά γραμμένος, είναι η καρδιά μιας εφαρμογής και για να προσφέρει ότι υπόσχεται πρέπει να μην έχει λάθη. Όμως για έναν χρήστη ο κώδικας είναι αόρατος! Ποτέ δεν θα κρίνει ένας χρήστης μιας εφαρμογής για το πόσο καλά οργανωμένο ή κακογραμμένο κώδικα έχει. Θα κρίνει αρνητικά μόνο αν η εφαρμογή περιέχει μη λειτουργικά σημεία εξαιτίας λανθασμένου κώδικα. Από την άλλη μεριά, οι χρήστες το πρώτο πράγμα με το οποίο αλληλεπιδρούν σε μια εφαρμογή είναι η διεπαφή της. Αποτελεί την τελική εικόνα που βλέπει ο χρήστης, το γραφικό περιβάλλον στο οποίο θα περιηγηθεί και ενεργοποιεί όλες τις λειτουργίες της εφαρμογής. Η διεπαφή και η λειτουργικότητα της εφαρμογής αποτελούν αλληλένδετα στοιχεία και χωρίς το ένα δεν μπορεί να υπάρξει το άλλο. Μια εφαρμογή προορίζεται για να καλύψει κάποια ανάγκη των καταναλωτών, οι οποίοι θα αποφασίσουν αν θα την αγοράσουν, αν θα την χρησιμοποιήσουν και θα κρίνουν, θετικά ή αρνητικά τη λειτουργικότητα της. Το αποτέλεσμα μιας εφαρμογής είναι επιτυχημένο όταν αυτή παρέχει μια πολύ προσεγμένη, εύχρηστη και ευχάριστη διεπαφή. Τότε ο χρήστη είναι ευχαριστημένος και επιλέγει να χρησιμοποιήσει μια συγκεκριμένη εφαρμογή έναντι μιας άλλης με τις ίδιες λειτουργίες. Καταλήγουμε λοιπόν ότι οι προγραμματιστές πρέπει να δίνουν την ίδια προσοχή τόσο στον κώδικά όσο και στην διεπαφή. Συνεργασία καλογραμμένου κώδικα και καλοσχεδιασμένης διεπαφής δίνει αποτέλεσμα μιας άξιας ανταγωνισμού εφαρμογής, που θα προσελκύει τους χρήστες να την διαλέξουν ανάμεσα από άλλες. 70

71 6.1 Σχεδίαση και Ανάπτυξη Διεπαφής Χρήστη Μία διεπαφή που δεν έχει σχεδιαστεί προσεκτικά, έχει πολλές πιθανότητες να δυσαρεστήσει τον χρήστη και να είναι η αιτία η εφαρμογή να απαξιωθεί. Πολλές φορές αρκούν μόνο λίγα δευτερόλεπτα για να κερδίσει ή να χάσει μια εφαρμογή έναν χρήστης μόνο και μόνο από τη διεπαφή της. Πριν ξεκινήσουμε τη σχεδίαση της διεπαφής, σε οποιοδήποτε λειτουργικό, είτε είναι Android είτε ios είτα οποιοδήποτε άλλο, καλό είναι να γνωρίζουμε κάποιους κανόνες και να τους ακολουθούμε. Τα θέματα στα οποία εστιάζει η διαδικασία της σχεδίασης αποδοτικών διεπαφών είναι : Να γνωρίζουμε το κοινό μας. Αυτό σημαίνει ότι εντοπίζουμε την ανάγκη που έχει μια μερίδα πληθυσμού (target group) και ασχολούμαστε με το πώς θα ικανοποιήσουμε αυτή την ανάγκη. Να ξέρουμε σε ποιους απευθύνετε η εφαρμογή μας, ποιοι θα είναι οι χρήστες που θα την χρησιμοποιούν και να ψάξουμε και να μελετήσουμε τα χαρακτηριστικά τους και τις ανάγκες τους. Τα χαρακτηριστικά που θα πρέπει να γνωρίζουμε είναι πληροφορίες όπως η ηλικία, η κουλτούρα τους, η γλώσσα που μιλούν, την εμπειρία, τις δυνατότητες τους, αν έχουν κάποια διανοητικά προβλήματα ή αναπηρίες κ.λπ. Για να κερδίσει μια εφαρμογή ένα πιθανό χρήστη, πρέπει να καλύπτει τις ανάγκες του και να είναι κομμένη και ραμμένη στα μέτρα του. Να ορίσουμε ένα σύνολο σεναρίων χρήσης που περιγράφουν τις απαιτήσεις και ικανοποιούν της ανάγκες του χρήστη. Κανόνες σχεδιασμού στους οποίους πρέπει να υπακούει μια διεπαφή (Θα αναλυθούν παρακάτω) Η αλληλεπίδραση χρήστη διεπαφής να γίνεται με τέτοιο τρόπο ώστε η συνολική λειτουργία της εφαρμογής να συναντά την μέγιστη αποδοτικότητα. Η παρουσίαση πληροφορίας να γίνεται με τον πλέον παραστατικό, πλήρη, σαφή και κατανοητό τρόπο Η καθοδήγηση των ενεργειών του χρήστη να είναι όσο το δυνατόν πιο προφανής. Η Αξιολόγηση της διεπαφής της εφαρμογής από δείγμα χρηστών του κοινού για το οποίο προορίζεται. Η αξιολόγηση βασίζεται στις εντυπώσεις των τελικών χρηστών και μπορούμε να αποφύγουμε τυχόν παρεκτροπή από τον στόχο μας που είναι να μην ανταποκρίνεται στις ανάγκες των χρηστών. Η αξιολόγηση γίνεται για παράδειγμα με ερωτηματολόγια που ζητάμε να απαντήσει το δείγμα 71

72 χρηστών, και με βάση τις απαντήσεις αξιολογούμε και βγάζουμε συμπεράσματα και αναλόγως μεταβαίνουμε σε αλλαγές και διορθώσεις. 6.2 Σχεδίαση διεπαφών στο Android Η σχεδίαση των διεπαφών των εφαρμογών Android ακολουθεί ανθρωποκεντρική κατεύθυνση βάζοντας τον χρήστη και τις ανάγκες του στο επίκεντρο του σχεδιασμού. Η διεπαφή πρέπει να είναι προσανατολισμένη στον χρήστη παρά στον υπολογιστή Συσκευές και Layouts Το Android εξουσιάζει εκατομμύρια κινητά τηλέφωνα, ταμπλέτες και άλλες συσκευές σε μια ευρεία ποικιλία μεγεθών οθόνης. Με την αξιοποίηση του ευέλικτου συστήματος διάταξης διεπαφών (Layouts) του Android, μπορούμε να δημιουργήσουμε εφαρμογές που ομαλά κλιμακώνονται και προσαρμόζονται από μεγάλες ταμπλέτες σε μικρότερα τηλέφωνα. Εικόνα 30. Συσκευές και διαφορετικά Layouts Από το User Experience Team του Android αναπτύχθηκαν κάποιες τεχνικές και αρχές σχεδιασμού, με σκοπό να διατηρήσει τα συμφέροντα των χρηστών στο μυαλό του κάθε προγραμματιστή εφαρμογών. Στη παρούσα εργασία θα μελετήσουμε μερικές από τις τεχνικές, τις οποίες κρίναμε σημαντικότερες. Αν σκεφτούμε, ο κάθε ένας από εμάς, πως θα τις εφαρμόσει στη δική του δημιουργικότητα και στο σχεδιασμό σκέψης θα λιγοστέψουν οι πιθανότητες να αποκλίνουμε από το στόχο μας, που είναι σωστές διεπαφές = ευχαριστημένοι χρήστες! 72

73 6.3 Τεχνικές του Android για σωστά Interfaces Οι τεχνικές του Android προωθούν: Την ευελιξία Τέντωμα και συμπίεση των διατάξεων μας για να φιλοξενηθούν απο διάφορα ύψη και πλάτη. Βελτιστοποίηση διατάξεων Στις μεγαλύτερες συσκευές, οι διεπαφές να επωφεληθούν από επιπλέον οθόνη. Δημιουργία σύνθετων προβολών, που συνδυάζουν πολλαπλές προβολές για να αποκαλύψουν περισσότερο περιεχόμενο και ευκολία πλοήγησης. Περιουσιακά στοιχεία για όλους Διάθεση πόρων για διάφορες πυκνότητες οθόνης (DPI) για να διασφαλιστεί ότι η εφαρμογή θα είναι ευπαρουσίαστη σε οποιαδήποτε συσκευή. Παρακάτω παρουσιάζονται μερικές από αυτές τις τεχνικές. 6.4 Διάταξη των στοιχείων της διεπαφής Το Android τρέχει σε μια ποικιλία συσκευών διαφορετικών μεγεθών οθόνης και πυκνοτήτων. Για παράδειγμα, ένα UI (User Interface) για tablets είναι διαφορετικό από το UI για smartphones. Αυτό σημαίνει ότι πρέπει να δώσουμε ιδιαίτερη προσοχή στον τρόπο με τον οποίο ορίζουμε τα στοιχεία της διεπαφής μας. Η Google βοηθάει τους προγραμματιστές της παρέχοντας τεχνικές και μεθόδους για να εξασφαλίσει σωστές εμφανίσεις των διεπαφών των εφαρμογών της. Παρακάτω θα μιλήσουμε για μερικές από αυτές της τεχνικές, που αν της ακολουθήσουμε θα έχουμε λιγότερες πιθανότητες να δημιουργηθούν προβλήματα κατά την εκτέλεση των εφαρμογών μας. 6.5 Μέγεθος στοιχείων διεπαφής. Μια από της τεχνικές που έχει επινοήσει η Google για το Android, αφορά τον ορισμό του μεγέθους των στοιχείων της διεπαφής μας, το οποίο επηρεάζει την διάταξη τους στην οθόνη. Αν ορίσουμε την διάταξη των στοιχείων με απόλυτο αριθμό pixels (εικονοστοιχείων) τότε πολύ πιθανό είναι να οδηγηθούμε σε λανθασμένη εμφάνιση της διεπαφής, παραμόρφωση ή αλληλοεπικάλυψη των στοιχείων και η εφαρμογή να μη λειτουργεί σωστά, με συνέπεια την δυσαρέσκεια του χρήστη. Για το λόγο αυτό το Android εισάγει τη μονάδα dp αντί pixel. To dp (Densityindependent pixel = πυκνότητα-ανεξαρτήτως pixel) είναι μια εικονική μονάδα pixel που 73

74 θα πρέπει να χρησιμοποιείτε κατά τον καθορισμό διάταξης διεπαφών και εκφράζει τις διαστάσεις διάταξης ή θέσης σε μια πυκνότητα με ανεξάρτητο τρόπο. Το dp είναι ισοδύναμο με ένα φυσικό pixels σε μια οθόνη πυκνότητας 160 dpi (dot per inches), θεωρείται από το σύστημα μια "μεσαία" οθόνη πυκνότητας. Κατά το χρόνο εκτέλεσης, το σύστημα διαχειρίζεται και υπολογίζει με διαφάνεια κάθε κλιμάκωση των dp μονάδων, ανάλογα με τις ανάγκες, με βάση την πραγματική πυκνότητα της οθόνης. Με τη χρήση dp μονάδων το Android μπορεί να σχεδιάσει τη διεπαφή διατηρώντας το μέγεθος των στοιχείων της αναλλοίωτο. Η μετατροπή των μονάδων dp στην οθόνη pixels είναι απλή: px = dp * (dpi / 160). Για παράδειγμα, σε μια οθόνη 240 dpi, 1 dp ισούται με 1,5 φυσικά pixels. Θα πρέπει πάντα να χρησιμοποιούνται dp μονάδες κατά τον καθορισμό διεπαφών μιας εφαρμογής, για να διασφαλιστεί η ορθή απεικόνιση του διεπαφών σε οθόνες με διαφορετικές πυκνότητες. Εύρος των οθονών που υποστηρίζονται Για να απλοποιήσει τον τρόπο που σχεδιάζουμε διεπαφές χρήστη για πολλαπλές οθόνες, το Android χωρίζει το εύρος των πραγματικών μεγεθών της οθόνης και των πυκνοτήτων σε: Ένα σύνολο τεσσάρων γενικευμένων μεγεθών: μικρό, κανονικό, μεγάλο, και πολύ μεγάλο Ένα σύνολο τεσσάρων γενικευμένων πυκνοτήτων: ldpi (χαμηλή), mdpi (μέτρια), hdpi (υψηλή), και xhdpi (πολύ υψηλή) Τα γενικευμένα μεγέθη οθονών και πυκνοτήτων καλύπτουν ένα φάσμα των πραγματικών μεγεθών οθονών και πυκνοτήτων αντίστοιχα. Έχοντας σχεδιασμένες τις διεπαφές μιας εφαρμογής με τα παραπάνω αφηρημένα μεγέθη και πυκνότητες μπορούμε να αφήσουμε το Android να χειριστεί τυχόν τελικές προσαρμογές ανάλογα με τις ανάγκες Το παρακάτω σχήμα (εικόνα 31) απεικονίζει πως το Android αντιστοιχίζει, κατά προσέγγιση τα πραγματικά μεγέθη και πυκνότητες με τα αντίστοιχα γενικευμένα μεγέθη και πυκνότητες (οι αριθμοί δεν είναι ακριβείς). 74

75 Εικόνα 31. Αντιστοιχία μεγεθών-πυκνοτήτων Κατά τη σχεδίαση διεπαφών για διαφορετικά μεγέθη οθόνης, θα ανακαλύψουμε ότι κάθε σχεδιασμός απαιτεί ένα ελάχιστο ποσό του χώρου. Έτσι, κάθε γενικευμένα μέγεθος της οθόνης ανωτέρω έχει μία αντίστοιχη ελάχιστη ανάλυση που έχει προσδιοριστεί από το σύστημα. Αυτά τα ελάχιστα μεγέθη είναι σε "dp" μονάδες όπου στις ίδιες αυτές μονάδες θα πρέπει να χρησιμοποιούνται κατά τον καθορισμό των διατάξεων, η οποία επιτρέπει στο σύστημα να αποφύγει να ανησυχούμε για τις αλλαγές στην πυκνότητα της οθόνης. Πολύ Μεγάλες οθόνες : τουλάχιστον 960dp x 720dp Μεγάλες οθόνες : τουλάχιστον 640dp x 480dp Κανονικές οθόνες : τουλάχιστον 470dp x 320dp Μικρές οθόνες : τουλάχιστον 426dp x 320dp Εικόνα 32. Διάταξη στοιχείων σε pixels Εικόνα 33. Διάταξη στοιχείων με dp μονάδες Στην εικόνα 32 το κείμενο και η εικόνα έχουν διαστάσεις που καθορίζονται σε pixels (μονάδες px). Οι όψεις είναι φυσικά μεγαλύτερες σε μια οθόνη χαμηλής πυκνότητας και μικρότερα σε μια οθόνη υψηλής πυκνότητας. Αυτό συμβαίνει επειδή αν και τα 75

76 πραγματικά μεγέθη οθόνης μπορεί να είναι η ίδια, η οθόνη υψηλής πυκνότητας έχει περισσότερα pixels ανά ίντσα (το ίδιο ποσό των pixels χωράει σε μια μικρότερη έκταση). Στην εικόνα 33, οι διαστάσεις διάταξης καθορίζονται με dp μονάδες όπου παρατηρούμε ότι το αποτέλεσμα είναι ομοιόμορφο και η εμφάνιση είναι η ίδια σε όλες της συσκευές. 6.6 Παροχή εναλλακτικών πόρων Ακόμα μια άλλη τακτική που ζητά η Google από τους προγραμματιστές της είναι να παρέχουν εναλλακτικές πηγές του γραφιστικού υλικού, προσαρμοσμένες για συγκεκριμένες διαμορφώσεις της συσκευής, με την ομαδοποίησή τους σε ειδικά ονόματα στους καταλόγους των πόρων. Οι προγραμματιστές αυτό που έχουν να κάνουν δηλαδή είναι να διαθέτουν στο σύστημα όλα τα στοιχεία της διεπαφής σε όλα τα δυνατά γενικευμένα μεγέθη οθόνης και πυκνοτήτων. Για παράδειγμα όσον φορά τις εικόνες των εφαρμογών προκειμένου να διασφαλιστεί ότι θα φαίνονται χωρίς παραμορφώσεις σε οποιαδήποτε οθόνη καλό είναι να παρέχονται στις διάφορες αναλύσεις μικρή, μεσαία, μεγάλη, πολύ μεγάλη. Ένα άλλο παράδειγμα, ότι ίσως να θέλουμε να δώσουμε μια διαφορετική διάταξη UI, ανάλογα με το μέγεθος της οθόνης, όπως φαίνεται στο παρακάτω σχήμα, ή διαφορετικά strings, ανάλογα με τη ρύθμιση γλώσσας. Εικόνα 34. Δύο διαφορετικές συσκευές, οι οποίες χρησιμοποιούν διαφορετικές πηγές διάταξης. Η παροχή των γραφικών της διεπαφής μιας εφαρμογής σε διάφορες αναλύσεις δεν είναι υποχρεωτική. Όμως είναι πολύ καλή προγραμματιστική συνήθεια να τα παρέχουμε σε όλες τις δυνατές αναλύσεις (μικρή, μεσαία, μεγάλη, πολύ μεγάλη) για να αξιοποιούμε αυτόν τον μηχανισμό που προσφέρει το λειτουργικό σύστημα. Έτσι λοιπόν, κατά το χρόνο εκτέλεσης, το σύστημα έχοντας στη διάθεση του εναλλακτικές πηγές πόρων, εξασφαλίζει την καλύτερη δυνατή απεικόνιση στην τρέχουσα οθόνη με την ακόλουθη διαδικασία για κάθε δεδομένη πηγή: 76

77 1. Το σύστημα χρησιμοποιεί την κατάλληλη εναλλακτική πηγή Με βάση το μέγεθος και την πυκνότητα του ρεύματος της οθόνης, το σύστημα χρησιμοποιεί οποιοδήποτε μέγεθος και πυκνότητα από συγκεκριμένο πόρο που προβλέπεται στην εφαρμογή. Για παράδειγμα, αν χρειαστεί να απεικονιστεί μια εικόνα σε μια οθόνη χαμηλής ανάλυσης το σύστημα αναζητά και χρησιμοποιεί τη μικρής ανάλυσης εικόνα. Αντίθετα αν η οθόνη είναι υψηλής ανάλυσης θα χρησιμοποιηθεί η εικόνα μεγαλύτερης ανάλυσης αντί να μεγεθυνθεί η εικόνα μικρής ανάλυσης κάτι που θα οδηγούσε σε μειωμένη ποιότητα, παραμόρφωση ή θόλωση της εικόνας. 2. Εάν δεν υπάρχει αντιστοίχιση με πόρο Εάν δεν υπάρχει αντιστοίχιση με πόρο που να είναι διαθέσιμος, το σύστημα χρησιμοποιείτε το προεπιλεγμένο πόρο ή προβαίνει σε τράβηγμα επάνω ή προς τα κάτω, όπως απαιτείται κάθε φορά, για να ταιριάζει με το τρέχον μέγεθος και την πυκνότητα της οθόνης. Κινδυνεύει όμως η εφαρμογή μας να έχει προβληματική εμφάνιση. Οι "default"(προκαθορισμένοι ) πόροι είναι εκείνοι που δεν έχουν ετικέτα με ένα προσδιοριστικό διαμόρφωσης. Το σύστημα προϋποθέτει ότι οι προεπιλεγμένοι πόροι έχουν σχεδιαστεί για ένα κανονικό μέγεθος οθόνης και μέσης πυκνότητας. 6.7 Επιλογή των γραμματοσειρών Κάτι που πρέπει να αποφεύγει κανείς είναι τα πάρα πολλά διαφορετικά μεγέθη γραμματοσειρών στο ίδιο UI, που μπορεί να προκαλούν αίσθημα ακαταστασίας και να είναι ενοχλητικά. Το πλαίσιο του Android χρησιμοποιεί το ακόλουθο περιορισμένο σύνολο μεγεθών: Εικόνα 35. Μεγέθη γραμματοσειρών 6.8 Τα χρησιμοποιούμενα χρώματα 77

78 Το Android UI χρησιμοποιεί και προτείνει τα ακόλουθα στυλ προεπιλεγμένων χρωμάτω, όπως φαίνονται εικόνα: textcolorprimary και textcolorsecondary. Για πιο ελαφριά θέματα χρησιμοποιεί textcolorprimaryinverse και textcolorsecondaryinverse. Εικόνα 36 Προτείνει να χρησιμοποιούμε το χρώμα κυρίως για έμφαση. Να επιλέγουμε τα χρώματα που ταιριάζουν με το εμπορικό σήμα ή το λογότυπο της εφαρμογής μας. Καλό αποτέλεσμα δίνουν οι αντιθέσεις χρωμάτων μεταξύ των components. Πρέπει να σημειώσουμε ότι το κόκκινο και το πράσινο μπορεί να είναι δυσδιάκριτα από χρήστες με αχρωματοψία. Στην παλέτα χρωμάτων του Android το μπλε είναι το βασικό χρώμα έμφασης. Κάθε χρώμα έχει μια αντίστοιχη πιο σκούρα απόχρωση που μπορεί να χρησιμοποιηθεί ως συμπλήρωμα όταν χρειάζεται. Την παλέτα των χρωμάτων μπορούμε να την κατεβάσουμε από developer.android.com/downloads/design/android_design_color_swatches_ zip Εικόνα 37. Δείγμα παλέτας χρωμάτων του Android 6.9 Χρησιμοποιούμενα εικονίδια Ένα εικονίδιο είναι ένα γραφικό που καταλαμβάνει ένα μικρό τμήμα της οθόνης και παρέχει μια γρήγορη, διαισθητική αναπαράσταση μιας ενέργειας, μιας κατάσταση, ή ακόμα και μιας εφαρμογής. Όταν σχεδιάζουμε τα εικονίδια για την εφαρμογή μας, είναι σημαντικό να έχουμε κατά νου ότι μπορεί να εγκατασταθεί σε μια ποικιλία συσκευών που προσφέρουν ένα ευρύ φάσμα πυκνοτήτων pixel, όπως αναφέραμε παραπάνω. Αλλά εφαρμόζοντας τις τεχνικές που αναφέρθηκαν, μπορούμε να κάνουμε τα εικονίδια να φαίνονται το ίδιο όμορφα σε 78

79 όλες τις συσκευές (παρέχοντας κάθε εικόνα σε πολλά μεγέθη και όταν η εφαρμογή τρέχει, το Android ελέγχει τα χαρακτηριστικά της οθόνης της συσκευής και φορτώνει τα κατάλληλα περιουσιακά στοιχεία της πυκνότητας-ειδικά για την τρέχουσα εφαρμογή) Εικονίδια εκκίνησης Το εικονίδιο εκκίνησης έχει μεγάλη σημασία καθώς είναι η οπτική αναπαράσταση της εφαρμογής. Η Google έχει οριστεί το μέγεθος για ένα εικονίδιο εκκίνησης να είναι 48x48 dp ενώ για προβολή στο Google Play πρέπει να είναι 512x512 pixels. Δεδομένου ότι ο χρήστης μπορεί να αλλάξει την ταπετσαρία της αρχικής οθόνης, καλό είναι να βεβαιωθούμε ότι το εικονίδιο είναι σαφώς ορατό σε οποιοδήποτε τύπο φόντου. Οι κατευθυντήριες γραμμές της Google είναι να χρησιμοποιούμε ένα σαφές, διακριτό περίγραμμα να έχει τρισδιάστατη μπροστινή όψη, με μια μικρή προοπτική σαν να παρατηρείται από πάνω, έτσι ώστε οι χρήστες αντιλαμβάνονται κάποιο βάθος όπως φαίνεται στο σχήμα Εικόνα 38. Χαρακτηριστικά εικονιδίων εκκίνησης 79

80 6.9.2 Action Bar Κάθε εφαρμογή έχει την δική της μπάρα επιλογών/ ενεργειών που μπορεί να παρέχει στον χρήστη διάφορες επιλογές κατά την εκτέλεσή της. Τα εικονίδια της γραμμής δράσης είναι γραφικά κουμπιά που αντιπροσωπεύουν τις πιο σημαντικές ενέργειες που οι άνθρωποι μπορούν να εκτελέσουν μέσα από τις εφαρμογές μας. Κάθε ένα θα πρέπει να χρησιμοποιεί μια απλή μεταφορά που αντιπροσωπεύει μια έννοια που οι περισσότεροι άνθρωποι μπορούν να κατανοήσουν με μια ματιά. Τέτοια εικονλιδια βλέπουμε στην εικόνα Το download link που ακολουθεί, developer.android.com/downloads/design/android_design_icons_ zip, παρέχει ένα πακέτο με εικονίδια που κλιμακώνονται για διάφορες πυκνότητες οθόνης και είναι κατάλληλα για χρήση. Το πακέτο περιλαμβάνει επίσης unstyled εικονίδια που 80

81 Εικόνα 39. μπορoύν να τροποποιηθούν, ώστε να ταιριάζει με το θέμα μας, παράλληλα με Adobe Illustrator αρχεία πηγαίου κώδικα για την περαιτέρω προσαρμογή. Εικονίδια της γραμμής ενεργειών για smartphone θα πρέπει να είναι 32x32 dp, ενώ του οπτικό τετράγωνο 24x24 dp. Όπως τονίζει η Google, το μέγεθος των εικονιδίων της γραμμής δράσης, πρέπει να είναι επίπεδο, όχι πολύ λεπτομερή, με ομαλές καμπύλες ή αιχμηρά σχήματα. Εάν το γραφικό είναι λεπτοκαμωμένο, το περιστρέφουμε 45 αριστερά ή δεξιά για να γεμίσει τον εστιακό χώρο Εικονίδια εφαρμογής Μέσα στο σώμα της εφαρμογής, μπορούμε να χρησιμοποιούμε μικρά εικονίδια στην μπάρα ενεργειών ή για να παρέχουν την κατάσταση συγκεκριμένων στοιχείων. Για παράδειγμα, στην εφαρμογή Gmail, κάθε μήνυμα έχει ένα εικονίδιο με το αστέρι που σηματοδοτεί το μήνυμα ως Εικόνα 40 σημαντικό. Οι αναλογίες αυτών των εικονιδίων είναι 16x16 dp ενώ το οπτικό τους τετράγωνο σε 12x12 dp. Η περιορισμοί που η Google προτείνει είναι να έχουν σχήμα ουδέτερο, επίπεδο και απλό, χρησιμοποιώντας μια οπτική μεταφορά, έτσι ώστε οι χρήστες να μπορούν εύκολα να αναγνωρίσουν και να κατανοήσουν το σκοπό τους. Να γεμίζονται με χρώματα μη ουδέτερα 81

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

83 83

84 ΚΕΦΑΛΑΙΟ 7: Εργαλεία προγραμματισμού Android Μέσω του Android software development προκύπτουν ολοένα και νέες εφαρμογές που δημιουργούνται για το λειτουργικό σύστημα Android. Οι εφαρμογές αναπτύσσονται συνήθως στη γλώσσα προγραμματισμού Java που χρησιμοποιεί το Android. Παρακάτω παρουσιάζονται τα πιο διαδεδομένα εργαλεία ανάπτυξης λογισμικού και εφαρμογών στην πλατφόρμα Android Android SDK Native Development Kit App Inventor for Android Hyper Next Android Creator Στις επόμενες παραγράφους αναπτύσσεται αναλυτικά το κάθε ένα από τα παραπάνω λογισμικά. 7.1 Android SDK (Software Development Kit) Android SDK σημαίνει Android Software Development Kit και είναι το επίσημο και βασικότερο εργαλείο της Google για αυτούς που θέλουν να δημιουργήσουν στο Android εφαρμογές. Το Android SDK, ουσιαστικά μας παρέχει τα επιπλέον εργαλεία ώστε να μπορούμε να γράψουμε κώδικα συγκεκριμένα για την κατασκευή εφαρμογής Android. Η σύνδεση του Android SDK με το γραφικό μας περιβάλλον (Eclipse) γίνεται μέσω μίας επέκτασης (Android Development Tools ή ADT Plugin) που εγκαθιστάμε στο Eclipse, ώστε να μπορέσουμε να μεταγλωττίσουμε την εφαρμογή μας και έπειτα να την τρέξουμε. Καθώς το λειτουργικό σύστημα Android κυκλοφορεί σε διάφορες εκδόσεις καθίσταται σαφές ότι η κάθε έκδοση θα χρησιμοποιεί και ορισμένα διαφορετικά προγραμματιστικά εργαλεία. Έτσι μέσα από το ADT Plugin μπορούμε να εγκαταστήσουμε τα εργαλεία για την υλοποίηση εφαρμογής σε οποιαδήποτε έκδοση. Για παράδειγμα αν θέλουμε η εφαρμογή μας να είναι συμβατή και σε παλαιότερες εκδόσεις του Android τότε θα πρέπει να εγκαταστήσουμε τα αντίστοιχα εργαλεία και να δοκιμάσουμε την εφαρμογή μας στις εκδόσεις αυτές. Το περιβάλλον ανάπτυξης Android SDK εφαρμογών στηρίζεται σε τέσσερα βασικά εργαλεία, τα οποία είναι δωρεάν: 1. Java, 2. Eclipse, 84

85 3. Android SDK και 4. ADT (Android Development Tools) Plug-in για το Eclipse Τα συγκεκριμένα εργαλεία πρέπει να εγκατασταθούν με την προαναφερθείσα σειρά γιατί το κάθε ένα έχει σαν προϋπόθεση ότι το προηγούμενο ήδη έχει εγκατασταθεί στο σύστημα. Η εγκατάστασή τους είναι αρκετά εύκολη και σύντομη διαδικασία Java Όλη η ανάπτυξη Android εφαρμογών στηρίζεται στην στάνταρντ έκδοση (Java Platform Standard Edition Java SE) γλώσσα προγραμματισμού Java. Για να κατεβάσετε την Java SE, πηγαίνουμε στην ιστοσελίδα της Oracle, στο link Java SE, έπειτα στα downloads και επιλέγουμε την τελευταία έκδοση της Java. Εικόνα 42. Java downloads Κάνοντας κλικ επάνω στο download link της κατάλληλης πλατφόρμας που αντιστοιχεί στο λειτουργικό σύστημα που διαθέτει ο υπολογιστής μας, θα αρχίσει το κατέβασμα του αρχείου. Μετά την ολοκλήρωση αποθήκευσης του αρχείου, το εκτελούμε, δεχόμενοι τις προκαθορισμένες ρυθμίσεις σε κάθε παράθυρο, για να γίνει εγκατάσταση της γλώσσας προγραμματισμού Java στον υπολογιστή. 85

86 7.1.2 Eclipse Μετά την εγκατάσταση της γλώσσας προγραμματισμού Java, σειρά έχει το Eclipse που είναι το περιβάλλον ανάπτυξης εφαρμογών Java και Android. Για να κατεβάσουμε το Eclipse πηγαίνουμε στην διεύθυνση και από την εμφανιζόμενη σελίδα επιλέγουμε την έκδοση του λειτουργικού μας συστήματος. Το αρχείο που θα κατεβάσετε είναι σε μορφή.zip. Το Eclipse δεν χρειάζεται εγκατάσταση. Απλά αποσυμπιέζουμε το αρχείο που κατεβάσαμε και διπλό κλικ επάνω στο εικονίδιο του Eclipse για να τρέξει Android SDK Το επόμενο βήμα είναι να κατεβάσουμε και να εγκαταστήσουμε το Android SDK από την επίσημη ιστοσελίδα του Android ( Το Android SDK αποτελεί απαραίτητο εργαλείο για την ανάπτυξη εφαρμογών για Android. Περιλαμβάνει τις απαραίτητες βιβλιοθήκες για την ανάπτυξη εφαρμογών Android, παραδείγματα εφαρμογών με τον πηγαίο κώδικά τους, τον εξομοιωτή συσκευών καθώς και άλλες βιβλιοθήκες που έχουν να κάνουν με την τιμολόγηση των εφαρμογών και την πώλησή τους στο Google play Android Development Tool plug-in Αφού το Android SDK έχει εγκατασταθεί στο σύστημα μας, επειδή θα το καλέσουμε και θα το διαχειριστούμε μέσα από το Eclipse δεν χρειάζεται να δηλώσουμε πουθενά το πρόγραμμα, ούτε καν να κάνουμε ένα shortcut. Αυτό που χρειάζεται να κάνουμε είναι να δηλώσουμε στο Eclipse σε ποια τοποθεσία βρίσκεται το Android SDK έτσι ώστε η λειτουργία του να ενσωματωθεί μέσα στο Eclipse. Αυτό θα το πετύχουμε με την εγκατάσταση του Android Development Tool plug-in που υπάρχει για το Eclipse. Χάρη στα Plug-in το Eclipse μπορεί να επεκτείνει τις λειτουργικότητες που προσφέρει. Εκμεταλλευόμενη το γεγονός αυτό η Google ανέπτυξε το ADT (Android Development Tools) Plugin για το Eclipse. Με το plug-in αυτό το Eclipse προσφέρει την δυνατότητα σχεδίασης διεπαφών χρήστη για τις εφαρμογές Android με γραφικό τρόπο (παρόμοια με το Visual Studio της Microsoft). Επεκτείνει τις επιλογές των μενού εισαγωγής του Eclipse έτσι ώστε, για παράδειγμα, να μπορεί κανείς να δημιουργήσει ένα καινούριο project Android με την σωστή δομή και αρχεία αυτοματοποιημένα εντός του περιβάλλοντος. Επιπλέον, παρέχεται ειδικός editor για τα διάφορα XML αρχεία που 86

87 περιέχονται σε ένα project Android καθώς και εργαλεία για την παραγωγή των τελικών πακέτων, της εφαρμογής, προς πώληση. Το τελευταίο βήμα λοιπόν που μας έμεινε να πραγματοποιήσουμε είναι να ενσωματώσουμε τα Android εργαλεία μέσα στο περιβάλλον του Eclipse. Από το κύριο μενού του Eclipse επιλέγουμε Help και μετά Install New Software Στο πλαίσιο διαλόγου που θα εμφανιστεί επιλέγουμε Add. Στο εμφανιζόμενο παράθυρο, προσθέτουμε την διεύθυνση ( ) από την οποία το Eclipse θα μπορέσει να κατεβάσει το Android Plug-in και να το ενσωματώσει στο περιβάλλον ανάπτυξης του. Πατήστε ΟΚ για να συνεχίσετε. Στο Available Software παράθυρο που θα εμφανιστεί μετά από μερικά δευτερόλεπτα η επιλογή Developer Tools η οποία περιλαμβάνει τα βασικά εργαλεία ανάπτυξης για Android Εφαρμογές ή όπως αλλιώς ονομάζεται Android Development Kit (ADT). Επιλέγουμε το Development Tools και περιμένουμε λίγα δευτερόλεπτα μέχρι το Eclipse να υπολογίσει τις απαιτήσεις της εγκατάστασης. Πατάμε το κουμπί NEXT για να συνεχίσουμε και πάλι NEXT στο επόμενο παράθυρο για να δεχτούμε την εγκατάσταση των επιλεγμένων εργαλείων. Σε περίπτωση που αποτύχει η εγκατάσταση, δοκιμάστε να εγκαταστήσετε κάθε ένα από τα εργαλεία αυτόνομα. Μετά την ολοκλήρωση της εγκατάστασης (η διάρκειά της εξαρτάται από την ταχύτητα σύνδεσης) επανεκκίνηση του Eclipse. Μετά την επανεκκίνηση του Eclipse, θα εμφανιστεί το Welcome to Android Development παράθυρο μέσα από το οποίο έχουμε την επιλογή να κατεβάσουμε όλες τις τελευταίες εκδόσεις για τα Android APIs. Είμαστε έτοιμοι να ξεκινήσουμε να αναπτύσσουμε εφαρμογές για το λειτουργικό σύστημα Android! 87

88 7.1.4 Android NDK (Native Development Kit) Εικόνα 43. Λογότυπο Android NDK Το NDK είναι ένα σύνολο εργαλείων που επιτρέπει την υλοποίηση τμημάτων της εφαρμογής μας χρησιμοποιώντας εγγενή/μητρικό (native) κώδικα, όπως C και C + +. Οι Android εφαρμογές τρέχουν στην Dalvik εικονική μηχανή. Είναι ένα συμπλήρωμα του SDK (Software Development Kit) που παρέχει εργαλεία που επιτρέπουν την ενσωμάτωση native κώδικα στις εφαρμογές του Android. Για ορισμένους τύπους εφαρμογών, αυτό μπορεί να είναι χρήσιμο ώστε να μπορούμε να επαναχρησιμοποιήσουμε υπάρχουσες βιβλιοθήκες κώδικα γραμμένες σε αυτές τις γλώσσες,. Όμως οι περισσότερες εφαρμογές δεν χρειάζεται το Android NDK. Πριν από τη λήψη και χρήση του NDK, θα πρέπει να κατανοήσουμε ότι το NDK δεν θα ωφελήσει τις περισσότερες εφαρμογές. Ως προγραμματιστές, θα πρέπει να εξισορροπήσουμε τα πλεονεκτήματα κατά τα μειονεκτήματά του. Αξίζει να σημειωθεί ότι, χρησιμοποιώντας native κώδικα για το Android γενικά δεν οδηγεί σε αισθητή βελτίωση της απόδοσης, αλλά αυξάνει την πολυπλοκότητα πάντα της εφαρμογής μας. Σε γενικές γραμμές, θα πρέπει να χρησιμοποιήσετε μόνο το NDK εάν είναι απαραίτητο για την εφαρμογή και ποτέ γιατί απλά προτιμάτε να προγραμματίζουμε σε C / C + +. Τυπικά καλοί υποψήφιοι για NDK είναι αυτόνομες, επιχειρήσεις υψηλής έντασης CPU που δεν διαθέτουν πολλή μνήμη, όπως η επεξεργασία σήματος, προσομοίωση φυσικής, και ούτω καθεξής. Κατά την εξέταση του κατά πόσον ή όχι θα πρέπει να αναπτυχθεί σε native κώδικα, πρέπει να σκεφτούμε τις απαιτήσεις μας και να δούμε αν το Android APIs framework παρέχει τη λειτουργικότητα που χρειαζόμαστε. Παρόλα αυτά το NDK μπορεί να είναι ένας αποτελεσματικός τρόπος επαναχρησιμοποίησης ενός μεγάλου μέρους του υπάρχοντος κώδικα σε C/C++. 88

89 Το NDK είναι ένα εργαλείο με τα εξής κύρια χαρακτηριστικά: Επιτρέπει την ενσωμάτωση μερών που χρησιμοποιούν C και C++. Παρέχει έναν τρόπο ενσωμάτωσης των αντίστοιχων ατόφιων βιβλιοθηκών σε ένα αρχείο πακέτου εφαρμογών (.apk), το οποίο μπορεί να αναπτυχθεί σε Android συσκευές Προσφέρει παροχές σε ορισμένες κλάσεις εφαρμογών Επαναχρησιμοποίηση ήδη υπάρχοντος κώδικα Αύξηση της ταχύτητας εκτέλεσης 7.3 HyperNext Android Creator HyperNext Android Creator (HAC) είναι ένα σύστημα ανάπτυξης λογισμικού που απευθύνεται σε αρχάριους προγραμματιστές που μπορεί να τους βοηθήσει να δημιουργήσουν τις δικές τους Android εφαρμογές χωρίς να γνωρίζουν Java και Android SDK. Με το HyperNext δεν υπάρχει καμία ανάγκη για την εκμάθηση java ή Android SDK και είναι πολύ πιο εύκολο στην χρήση από το Eclipse ενώ ταυτόχρονα είναι τόσο ισχυρό και επεκτάσιμο με πολλές εκατοντάδες εντολές και λειτουργίες. Λειτουργεί σήμερα σε περιβάλλον Windows (XP, Vista, Win7, μια έκδοση Mac υπό ανάπτυξη) και φέρνει τη δυνατότητα να δημιουργήσουμε εφαρμογές screen-by-screen μοιάζοντας πολύ με το App Inventor της Google (το οποίο θα αναλύσουμε παρακάτω). Βασίζεται σε HyperCard που αντιμετωπίζει το λογισμικό ως μια στοίβα καρτών με μόνο μία κάρτα να είναι ορατή σε οποιαδήποτε στιγμή και έτσι είναι κατάλληλη για εφαρμογές κινητής τηλεφωνίας, που έχουν μόνο ένα παράθυρο ορατό κάθε φορά. Η κύρια γλώσσα προγραμματισμού HyperNext Android creator ονομάζεται απλά HyperNext και βασίζεται χαλαρά στην Hypercards HyperTalk γλώσσα. HyperNext είναι μια English like γλώσσα προγραμματισμού και έχει πολλά χαρακτηριστικά που επιτρέπουν τη δημιουργία εφαρμογών Android. Υποστηρίζει ένα αυξανόμενο υποσύνολο του Android SDK, συμπεριλαμβανομένων δικές του εκδοχές GUI τύπους ελέγχου και αυτόματα τρέχει τη δικιά του background υπηρεσία, ώστε οι εφαρμογές μπορούν να συνεχίσουν να λειτουργούν και να επεξεργάζονται πληροφορίες, ενώ είναι στο παρασκήνιο. Το περιβάλλον του HyperNext έχει μόνο ένα παράθυρο σχεδίασης και μια απλή γραμμή εργαλείων. Το περιβάλλον ανάπτυξης του είναι οπτικά σχεδιασμένο έτσι ώστε να επιτρέπει την γρήγορα τοποθέτηση των πεδίων, κουμπιών και άλλων στοιχείων 89

90 ελέγχου, και στη συνέχεια γρήγορη πρόσβαση στις ιδιότητες και τα σενάρια τους με την χρήση του Script Editor. Η όλη λειτουργία του γίνεται σε τρία απλά βήματα : 1. Σχεδίαση 2. Προεπισκόπηση 3. Run Εικόνα 44. Περιβάλλον HyperNext Android Creator Υπάρχει η δυνατότητα να τεστάρουμε και να δοκιμάσουμε τις εφαρμογές μας με απευθείας φόρτωση στην Android συσκευή. Το HyperNext Creator έρχεται με παραδείγματα projects που είναι πλήρως εκτελέσιμα και το μόνο που μένει είναι να αρχίσουμε τις δικές μας Android εφαρμογές αμέσως. 90

91 Εικόνα 45. Emulator HyperNext Android Creator Μερικά από τα πλεονεκτήματα του HyperNext Android Creator είναι: Εύκολο στη χρήση, ιδανικό για αρχάριους Δεν χρειάζεται η εκμάθηση Java ή Android SDK Πολλά παραδείγματα για το ξεκίνημα Κατέβασμα demo εφαρμογών για Android συσκευή Απλό interface περιβάλλοντος εργασίας: ένα παράθυρο, σχεδιασμός και ένα Toolbar Το περιβάλλον εργασίας έχει τρεις λειτουργίες: Σχεδιασμός, Προεπισκόπηση και Run Μπορεί να τρέξει τα καθήκοντα φόντου Δημιουργία sprite με βάση τα παιχνίδια, όπως το Lunar Lander. Λειτουργία του ανεξάρτητη από το Android OS. Ενσωματώνεται με Android SDK και Java JDK. Στην δοκιμαστική έκδοση μπορούμε να δημιουργήσουμε, να αποθηκεύσουμε και να εκτελέσουμε εφαρμογές για 5 λεπτά 91

92 Παρέχει Emulator Android και για smartphones και για tablets Τα Apps λειτουργούν με Android OS 1.6 και με μεταγενέστερα. Η έκδοση για PC τρέχει σε Windows XP, Vista και 7. Η OS X έκδοση έρχεται σύντομα. Τακτικές ενημερώσεις για μεγαλύτερη λειτουργικότητα και νέα χαρακτηριστικά. 7.4 App Inventor Android Εικόνα 46. Λογότυπο App Inventor Το εργαλείο App Inventor είναι το εργαλείο που θα μας απασχολήσει περισσότερο στην παρούσα εργασία Τι είναι το AppInventor To App Inventor for Android αποτελεί ένα εργαλείο της Google και ανακοινώθηκε για πρώτη φορά ως ένα μικρό έργο των εργαστηρίων του Google Lab στα τέλη του Αναπτύχθηκε στα εργαστήρια της Google από μια ομάδα με επικεφαλής τον καθηγητή του MIT, Hal Abelson (Abelson, 2009) και βασίστηκε σε προηγούμενες μελέτες βασισμένες στη χρήση γραφικών περιβαλλόντων προγραμματισμού όπως το StarLogo TNG (Starlogo TNG, 2012) και τη βιβλιοθήκη Open Blocks (Open Blocks, 2012), ένα σύστημα προγραμματισμού που αναπτύχθηκε για εκπαιδευτικούς λόγους στο MIT. Στη συνέχεια, μεταφέρθηκε στο κέντρο για τη εκμάθηση της φορητής μάθησης του MIT (Mobile Learning Center, 2011) για δημόσια χρήση ως λογισμικό ανοικτού κώδικα. Είναι ένα δωρεάν Οπτικό Περιβάλλον Προγραμματισμού με πλακίδια (blocks), για τη δημιουργία εφαρμογών για κινητά τηλέφωνα με λειτουργικό σύστημα Android. Είναι ένα cloud based λογισμικό και οι εφαρμογές τρέχουν και σε emulator. Το app inventor χρησιμοποιεί την Open Blocks Java library μια βιβλιοθήκη της Java που επιτρέπει την χρησιμοποίηση visual components (blocks) αντί για Native Java Functions. Ο μεταφραστής (compiler) που μετατρέπει την Visual Block Language για την εφαρμογή στο Android χρησιμοποιεί την Kawa, μια γλώσσα προγραμματισμού 92

93 βασισμένη στην Scheme programming language που αναπτύχθηκε από τον Per Bothner και διανέμεται ως μέρος του λειτουργικού συστήματος GNU από το Ίδρυμα Ελεύθερου Λογισμικού. Το App Inventor προσφέρει την δυνατότητα για κατασκευή εφαρμογών Android χωρίς να χρειάζεται καμία προηγούμενη γνώση προγραμματισμού. Δίνει την ευκαιρία σε όποιον ενδιαφέρεται αλλά δεν έχει τις απαραίτητες γνώσεις, να φτιάξει μια εφαρμογή για Android. Η αρχική έκδοση beta δεν ήταν ανοικτή για οποιονδήποτε ήθελε να τη δοκιμάσει, αλλά πλέον μετά και την τελειοποίηση της εφαρμογής η Google αποφάσισε να διαθέσει το Android App Inventor στον καθένα. Όπως χαρακτηριστικά αναφέρει η Google, «...για πολλούς ανθρώπους, η κινητή τους συσκευή και η πρόσβαση που επιτυγχάνεται στο Διαδίκτυο μέσω αυτής, έχει διάφορους περιορισμούς. Το App Inventor για Android δίνει σε όλους, ανεξαρτήτως προγραμματιστικών ικανοτήτων, την ευκαιρία να ελέγχουν και να μετασχηματίζουν την εμπειρία της επικοινωνίας τους. Παρατηρούμε μάλιστα πως οι άνθρωποι αισθάνονται υπερήφανοι με το να γίνονται δημιουργοί της κινητής τεχνολογίας και όχι απλοί χρήστες της.» Είναι διαδικτυακό εργαλείο και παρέχει μια πληρέστατη συλλογή εργαλείων που επιτρέπουν σε οποιονδήποτε, δίχως προγραμματιστικό υπόβαθρο, να δημιουργήσει προγράμματα για τα κινητά που τρέχουν Android. Ανήκει στην κατηγορία WYSIWYG εργαλείων, που σημαίνει: What You See Is What You Get = Αυτό που βλέπεις είναι αυτό που παίρνεις. Τα εργαλεία που λειτουργούν με αυτό τον τρόπο μας παρουσιάζουν το αποτέλεσμα των πράξεων μας από την πρώτη στιγμή, ώστε να βλέπουμε βήμα - βήμα καθώς το χτίζουμε. Δεν χρειάζεται, δηλαδή, πρώτα να κάνουμε τα πάντα και μετά, στο τέλος, να δούμε τι φτιάξαμε. Το μόνο αρνητικό χαρακτηριστικό του είναι ότι, κατά τον προγραμματισμό, η διαδικασία χρήσης των blocks είναι μια αργή διαδικασία. Το «App Inventor» (Εφευρέτης Εφαρμογών) απεικονίζει τις επιμέρους λειτουργίες του τηλεφώνου ως χρωματιστά τουβλάκια, πλακίδια τα οποία οι χρήστες μπορούν να σέρνουν (μέσω απλού drag'n'drop) και να συνδέουν πάνω στην οθόνη του υπολογιστή τους. Αντί για τη συγγραφή κώδικα ο δημιουργός αποφασίζει για την εμφάνιση και τη συμπεριφορά της εφαρμογής μέσα από ένα παραθυρικό περιβάλλον. Υπάρχουν διάφορα blocks εντολών, τα οποία «ενεργοποιούνται» πατώντας το αντίστοιχο πλήκτρο και εκτελούν προκαθορισμένες λειτουργίες. Για παράδειγμα, υπάρχουν blocks επανάληψης εντολών τύπου for, do-while κτλ, blocks αποθήκευσης πληροφοριών, καθώς και blocks κώδικα για την εκτέλεση λειτουργιών κάτω από συγκεκριμένες 93

94 συνθήκες. Επίσης, είναι διαθέσιμα ακόμη και blocks για επικοινωνία με τοποθεσίες κοινωνικής δικτύωσης Η γλώσσα προγραμματισμού Kawa Η Kawa είναι μια γλώσσα προγραμματισμού για την πλατφόρμα Java. Η Πρόκειται για μια διαφορετική υλοποίηση της Scheme, η οποία ανήκει στην οικογένεια των γλωσσών προγραμματισμού της LISP. Η Kawa έχει πολλές χρήσιμες λειτουργίες, με κύρια την εύκολη ενσωμάτωση με την Java. Παρόλο που μπορεί να χρησιμοποιηθεί σαν «Scripting Language», συμπεριλαμβάνει compiler και έχει όλα τα οφέλη μιας «πραγματικής» γλώσσας προγραμματισμού, έχοντας προαιρετικά χαρακτηριστικά όπως η στατική δακτυλογράφηση κώδικα. Έτσι συχνά προγράμματα υλοποιημένα σε Kawa μπορεί να είναι τόσο αποτελεσματικά όσο Native Java Applications. Η Kawa είναι επίσης ένα χρήσιμο πλαίσιο για την εφαρμογή άλλων γλωσσών προγραμματισμού για την πλατφόρμα Java Το App Inventor στην εκπαίδευση Στο χώρο της εκπαίδευσης παρατηρούνται πολλές δυσκολίες κατά την διδασκαλία του προγραμματισμού. Στόχος του μαθήματος της Πληροφορικής για την εισαγωγή στον προγραμματισμό, όπως περιγράφεται στο Αναλυτικό Πρόγραμμα Σπουδών είναι : η απόκτηση γνώσεων και δεξιοτήτων όσον αφορά στην κατανόηση ενός προβλήματος, το σχεδιασμό αλγορίθμων, την εκμάθηση των τεχνικών προγραμματισμού, την υλοποίηση και τον έλεγχο του προγράμματος. Ωστόσο, η διδασκαλία του προγραμματισμού, ιδίως σε αρχάριους, σε όλες τις βαθμίδες εκπαίδευσης παρουσιάζει αρκετές δυσκολίες. Η πηγή των δυσκολιών ποικίλει από τις παρανοήσεις των μαθητών, τον τρόπο διδασκαλίας αλλά και τα διδακτικά περιβάλλοντα που χρησιμοποιούνται (Παπαδάκης, Καλογιαννάκης & Ζαράνης, 2013). Διαχρονικές έρευνες στον Ελλαδικό χώρο (Ξυνόγαλος, Σατρατζέμη & Δαγδιδέλης, 2000; Παπανικολάου, Γόγουλου, Γλέζου & Γρηγοριάδου, 2005;Κορδάκη & Ψώμος, 2012; Μαυροχαλυβίδης, Μακρής & Μπέκος, 2012; Παπαδανέλλης κ.α., 2012; Σαρημπαλίδης, 2012) αναφέρουν ότι οι αρχάριοι προγραμματιστές έχουν δυσκολίες στην κατανόηση βασικών εννοιών, όπως οι μεταβλητές, καθώς και των πρωτογενών δομών του προγραμματισμού. Ο παραδοσιακός τρόπος εκμάθησης του προγραμματισμού ο οποίος στηρίζεται στην εκμάθηση των συντακτικών κανόνων μίας 94

95 γλώσσας (Σαρημπαλίδης, 2012) και η χρησιμοποίηση προγραμματιστικών γλωσσών γενικού σκοπού στη διδασκαλία δυσκολεύει τους αρχάριους προγραμματιστές, καθώς αυτές έχουν μεγάλο ρεπερτόριο εντολών, περιλαμβάνουν σύνθετες εντολές, δεν παρέχουν επαρκή υποστήριξη κατανόησης των βασικών ενεργειών και των δομών ελέγχου (Δαγδιλέλης, 1996;Κορδάκη & Ψώμος, 2012; Μαυροχαλυβίδης κ.α., 2012; Παπαδάκης κ.α., 2013). Επιπρόσθετα, η ανάπτυξη προγραμμάτων με χρήση αντικειμενοστραφών γλωσσών είναι ακόμη πιο δύσκολη για τους αρχάριους. Οι παραπάνω δυσκολίες που συναντούν οι αρχάριοι προγραμματιστές αποτέλεσαν το κίνητρο για την αναζήτηση νέων μεθόδων διδασκαλίας για τα εισαγωγικά μαθήματα προγραμματισμού, με σκοπό να εξαλειφθούν τα προβλήματα που παρουσιάζει η παραδοσιακή μέθοδος. Για το σκοπό αυτό αναπτύσσονται εκπαιδευτικά εργαλεία που στοχεύουν στον περιορισμό του υποστηριζόμενου ρεπερτορίου εντολών με απλή σύνταξη και σημασιολογία, στην οπτική/ηχητική προσομοίωση εκτέλεσης των προγραμμάτων, κ.ά. (Ξυνόγαλος κ.α., 2000). Μια λύση είναι η χρήση εκπαιδευτικών περιβαλλόντων όπως το Scratch,το Alice το App Invetor που προωθούν τον προγραμματισμό παρέχοντας την δυνατότητα δημιουργίας μικροεφαρμογών, παιχνιδιών που είναι δημιούργημα του ίδιου του μαθητή. Το λογισμικό του App Inventor μπορεί να προσφέρει πολύ σημαντικές δυνατότητες στην εκπαίδευση. Εξαιτίας της δομής του, αποτελεί ένα ιδανικό εργαλείο για την εισαγωγή στον προγραμματισμό εφαρμογών για κινητές συσκευές σε κάθε σχολική βαθμίδα. Λόγω του γραφικού περιβάλλοντός του, της ευκολίας χρήσης του και της παιγνιώδους φύσης του το App Inventor μπορεί να εξασθενίσει τις δυσκολίες που αντιμετωπίζουν οι μαθητές στη διδασκαλία του προγραμματισμού και να οδηγήσει στην επίτευξη των στόχων του μαθήματος. Το App Inventor, ως προγραμματιστικό περιβάλλον τύπου drag & drop, αντικαθιστά τον προς συγγραφή κώδικα με οπτικά αντικείμενα τα οποία επιλέγονται μέσω ενός μενού επιλογών μειώνοντας το νοητικό φορτίο που απαιτείται για τη συγγραφή κώδικα και ταυτόχρονα βοηθώντας τους χρήστες να επικεντρωθούν στην επίλυση ενός προβλήματος. Οι Resnick et al., (2009) αναφέρουν ότι προγραμματιστικά περιβάλλοντα αυτού του τύπου θεωρούνται εύκολα στην εκμάθησή τους για όλες τις ηλικίες και για διαφορετικά εκπαιδευτικά υπόβαθρα και ενδιαφέροντα, καθώς επιτρέπουν στους χρήστες να πειραματίζονται με προγραμματιστικές δομές απλά ενώνοντας κομμάτια κώδικα με παρόμοιο τρόπο που συνδέουν τουβλάκια τύπου Lego. Σύμφωνα με τους ίδιους ερευνητές η παραπάνω προσέγγιση είναι ιδανική για αρχάριους στον 95

96 προγραμματισμό χρήστες, καθώς τους προσφέρεται η δυνατότητα να επικεντρωθούν στη δομή των λύσεων παρά στη σύνταξη προγραμματιστικών εντολών. Το App Inventor χρησιμοποιείται και δοκιμάζεται ήδη ως πλατφόρμα διδασκαλίας και εισαγωγής στον Προγραμματισμό τόσο στην Τριτοβάθμια όσο και στη σχολική εκπαίδευση. Το App Ιnventor είναι παρόμοιο σε φιλοσοφία με το Scratch ( που αναπτύχθηκε από το ΜΙΤ (Ινστιτούτο Τεχνολογίας της Μασσαχουσέττης) όπου ο προγραμματισμός γίνεται με την συναρμολόγηση blocks με τρόπο παρόμοιο με αυτόν των Lego. Η διαφορά του App Inventor είναι ότι οι εφαρμογές που δημιουργούνται τρέχουν σε έξυπνα κινητά τηλέφωνα (smartphones). Μετά από συμφωνία, το ΜΙΤ προχωρά στον εξελληνισμό του περιβάλλοντος εργασίας και του υλικού που το συνοδεύει (οδηγίες setup, βιβλία κ.λπ.), με στόχο «όταν αυτή η προσπάθεια ολοκληρωθεί να μπορούμε να εκπαιδεύουμε παιδιά (αλλά και ενήλικες μιας και το App Ιnventor μπορεί να χρησιμοποιηθεί από τον καθένα!) σε ένα εξελληνισμένο περιβάλλον προγραμματισμού.» Σε πρόσφατη έρευνα η οποία πραγματοποιήθηκε από την οργάνωση Ανθρωπιστική δράση με Δωρεάν Λογισμικό Ανοικτού Κώδικα (Humanitarian Free and Open Source Software HFOSS) και χρηματοδοτήθηκε από το Εθνικό Ίδρυμα Επιστημών των Ηνωμένων Πολιτειών (National Science Foundation) έγινε προσπάθεια να απαντηθεί το ερώτημα αν το App Inventor είναι κατάλληλο για τη διδασκαλία του προγραμματισμού και ειδικότερα της υπολογιστικής σκέψης στη σχολική εκπαίδευση (Morreli et al. 2011). Τα πρώτα αποτελέσματα είναι ενθαρρυντικά αφού οι ερευνητές επισημαίνουν τα εξής πλεονεκτήματα: 1. Εύκολο στη χρήση περιβάλλον με πολλές δυνατότητες 2. Αντικειμενοστραφές μοντέλο οπτικού προγραμματισμού με δομές ελέγχου καθοδηγούμενες από γεγονότα (event-driven) 3. Μάθηση μέσω της λύσης προβλημάτων 4. Επιπλέον κίνητρα στους μαθητές σε σχέση με το Scratch και Alice εξαιτίας της φορητότητας και της πρακτικής χρήσης των εφαρμογών που δημιουργούνται 5. Ύπαρξη emulator που σημαίνει ότι δεν χρειάζονται πολλές συσκευές για την εισαγωγή στη σχολική τάξη 6. Υποστήριξη από τη Google 96

97 (Πηγή: Επιμορφωτικό υλικό για την εκπαίδευση των επιμορφωτών στα Πανεπιστημιακά Κέντρα Επιμόρφωσης - ΕΑΙΤΥ (2011)) Περιπτώσεις χρήσης του App Inventor Με βάση όσα αναφέρθηκα μπορούμε να αναφέρουμε διάφορες περιπτώσεις χρήσης του App Inventor. Βέβαια δεν μπορεί να δημιουργήσει με λίγα κλικ λογισμικό επαγγελματικού επιπέδου που θα χρειαζόταν χιλιάδες γραμμές κώδικα, αλλά είναι σίγουρα μια καλή επιλογή για πολλές περιπτώσεις χρήσης. Μερικές από τις περιπτώσεις χρήσης του App Inventor είναι: 1. Όπως αναφέραμε παραπάνω, μπορεί να χρησιμοποιηθεί στην εκπαίδευση από μαθητές Γυμνασίου και Λυκείου για την δημιουργία εφαρμογών, σε κινητά με λειτουργικό σύστημα Android, σε ένα περιβάλλον προγραμματισμού παρόμοιο με του Scratch και της StarLogo TNG. 2. Μπορεί να χρησιμοποιηθεί από νέους προγραμματιστές καθώς τους δίνει την ευκαιρία ταυτόχρονα με την διαδικασία ανάπτυξης των εφαρμογών τους να εξοικειωθούν και με έννοιες του αντικειμενοστραφούς και οδηγούμενου από γεγονότα προγραμματισμού. Έννοιες όπως της ακολουθίας, των δομών επανάληψης και ελέγχου ροής, της διαδικασίας και συνάρτησης, παραμέτρου, μεταβλητής, αριθμητικών, συγκριτικών και λογικών τελεστών, και λιστών είναι επίσης μερικές από αυτές που θα συναντήσουν με ευδιάκριτο τρόπο οι νέοι στον προγραμματισμό χρήστες του App Inventor σε ένα περιβάλλον ίσως με μεγαλύτερο βαθμό κινητοποίησης από ότι συνήθως. 3. Μπορεί να χρησιμοποιηθεί από επιχειρήσεις και επαγγελματίες ως εργαλείο για γρήγορη προτοτυποποίηση (prototyping) μιας εφαρμογής, δηλαδή για "γρήγορο στήσιμο προσχεδίων εφαρμογών" τις οποίες, στη συνέχεια, μπορεί κανείς να συνεχίσει να αναπτύσσει με πρόσθετο κώδικα. Όλα όσα αναφέρθηκαν και σχολιάστηκαν στα παραπάνω κεφάλαια αυτής της εργασίας κάνουν το app inventor ένα ιδανικό εργαλείο για την επιλογή χρήσης του. Η σημαντική διαφορά του σε σχέση με το Android SDK είναι ότι δεν χρειάζονται προγραμματιστικές γνώσεις ή εμπειρία για την δημιουργία του. Σύμφωνα με την Google, ο καθένας μπορεί να αναπτύξει εφαρμογές με το App Inventor, από τους επαγγελματίες προγραμματιστές έως και τους μαθητές, στο επίπεδο μίας σχολικής αίθουσας. 97

98 7.4.5 Το περιβάλλον του App Inventor App Inventor είναι ένα εργαλείο που βασίζεται στο cloud, το οποίο σημαίνει ότι μπορούμε να δημιουργήσουμε εφαρμογές απευθείας στο web browser μας. Για να ξεκινήσουμε να χρησιμοποιούμε το AppInventor το μόνο που χρειαζόμαστε είναι να είμαστε συνδεδεμένοι στο διαδίκτυο και να έχουμε ένα λογαριασμό google Gmail. Εγκατάσταση του app Inventor Το πρώτο βήμα είναι να εγκαταστήσουμε την Java στο σύστημά μας. Αν δεν είναι ήδη εγκατεστημένο το τελευταίο JRE η το JDK επισκεπτόμαστε τον επίσημο ιστότοπο και ακολουθούμε τις οδηγίες εγκατάστασης. Στη συνέχεια εγκαθιστούμε το App Inventor Software. Οδηγίες για την εγκατάσταση θα βρούμε από στην σελίδα Με τον browser που χρησιμοποιούμε πλοηγούμαστε στο web User Interface του App Inventor. Σύνδεση Για να συνδεθούμε ανοίγουμε ένα πρόγραμμα περιήγησης στο Αυτή η ιστοσελίδα προσφέρει υποστήριξη που μπορεί να χρειαστεί όπως να μάθουμε πώς να φτιάχνουμε δικές μας εφαρμογές. Το λογισμικό App Inventor βρίσκεται στο ai2.appinventor.mit.edu. Μπορούμε να φτάσουμε εκεί κάνοντας κλικ στο πορτοκαλί κουμπί "Create" από οποιαδήποτε σελίδα σε αυτό το δικτυακό τόπο. Μπορούμε να κάνουμε set up το App Inventor και ξεκινήσουμε την οικοδόμηση εφαρμογών μέσα σε λίγα λεπτά. Ο Designer και ο Block Editor τώρα τρέχει πλήρως στο πρόγραμμα περιήγησης (δηλαδή στο cloud!). Ξεκινώντας ένα Νέο Project Για να ξεκινήσουμε ένα νέο έργο, από την άποψη Έργα μου, ακολουθήστε τα εξής βήματα: 1. Από τη αρχική σελίδα My Projects(φαίνεται στην εικόνα 54), κάνουμε κλικ στο κουμπί New Project. 2. Πληκτρολογούμε το όνομα που θέλουμε να έχει το Project μας 3. Κάνουμε κλικ στο OK. 98

99 Εικόνα 47. New Project Το App Inventor μας μεταφέρει στο περιβάλλον όπου θα αναπτύξουμε τις εφαρμογές μας. Η εφαρμογή Προγραμματισμού App Inventor αποτελείται από δύο μέρη: το Design View και τον Blocks Editor. Στο Design Viewer σχεδιάζουμε το layout της εφαρμογής και προσθέτουμε components στην εφαρμογή μας, ενώ στο blocks editor καθορίζουμε την συμπεριφορά τους. Designer Με τον App Inventor Designer (Εικόνα) σχεδιάζουμε τα διεπαφή χρήστη της εφαρμογής μας με την τοποθέτηση και τακτοποίηση των components (συστατικών) της οθόνης. 99

100 Εικόνα 48. Ο Design Viewer του MIT app Inventor Στην πάνω δεξιά γωνία του περιβάλλοντος του App Inventor υπάρχουν πάντα τα κουμπιά Designer και Blocks, με τα οποία μπορούμε να μεταβούμε στις αντίστοιχες προβολές (εικόνα 56). Εικόνα 49. Κουμπιά Designer και Blocks Το περιβάλλον του Designer είναι χωρισμένο σε πέντε βασικές στήλες, από αριστερά προς τα δεξιά: 1. Palette: Η στήλη παλέτα περιέχει όλα τα στοιχεία που μπορούμε να προσθέσουμε στο έργο μας και υποδιαιρείται σε ομάδες των συναφών στοιχείων. Μπορούμε να βρούμε τα components (συστατικά) που ταιριάζουν στην εφαρμογή μας και σέρνοντας τα (drag and drop) στον Viewer και να τα προσθέσουμε στην εφαρμογή μας. Η βασική παλέτα περιέχει απλούστερα συστατικά όπως κουμπιά, ετικέτες και πεδία κειμένου, ενώ η παλέτα Animation περιέχει sprites, καμβάδες, και άλλα πιο προηγμένα συστατικά. 2. Viewer: Το κενό ορθογώνιο στο κέντρο της οθόνης είναι γνωστή ως Viewer. Είναι χονδρικά ανάλογο με την οθόνη του τηλεφώνου μας. Εδώ βλέπουμε όλα τα συστατικά της εφαρμογής μας, που προσθέτουμε από τις Παλέτες πως θα φαίνονται στην οθόνη του κινητού. Μπορούμε να δούμε μια γραμμή ειδοποιήσεων με εικονίδια, όπως την μπαταρία, το χρόνο και το δίκτυο, όπως 100

101 ακριβώς έχει και το τηλέφωνό μας. Ακόμα, θα πρέπει να θυμόμαστε ότι αυτό που βλέπουμε στο Design view δεν είναι αυτό που θα δούμε στο τηλέφωνό μας. Για το λόγο αυτό θα πρέπει πριν ξεκινήσουμε το σχεδιασμό της εφαρμογή μας να συνδέσουμε το τηλέφωνό μας με τον υπολογιστή μας και το App Inventor. Το πώς θα γίνει αυτό περιγράφεται παρακάτω. Θα πρέπει να δοκιμάζουμε την εφαρμογή μας πάντα σε ένα πραγματικό τηλέφωνο 3. Components: Η στήλη Components είναι μια λίστα με όλα τα στοιχεία που έχουν προστεθεί στην εφαρμογή μας και είναι οργανωμένα σε μια διακλάδωση δενδροειδής δομής με τη σειρά που τοποθετήθηκαν. Εικόνα 50. Components που έχουν προστεθεί σε ένα Project Στήλη components 4. Media: Η στήλη Media βρίσκεται ακριβώς κάτω από την στήλη Components (βλ. Σχήμα). Αυτή η στήλη μας επιτρέπει να διαχειριστούμε όλα τα στοιχεία των media για την εφαρμογή μας και να προσθέσουμε οποιοδήποτε υποστηριζόμενο τύπο μέσου. Μπορούμε να ανεβάσουμε φωτογραφίες, εικόνες clip art, ήχους, μουσική, ή ταινίες. Τα αρχεία πολυμέσων που μπορούμε να ανεβάσουμε σε ένα έργο App Inventor δεν μπορεί να υπερβαίνει τα 5MB. 101

102 Εικόνα 39. Media που έχουν προστεθεί στο Project 5. Properties: Εδώ θα βρούμε τις ιδιότητες του κάθε component. Κάθε στοιχείο που προσθέτουμε στο έργο μας έχει ιδιότητες, τις οποίες μπορούμε να ρυθμίσουμε για να αλλάξουμε τον τρόπο με τον οποίο ένα στοιχείο φαίνεται. Πρόκειτρε για τις περισσότερο σχεδιαστικές ιδιότητες καθώς η πραγματική συμπεριφορά των components καθορίζεται στον Blocks Editor. Επιλέγοντας ένα στοιχείο από την στήλη components μπορούμε να αλλάξουμε τις ιδιότητες του στην στήλη Properties. Για παράδειγμα μπορούμε να αλλάξουμε το χρώμα ενός κουμπιού, το μέγεθος της γραμματοσειράς, την στοίχιση των αντικειμένων στην οθόνη και άλλες βασικές ιδιότητες. Blocks Editor Μόλις φτιάξουμε το γραφικό περιβάλλον που επιθυμούμε στον Designer, τότε καλείται ο Blocks Editor, μια java εφαρμογή που μας επιτρέπει να "κολλήσουμε" μαζί blocks με κώδικα. Με τον App Inventor Block Editor προγραμματίζουμε τη συμπεριφορά της εφαρμογής μας δίνοντας συμπεριφορές στα components με την τοποθέτηση μπλοκ μαζί. Ο προγραμματισμός στο App Inventor γίνεται με πολύχρωμα τετράγωνα πλακίδια που έχουν σχεδιαστεί να μπορούν να ταιριάζουν μαζί σαν κομμάτια παζλ. Τα μπλοκ είναι σαν λέξεις που, όταν συναρμολογηθούν μεταξύ τους, σχηματίζουν προτάσεις διδασκαλίας στο κινητό μας. Ο χρήστης απλά ενώνει blocks με κώδικα, έτσι ώστε να σχηματιστεί η λογική του προγράμματος που θέλει να φτιάξει. Είναι ο προγραμματισμός στη πιο απλή και κατανοητή μορφή του. Το μπλοκ Editor είναι το interface που επιτρέπει να θέσει όλα αυτά τα κομμάτια του πάζλ και μπλοκ μαζί. Τα προγράμματα δημιουργούνται σύροντας τετράγωνα από το αριστερό χέρι προς τα δεξιά. Το κάθε control έχει τα δικά του blocks κώδικα, ανάλογα με την λειτουργία του. Έτσι με ευκολία έχουμε πρόσβαση στις κυριότερες λειτουργίες της συσκευής μας. 102

103 Στην παρακάτω εικόνα φαίνεται το περιβάλλον του Editor. Ο Editor είναι χωρισμένος σε δύο τμήματα. Αριστερά υπάρχει η λίστα με τα διαθέσιμα Blocks και αριστερά είναι ο χώρος εργασίας μας όπου θα τοποθετήσουμε τις εντολές του προγράμματός μας. Εικόνα 52. O Blocks Editor Τα μπλοκ που είναι διαθέσιμα είναι χωρισμένα σε ομάδες. Μια ομάδα μπλοκ είναι τα Built-in και η άλλη είναι τα block components, των συστατικών components που έχω βάλει στην εφαρμογή μου (εικόνα). 103

104 Εικόνα53. Built-in blocks Στην ομάδα Built-in υπάρχουν blocks που είναι πάντα διαθέσιμα και παραμένουν πάντα στην διάθεση του προγραμματιστή για να μπορεί να τα χρησιμοποιεί και δεν έχει σημασία τι συστατικά έχουμε τοποθετήσει στην εφαρμογή μας. Κάτω από την ομάδα των Built-in blocks υπάρχουν τα blocks που αντιστοιχούν στο κάθε στοιχείο της εφαρμογής μας. Κάθε φορά που προσθέτω ένα νέο στοιχείο μέσω του Designer στην εφαρμογή μου, αυτόματα προστίθενται και τα αντίστοιχα blocks στον Block Editor. Τα Blocks που βρίσκονται στην Buil-in ομάδα είναι: Control Logic Math Text Lists Colors Variables Procedures 104

105 Για παράδειγμα για να ανοίξω το Block της ομάδας Control, κάνω κλικ πάνω της και εμφανίζονται οι διαθέσιμες εντολές. Αντίστοιχα κάνοντας κλικ στην κάθε κατηγορία εμφανίζονται οι αντίστοιχες εντολές όπως φαίνεται στις παρακάτω εικόνες. Εικόνα 54. Εντολές του Block Control Εικόνα 55. Εντολές του Logic Blocks 105

106 Εικόνα 56. Εντολές του Text Block Εικόνα 57. Blocks στοιχείου κουμπιού Στο παράδειγμα της παρακάτω εικόνας, το μπλοκ αναπαράγει έναν ήχο όταν το κουμπί πατηθεί. 106

107 Εικόνα 58. Παράδειγμα κουμπιού με ενέργεια Δοκιμή εφαρμογών - Emulator Για να δούμε την εφαρμογή μας σε μια συσκευή, ενώ ταυτόχρονα μπορούμε να την χτίζουμε (ονομάζεται επίσης "Live Testing"), θα πρέπει να ακολουθήσουμε τα παρακάτω βήματα. Υπάρχουν τρεις επιλογές για τη δημιουργία ζωντανών δοκιμών ενώ χτίζουμε εφαρμογές. Και οι τρεις εφαρμογές είναι προσβάσιμες από το μενού Connect (εικόνα). Εικόνα Επιλογές του μενού Connect Αυτές οι τρεις επιλογές είναι: 1. Εάν διαθέτουμε συσκευή Android και ασύρματη σύνδεση στο internet, μπορούμε να ξεκινήσουμε την οικοδόμηση εφαρμογών χωρίς τη λήψη οποιουδήποτε λογισμικού στον υπολογιστή μας. Θα χρειαστεί να εγκαταστήσουμε το App Inventor Companion App στη συσκευή μας (μπορούμε να το κάνουμε λήψη από το Playstore). Αυτή η επιλογή αυτή συνιστάται. 107

108 Εικόνα 60. Σύνδεση μέσω wifi Από το μενού Connect αν επιλέξουμε AI Companion θα ανοίξει ένα παράθυρο με κωδικό. Τον κωδικό αυτό που είναι μοναδικός κάθε φορά, μπορούμε να το σαρώσουμε το barcode ή πληκτρολογήστε τον κωδικό για να συνδεθούμε για ζωντανή δοκιμή της εφαρμογής μας. Εικόνα 61. barcode σύνδεσης 2. Εάν δεν διαθέτουμε συσκευή Android, θα χρειαστεί να εγκαταστήσουμε το λογισμικό στον υπολογιστή μας, ώστε να μπορούμε να χρησιμοποιήσουμε το Android emulator που εμφανίζονται στην οθόνη. Για να συνδεθούμε με τον Emulator από το μενού Connect επιλέγουμε Emulator. 108

109 Εικόνα 62. Χρήση emulator 3. Εάν δεν διαθέτουμε ασύρματη σύνδεση στο internet, θα πρέπει να εγκαταστήσουμε το λογισμικό στον υπολογιστή μας, ώστε να μπορούμε να συνδεθούμε με την Android συσκευή μας μέσω USB. Η επιλογή σύνδεσης USB μπορεί να είναι δύσκολη, ειδικά για τα Windows και η προτείνεται να χρησιμοποιήσουμε αυτή τη επιλογή ως έσχατη λύση. Για να συνδεθούμε με USB από το μενού Connect επιλέγουμε USB αντίστοιχα. Απαιτήσεις συστήματος Εικόνα 63. Σύνδεση μέσω usb Υπολογιστές και λειτουργικά συστήματα Browser Συσκευή Λειτουργικό Σύστημα Android 109

110 Macintosh (με Mozilla Firefox 3.6 Τηλέφωνο ή Tablet Έκδοση Android επεξεργαστή Intel): ή νεότερη έκδοση. (ή να 2.3 ("Gingerbread") Mac OS X 10.5 ή νεότερη έκδοση. Windows: Windows XP, Windows Vista, Windows 7. GNU / Linux: Ubuntu 8 ή Apple Safari 5.0 ή νεότερη έκδοση. Google Chrome 4.0 ή νεότερη έκδοση. Microsoft Internet Explorer δεν υποστηρίζεται. χρησιμοποιήσετε τον εξομοιωτή στην οθόνη). ή νεότερη. νεότερη, Debian 5 ή νεότερη έκδοση. Sharing και Packaging των εφαρμογών Μπορούμε να μοιραστούμε την εφαρμογή μας, σε μια εκτελέσιμη μορφή (.apk) που μπορεί να εγκατασταθεί σε μια συσκευή ή σε μορφή πηγαίου κώδικα (.aia), που μπορεί να φορτωθεί και να τρέξει στο App Inventor. Μπορούμε επίσης να διανέμουμε την εφαρμογή μας στο κατάστημα Play Google. 1. Sharing εφαρμογής ως αρχείο.aia : Αφού βεβαιωθούμε ότι είμαστε σε προβολή της λίστας όλων των έργων σας (αν δεν είμαστε, επιλέγουμε Project My Projects) επιλέγουμε το έργο που θέλουμε να μοιραστούμε επιλέγοντας το πλαίσιο δίπλα σε αυτό. Στη συνέχεια επιλέγουμε Project Export selected project to my computer (.aia) για να εξάγει τον πηγαίο κώδικα (μπλοκ) για το συγκεκριμένο έργο. Ο πηγαίος κώδικας που κατεβάσαμε είναι σε αρχείο aia. Αν το στείλετε σε κάποιον τρίτο, μπορεί να το ανοίξει πηγαίνοντας Project Import project (.aia) from my computer. Πρέπει να τονίσουμε ότι ο πηγαίος κώδικας (.aia) αρχείων δεν είναι εκτελέσιμα προγράμματα Android (τα εκτελέσιμα προγράμματα Android είναι.apk αρχεία) ούτε κώδικας Java SDK. Ο πηγαίος κώδικας (.aia) μπορεί να φορτώνεται μόνο σε App Inventor. 2. Sharing εφαρμογής ως αρχείο.apk για εγκατάσταση της σε κάποια mobile συσκευή (smartphone/tablet): 110

111 Package την εφαρμογή (αρχείο. apk) πηγαίνοντας στο μενού "Build" στη γραμμή εργαλείων App Inventor. Εικόνα 64. Μενού Build Επιλέξτε "App (save.apk to my computer)." Ένα αναδυόμενο παράθυρο θα πρέπει να μας ενημερώσει ότι η λήψη έχει αρχίσει. Η άλλη επιλογή (. Παρέχουν QR code για apk) παράγει μια σαρώσιμο κώδικα QR που θα κατεβάσει την εφαρμογή μόνο για το πρόσωπο που κατέχει το έργο στο App Inventor (δηλαδή μόνο του δημιουργού). Δεν θα πρέπει να διανέμουμε το QR code σε άλλους γιατί δεν θα λειτουργήσει για αυτούς. Εικόνα 65. Πρόοδος λήψης εφαρμογής.apk Όταν η λήψη ολοκληρωθεί, μπορούμε να στείλουμε με την εφαρμογή (".apk" αρχείο) σε οποιονδήποτε, οι οποίοι μπορούν να την εγκαταστήσουν με το άνοιγμα του από το τηλέφωνό τους. Αν θέλουμε να διανέμουμε ευρύτερα την εφαρμογή μας, μπορούμε να την ανεβάσουμε σε ένα δικτυακό τόπο όπου οι φίλοι μας μπορούν να έχουν πρόσβαση. Μπορούμε επίσης να διανέμουμε την εφαρμογή μας στο κατάστημα Play Store της Google. Οποιαδήποτε εγκατάσταση της εφαρμογής μας (".apk" το οποίο είναι ένα αρχείο), σε κάποιο τηλέφωνο θα χρειαστεί να γίνει αλλαγή των ρυθμίσεων στο τηλέφωνό για να επιτρέπεται η εγκατάσταση εφαρμογών εκτός της αγοράς. Η ρύθμιση αυτή για τις εκδόσεις του Android πριν από την 4.0 μπορούμε να την βρούμε στις "Ρυθμίσεις> Εφαρμογές" και στη συνέχεια επιλέγουμε το πλαίσιο δίπλα στο "Άγνωστες πηγές". Για συσκευές που τρέχουν Android 4.0 ή νεότερη έκδοση, πηγαίνουμε στο "Ρυθμίσεις> Ασφάλεια" ή "Ρυθμίσεις> Ασφάλεια & οθόνη κλειδώματος" και στη συνέχεια 111

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) NetBeans, Πρώτα παραδείγματα ανάπτυξης Java εφαρμογών Γαβαλάς Δαμιανός dgavalas@aegean.gr Στόχοι

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) NetBeans, Πρώτα παραδείγματα ανάπτυξης Java εφαρμογών Στόχοι εργαστηρίου Εξοικείωση με τις βασικές

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου 49 Διδακτικές ενότητες 6.1 Γλώσσες και εργαλεία προγραμματισμού 6.2 Σύγχρονα προγραμματιστικά περιβάλλοντα Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν την ανάγκη ύπαρξης τόσο

Διαβάστε περισσότερα

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Εισαγωγή

Διαβάστε περισσότερα

Βασίλειος Κοντογιάννης ΠΕ19

Βασίλειος Κοντογιάννης ΠΕ19 Ενότητα2 Προγραμματιστικά Περιβάλλοντα Δημιουργία Εφαρμογών 6.1 Γλώσσες και εργαλεία προγραμματισμού Τι είναι οι γλώσσες προγραμματισμού; Είναι οι τεχνητές γλώσσες στις οποίες γράφονται οι εντολές των

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1. Εισαγωγή στην Python. 1.1 Εισαγωγή

ΚΕΦΑΛΑΙΟ 1. Εισαγωγή στην Python. 1.1 Εισαγωγή ΚΕΦΑΛΑΙΟ 1 Εισαγωγή στην Python Σύνοψη Σε αυτό το κεφάλαιο κάνουμε μια σύντομη εισαγωγή στην Python και στα εργαλεία λογισμικού που θα χρησιμοποιήσουμε στη συνέχεια του συγγράμματος. Προαπαιτούμενη γνώση

Διαβάστε περισσότερα

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

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

Διαβάστε περισσότερα

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

Διαβάστε περισσότερα

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

Διαβάστε περισσότερα

ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming) ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming) Πληροφορίες Μαθήματος Διαλέξεις Δευτέρα, Πέμπτη 10:30-12:00 Κτήριο ΘΕΕ01, Αίθουσα 202 Εργαστήριο Τετάρτη 10:30-12:00, Κτήριο ΘΕΕ01,

Διαβάστε περισσότερα

ΛΟΓΙΣΜΙΚΟ (software)

ΛΟΓΙΣΜΙΚΟ (software) ΛΟΓΙΣΜΙΚΟ (software) Το Λογισµικό του Ηλεκτρονικού Υπολογιστή Περιεχόµενα Ορισµός Λογισµικού Κατηγορίες Λογισµικό Συστήµατος Λογισµικό Εφαρµογών Το λογισµικό είναι: Το λογισµικό Το σύνολο των προγραµµάτων

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Εισαγωγή Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

ANDROID Προγραμματισμός Εφαρμογών

ANDROID Προγραμματισμός Εφαρμογών ANDROID Προγραμματισμός Εφαρμογών Παναγιώτης Κρητιώτης ΑΜ 1607 Περιεχόμενα Εισαγωγή Βασικά Στοιχεία Χαρακτηριστικά Αρχιτεκτονική Εργαλεία Προγραμματισμού Eclipse IDE Android SDK - ADT Plugin Προσομοιωτής

Διαβάστε περισσότερα

Python και Android. Νίκος Νοδαράκης. 17 Μαΐου 2010

Python και Android. Νίκος Νοδαράκης. 17 Μαΐου 2010 Python και Python και Νίκος Νοδαράκης 17 Μαΐου 2010 Python και Τι είναι το ; Περιγραφή του Ορισµός Το είναι µια στοίβα λογισµικού για ϕορητές συσκευές που περιλαµβάνει ένα λειτουργικό σύστηµα, middleware

Διαβάστε περισσότερα

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

Διαβάστε περισσότερα

Δημιουργία μιας εφαρμογής Java με το NetBeans

Δημιουργία μιας εφαρμογής Java με το NetBeans Δημιουργία μιας εφαρμογής Java με το NetBeans Για να δημιουργήσετε μια εφαρμογή Java πρέπει να ακολουθήσετε τα εξής βήματα : Αρχικά πρέπει να δημιουργηθεί ένα project το οποίο θα περιέχει όλα τα αρχεία

Διαβάστε περισσότερα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Ενότητες βιβλίου: 6.4, 6.7 Ώρες διδασκαλίας: 1 Τεχνικές σχεδίασης προγραμμάτων Στο βιβλίο γίνεται αναφορά σε μία τεχνική για την ανάπτυξη

Διαβάστε περισσότερα

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

Διαβάστε περισσότερα

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω.

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω. Εργαλεία του JDK Β.1 Εργαλεία του JDK Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω. O µεταγλωττιστής (compiler) της Java javac. O διερµηνευτής (interpreter) της Java java. Το υπεύθυνο εργαλείο για

Διαβάστε περισσότερα

Unity Editor #02 Κεντρικό Μενού: File, Build Settings και Build & Run

Unity Editor #02 Κεντρικό Μενού: File, Build Settings και Build & Run Unity Editor #02 Κεντρικό Μενού: File, Build Settings και Build & Run Καλώς ήλθες. Στο προηγούμενο μάθημα είδαμε τις λειτουργίες του μενού File του Editor της Unity. Όπως είπαμε οι δύο επιλογές που διαφέρουν

Διαβάστε περισσότερα

Α. Ερωτήσεις Ανάπτυξης

Α. Ερωτήσεις Ανάπτυξης οµηµένος Προγραµµατισµός-Κεφάλαιο 7 Σελίδα 1 α ό 10 ΕΝΟΤΗΤΑ ΙΙΙ (ΠΡΟΓΡΑΜΜΑΤΑ) ΚΕΦΑΛΑΙΟ 7: Είδη, Τεχνικές και Περιβάλλοντα Προγραµµατισµού Α. Ερωτήσεις Ανάπτυξης 1. Τι ονοµάζουµε γλώσσα προγραµµατισµού;

Διαβάστε περισσότερα

Εφαρμογές Υπολογιστών. Κεφάλαιο 4 Λογισμικό Συστήματος

Εφαρμογές Υπολογιστών. Κεφάλαιο 4 Λογισμικό Συστήματος Λογισμικό Συστήματος Λογισμικό 2 Λογισμικό Συστήματος Τα ειδικά εργαλεία χρησιμοποιούνται για την ανάπτυξη λογισμικού εφαρμογών και την εκτέλεση βοηθητικών εργασιών. Το λειτουργικό σύστημα (operating system)

Διαβάστε περισσότερα

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5 A. EVANS, K. MARTIN, M. A. POATSY Εισαγωγή στην πληροφορική Θεωρία και πράξη 2 η έκδοση Κεφάλαιο 5 Λογισμικό συστημάτων: Το λειτουργικό σύστημα, τα βοηθητικά προγράμματα και η διαχείριση αρχείων Τα βασικά

Διαβάστε περισσότερα

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή 1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ Μάθημα: Ενότητα: Πληροφορική Α' Γυμν. Το του Υπολογιστή 1. Τι ονομάζεται Πρόγραμμα; Είναι οι οδηγίες που δίνονται στον υπολογιστή για να εξηγήσουμε πώς γίνεται μια εργασία (δηλαδή η

Διαβάστε περισσότερα

Διάλεξη 1: Αντικειμενοστρεφής Προγραμματισμός -Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 1: Αντικειμενοστρεφής Προγραμματισμός -Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 1: Αντικειμενοστρεφής Προγραμματισμός -Εισαγωγή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Γλώσσες Προγραμματισμού - Μεταγλώττιση και Διερμηνεία -Η πλατφόρμα

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr 1 Δομημένος προγραμματισμός έναντι αντικειμενοστρεφούς

Διαβάστε περισσότερα

Εγκατάσταση του Arduino IDE

Εγκατάσταση του Arduino IDE ΑΣΠΑΙΤΕ Συλλογή και Επεξεργασία Δεδομένων Εργαστήριο ΠΕΡΙΕΧΟΜΕΝΑ: Πώς να κατεβάσετε και να εγκαταστήσετε το Ολοκληρωμένο Περιβάλλον Ανάπτυξης (IDE), για το προγραμματισμό του Arduino. Χρησιμοποιώντας το

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1 Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE Περιεχόμενο εργαστηρίου: - Το περιβάλλον ανάπτυξης προγραμμάτων IDLE - Διαδικασία ανάπτυξης προγραμμάτων Python - Απλά προγράμματα

Διαβάστε περισσότερα

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1 ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 03/01/09 Χαράλαμπος Τζόκας 1 Πρόγραμμα - Προγραμματισμός Πρόγραμμα: Σύνολο εντολών που πρέπει να δοθούν στον Υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος της επίλυσης

Διαβάστε περισσότερα

Γενικά (για τις γραπτές εξετάσεις)

Γενικά (για τις γραπτές εξετάσεις) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #12 η : Επανάληψη Γαβαλάς Δαμιανός dgavalas@aegean.gr Γενικά (για τις γραπτές εξετάσεις) Δεν υπάρχει αυστηρά ορισμένη «ύλη εξετάσεων» (καθώς δεν έχετε

Διαβάστε περισσότερα

Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών

Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών Βιβλιογραφία: Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών Προγραμματισμός Android Ian Clifton. AndroidTM User Interface Design, Addison-Wesley, 2013 P. Deitel. H. Deitel, A. Deitel.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

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

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή. ΑΕσΠΠ-Κεφ6. Εισαγωγή στον προγραμματισμό 1 ΣΩΣΤΟ ΛΑΘΟΣ 1. Οι γλώσσες προγραμματισμού αναπτυχθήκαν με σκοπό την επικοινωνία ανθρώπου μηχανής. 2. Αλγόριθμος = Πρόγραμμα + Δομές Δεδομένων 3. Ένα πρόγραμμα

Διαβάστε περισσότερα

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

Διαβάστε περισσότερα

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες

Διαβάστε περισσότερα

Ανάπτυξη Plugins για το AgentSheets

Ανάπτυξη Plugins για το AgentSheets Ανάπτυξη Plugins για το AgentSheets Thought Amplifier AgentSheets Ανάπτυξη Plugins AgentSheets 2.5 Συγγραφείς Τεκµηρίωσης: Alexander Repenning και Ronald Sudomo Εξελληνισµός Τεκµηρίωσης: Λίνος Βίγκλας,

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ακαδημαϊκό έτος: 2010-2011 Επιμέλεια Ξενοφών Βασιλάκος Περιεχόμενα Φροντιστηρίου 1. Εισαγωγή 2. Εντολές Εκχώρησης και Τελικές μεταβλητές 3. Μεταγλώττιση και διερμηνεία των

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Η εξέλιξη των γλωσσών προγραμματισμού Η εξέλιξη των γλωσσών προγραμματισμού είναι μια διαδικασία αφαίρεσης Στην αρχή ένα πρόγραμμα ήταν μια

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE)

ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE) ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE) ΣΤΟΧΟΙ: 1. Λογισμικό 2. Λογισμικό Λειτουργικού Συστήματος 3. Προσαρμοστικό Γραφικών Χρήστη 4. Λογισμικών Εφαρμογών 5. Διαφορά Μεταξύ Λογισμικού Λειτουργικού Συστήματος Και

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++ ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση του περιβάλλοντος Dev C++ το οποίο θα χρησιμοποιηθεί για την υλοποίηση

Διαβάστε περισσότερα

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

Διαβάστε περισσότερα

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών Κεφ. 2 Θεωρητική Επιστήμη Υπολογιστών 2.3.1.1 Έννοια προγράμματος Τι είναι πρόγραμμα και τι προγραμματισμός; Πρόγραμμα είναι το σύνολο εντολών που χρειάζεται

Διαβάστε περισσότερα

Κεφάλαιο 1: Εισαγωγή. 1.1 Οι γλώσσες προγραμματισμού

Κεφάλαιο 1: Εισαγωγή. 1.1 Οι γλώσσες προγραμματισμού Κεφάλαιο 1: Εισαγωγή Η Επιστήμη της Πληροφορικής (Computer Science) αποτελεί σήμερα μία από τις σημαντικότερες και πλέον εξελισσόμενες επιστήμες. Οι εφαρμογές της έχουν εισχωρήσει σε όλα τα πεδία της ερευνητικής

Διαβάστε περισσότερα

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Φτάσαμε σιγά σιγά στο τέλος του βιβλίου. Αντί για κάποιον επίλογο σκέφτηκα να συλλέξω κάποια πράγματα που θα ήθελα να πω σε κάποιον ο οποίος αρχίζει

Διαβάστε περισσότερα

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ & ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΑΝΑΠΤΥΞΗΣ BloodShed Dev-C++

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ & ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΑΝΑΠΤΥΞΗΣ BloodShed Dev-C++ ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ & ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΑΝΑΠΤΥΞΗΣ BloodShed Dev-C++ Α. ΠΡΙΝ ΤΗΝ ΕΓΚΑΤΑΣΤΑΣΗ Το πρόγραμμα BloodShed Dev-C++ είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης* κώδικα για γλώσσες

Διαβάστε περισσότερα

Digital Academy. Εισαγωγή στην ανάπτυξη Android Εφαρμογών

Digital Academy. Εισαγωγή στην ανάπτυξη Android Εφαρμογών Digital Academy Εισαγωγή στην ανάπτυξη Android Εφαρμογών Περιεχόμενα ΠΕΡΙΕΧΟΜΕΝΑ... 2 ΕΝΟΤΗΤΑ 1 ΠΡΩΤΗ ΓΝΩΡΙΜΙΑ ΜΕ ΤΟ ANDROID... 4 1.1 ΕΙΣΑΓΩΓΗ... 4 1.2 ΠΗΓΕΣ ΓΝΩΣΗΣ... 4 1.3 ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ... 5 1.4

Διαβάστε περισσότερα

Ανάπτυξη διαδικτυακής διαδραστικής εκπαιδευτικής εφαρμογής σε λειτουργικό σύστημα Android

Ανάπτυξη διαδικτυακής διαδραστικής εκπαιδευτικής εφαρμογής σε λειτουργικό σύστημα Android Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. Ανάπτυξη διαδικτυακής διαδραστικής εκπαιδευτικής εφαρμογής σε λειτουργικό σύστημα Android Πτυχιακή Εργασία Φοιτητής:

Διαβάστε περισσότερα

Εισαγωγή 6. Tα πολλά πρόσωπα των απειλών για το PC 8. Οι βασικές ρυθμίσεις ασφαλείας στα Windows 18. Προστασία από το Malware με το Avast Antivirus 34

Εισαγωγή 6. Tα πολλά πρόσωπα των απειλών για το PC 8. Οι βασικές ρυθμίσεις ασφαλείας στα Windows 18. Προστασία από το Malware με το Avast Antivirus 34 περιεχόμενα Εισαγωγή 6 Tα πολλά πρόσωπα των απειλών για το PC 8 Οι βασικές ρυθμίσεις ασφαλείας στα Windows 18 Προστασία από το Malware με το Avast Antivirus 34 Γονικός έλεγχος σε PC και tablet 44 Παρακολούθηση

Διαβάστε περισσότερα

Εγχειρίδιο του Accerciser, έκδοση 0.2.0

Εγχειρίδιο του Accerciser, έκδοση 0.2.0 i Εγχειρίδιο του Accerciser, ii Copyright 2006, 2007, 2008 IBM Corporation Ανάδραση Για να αναφέρετε ένα σφάλμα ή να κάνετε μια εισήγηση σχετικά με την εφαρμογή Accerciser ή με αυτό τον εγχειρίδιο, ακολουθήστε

Διαβάστε περισσότερα

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795 Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795 Περιεχόμενα Εισαγωγή Εγκατάσταση Δημιουργία νέου project Java Editor Perspectives Δημιουργία source folders Προσθήκη νέου αρχείου στο project Εισάγωντας

Διαβάστε περισσότερα

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού. Κεφάλαιο 6 6.1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία σημαντικά στάδια : Σον ακριβή προσδιορισμό του προβλήματος Σην ανάπτυξη του αντίστοιχου αλγορίθμου

Διαβάστε περισσότερα

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος Κεφάλαιο 3.1: Λειτουργικά Συστήματα 1 3.1.1 Λογισμικό και Υπολογιστικό Σύστημα Ένα σύγχρονο υπολογιστικό σύστημα αποτελείται από: το υλικό: τα ηλεκτρονικά μέρη του υπολογιστή και το λογισμικό: το σύνολο

Διαβάστε περισσότερα

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Ποιες γλώσσες αναφέρονται ως φυσικές και ποιες ως τεχνητές; Ως φυσικές γλώσσες αναφέρονται εκείνες οι οποίες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων,

Διαβάστε περισσότερα

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ Εισαγωγή στην γλώσσα προγραμματισμού Ακαδημαϊκό έτος 2016-2017, Εαρινό εξάμηνο Οι σημειώσεις βασίζονται στα συγγράμματα: A byte of Python (ελληνική

Διαβάστε περισσότερα

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 2: Mεταφραστές Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Λειτουργία Μετάφρασης ΑΡΧΙΚΗ ΓΛΩΣΣΑ (Source) L A ΓΛΩΣΣΑ

Διαβάστε περισσότερα

Λογισμικό - Προγράμματα

Λογισμικό - Προγράμματα Λογισμικό - Προγράμματα Πρόγραμμα είναι ένα σύνολο εντολών, βάση των οποίων ο υπολογιστής εκτελεί μια συγκεκριμένη εργασία Λογισμικό (Software) Το σύνολο των προγραμμάτων Προγράμματα Προγράμματα συστήματος

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Διπλωματικές

Διαβάστε περισσότερα

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 1ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Ορισμός Wikipedia.org 2 Δομημένος προγραμματισμός (structured programming) ή διαδικαστικός προγραμματισμός (procedural

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ. Λογισμικό. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Προγραμματισμός Η/Υ. Λογισμικό. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Προγραμματισμός Η/Υ Λογισμικό ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Αλληλεπίδραση Συστημάτων Χρήστες Λογισμικό Εφαρμογών Λειτουργικό Σύστημα Επιπλέον

Διαβάστε περισσότερα

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Λαμπαδαρίδης Αντώνιος el04148@mail.ntua.gr Διπλωματική εργασία στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Επιβλέπων: Καθηγητής Τ. Σελλής Περίληψη

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

Διαβάστε περισσότερα

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήρια Δευτέρα 18:00-20:00,Τρίτη

Διαβάστε περισσότερα

Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 1: Εισαγωγή Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Διπλωματική Εργασία. Μουσικές Εφαρμογές σε Περιβάλλον Κινητών Συσκευών Android με Χαρακτηριστικά Εξατομίκευσης

Διπλωματική Εργασία. Μουσικές Εφαρμογές σε Περιβάλλον Κινητών Συσκευών Android με Χαρακτηριστικά Εξατομίκευσης ΠΜΣ Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Διπλωματική Εργασία Μουσικές Εφαρμογές σε Περιβάλλον Κινητών Συσκευών Android με Χαρακτηριστικά Εξατομίκευσης Ονοματεπώνυμο: Βλάχος Αθανάσιος Επιβλέπων

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Μάριος Αραποστάθης Καθηγητής πληροφορικής Βαρβάκειου Λύκειου http://users.sch.gr/mariosarapostathis 6.1 Η έννοια του

Διαβάστε περισσότερα

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1 Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα Προγραμματισμός II 1 lalis@inf.uth.gr Χρήση λογισμικού που ήδη υπάρχει Τα πολύπλοκα συστήματα αναπτύσσονται σταδιακά, «χτίζοντας» πάνω σε υπάρχουσα λειτουργικότητα

Διαβάστε περισσότερα

Κεφάλαιο 2: Μεταφραστές

Κεφάλαιο 2: Μεταφραστές Κεφάλαιο 2: Μεταφραστές Αρχές Γλωσσών και Προγραμματισμού Λειτουργία Μετάφρασης ΑΡΧΙΚΗ ΓΛΩΣΣΑ (Source) L A ΓΛΩΣΣΑ ΥΛΟΠΟΙΗΣΗΣ ΜΕΤΑΦΡΑΣΤΗ (Implementation) L Y ΤΕΛΙΚΗ ΓΛΩΣΣΑ (Target) L T Αρχικό Πρόγραμμα

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Γενικά Χαρακτηριστικά ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΓΕΝΙΚΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ

Διαβάστε περισσότερα

Ανάπτυξη διαδικτυακής εφαρμογής σε περιβάλλον κινητών συσκευών με λειτουργικό σύστημα Android

Ανάπτυξη διαδικτυακής εφαρμογής σε περιβάλλον κινητών συσκευών με λειτουργικό σύστημα Android Ανάπτυξη διαδικτυακής εφαρμογής σε περιβάλλον κινητών συσκευών με λειτουργικό σύστημα Android Ιωάννης Γιαννόπουλος, ΑΜ: 0430 Γεώργιος Δούρος, ΑΜ: 0686 Επιβλέπων: Γεώργιος Ασημακόπουλος Σεπτέμβριος 2014

Διαβάστε περισσότερα

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1 Κεφάλαιο 4 Λογισμικό συστήματος Καραμαούνας Πολύκαρπος 1 4.1 Λογισμικό συστήματος (application software) Καραμαούνας Πολύκαρπος 2 Λογισμικό εφαρμογών (application software): προγράμματα για την αντιμετώπιση

Διαβάστε περισσότερα

Ενότητα 1η. Εισαγωγή στην Πληροφορική

Ενότητα 1η. Εισαγωγή στην Πληροφορική Ενότητα 1η Εισαγωγή στην Πληροφορική 1.1 Τι είναι Πληροφορική Ένας σύντομος ορισμός για το τι είναι πληροφορική είναι ο παρακάτω: όλα εκείνα που χρειάζεται κανείς για να παράγει, να οργανώνει και να διαχειρίζεται

Διαβάστε περισσότερα

Δικτυακοί τόποι. Η σχεδίαση ενός δικτυακού τόπου. Δρ. Ματθαίος Α. Πατρινόπουλος

Δικτυακοί τόποι. Η σχεδίαση ενός δικτυακού τόπου. Δρ. Ματθαίος Α. Πατρινόπουλος Δικτυακοί τόποι Η σχεδίαση ενός δικτυακού τόπου Δρ. Ματθαίος Α. Πατρινόπουλος Πώς χρησιμοποιούμε το διαδίκτυο; ΔΙΑΦΑΝΕΙΕΣ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΔΙΑΔΙΚΤΥΟΥ. 2 Από το www.smartinsights.

Διαβάστε περισσότερα

Λειτουργικά Συστήματα 1.1 Τι είναι Λειτουργικό Σύστημα (Operating System)

Λειτουργικά Συστήματα 1.1 Τι είναι Λειτουργικό Σύστημα (Operating System) Υλικό Hardware Λογισμικό Software... κώδικας ΥΛΙΚΟ Κάθε ηλεκτρονικό, ηλεκτρικό και μηχανικό μέρος του Η/Υ. ΛΟΓΙΣΜΙΚΟ Προγράμματα,δηλαδή οδηγίες γιατοτιπρέπεινακάνειοη/υ. Λειτουργικό Σύστημα Είναι ένα βασικό

Διαβάστε περισσότερα

Λιβανός Γιώργος Εξάμηνο 2017Β

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 10. Υπηρεσίες και εφαρμογές Διαδικτύου. ΚΕΦΑΛΑΙΟ 10 Υπηρεσίες και εφαρμογές Διαδικτύου. Α Γενικού Λυκείου

ΚΕΦΑΛΑΙΟ 10. Υπηρεσίες και εφαρμογές Διαδικτύου. ΚΕΦΑΛΑΙΟ 10 Υπηρεσίες και εφαρμογές Διαδικτύου. Α Γενικού Λυκείου Α Γενικού Λυκείου 87 Διδακτικές ενότητες 10.1 Υπηρεσίες Διαδικτύου 10.2 Ο παγκόσμιος ιστός, υπηρεσίες και εφαρμογές Διαδικτύου Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να μπορούν να διακρίνουν

Διαβάστε περισσότερα

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Εργαλεία ανάπτυξης εφαρμογών internet Ι IEK ΟΑΕΔ ΚΑΛΑΜΑΤΑΣ ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΟΦΟΡΙΚΗΣ Εργαλεία ανάπτυξης εφαρμογών internet Ι Διδάσκουσα: Κανελλοπούλου Χριστίνα ΠΕ19 Πληροφορικής Εργαλεία και τεχνικές από την πλευρά του πελάτη Java Applet

Διαβάστε περισσότερα

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Τ.Ε.Ι ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ & ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Πτυχιακή εργασία του φοιτητή Γιαννακίδη Αποστόλη Επιβλέπων καθηγητής Τσούλος

Διαβάστε περισσότερα

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ http://leitourgika-systhmata-epal-b.ggia.info/ Σύγχρονο Λειτουργικό Σύστημα - ΛΣ Λειτουργικό Σύστημα:

Διαβάστε περισσότερα

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Εισαγωγή ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Όπως για όλες τις επιστήμες, έτσι και για την επιστήμη της Πληροφορικής, ο τελικός στόχος της είναι η επίλυση προβλημάτων. Λύνονται όμως όλα τα προβλήματα;

Διαβάστε περισσότερα

Android Studio για Windows

Android Studio για Windows Android Studio για Windows 1. Οδηγίες Εγκατάστασης: 1. Κατεβάστε το Android Studio από εδώ (τελευταία έκδοση 0.4.6, 496 MB): http://developer.android.com/sdk/installing/studio.html 2. Εγκαταστήστε το αρχείο

Διαβάστε περισσότερα

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια)

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια) Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018 Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια) ΠΕΡΙΟΧΗ Α: ΕΦΑΡΜΟΓΕΣ ΜΕ ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΠΙΓΝΩΣΗ ΣΥΓΚΕΙΜΕΝΟΥ Οι αισθητήρες μας δίνουν τη δυνατότητα

Διαβάστε περισσότερα

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

Πως θα κατασκευάσω το πρώτο πρόγραμμα; Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να γίνει εξοικείωση το μαθητών με τον ΗΥ και το λειτουργικό σύστημα. - Επίδειξη του My Computer

Διαβάστε περισσότερα

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο FrontPage 2003 Πρακτικός Οδηγός Χρήσης Το FrontPage είναι ένα πρόγραμμα δημιουργίας ιστοσελίδων και δικτυακών τόπων που επιτρέπει το σχεδιασμό ιστοσελίδων μέσα από γραφικό περιβάλλον αλλά και την ταυτόχρονη

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ

ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ ΕΡΩΤΗΣΗ 1: Σε ποιες μεγάλες κατηγορίες μπορούμε να χωρίσουμε το Λογισμικό. Μπορούμε να χωρίσουμε το Λογισμικό στις παρακάτω μεγάλες κατηγορίες: στο Λογισμικό Συστήματος (System Software),

Διαβάστε περισσότερα

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ Μάθημα Πρώτο Εισαγωγή στις Υπηρεσίες Ιστού (Web Services) Μοντέλα WS JSON Χρήση (consume) WS μέσω python Πρόσβαση σε WS και άντληση δεδομένων Παραδείγματα

Διαβάστε περισσότερα

Σύντοµο Εγχειρίδιο Χρήσης. του Λογισµικού Στατιστικής Επεξεργασίας. SPSS for Windows v. 8.0

Σύντοµο Εγχειρίδιο Χρήσης. του Λογισµικού Στατιστικής Επεξεργασίας. SPSS for Windows v. 8.0 Εθνικό & Καποδιστριακό Πανεπιστήµιο Αθηνών Τµήµα Μεθοδολογίας, Ιστορίας & Θεωρίας της Επιστήµης ιαπανεπιστηµιακό Πρόγραµµα Μεταπτυχιακών Σπουδών «Βασική και Εφαρµοσµένη Γνωσιακή Επιστήµη» Σύντοµο Εγχειρίδιο

Διαβάστε περισσότερα

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή 1 Πίνακας Περιεχομένων 1. Εισαγωγή... 4 1.1 Περιβάλλον Moodle...4 1.2 Χρήση ονόματος χρήστη και κωδικού...4 1.3 Δημιουργία νέου μαθήματος...4 1.3.1

Διαβάστε περισσότερα

Εισαγωγή στο περιβάλλον Code::Blocks

Εισαγωγή στο περιβάλλον Code::Blocks Εισαγωγή στο περιβάλλον Code::Blocks Στο παρόν εγχειρίδιο παρουσιάζεται η διαδικασία ανάπτυξης, μεταγλώττισης και εκτέλεσης ενός προγράμματος C στο περιβάλλον του Code::Blocks. Η διαδικασία αυτή παρουσιάζεται

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Python. 1η Ομάδα Ασκήσεων

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Python. 1η Ομάδα Ασκήσεων ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Python 1η Ομάδα Ασκήσεων Περιεχόμενο εργαστηρίου: - Το περιβάλλον ανάπτυξης προγραμμάτων IDLE - Διαδικασία ανάπτυξης προγραμμάτων Python - Εισαγωγικά προγράμματα / print / μεταβλητές / input

Διαβάστε περισσότερα

Εισαγωγή στην Python. Διάλεξη 0

Εισαγωγή στην Python. Διάλεξη 0 Εισαγωγή στην Python Διάλεξη 0 Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 Τι είναι ο προγραμματισμός : Αλγόριθμος γραμμένος σε γλώσσα που καταλαβαίνει

Διαβάστε περισσότερα