-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathcall-c-from-java.yaml
More file actions
17 lines (17 loc) · 1.93 KB
/
call-c-from-java.yaml
File metadata and controls
17 lines (17 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
title: "استدعاء كود C من Java"
oldApproach: "JNI (واجهة Java الأصيلة)"
modernApproach: "FFM (واجهة برمجة الدوال الخارجية والذاكرة)"
summary: "تتيح FFM لـ Java استدعاء مكتبات C مباشرةً، دون الحاجة إلى كليشيهات JNI أو معرفة Java على جانب C."
explanation: "تمتلك Java نهجين لاستدعاء كود C/C++ الأصيل: JNI التقليدي وواجهة FFM الحديثة. مع JNI، تُعلن عن الدالة بوصفها native، ثم تُشغّل javac -h لتوليد ملف ترويسة C، وتُنفّذ الدالة باستخدام JNI C API المعقّدة (JNIEnv وjstring وما إلى ذلك). تُزيل FFM المُقدَّمة كواجهة برمجة قياسية في Java 22 كل ذلك: كود C يبقى C عادياً — دون الحاجة لاتفاقيات JNI. هذا يُسهّل استدعاء مكتبات C/C++ الموجودة دون تعديل. يستخدم الجانب Java كائن Arena لإدارة الذاكرة خارج الكومة بأمان، وMethodHandle للاستدعاء النازل، مما يضمن المرونة والأمان."
whyModernWins:
- icon: "👁"
title: "كود C يبقى C نقياً"
desc: "لا تحتاج دالة C إلى تعليقات JNI أو كليشيهات JNIEnv — يمكن استدعاء أي مكتبة C موجودة مباشرةً."
- icon: "⚡"
title: "أكثر مرونة"
desc: "استدعِ معظم مكتبات C/C++ الموجودة مباشرةً دون كتابة كود محوّل أو توليد ملفات ترويسة."
- icon: "🛠️"
title: "سير عمل أسهل"
desc: "لا حاجة للتوقف وتشغيل javac -h وتنفيذ الواجهة المُعرَّفة في ملف .h المُوَلَّد."
support:
description: "تم توحيده في JDK 22 (مارس 2024)؛ كان في مرحلة الحضانة منذ JDK 14"