كائن ويب ASM
| المؤلف(ون) الأصلي(ون) | اريك برونيتون |
|---|---|
| المطور(ون) | أوو2 |
| الإصدار الأولي | 2002 |
| إصدار مستقر | 9.3 / 3 أبريل 2022 |
| مستودع |
|
| مكتوب في | جافا |
| نظام التشغيل | متعدد المنصات |
| يكتب | مكتبة هندسة البايت كود |
| رخصة | رخصة BSD |
| موقع إلكتروني | asm.ow2.io |
مكتبة ASM هي مشروع من مشاريع اتحاد OW2 . وهي توفر واجهة برمجة تطبيقات بسيطة لتحليل وتعديل وإعادة تكوين فئات Java الثنائية (أي البايت كود ). تم تصور المشروع وتطويره في الأصل بواسطة Eric Bruneton. تركز ASM حاليًا على Java، ولا تحتوي حاليًا على واجهة خلفية تعرض تطبيقات البايت كود الأخرى (مثل البايت كود .NET ، البايت كود Python ، إلخ).
الاسم "ASM" ليس اختصارًا: إنه مجرد إشارة إلى الكلمة الأساسية asm في لغة C، والتي تسمح بتنفيذ بعض الوظائف في لغة التجميع. [1]
الاستخدامات
توفر ASM مكتبة بسيطة تعرض المكونات الداخلية المجمعة لفئة Java معينة من خلال واجهة برمجة التطبيقات الموجهة للزوار . كما توفر ASM، بالإضافة إلى واجهة برمجة التطبيقات الموجهة للزوار، واجهة برمجة تطبيقات على شكل شجرة تمثل الفئات كإنشاءات كائنية. ويمكن استخدام كلتا واجهتي برمجة التطبيقات لتعديل البايت كود الثنائي، فضلاً عن إنشاء بايت كود جديد (عبر حقن كود جديد في الكود الحالي، أو من خلال إنشاء فئات جديدة تمامًا). وقد تم استخدام مكتبة ASM في العديد من التطبيقات المتنوعة، مثل:
- الأداء والتحليل
- يمكن حقن استدعاءات الأجهزة التي تلتقط مقاييس الأداء في ثنائيات فئة Java لفحص بيانات الذاكرة/التغطية. (على سبيل المثال، حقن الأجهزة في نقاط الدخول/الخروج.)
- تنفيذ دلالات اللغة الجديدة
- على سبيل المثال، يستخدم Groovy ASM لتوليد الكود الثنائي الخاص به. كما تم تنفيذ الإضافات الموجهة نحو الجوانب إلى لغة Java باستخدام ASM لتحليل هياكل الفئات لتحديد نقاط القطع، ثم مرة أخرى عند إعادة تكوين الفئة عن طريق حقن الكود المرتبط بالجوانب مرة أخرى في الملف الثنائي. (انظر: AspectWerkz )
استدعاء ديناميكي
منذ الإصدار 3.2، أضافت ASMinvokedynamic دعمًا للكود الجديد، والذي يسمح باستدعاء الطريقة بالاعتماد على فحص النوع الديناميكي على أحدث ثنائيات JDK 7 ، وبالتالي تسهيل دعم اللغات ذات النوع الديناميكي . [2] [3]
تاريخ الإصدار
يعرض هذا الجدول الإصدارات التي تحتوي على خطوات مهمة في تاريخ ObjectWeb ASM فقط، بصرف النظر عن الإصدارات التي تعمل بشكل أساسي على إصلاح الأخطاء وتحسين الأداء. [4]
| يطلق | تاريخ الافراج عنه | أبرز الأحداث |
|---|---|---|
| 2.0 | 2005-05-17 | دعم لغة Java 5 |
| 3.2 | 2009-06-11 | دعم للكود الجديد invokedynamic. [2]
|
| 4.0 | 2011-10-29 | دعم لغة Java 7 |
| 5.0 | 2014-03-16 | دعم لغة Java 8 |
| 6.0 | 2017-09-23 | تم نقل قاعدة التعليمات البرمجية إلى Gitlab لدعم لغة Java 9 |
| 6.1 | 2018-03-11 | دعم لغة Java 10 |
| 7.0 | 2018-10-27 | دعم لغة Java 11 |
| 7.1 | 2019-03-03 | دعم لغة Java 13 |
| 8.0 | 2020-03-28 | دعم لغة Java 14 |
| 9.0 | 2020-09-22 | دعم لغة Java 16 |
| 9.1 | 2021-02-06 | دعم لغة Java 17 |
| 9.2 | 2021-06-20 | دعم لغة Java 18 |
| 9.3 | 2022-04-03 | دعم لغة Java 19، وقائمة المواد الجديدة في Maven |
انظر أيضا
- مكتبة هندسة البايت كود
- جافاسيسيست
مراجع
- ^ برونيتون ، إيريك. لينجليت، رومان؛ كوباي، تيري (2002). “ASM: أداة معالجة التعليمات البرمجية لتنفيذ أنظمة قابلة للتكيف”. فرانس تيليكوم للبحث والتطوير، DTL/ASR. سيتيسيركس 10.1.1.117.5769 . تم الاسترجاع في 23 أغسطس 2023 .
- ^ ab Forax, Remi (2009-06-11). "ASM تدعم الآن invokedynamic" . تم الاسترجاع في 2009-11-14 .
- ^ "11 يونيو 2009: ASM 3.2 (cvs-tag: ASM_3_2)". ObjectWeb. 2009-06-11 . تم الاسترجاع في 2009-11-14 .
- ^ "الإصدارات". ObjectWeb . تم الاسترجاع في 2020-06-06 .
روابط خارجية
- الموقع الرسمي
- الصفحة الرئيسية لـ OW2 - الصفحة الرئيسية لاتحاد OW2.
- AspectWerkz - الصفحة الرئيسية لمشروع AspectWerkz. (أحد المشاريع البارزة التي تستخدم ASM.)
- Bytecode Visualizer - مكون إضافي مجاني لـ Eclipse لعرض وتصحيح أخطاء بايت كود Java والذي يستخدم مكتبة ASM
