Bionic (λογισμικό)

Η βιβλιοθήκη Bionic libc είναι μια υλοποίηση της C πρότυπης βιβλιοθήκης (BSD). Η ανάπτυξη της βιβλιοθήκης ξεκίνησε από την Google για να χρησιμοποιηθεί στα λειτουργικά συστήματα Android  τα οποία βασίζονται στον πυρήνα Linux. Η βιβλιοθήκη Bionic παρέχει λειτουργίες σχετικές με τον πυρήνα του Linux. Σήμερα η ανάπτυξη της βιβλιοθήκης συνεχίζεται ανεξάρτητα με την ανάπτυξη του πηγαίου κώδικα της πλατφόρμας Android.

Γενικά 
Γενικά οι στόχοι της βιβλιοθήκης Bionic συνοψίζονται στα:

 BSD ελεύθερη άδεια, μια προσπάθεια της Google να αποδεσμεύσει το λειτουργικό Android από τους περιορισμούς της άδειας GPL και LGP:
 Το Android βασίζεται στον πυρήνα linux το οποίο έχει ελεύθερη άδεια GNU (GPL) έκδοση 2.
 Η πιό διαδεδομένη βιβλιοθήκη της γλώσσας C για τον πυρήνα του Linux είναι η πρότυπη βιβλιοθήκη C και η uClibc οι οποίες έχουν ελεύθερη άδεια LGPL. Η LGPL σε αντίθεση με την GPL επιτρέπει δυναμικό linking αλλά δεν επιτρέπει στατικό linking εμπορικού (μη ελεύθερου) λογισμικού.
 Μικρό μέγεθος: Η βιβλιοθήκη Bionic είναι μικρότερη από την GNU πρότυπη βιβλιοθήκη C (glibc) και λίγο μικρότερη από την uClibc.
 Ταχύτητα: Η βιβλιοθήκη Bionic είναι σχεδιασμένη για επεξεργαστές με χαμηλές επιδόσεις λειτουργίας (όπως οι επεξεργαστές των κινητών τηλεφώνων-συσκευών).

Προτείνεται η χρήση της βιβλιοθήκης Bionic με την βιβλιοθήκη NDK (Native Development Kit) του Android.

Δυνατότητες και περιορισμοί 
Η βιβλιοθήκη Bionic έχει διάφορους περιορισμούς σε σύγκριση με την βιβλιοθήκη glibc το οποίο πηγάζει από το γεγονός ότι η Bionic έχει σχεδιαστεί για το Android. Μερικοί από τους περιορσισμούς είναι:

 Η βιβλιοθήκη Bionic δεν συμπεριλαμβάνει διαχείριση εξαιρέσεων της C++ (exception handling). Αυτό οφείλεται στο ότι οι εφαρμογές Android είναι κυρίως γραμμένες σε γλώσσα Java όπου και γίνεται η διαχείριση εξαιρέσεων.
 Η βιβλιοθήκη Bionic δεν περιλαμβάνει της βιβλιοθήκη STL. Αν οι προγραμματιστές χρειάζονται δυνατότητες της STL θα πρέπει να την συμπεριλάβουν ξεχωριστά.
 Η βιβλιοθήκη Bionic δεν υποστηρίζει wide characters.
 Μερικές συναρτήσεις POSIX και ορισμένες επικεφαλίδες (headers) για κλήσεις συστήματος είναι υλοποιημένες ως κενοί μέθοδοι (method stubs) ή ενθυλακώνουν (wrappers) λειτουργίες συσχετιζόμενες με το λειτουργικό Android (και σε κάποιες περιπτώσεις έχουμε μη αναμενόμενη/επιθυμητή συμπεριφορά).
 Στο Android Jelly Bean MR1 (4.2), στο μεταγλωτισμένο κώδικα της bionic υπάρχει και υποστήριξη της βιβλιοθήκης glibc, για συναρτήσεις όπως strcpy() strcat() καιmemcpy() όπου υπάρχει έλεγχος για υπερχείλιση των buffers (έλεγχος κατά την διάρκεια της μεταγλώττισης). Αυτή η δυνατότητα είναι διαθέσιμη για εφαρμογές οι οποίες έχουν μεταγλωττιστεί με τον GNU gcc μεταγλωττιστή για επεξεργαστές Arm.

Παραπομπές

Εξωτερικοί σύνδεσμοι
 
 Developer home page for Android
 Android Native Development Kit (NDK) home page
 Bionic sources (Github mirror of the official repository)
 Bionic notes on eLinux.org

Προγραμματισμός