Ξεκινώντας με τη Java Native Interface (JNI)

Getting Started With Java Native Interface



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

Το JNI είναι επίσης σεβαστό για τη λειτουργία του να καλεί το API να κρυφτεί σε μια εικονική μηχανή Java σε εφαρμογές Java. Αυτό επιτρέπει στους προγραμματιστές να επικαλεστούν τον κώδικα java μέσα στον κώδικα της εγγενής εφαρμογής.







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



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



Προαπαιτούμενα

Θα χρειαστείτε μερικά πράγματα για να ακολουθήσετε σωστά αυτόν τον οδηγό. Αυτά περιλαμβάνουν τον μεταγλωττιστή Java, ή Javac.exe, μαζί με το JVM, καθώς και τη μητρική μέθοδο C γεννήτρια (javah.exe). Και τα τρία αυτά ενσωματώνονται στο κιτ ανάπτυξης λογισμικού, οπότε είστε όλοι καλοί αν το έχετε. Εκτός από αυτά τα τρία, θα χρειαστείτε επίσης τα αρχεία που καθορίζουν το JNI, συμπεριλαμβανομένων των εγγενών αρχείων κεφαλίδας και πλήρων αρχείων βιβλιοθήκης.





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

Στοιχεία JNI

Το JNI οδηγείται κυρίως από δύο συστατικά, δηλαδή το h και το javah. Το H είναι το στοιχείο αρχείου κεφαλίδας που αντικαθιστά τους εγγενείς κώδικες με κώδικα java, ενώ ο Javah το καθιστά έτσι ώστε αυτό το αρχείο να μπορεί να φορτωθεί από μόνο του σε αρχεία κεφαλίδας εφαρμογής.



Επίκληση C/C ++ από κώδικα Java

Βήμα 1: Γράφοντας τον κώδικα σε Java

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

Ας χρησιμοποιήσουμε αυτόν τον κώδικα για να επεξηγήσουμε περαιτέρω:

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

Βήμα 2: Μεταγλώττιση του κώδικα java σε bytecode

Το δεύτερο βήμα έχει να κάνει με τη σύνταξη του κώδικα java. Ο μεταγλωττιστής javac μπορεί να κάνει τη δουλειά εδώ για εμάς. απλώς εκδώστε την παρακάτω εντολή:

$ javac Παράδειγμα 1.Ιάβα

Βήμα 3: Δημιουργήστε αρχεία κεφαλίδας C/C ++

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

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

javah Παράδειγμα 1

Η ακόλουθη έξοδος πρέπει να επιστρέψει:

Βήμα 4: Γράφοντας τον εγγενή κώδικα

Εδώ θα γράψουμε κώδικα C/C ++. Θα πρέπει να σημειώσετε όλες τις υπογραφές που πρέπει να μοιάζουν με τις δηλώσεις που κάναμε στο βήμα 1.

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

Βήμα 5: Δημιουργήστε μια κοινόχρηστη βιβλιοθήκη

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

Βήμα 6: Εκκινήστε το πρόγραμμά σας

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

Εκδώστε την ακόλουθη εντολή:

java Παράδειγμα 1

Θα πρέπει να επιστρέψει:

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

Η εκμάθηση του τρόπου εργασίας με το JNI είναι απαραίτητη για όποιον θέλει να αναπτύξει εφαρμογές Java, ειδικά εφαρμογές Android για smartphone.