জাভা নেটিভ ইন্টারফেস (JNI) দিয়ে শুরু করা

Getting Started With Java Native Interface



জাভা নেটিভ ইন্টারফেস, সংক্ষেপে জেএনআই, একটি প্রোগ্রামিং ইন্টারফেস যা জাভা ডেভেলপারদের জাভাতে অন্যান্য প্রোগ্রামিং ভাষা থেকে কোড এবং স্নিপেট চালাতে দেয়। এটি অপরিহার্য জাভা সফটওয়্যার ডেভেলপমেন্ট কিট, বা এসডিকে (আমরা এটি একটি ভিন্ন টিউটোরিয়ালে কভার করব) এর সাথে মিলিত হয়।

JNI জাভা অ্যাপ্লিকেশনগুলিতে একটি জাভা ভার্চুয়াল মেশিনে লুকিয়ে থাকার জন্য API- এ কল করার বৈশিষ্ট্যটির জন্যও সম্মানিত। এটি devs নেটিভ অ্যাপ্লিকেশন কোডের মধ্যে জাভা কোড আহ্বান করতে সক্ষম করে।







আপনি যদি জাভা নিয়ে কিছু সময় কাটিয়ে থাকেন, আপনি সম্ভবত ইতিমধ্যেই এমন অনেক পারফরম্যান্সের সমস্যার মুখোমুখি হয়েছেন যা অনিবার্যভাবে আপনার পথে আসে। আপনি স্থানীয় ভাষায় একই কোড চালানোর সময় এটি কোনও সমস্যা নয়, যা সংকলিত মডেলে পড়লে আঠারো গুণ বেশি দ্রুত সঞ্চালন করতে পারে। এটি ছাড়াও, আপনি অন্যান্য ভাষার নেটিভ কোডগুলির সাথে পুরানো/অসঙ্গত হার্ডওয়্যার রুটিন ব্যবহার করতে পারেন।



এই টিউটোরিয়ালটি দেখাবে কিভাবে একটি জাভা অ্যাপ্লিকেশনের মধ্যে থেকে মেশিন C/C ++ কোড চালু করা যায়।



পূর্বশর্ত

এই নির্দেশিকাটি সঠিকভাবে অনুসরণ করার জন্য আপনার কয়েকটি জিনিসের প্রয়োজন হবে। এর মধ্যে রয়েছে জাভা কম্পাইলার, বা Javac.exe, JVM এর পাশাপাশি দেশীয় পদ্ধতি C জেনারেটর (javah.exe)। এই তিনটিই সফটওয়্যার ডেভেলপমেন্ট কিটে তৈরি করা হয়েছে, তাই যদি আপনার কাছে থাকে তবে আপনি সবাই ভাল। এই তিনটি ছাড়াও, আপনার JNI সংজ্ঞায়িত ফাইলগুলির প্রয়োজন হবে, যার মধ্যে নেটিভ হেডার ফাইল এবং সম্পূর্ণ লাইব্রেরি ফাইল রয়েছে।





এবং অবশ্যই, সি এবং সি ++ কোডগুলি চালানোর বিষয়ে একটি টিউটোরিয়ালে, আমরা একটি ভাগ করা লাইব্রেরি তৈরি করতে সি কম্পাইলারও ব্যবহার করব।

জেএনআই উপাদান

জেএনআই মূলত দুটি উপাদান দ্বারা পরিচালিত হয়, যথা এইচ এবং জাভা। H হল হেডার ফাইল কম্পোনেন্ট যা নেটিভ কোডগুলিকে জাভা কোড দিয়ে প্রতিস্থাপন করে, যেখানে জাভা এটি তৈরি করে যাতে এই ফাইলটি নিজে থেকে অ্যাপ হেডার ফাইলগুলিতে লোড করা যায়।



জাভা কোড থেকে C/C ++ আহ্বান করা

ধাপ 1: জাভাতে কোড লেখা

