مشروع بنما هو مبادرة OpenJDK تهدف إلى تحسين الاتصال بين Java والتعليمات البرمجية الأصلية. أحد مكوناتها الرئيسية هو واجهة برمجة التطبيقات للوظائف الخارجية والذاكرة، التي تعمل على تبسيط وتحسين الطريقة التي تتفاعل بها تطبيقات Java مع المكتبات والذاكرة الأصلية.
تسمح واجهة برمجة التطبيقات للوظائف الخارجية والذاكرة لبرامج Java باستدعاء الوظائف الأصلية وإدارة الذاكرة الأصلية مباشرةً. توفر واجهة برمجة التطبيقات هذه طريقة أكثر أمانًا وفعالية لتنفيذ العمليات التي قد تتطلب واجهة Java الأصلية (JNI).
إليك مثال لكيفية استخدام واجهة برمجة التطبيقات للوظيفة الخارجية والذاكرة لاستدعاء وظيفة أصلية:
أولاً، تحتاج إلى تحديد توقيع الوظيفة الأصلية التي تريد الاتصال بها. لنفترض أن لدينا مكتبة C بالوظيفة التالية:
// 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); } } }
في هذا المثال:
تعد واجهة برمجة التطبيقات للوظائف الخارجية والذاكرة إضافة قوية لنظام Java البيئي، مما يوفر طريقة أكثر أمانًا وكفاءة وأسهل للتفاعل مع التعليمات البرمجية والذاكرة الأصلية. سواء كنت بحاجة إلى استدعاء الوظائف الأصلية أو إدارة الذاكرة الأصلية، فإن واجهة برمجة التطبيقات هذه تفتح إمكانيات جديدة لتطبيقات Java.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3