Plugin Gradle Elide Menjanjikan Kompilasi Java 20x Lebih Pantas dengan Pendekatan Binary Asli

BigGo Editorial Team
Plugin Gradle Elide Menjanjikan Kompilasi Java 20x Lebih Pantas dengan Pendekatan Binary Asli

Komuniti pembangunan Java sedang hangat memperkatakan tentang plugin Gradle eksperimental baharu yang mendakwa dapat meningkatkan kelajuan masa kompilasi secara dramatik dengan menggantikan javac tradisional menggunakan pendekatan binary asli. Plugin Gradle Elide memanfaatkan teknologi imej asli GraalVM untuk menghapuskan kelewatan pemanasan JIT yang biasanya memperlahankan kompilasi Java dalam proses pembinaan standard.

Binary Asli Menghapuskan Kesesakan Pemanasan JIT

Inovasi teras di sebalik peningkatan prestasi Elide terletak pada pendekatannya terhadap kompilasi Java. Daripada menggunakan API Tooling lalai Gradle yang menjalankan javac dalam JVM daemon Gradle dan mengalami kelewatan pemanasan JIT, Elide menggunakan versi binary asli pengkompil. Ini bermakna kompilasi bermula serta-merta pada kelajuan penuh tanpa menunggu Java Virtual Machine mengoptimumkan kod melalui kompilasi Just-In-Time.

Plugin ini berfungsi dengan mengkonfigurasi tugasan JavaCompile Gradle untuk memisahkan proses dan menggunakan executable tersuai yang memanggil elide javac sebagai ganti javac standard. Memandangkan Elide dibina sebagai imej asli GraalVM, ia melangkau keseluruhan fasa pemanasan JIT yang biasanya memperlahankan kerja kompilasi bersaiz kecil hingga sederhana.

Keperluan Teknikal

  • Elide mesti dipasang secara berasingan
  • Penciptaan shim javac secara manual dalam JAVA_HOME/bin/elide-javac
  • Fail manifes elide.pkl diperlukan untuk pengurusan kebergantungan
  • Serasi dengan JDK 8+ melalui flag --source/--target/--release

Peningkatan Prestasi Ketara untuk Projek Lebih Kecil

Perbincangan komuniti mendedahkan bahawa faedah prestasi paling ketara untuk projek di bawah 10,000 kelas. Dalam senario ini, plugin boleh memberikan kompilasi sehingga 20x lebih pantas berbanding javac standard. Ini menjadikannya amat berharga untuk aplikasi perusahaan biasa dan pangkalan kod yang lebih kecil di mana overhed pemanasan JIT mewakili bahagian ketara daripada jumlah masa pembinaan.

Kelebihan prestasi berpunca daripada fakta bahawa banyak projek Java tidak pernah mencapai ambang di mana pengoptimuman JIT menjadi bermanfaat. Tumpuan Gradle pada kompilasi tambahan dan caching pembinaan, walaupun membantu atas sebab lain, sebenarnya bertentangan dengan mencapai keadaan JIT hangat yang akan menjadikan javac tradisional kompetitif.

Tuntutan Prestasi

  • Sehingga 20 kali ganda lebih pantas dalam kompilasi berbanding javac standard
  • Paling berkesan untuk projek di bawah 10,000 kelas
  • Binari natif menghapuskan kelewatan pemanasan JIT
  • Pengendalian HTTP yang dioptimumkan untuk penyelesaian kebergantungan

Penyelesaian Kebergantungan Mendapat Rangsangan Kelajuan Asli

Selain kompilasi, Elide juga mempercepatkan penyelesaian kebergantungan Maven dengan membenamkan penyelesai Maven dalam binary asli. Plugin boleh menggantikan mekanisme pengambilan kebergantungan Gradle sepenuhnya, memuat turun JAR ke struktur repositori serasi Maven tempatan yang kemudiannya boleh digunakan oleh Gradle secara langsung.

Gradle nampaknya terhad kepada HTTP/1.1 dan pengumpulan sambungan yang lemah sehingga hari ini, jadi tidak sukar untuk mengatasinya.

Pendekatan ini menyediakan semantik penyelesaian yang sama dengan Maven sambil memberikan prestasi lebih pantas melalui pelaksanaan asli dan pengendalian HTTP yang dioptimumkan.

Pilihan Konfigurasi Plugin

  • enableInstall: Gunakan penyelesai Maven Elide (lalai: benar apabila elide.pkl hadir)
  • enableJavaCompiler: Gunakan Elide untuk kompilasi Java (lalai: benar)
  • enableProjectIntegration: Dayakan kesedaran projek Elide (lalai: boleh dikonfigurasi)
  • manifest: Laluan ke fail manifes projek (lalai: elide.pkl)

Pemasangan Memerlukan Langkah Persediaan Manual

Pada masa ini, menggunakan plugin memerlukan penciptaan shim manual dalam direktori JAVA_HOME yang mengalihkan panggilan javac kepada elide javac. Pengguna juga mesti memasang Elide secara berasingan sebelum menggunakan plugin. Pasukan pembangunan mengakui kerumitan persediaan ini dan merancang untuk menghapuskan keperluan shim JAVA_HOME dalam versi akan datang.

Plugin juga memerlukan fail manifes elide.pkl untuk pengurusan kebergantungan apabila menggunakan ciri penyelesaian kebergantungan yang dipertingkatkan, walaupun batasan ini dijangka berubah apabila projek semakin matang.

Plugin Gradle Elide mewakili pendekatan menarik untuk menyelesaikan isu prestasi kompilasi permulaan sejuk Java. Walaupun masih eksperimental dan memerlukan beberapa persediaan manual, ia menawarkan peningkatan prestasi yang menarik untuk pembangun yang bekerja dengan saiz projek Java biasa. Apabila perkakas semakin matang dan persediaan menjadi lebih mudah, ia boleh menjadi pilihan menarik untuk pasukan yang ingin mempercepatkan proses pembinaan mereka tanpa mengubah aliran kerja pembangunan asas mereka.

Rujukan: Plugin Gradle Elide