Kompilasi asli di Quarkus - mengapa itu penting

Halo semuanya! Ini adalah pos kedua dari seri Quarkus kami - hari ini kita akan berbicara tentang kompilasi asli. (Ngomong-ngomong, daftarkan dan buka webinar kami " Ini adalah Quarkus - kerangka kerja asli Jawa Kubernetes ", yang akan diadakan pada tanggal 27 Mei. Kami akan menunjukkan cara memulai dari awal atau mentransfer solusi yang sudah jadi)



Quarkus adalah tumpukan Java yang dirancang untuk Kubernetes. Dan meskipun, tentu saja, masih banyak yang harus dilakukan di sini, kami telah mengerjakan banyak aspek dengan baik, termasuk mengoptimalkan JVM dan sejumlah kerangka kerja. Salah satu fitur Quarkus yang menyebabkan peningkatan minat dari pengembang adalah pendekatan mulus yang komprehensif untuk mengubah kode Java menjadi file yang dapat dieksekusi untuk sistem operasi tertentu (yang disebut "kompilasi asli"), mirip dengan C dan C ++, di mana kompilasi seperti itu biasanya terjadi pada akhir siklus perakitan, pengujian, dan penyebaran.

Walaupun kompilasi asli, seperti yang kami tunjukkan di bawah ini, adalah penting, perlu dicatat bahwa Quarkus benar-benar bekerja dengan baik pada mesin Java Hotspot OpenJDK yang paling umum, berkat peningkatan kinerja yang telah kami terapkan di seluruh tumpukan. Oleh karena itu, kompilasi asli harus dianggap sebagai bonus tambahan yang dapat digunakan sesuai keinginan atau kebutuhan. Bahkan, berkenaan dengan gambar asli, Quarkus sangat bergantung pada OpenJDK. Dan mode dev, yang diterima dengan hangat oleh para pengembang, memberikan pengujian perubahan yang hampir instan karena fitur yang dikembangkan dari eksekusi kode dinamis yang diterapkan di Hotspot. Selain itu, saat membuat gambar GraalVM asli, pustaka kelas OpenJDK dan fitur HotSpot digunakan.

Jadi mengapa Anda perlu kompilasi asli jika semuanya sudah dioptimalkan dengan sempurna? Kami akan mencoba menjawab pertanyaan ini di bawah ini.

Mari kita mulai dengan yang sudah jelas: Red Hat memiliki pengalaman luas dalam mengoptimalkan JVM, tumpukan, dan kerangka kerja selama pengembangan proyek JBoss , termasuk:


Kami telah berhadapan dengan masalah menjalankan aplikasi Java di cloud dan pada perangkat dengan sumber daya terbatas (baca, IoT) selama bertahun-tahun dan telah belajar untuk memeras maksimal JVM dalam hal kinerja dan optimalisasi memori. Seperti banyak yang lain, kami telah lama bekerja dengan kompilasi asli aplikasi Java melalui GCJ , Avian , Excelsior JET dan bahkan Dalvik dan sangat menyadari pro dan kontra dari pendekatan ini (misalnya, dilema memilih antara fleksibilitas "membangun sekali - jalankan di mana saja" dan aplikasi yang dikompilasi lebih kecil dan berjalan lebih cepat).

Mengapa penting untuk mempertimbangkan pro dan kontra ini? Karena dalam beberapa situasi, rasio mereka menjadi sangat penting:

  • , serverless/ , ( ) , . , . JVM , , , 5 . , Java- ( , , OpenWhisk Knative), JVM . , , .
  • , , . , JVM , , Linux’ – . Java-. , JVM, . , .
  • , - , . 12 , Kubernetes Java- . , , , , . , dead-code elimination, ( JDK), . Quarkus .

Sebenarnya, argumen di atas sudah cukup untuk memahami pembenaran kompilasi asli dari sudut pandang peserta proyek Quarkus. Namun, ada satu lagi, bukan alasan teknis, tetapi juga penting: dalam beberapa tahun terakhir, banyak programer dan perusahaan pengembangan telah meninggalkan Jawa demi bahasa pemrograman baru, percaya bahwa Java, bersama dengan JVM, tumpukan dan kerangka kerja, telah menjadi terlalu rakus dalam hal memori, terlalu lambat dll

Namun, kebiasaan menggunakan alat yang sama untuk menyelesaikan masalah tidak selalu benar. Terkadang lebih baik untuk mundur dan mencari sesuatu yang lain. Dan jika Quarkus membuat orang berhenti dan berpikir, ini bagus untuk seluruh ekosistem Jawa. Quarkus mewujudkan perspektif inovatif tentang cara membuat aplikasi yang lebih efisien, menjadikan Java lebih relevan dengan arsitektur aplikasi baru seperti serverless. Selain itu, karena sifatnya yang dapat diperpanjang, Quarkus, kami berharap, akan memperoleh seluruh ekosistem ekstensi Java, secara signifikan meningkatkan jumlah kerangka kerja yang di luar kotak akan mendukung kompilasi asli sebagai bagian dari aplikasi.

All Articles