Java 8 Stream API menetapkan model pemrograman baru yang menjanjikan yang menggabungkan fitur-fitur gaya-seperti-seperti-mapreduce ke dalam bahasa pemrograman utama. Namun, menggunakan aliran secara efisien mungkin melibatkan pertimbangan halus.
Alat ini terdiri dari plug-in prototipe penelitian refactoring otomatis untuk gerhana yang membantu pengembang dalam menulis kode klien stream yang optimal dengan cara yang memelihara semantik. Prasyarat dan transformasi refactoring untuk secara otomatis menentukan kapan aman dan mungkin menguntungkan untuk mengonversi aliran berurutan menjadi paralel dan meningkatkan aliran yang sudah paralel disertakan. Pendekatan ini menggunakan WALA dan Safe.
(klik untuk melihat)
Refactoring dapat dijalankan dengan dua cara berbeda:
Saat ini, refactoring hanya berfungsi melalui paket penjelajah dan tampilan garis besar. Anda dapat memilih satu proyek untuk mengoptimalkan atau memilih beberapa proyek. Dalam setiap kasus, alat ini akan menemukan aliran dalam proyek yang melampirkan untuk refactor.
Rilis terbaru adalah V0.18.0. Ini telah diuji pada Eclipse IDE untuk RCP dan RAP Developers Versi: 2019-03 (4.11.0), Build ID: 20190314-1200 di bawah lingkungan runtime OpenJDK (Build 1.8.0_212-8U212-B03-0ubuntu1.19.04.2-B03) dan OpenJDK 64. Ubuntu 19.04.
Video ini menunjukkan berbagai cara alat ini dapat diinstal.
Versi alpha dari alat kami tersedia melalui situs pembaruan Eclipse di: https://raw.githubusercontent.com/ponder-lab/optimize-java-8-streams-refactoring/master/edu.cuny.hunter.streamrefactoring.updatesite. Pilih versi terbaru dari "Optimize Stream Refactoring."
Anda juga dapat menginstal alat ini melalui Eclipse Marketplace dengan menyeret ikon ini ke ruang kerja Eclipse yang sedang berjalan:
Refactoring memiliki beberapa dependensi seperti yang tercantum di bawah ini. Jika Anda mengalami masalah menginstal plug-in menggunakan situs pembaruan di atas, Anda dapat secara manual menginstal dependensi. Versi terbaru dari plug-in harus diinstal. Jika memasang aman, perhatikan bahwa WALA harus diinstal terlebih dahulu:
| Ketergantungan | Perbarui situs |
|---|---|
| Wala | https://raw.githubusercontent.com/ponder-lab/wala/streams/com.ibm.wala.updatesite |
| AMAN | https://raw.githubusercontent.com/tech-srl/safe/master/com.ibm.safe.updatesite |
| Kerangka kerja refactoring java java umum | https://raw.githubusercontent.com/ponder-lab/common-eclipse-java-refactoring-framework/master/edu.cuny.citytech.refactoring.common.updatesite |
Harap dicatat bahwa ada ketergantungan khusus pada WALA. Saat ini, refactoring kami membutuhkan WALA Versi 1.3.10 . Meskipun versi dari situs WALA resmi secara teoritis akan berfungsi, plug-in telah diuji dengan versi WALA yang situs pembaruannya tercantum di atas. Kami sangat menyarankan agar versi WALA ini digunakan dengan plug-in, yang mungkin memerlukan menghapus pemasangan fitur WALA lainnya dari instalasi Eclipse Anda saat ini. Edisi #192 telah dibuka untuk melacak integrasi di masa depan.
Titik masuk eksplisit dapat ditandai menggunakan anotasi yang tepat yang ditemukan di perpustakaan anotasi yang sesuai. Mereka juga dapat ditandai menggunakan file teks bernama entry_points.txt . Pemrosesan file ini bersifat rekursif; Ini akan mencari file ini di direktori yang sama dengan kode sumber dan akan melintasi struktur direktori sampai satu ditemukan. Dengan demikian, file dapat ditempatkan di, misalnya, direktori paket, direktori subproyject, dan akar proyek. Format file hanyalah daftar tanda tangan metode pada setiap baris.
Video ini menjelaskan lebih detail tentang bagaimana titik masuk dapat ditentukan.
Saat ini ada beberapa batasan dengan aliran tertanam (yaitu, aliran yang dinyatakan sebagai bagian dari ekspresi Lambda yang dikirim sebagai argumen untuk operasi aliran perantara). Ini karena perbedaan model antara Eclipse JDT dan WALA. Lihat #155 untuk detailnya.
Secara umum, ada masalah dengan pemetaan antara Eclipse DOM dan WALA DOM, terutama ketika menggunakan kelas dalam anonim (AIC). Kami saat ini bekerja dengan pengembang WALA untuk menyelesaikan masalah ini.
Untuk informasi tentang kontribusi, lihat Contributing.md.
Halaman wiki ini menyoroti lokasi dalam kode kami yang menyelesaikan beberapa tantangan rekayasa yang diuraikan dalam makalah SCAM 2018 kami.
Lihat wiki untuk informasi lebih lanjut.
Raffi Khatchadourian, Yiming Tang, Mehdi Bagherzadeh, dan Syed Ahmed. Refactoring otomatis yang aman untuk paralelisasi cerdas aliran Java 8. Dalam Konferensi Internasional tentang Rekayasa Perangkat Lunak , ICSE '19, Halaman 619--630, Piscataway, NJ, AS, Mei 2019. ACM/IEEE, IEEE Press. [bib | Doi | Slide | http]
Raffi Khatchadourian, Yiming Tang, Mehdi Bagherzadeh, dan Syed Ahmed. Alat untuk mengoptimalkan perangkat lunak stream Java 8 melalui refactoring otomatis. Dalam Konferensi Kerja Internasional tentang Analisis dan Manipulasi Kode Sumber , SCAM '18, halaman 34--39. IEEE, IEEE Press, September 2018. Lagu Teknik. [bib | Doi | Slide | http]
Harap kutip pekerjaan ini sebagai berikut:
@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 } ,
}