प्रोजेक्ट पनामा एक ओपनजेडीके पहल है जिसका उद्देश्य जावा और मूल कोड के बीच संबंध में सुधार करना है। इसके प्रमुख घटकों में से एक फॉरेन फ़ंक्शन और मेमोरी एपीआई है, जो जावा अनुप्रयोगों के देशी पुस्तकालयों और मेमोरी के साथ इंटरैक्ट करने के तरीके को सरल और बेहतर बनाता है।
फॉरेन फ़ंक्शन और मेमोरी एपीआई जावा प्रोग्राम को मूल फ़ंक्शन को कॉल करने और मूल मेमोरी को सीधे प्रबंधित करने की अनुमति देता है। यह एपीआई संचालन करने के लिए एक सुरक्षित और अधिक कुशल तरीका प्रदान करता है जिसके लिए अन्यथा जावा नेटिव इंटरफ़ेस (जेएनआई) की आवश्यकता होगी।
यहां एक उदाहरण दिया गया है कि मूल फ़ंक्शन को कॉल करने के लिए विदेशी फ़ंक्शन और मेमोरी एपीआई का उपयोग कैसे करें:
सबसे पहले, आपको उस मूल फ़ंक्शन के हस्ताक्षर को परिभाषित करना होगा जिसे आप कॉल करना चाहते हैं। मान लीजिए हमारे पास निम्नलिखित फ़ंक्शन के साथ एक सी लाइब्रेरी है:
// native.c #includevoid sayHello() { printf("Hello from C!\n"); }
import jdk.incubator.foreign.*; public class ForeignFunctionExample { public static void main(String[] args) { try (var session = MemorySession.openConfined()) { SymbolLookup lookup = SymbolLookup.loaderLookup(); var sayHello = lookup.find("sayHello").orElseThrow(); var sayHelloHandle = CLinker.getInstance().downcallHandle( sayHello, FunctionDescriptor.ofVoid() ); sayHelloHandle.invokeExact(); } catch (Throwable t) { t.printStackTrace(); } } }
इस उदाहरण में:
फॉरेन फ़ंक्शन और मेमोरी एपीआई आपको मूल मेमोरी को सुरक्षित रूप से प्रबंधित करने की भी अनुमति देता है। यहाँ एक उदाहरण है:
import jdk.incubator.foreign.*; public class MemoryManagementExample { public static void main(String[] args) { try (var session = MemorySession.openConfined()) { MemorySegment segment = MemorySegment.allocateNative(100, session); MemoryAccess.setByteAtOffset(segment, 0, (byte) 42); byte value = MemoryAccess.getByteAtOffset(segment, 0); System.out.println("Value: " value); } } }
इस उदाहरण में:
फॉरेन फ़ंक्शन और मेमोरी एपीआई जावा पारिस्थितिकी तंत्र के लिए एक शक्तिशाली अतिरिक्त है, जो मूल कोड और मेमोरी के साथ बातचीत करने का एक सुरक्षित, अधिक कुशल और आसान तरीका प्रदान करता है। चाहे आपको नेटिव फ़ंक्शंस को कॉल करने या नेटिव मेमोरी को प्रबंधित करने की आवश्यकता हो, यह एपीआई जावा अनुप्रयोगों के लिए नई संभावनाएं खोलता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3