"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > विदेशी फ़ंक्शन और मेमोरी एपीआई का परिचय (प्रोजेक्ट पनामा)

विदेशी फ़ंक्शन और मेमोरी एपीआई का परिचय (प्रोजेक्ट पनामा)

2024-08-06 को प्रकाशित
ब्राउज़ करें:999

Introduction to the Foreign Function & Memory API (Project Panama)

प्रोजेक्ट पनामा एक ओपनजेडीके पहल है जिसका उद्देश्य जावा और मूल कोड के बीच संबंध में सुधार करना है। इसके प्रमुख घटकों में से एक फॉरेन फ़ंक्शन और मेमोरी एपीआई है, जो जावा अनुप्रयोगों के देशी पुस्तकालयों और मेमोरी के साथ इंटरैक्ट करने के तरीके को सरल और बेहतर बनाता है।

विदेशी फ़ंक्शन और मेमोरी एपीआई क्या है?

फॉरेन फ़ंक्शन और मेमोरी एपीआई जावा प्रोग्राम को मूल फ़ंक्शन को कॉल करने और मूल मेमोरी को सीधे प्रबंधित करने की अनुमति देता है। यह एपीआई संचालन करने के लिए एक सुरक्षित और अधिक कुशल तरीका प्रदान करता है जिसके लिए अन्यथा जावा नेटिव इंटरफ़ेस (जेएनआई) की आवश्यकता होगी।

विदेशी फ़ंक्शन और मेमोरी एपीआई के लाभ

  1. सुरक्षा: एपीआई में मूल कोड से जुड़ी सामान्य त्रुटियों, जैसे मेमोरी लीक और बफर ओवरफ्लो को रोकने के लिए सुरक्षा सुविधाएं शामिल हैं।
  2. प्रदर्शन: मूल कार्यों और मेमोरी तक सीधी पहुंच की अनुमति देकर, एपीआई जावा अनुप्रयोगों के प्रदर्शन में काफी सुधार कर सकता है जिन्हें देशी पुस्तकालयों के साथ बातचीत करने की आवश्यकता होती है।
  3. सरलता: एपीआई जेएनआई की तुलना में मूल कोड को कॉल करने की प्रक्रिया को सरल बनाता है, बॉयलरप्लेट को कम करता है और कोड को बनाए रखना आसान बनाता है।

विदेशी फ़ंक्शन और मेमोरी एपीआई का उपयोग करना

यहां एक उदाहरण दिया गया है कि मूल फ़ंक्शन को कॉल करने के लिए विदेशी फ़ंक्शन और मेमोरी एपीआई का उपयोग कैसे करें:

  1. मूल फ़ंक्शन हस्ताक्षर को परिभाषित करें

सबसे पहले, आपको उस मूल फ़ंक्शन के हस्ताक्षर को परिभाषित करना होगा जिसे आप कॉल करना चाहते हैं। मान लीजिए हमारे पास निम्नलिखित फ़ंक्शन के साथ एक सी लाइब्रेरी है:

// native.c
#include 

void sayHello() {
    printf("Hello from C!\n");
}
  1. नेटिव लाइब्रेरी लोड करें और फ़ंक्शन को कॉल करें
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();
        }
    }
}

इस उदाहरण में:

  • लोडेड नेटिव लाइब्रेरी में सेहेलो फ़ंक्शन को खोजने के लिए हम SymbolLookup का उपयोग करते हैं।
  • हम CLinker का उपयोग करके फ़ंक्शन के लिए एक हैंडल बनाते हैं।
  • हम हैंडल का उपयोग करके मूल फ़ंक्शन को कॉल करते हैं।

मूल स्मृति का प्रबंधन

फॉरेन फ़ंक्शन और मेमोरी एपीआई आपको मूल मेमोरी को सुरक्षित रूप से प्रबंधित करने की भी अनुमति देता है। यहाँ एक उदाहरण है:

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);
        }
    }
}

इस उदाहरण में:

  • हम मूल मेमोरी का एक ब्लॉक आवंटित करते हैं।
  • हम आवंटित मेमोरी से एक बाइट लिखते और पढ़ते हैं।
  • सत्र बंद होने पर मेमोरी स्वचालित रूप से हटा दी जाती है।

निष्कर्ष

फॉरेन फ़ंक्शन और मेमोरी एपीआई जावा पारिस्थितिकी तंत्र के लिए एक शक्तिशाली अतिरिक्त है, जो मूल कोड और मेमोरी के साथ बातचीत करने का एक सुरक्षित, अधिक कुशल और आसान तरीका प्रदान करता है। चाहे आपको नेटिव फ़ंक्शंस को कॉल करने या नेटिव मेमोरी को प्रबंधित करने की आवश्यकता हो, यह एपीआई जावा अनुप्रयोगों के लिए नई संभावनाएं खोलता है।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/adaumircosta/introduction-to-the-foreign-function-memory-api-project-panama-20c8?1 यदि कोई उल्लंघन है, तो कृपया [email protected] पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3