কোডটি প্রথমে জাভাতে লেখা এবং তিনটি শর্তের সাথে সঙ্গতিপূর্ণ। প্রথমত, এটি নেটিভ পদ্ধতিতে লেখা হয় যাতে পরে আহ্বান করা যায়। দ্বিতীয়ত, এটি ভাগ করা লাইব্রেরি লোড করতে হবে যার নেটিভ কোড অংশ, এবং সবশেষে, এটি স্থানীয় পদ্ধতিগুলি আহ্বান করতে হবে।

আরও ব্যাখ্যা করার জন্য আসুন এই কোডটি ব্যবহার করি:

লাইন 3 এবং 6 লক্ষ্য করুন; এই লাইন যেখানে নেটিভ পদ্ধতি অন্তর্ভুক্ত করা হয়। যে কোডটি শেয়ার করা লাইব্রেরিগুলি লোড করে তা লাইন 10 এ অবস্থিত, যা 12 থেকে 15 লাইনের মধ্যে পদ্ধতিটি চালু করার দিকে পরিচালিত করে।

ধাপ 2: জাভা কোডটি বাইটকোডে কম্পাইল করা

দ্বিতীয় ধাপটি জাভা কোড সংকলনের সাথে করতে হবে। জাভ্যাক কম্পাইলার এখানে আমাদের জন্য কাজটি করতে পারে; শুধু নিচের কমান্ডটি ইস্যু করুন:

$ javac উদাহরণ 1।জাভা

ধাপ 3: C/C ++ হেডার ফাইল তৈরি করুন

পরবর্তী, স্থানীয় ভাষার হেডার ফাইল তৈরি করতে হবে। এই হেডার ফাইলগুলি নেটিভ কোডের স্বাক্ষরের ক্ষমতা দেয়।

এই হেডার ফাইলগুলি জাভা নেটিভ টুল দিয়ে তৈরি করা যেতে পারে, একটি সি স্টাব জেনারেটর এসডিকে দিয়ে বান্ডেল করা, নিম্নলিখিত কমান্ডটি ব্যবহার করে:

জাভা উদাহরণ 1

নিম্নলিখিত আউটপুট ফিরে আসা উচিত:

ধাপ 4: নেটিভ কোড লেখা

এখানে আমরা C/C ++ কোড লিখব। আপনি ধাপ 1 এ আমাদের ঘোষণার অনুরূপ যে সমস্ত স্বাক্ষর নোট করা উচিত।

সি ভাষায় লিখিত একটি বাস্তবায়ন নিম্নরূপ:

ধাপ 5: একটি ভাগ করা লাইব্রেরি তৈরি করুন

যে কোন কম্পাইলার দিয়ে একটি শেয়ার্ড লাইব্রেরি তৈরি করা যায়। যেহেতু ভাগ করা লাইব্রেরিতে নেটিভ কোড রয়েছে, তাই আমাদের একটি তৈরি করতে হবে।

ধাপ 6: আপনার প্রোগ্রাম চালু করুন

এই ধাপে কোডটি মূল্যায়ন করা এবং প্রোগ্রামের কোন সমস্যা চিহ্নিত করা জড়িত। এটি জাভা রানটাইম পরিবেশকে যুক্ত করতে চলেছে কারণ কোডটি JVM- এ প্রাথমিকভাবে কার্যকর হতে চলেছে।

নিম্নলিখিত কমান্ডটি জারি করুন:

জাভা উদাহরণ 1

এটি ফিরে আসা উচিত:

তাই জাভা নেটিভ ইন্টারফেস ব্যবহার করার জন্য এটি ছিল আমাদের সংক্ষিপ্ত শিক্ষানবিসের নির্দেশিকা। আমরা আশা করি আপনি এটি সহায়ক পেয়েছেন।

JNI- এর সাথে কীভাবে কাজ করতে হয় তা শেখা যে কেউ জাভা অ্যাপ্লিকেশন, বিশেষ করে স্মার্টফোনের জন্য অ্যান্ড্রয়েড অ্যাপ্লিকেশন বিকাশ করতে চায়।