الشروع في استخدام Java Native Interface (JNI)

Getting Started With Java Native Interface



Java Native Interface ، والمختصرة JNI ، هي واجهة برمجة تتيح لمطوري Java تشغيل الأكواد والمقتطفات من لغات البرمجة الأخرى في Java. يأتي مقترنًا بـ Java Software Development Kit أو SDK (سنغطي ذلك في برنامج تعليمي مختلف).

تحظى JNI أيضًا بالتبجيل لميزتها في استدعاء API للتسلل في جهاز Java Virtual في تطبيقات Java. يتيح ذلك للمطورين استدعاء كود java داخل كود التطبيق الأصلي.







إذا كنت قد أمضيت بعض الوقت في العمل باستخدام جافا ، فربما تكون قد واجهت بالفعل العديد من مشكلات الأداء التي تواجهك حتمًا. لا تعد هذه مشكلة عند تشغيل نفس الشفرة باللغة الأم ، والتي يمكن أن تعمل بشكل أسرع بأكثر من ثمانية عشر مرة عند قراءتها في نموذج مجمع. بالإضافة إلى ذلك ، يمكنك أيضًا استخدام إجراءات الأجهزة القديمة / غير المتوافقة مع رموز أصلية بلغات أخرى.



سيوضح هذا البرنامج التعليمي كيف يمكن استدعاء كود الآلة C / C ++ من داخل تطبيق جافا.



المتطلبات الأساسية

ستحتاج إلى بعض الأشياء لمتابعة هذا الدليل بشكل صحيح. يتضمن ذلك مترجم Java ، أو Javac.exe ، جنبًا إلى جنب مع JVM ، بالإضافة إلى منشئ الطريقة الأصلية C (javah.exe). كل هذه العناصر الثلاثة مدمجة في مجموعة أدوات تطوير البرامج ، لذا فأنت جيد إذا كان لديك ذلك. بالإضافة إلى هذه الثلاثة ، ستحتاج أيضًا إلى الملفات التي تحدد JNI ، بما في ذلك ملفات الرأس الأصلية وملفات المكتبة الكاملة.





وبالطبع ، في برنامج تعليمي حول تشغيل أكواد C و C ++ ، سنستخدم أيضًا مترجم C لإنشاء مكتبة مشتركة.

مكونات JNI

يتم تشغيل JNI بشكل أساسي بواسطة مكونين ، هما h و javah. H هو مكون ملف الرأس الذي يستبدل الأكواد الأصلية برمز جافا ، بينما يصنعه Javah بحيث يمكن تحميل هذا الملف إلى ملفات رأس التطبيق بنفسه.



استدعاء C / C ++ من كود Java

الخطوة 1: كتابة الكود بجافا

تمت كتابة الكود أولاً بلغة جافا وهو متوافق مع ثلاثة شروط. أولاً ، تمت كتابته بالطريقة الأصلية ليتم استدعاؤها لاحقًا. ثانيًا ، يجب عليه تحميل المكتبة المشتركة التي يعد الكود الأصلي جزءًا منها ، وأخيرًا ، يجب عليه استدعاء الأساليب الأصلية.

دعنا نستخدم هذا الرمز لمزيد من التوضيح:

سطور الإخطار 3 و 6 ؛ هذه هي الخطوط التي يتم فيها تضمين الطرق الأصلية. يقع الكود الذي يقوم بتحميل المكتبات المشتركة في السطر 10 ، مما يؤدي إلى استدعاء الطريقة بين السطور 12 إلى 15.

الخطوة 2: ترجمة كود java إلى bytecode

الخطوة الثانية تتعلق بتجميع كود جافا. يمكن لمترجم javac القيام بالمهمة هنا من أجلنا ؛ فقط قم بإصدار الأمر أدناه:

javac مثال 1.جافا

الخطوة 3: إنشاء ملفات رأس C / C ++

بعد ذلك ، يجب إنشاء ملفات رأس اللغة الأصلية. تعمل ملفات الرأس هذه على تشغيل تواقيع الرموز الأصلية.

يمكن إنشاء ملفات الرأس هذه باستخدام الأداة الأصلية javah ، وهي مولد C stub مجمّع مع SDK ، باستخدام الأمر التالي:

جافا مثال 1

يجب أن يعود الناتج التالي:

الخطوة 4: كتابة الكود الأصلي

هذا هو المكان الذي سنكتب فيه كود C / C ++. يجب أن تلاحظ جميع التوقيعات التي يجب أن تشبه الإعلانات التي قدمناها في الخطوة 1.

فيما يلي تنفيذ مكتوب بلغة C:

الخطوة 5: إنشاء مكتبة مشتركة

يمكن إنشاء مكتبة مشتركة مع أي مترجم. نظرًا لأن المكتبة المشتركة تحتوي على الرمز الأصلي ، فسيتعين علينا إنشاء واحدة.

الخطوة 6: قم بتشغيل البرنامج الخاص بك

تتضمن هذه الخطوة تقييم الكود وتحديد أي مشاكل في البرنامج. سيشمل هذا بيئة وقت تشغيل Java لأن الكود سيتم تنفيذه في JVM بشكل أساسي.

أصدر الأمر التالي:

جافا مثال 1

يجب أن تعود:

لذلك كان هذا هو دليل المبتدئين المختصر لاستخدام واجهة Java الأصلية. نأمل أن تكون قد وجدت ذلك مفيدًا.

يعد تعلم كيفية العمل مع JNI أمرًا ضروريًا لأي شخص يرغب في تطوير تطبيقات Java ، وخاصة تطبيقات Android للهواتف الذكية.