Είναι αρκετά τεχνικό το θέμα
Το μέλλον είναι το ART και αυτό ήταν στα roadmaps εδώ και καιρό
Σκέψου το ως εξής
Ο προγραμματιστής γράφει σε μια γλώσσα προγραμματισμού τον κώδικα του
Η γλώσσα προγραμματισμού είναι ευκολοδιάβαστη μεν από ανθρώπους αλλά πρέπει να μεταφραστεί σε γλώσσα μηχανής για να τρέξει σε επεξεργαστή
Αλλά τα android τρέχουν σε πολλούς διαφορετικούς επεξεργαστές ARM/x86 κ.ο.κ και καθώς μεταξύ των διαφόρων ARM υπάρχουν και διαφορές λ.χ. ειδικοί μαθηματικοί συνεπεξεργαστές, 64bit, κ.ο.κ.
Δεν είναι επιθυμητό ο προγραμματιστής να ‛μεταφράσει’ το πρόγραμμα σε μια γλώσσα μηχανής αποκλειστικά για ένα επεξεργαστή. Θέλουμε να τρέχει παντού.
Αυτό που κάνουμε είναι να μεταφράζουμε την γλώσσα προγραμματισμού όχι σε γλώσσα μηχανής
Αλλά σε μια ενδιάμεση γλώσσα
Μια ενδιάμεση γλώσσα που είναι ένα επίπεδο πιο ‛αόριστη’ και ‛γενική’ από την πραγματική γλώσσα των επεξεργαστών
Οι εφαρμογές που κατεβάζουμε από το store, είναι όλες σε αυτή την ενδιάμεση γλώσσα. Έτσι πακετάρονται και φτάνουν στα χέρια μας.
Όταν έρθει η ώρα να τρέξει μια εφαρμογή όμως θα πρέπει αυτή την ενδιάμεση γλώσσα να μεταφραστεί σε γλώσσα μηχανής και μάλιστα γλώσσα μηχανής για τον εκάστοτε επεξεργαστή που έχουμε στα χέρια μας – στο κινητό μας. Θα γίνει μετάφραση δηλαδή ειδικά για τον συγκεκριμένο επεξεργαστή και τις δυνατότητες του.
Το Dalvik , εκείνη ακριβώς τη στιγμή που ξεκινάμε την εφαρμογή, ξεκινάει την μετάφραση από τον ενδιάμεσο κώδικα σε γλώσσα μηχανής. Αυτό που ακούς ως Just In Time Compiler (JIT).
Και κάθε φορά που ξεκινάμε την εφαρμογή πάλι τα ίδια, το μεταφράζει για να τρέχει.
Το ART, λειτουργεί διαφορετικά. Κατά την εγκατάσταση της εφαρμογής, κάνει μια ολοκληρωμένη μετάφραση και την αποθηκεύει έτοιμη για χρήση από τον επεξεργαστή μας.
Καταρχάς άρα κάθε φορά που ξεκινάμε την εφαρμογή έχουμε έτοιμη τη μετάφραση και άρα γλιτώνουμε χρόνο (το πληρώνουμε πιθανά σε χώρο αφού έχουν αποθηκευθεί κάποιες μεταφράσεις).
Πέραν της παραπάνω ουσιαστικής διαφοράς, υπάρχουν πολλά ακόμα που γίνονται, όπως η δέσμευση και αποδέσμευση μνήμης και οι σχετικοί αλγόριθμοι για τη διαχείριση της μνήμης. Η ποιότητα του κώδικα μηχανής που βγαίνει, πόσο καλά προσαρμοσμένη είναι πάνω σε κάθε επεξεργαστή, πόσο έξυπνα έγινε η μετάφραση έχοντας υπόψη και τον επακριβή επεξεργαστή. Και χίλιες δύο λεπτομέρειες για το πώς διαχειρίζονται τους πρώτους του συστήματος.
DomieMic65 , σαν απλός χρήστης δε θα έπρεπε να σε απασχολεί και πολύ ΙΜΗΟ, αλλά το ότι έβαλες ART ΙΜΗΟ καλό είναι, μπορεί να σου βγάλει κάνα μικρό Bug αλλά σήμερα πια είναι αρκετά stable, και θεωρούμε ότι όσο περνά ο καιρός θα προσαρμόζεται πολύ καλύτερα σε νέες αρχιτεκτονικές και επεξεργαστές με περισσότερες δυνατότητες.