Java 8 Stream API กำหนดรูปแบบการเขียนโปรแกรมใหม่ที่มีแนวโน้มซึ่งรวมเอาคุณสมบัติสไตล์ MapReduce ที่ใช้งานมาใช้ในภาษาการเขียนโปรแกรมกระแสหลัก อย่างไรก็ตามการใช้สตรีมอย่างมีประสิทธิภาพอาจเกี่ยวข้องกับการพิจารณาอย่างละเอียด
เครื่องมือนี้ประกอบด้วยปลั๊กอินต้นแบบการวิจัยแบบ refactoring อัตโนมัติสำหรับ eclipse ที่ช่วยนักพัฒนาในการเขียนรหัสไคลเอนต์สตรีมที่ดีที่สุดในรูปแบบการรักษาความหมาย การปรับสภาพล่วงหน้าและการแปลงสภาพสำหรับการพิจารณาโดยอัตโนมัติเมื่อใดที่ปลอดภัยและอาจเป็นประโยชน์ในการแปลงสตรีมตามลำดับเป็นแบบขนานและปรับปรุงเมื่อสตรีมแบบขนานอยู่แล้ว วิธีการใช้ทั้ง Wala และ Safe
(คลิกเพื่อดู)
refactoring สามารถทำงานได้สองวิธี:
ปัจจุบันการปรับโครงสร้างใหม่จะทำงานผ่าน Package Explorer และมุมมองโครงร่างเท่านั้น คุณสามารถเลือกโครงการเดียวเพื่อเพิ่มประสิทธิภาพหรือเลือกหลายโครงการ ในแต่ละกรณีเครื่องมือจะค้นหาสตรีมในโครงการที่ปิดล้อมเพื่อ refactor
รุ่นล่าสุดคือ v0.18.0 มันได้รับการทดสอบเกี่ยวกับ Eclipse IDE สำหรับ RCP และ RAP นักพัฒนารุ่น: 2019-03 (4.11.0), สร้าง ID: 20190314-1200 ภายใต้สภาพแวดล้อมรันไทม์ OpenJDK (สร้าง 1.8.0_212-8U212-B03-0ABUNTU1.19.04.2-B03 Ubuntu 19.04
วิดีโอนี้แสดงให้เห็นถึงวิธีการต่าง ๆ ที่เครื่องมือนี้สามารถติดตั้งได้
เครื่องมือรุ่นอัลฟ่าของเรามีให้บริการผ่านเว็บไซต์อัพเดต Eclipse ที่: https://raw.githubusercontent.com/ponder-lab/optimize-java-8-streams-refactoring/master/edu.cuny.hunter.streamreform.updatesite โปรดเลือกเวอร์ชันล่าสุดของ "Optimize Stream Refactoring"
นอกจากนี้คุณยังสามารถติดตั้งเครื่องมือผ่านตลาด Eclipse โดยการลากไอคอนนี้ไปยังพื้นที่ทำงาน Eclipse ของคุณ:
refactoring มีการพึ่งพาหลายรายการตามที่ระบุไว้ด้านล่าง หากคุณประสบปัญหาใด ๆ ในการติดตั้งปลั๊กอินโดยใช้ไซต์อัปเดตด้านบนคุณสามารถติดตั้งการอ้างอิงด้วยตนเองได้ ควรติดตั้งปลั๊กอินเวอร์ชันล่าสุด หากติดตั้งอย่างปลอดภัยโปรดทราบว่า จะต้อง ติดตั้ง 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 |
| Framework refactoring eclipse java ทั่วไป | https://raw.githubusercontent.com/ponder-lab/common-eclipse-java-refactoring-framework/master/edu.cuny.citytech.refactoring.common.updatesite |
โปรดทราบว่ามีการพึ่งพาเป็นพิเศษเกี่ยวกับ Wala ปัจจุบันการปรับโครงสร้างของเราต้องใช้ Wala เวอร์ชัน 1.3.10 แม้ว่าเวอร์ชันจากเว็บไซต์ Wala อย่างเป็นทางการจะใช้งานได้ในทางทฤษฎี แต่ปลั๊กอินได้รับการทดสอบกับเวอร์ชัน WALA ที่มีเว็บไซต์อัปเดตอยู่ด้านบน เราขอแนะนำอย่างยิ่งว่า Wala รุ่นนี้จะใช้กับปลั๊กอินซึ่งอาจต้องถอนการติดตั้งคุณสมบัติ WALA อื่น ๆ จากการติดตั้ง Eclipse ปัจจุบันของคุณ ปัญหา #192 ได้รับการเปิดเพื่อติดตามการรวมในอนาคต
จุดเริ่มต้นที่ชัดเจนอาจถูกทำเครื่องหมายโดยใช้คำอธิบายประกอบที่เหมาะสมที่พบในไลบรารีคำอธิบายประกอบที่สอดคล้องกัน พวกเขายังสามารถทำเครื่องหมายได้โดยใช้ไฟล์ข้อความชื่อ entry_points.txt การประมวลผลของไฟล์นี้เป็นการเรียกซ้ำ มันจะค้นหาไฟล์นี้ในไดเรกทอรีเดียวกับซอร์สโค้ดและจะสำรวจโครงสร้างไดเรกทอรีจนกว่าจะพบหนึ่ง ดังนั้นไฟล์อาจถูกวางไว้ในตัวอย่างเช่นไดเรกทอรีแพ็คเกจไดเรกทอรีโครงการย่อยและรากของโครงการ รูปแบบของไฟล์เป็นเพียงรายการของลายเซ็นเมธอดในแต่ละบรรทัด
วิดีโอนี้อธิบายรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการระบุจุดเข้า
ขณะนี้มีข้อ จำกัด บางประการเกี่ยวกับสตรีมแบบฝังตัว (เช่นสตรีมที่ประกาศเป็นส่วนหนึ่งของนิพจน์แลมบ์ดาที่ส่งเป็นอาร์กิวเมนต์ไปยังการดำเนินการสตรีมระดับกลาง) นี่เป็นเพราะความแตกต่างของแบบจำลองระหว่าง Eclipse JDT และ Wala ดู #155 สำหรับรายละเอียด
โดยทั่วไปมีปัญหาเกี่ยวกับการทำแผนที่ระหว่าง Eclipse Dom และ Wala Dom โดยเฉพาะอย่างยิ่งเมื่อใช้คลาสภายในที่ไม่ระบุชื่อ (AICS) ขณะนี้เรากำลังทำงานร่วมกับนักพัฒนา Wala เพื่อแก้ไขปัญหานี้
สำหรับข้อมูลเกี่ยวกับการบริจาคดูที่ MD
หน้า Wiki นี้เน้นสถานที่ในรหัสของเราที่แก้ปัญหาความท้าทายทางวิศวกรรมหลายอย่างที่ระบุไว้ในกระดาษหลอกลวง 2018 ของเรา
ดู Wiki สำหรับข้อมูลเพิ่มเติม
Raffi Khatchadourian, Yiming Tang, Mehdi Bagherzadeh และ Syed Ahmed Safe Automated Refactoring สำหรับการทำให้เป็นอัจฉริยะแบบขนานของ Java 8 Streams ใน การประชุมนานาชาติด้านวิศวกรรมซอฟต์แวร์ , ICSE '19, หน้า 619--630, Piscataway, NJ, สหรัฐอเมริกา, พฤษภาคม 2019. ACM/IEEE, IEEE Press [BIB | doi | สไลด์ http]
Raffi Khatchadourian, Yiming Tang, Mehdi Bagherzadeh และ Syed Ahmed เครื่องมือสำหรับการเพิ่มประสิทธิภาพซอฟต์แวร์ Java 8 Stream ผ่านการปรับโครงสร้างอัตโนมัติ ใน การประชุมการทำงานระหว่างประเทศเกี่ยวกับการวิเคราะห์ซอร์สโค้ดและการจัดการการ หลอกลวง '18 หน้า 34--39 IEEE, IEEE Press, กันยายน 2018. แทร็กวิศวกรรม [BIB | 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 } ,
}