تقوم Java 8 Stream API بتعيين نموذج برمجة جديد واعد يتضمن ميزات شبيهة بوظيفة على غرار MapReduce في لغة البرمجة السائدة. ومع ذلك ، فإن استخدام التدفقات بكفاءة قد يتضمن اعتبارات خفية.
تتكون هذه الأداة من المكونات الإضافية للأبحاث التلقائية لإعادة إنشاء النموذج الأولي لـ Eclipse التي تساعد المطورين في كتابة رمز عميل الدفق الأمثل بأسلوب الحفاظ على الدلالات. إعادة تشكيل الشروط المسبقة والتحولات لتحديد تلقائيًا عندما تكون آمنة وربما مفيدة لتحويل دفق متسلسل إلى التوازي والتحسين على التدفقات المتوازية بالفعل. يستخدم النهج كل من والا وآمنة.
(انقر للعرض)
يمكن تشغيل إعادة النية بطريقتين مختلفتين:
حاليًا ، تعمل إعادة التهيئة فقط عبر Explorer Package و Outline Views. يمكنك إما تحديد مشروع واحد لتحسين أو تحديد مشاريع متعددة. في كل حالة ، ستجد الأداة تدفقات في المشاريع المرفقة إلى Refactor.
أحدث إصدار هو V0.18.0. تم اختباره على Eclipse IDE لمطوري RCP و RAP الإصدار: 2019-03 (4.11.0) ، معرف الإنشاء: 20190314-1200 ضمن بيئة وقت التشغيل OpenJDK (بناء 1.8.0_212-8u212-b03-0ubuntu1.19.04.2-b03) و Openjd-Bit Build VM (Build 25.212-B03. أوبونتو 19.04.
يوضح هذا الفيديو الطرق المختلفة التي يمكن بها تثبيت هذه الأداة.
يتوفر إصدار Alpha من أداةنا عبر موقع تحديث Eclipse على: https://raw.githubusercontent.com/ponder-lab/optimize-java-8-treams-refactoring/master/edu.cuny.hunter.streamrefactoring.updatesite. يرجى اختيار أحدث إصدار من "تحسين إعادة البث."
يمكنك أيضًا تثبيت الأداة عبر Eclipse Marketplace عن طريق سحب هذا الرمز إلى مساحة عمل Eclipse الخاصة بك:
إعادة البناء لديها العديد من التبعيات كما هو موضح أدناه. إذا واجهت أي مشكلة في تثبيت المكون الإضافي باستخدام موقع التحديث أعلاه ، فيمكنك تثبيت التبعيات يدويًا. يجب تثبيت أحدث إصدار من المكونات الإضافية. إذا تم تثبيت آمن ، لاحظ أنه يجب تثبيت WALA أولاً:
| التبعية | تحديث الموقع |
|---|---|
| والا | https://raw.githubusercontent.com/ponder-lab/wala/streams/com.ibm.wala.updatesite |
| آمن | https://raw.githubusercontent.com/tech-srl/safe/master/com.ibm.safe.updatesite |
| إطار إعادة تجهيز جافا الشائع جافا | https://raw.githubusercontent.com/ponder-lab/common-eclipse-java-refactoring-framework/master/edu.cuny.citytech.refactoring.common.updatesite |
يرجى ملاحظة أن هناك تبعية خاصة على والا. حاليًا ، تتطلب إعادة بيعنا إصدار WALA 1.3.10 . على الرغم من أن الإصدار من موقع WALA الرسمي سيعمل نظريًا ، فقد تم اختبار المكون الإضافي مع إصدار WALA الذي تم سرد موقع التحديث أعلاه. نوصي بشدة باستخدام هذا الإصدار من Wala مع المكون الإضافي ، والذي قد يتطلب إلغاء تثبيت ميزات WalA الأخرى من تثبيت Eclipse الحالي. تم فتح العدد رقم 192 لتتبع التكامل المستقبلي.
قد يتم تمييز نقاط الدخول الصريحة باستخدام التعليق التوضيحي المناسب الموجود في مكتبة التعليقات التوضيحية المقابلة. يمكن أيضًا تمييزها باستخدام ملف نصي يدعى entry_points.txt . معالجة هذا الملف عودية. سوف يبحث عن هذا الملف في نفس الدليل مثل رمز المصدر وسوف يعبر بنية الدليل حتى يتم العثور على واحد. على هذا النحو ، قد يتم وضع الملف ، على سبيل المثال ، أدلة الحزم ، أدلة المشاريع الفرعية ، وجذور المشروع. إن تنسيق الملف هو ببساطة قائمة بتوقيعات الطريقة في كل سطر.
يشرح هذا الفيديو المزيد من التفاصيل حول كيفية تحديد نقاط الدخول.
يوجد حاليًا بعض القيود مع التدفقات المدمجة (أي ، تم الإعلان عن التدفقات كجزء من تعبيرات Lambda المرسلة كوسائط لعمليات الدفق الوسيطة). هذا بسبب الاختلافات النموذجية بين Eclipse JDT و Wala. انظر #155 للحصول على التفاصيل.
بشكل عام ، هناك مشكلة في التعيين بين Eclipse Dom و Wala Dom ، خاصة عند استخدام فئات داخلية مجهولة (AIC). نحن نعمل حاليًا مع مطوري WALA لحل هذه المشكلة.
للحصول على معلومات حول المساهمة ، انظر المساهمة.
تبرز صفحة Wiki هذه المواقع في الكود الذي يحل العديد من التحديات الهندسية الموضحة في ورقة Scam 2018.
انظر الويكي لمزيد من المعلومات.
Raffi Khatchadourian ، Yiming Tang ، Mehdi Bagherzadeh ، و Syed Ahmed. إعادة إنشاء الآمنة الآلية للتوازي الذكي لتيارات Java 8. في المؤتمر الدولي حول هندسة البرمجيات ، ICSE '19 ، الصفحات 619-630 ، بيسكاتواي ، نيوجيرسي ، الولايات المتحدة الأمريكية ، مايو 2019. ACM/IEEE ، IEEE Press. [مريلة | doi | الشرائح | http]
Raffi Khatchadourian ، Yiming Tang ، Mehdi Bagherzadeh ، و Syed Ahmed. أداة لتحسين برنامج Java 8 Stream عبر إعادة تمثيل تلقائي. في مؤتمر العمل الدولي حول تحليل كود المصدر والتلاعب ، الاحتيال '18 ، الصفحات 34-39. IEEE ، IEEE Press ، سبتمبر 2018. المسار الهندسي. [مريلة | doi | الشرائح | http]
يرجى الاستشهاد بهذا العمل على النحو التالي:
@InProceedings { Khatchadourian2019 ,
author = { Raffi Khatchadourian and Yiming Tang and Mehdi Bagherzadeh and Syed Ahmed } ,
booktitle = { International Conference on Software Engineering } ,
title = { Safe Automated Refactoring for Intelligent Parallelization of {Java} 8 Streams } ,
year = { 2019 } ,
address = { Piscataway, NJ, USA } ,
month = may,
organization = { ACM/IEEE } ,
pages = { 619--630 } ,
publisher = { {IEEE} } ,
series = { ICSE '19 } ,
acmid = { 3339586 } ,
doi = { 10.1109/icse.2019.00072 } ,
keywords = { Java 8, automatic parallelization, refactoring, static analysis, streams, typestate analysis } ,
location = { Montr'eal, QC, Canada } ,
numpages = { 12 } ,
url = { http://academicworks.cuny.edu/hc_pubs/489 } ,
}
@InProceedings { Khatchadourian2018 ,
author = { Raffi Khatchadourian and Yiming Tang and Mehdi Bagherzadeh and Syed Ahmed } ,
booktitle = { International Working Conference on Source Code Analysis and Manipulation } ,
title = { A Tool for Optimizing {Java} 8 Stream Software via Automated Refactoring } ,
year = { 2018 } ,
month = sep,
note = { Engineering Track. } ,
organization = { IEEE } ,
pages = { 34--39 } ,
publisher = { IEEE Press } ,
series = { IEEE SCAM '18 } ,
doi = { 10.1109/SCAM.2018.00011 } ,
issn = { 2470-6892 } ,
keywords = { refactoring, automatic parallelization, typestate analysis, ordering, Java 8, streams, eclipse, WALA, SAFE } ,
location = { Madrid, Spain } ,
numpages = { 6 } ,
url = { http://academicworks.cuny.edu/hc_pubs/429 } ,
}