Micronaut adalah sebuah framework perangkat lunak berbasis JVM open source untuk membangun aplikasi ringan, modular, dan microservices. Micronaut dikenal karena kemampuannya membantu pengembang membuat aplikasi dan microservices dengan jejak memori kecil dan waktu startup yang singkat. Keuntungan penting dari framework Micronaut adalah bahwa waktu startup dan konsumsi memori tidak bergantung pada ukuran basis kode aplikasi. Ini membuat pengembangan integration tests jauh lebih mudah dan eksekusinya jauh lebih cepat.
Salah satu perbedaan besar antara Micronaut dan framework lainnya adalah bahwa Micronaut menganalisis metadata segera setelah aplikasi dikompilasi. Selama fase kompilasi ini, Micronaut akan menghasilkan satu set kelas tambahan yang mewakili status aplikasi yang sudah dikonfigurasi. Hal ini memungkinkan perilaku dependency injection (DI) dan aspect-oriented programming (AOP) diterapkan jauh lebih efisien ketika aplikasi dijalankan.
Micronaut, yang diperkenalkan pada 2018 oleh pencipta framework Grails, menyediakan dukungan native untuk service discovery, konfigurasi terdistribusi, client-side load balancing, dan otentikasi. Framework ini dilisensikan di bawah Apache License v2 dan Micronaut Foundation mengawasi praktik terbaik dan dokumentasi.
Apa yang harus diketahui pengembang tentang Micronaut?
Framework Micronaut dirancang untuk membangun dan menguji microservices dengan memori rendah, aplikasi serverless, dan microservices berbasis pesan.
Ini dilakukan dengan menghindari kekurangan umum dari sebagian besar framework Java tradisional, termasuk refleksi runtime untuk dependency injection, pemuatan kelas dinamis, pembuatan byte code runtime, dan pembuatan proxy. Framework ini dirancang khusus dengan arsitektur cloud dalam pikiran. Apache Maven dan Gradle dapat digunakan sebagai alat build.
Komponen dari framework modular mendefinisikan cara programmer menangani hal-hal berikut:
- dependency injection
- inversion of control (IoC)
- aspect-oriented programming (AOP)
- konfigurasi dan berbagi konfigurasi
- service discovery
- HTTP routing
- client-side load-balancing
- proxies
Bagaimana Micronaut bekerja?
Micronaut dirancang untuk berfungsi baik sebagai framework klien maupun server. Framework ini memiliki model pemrograman berbasis anotasi yang sangat mirip dengan framework Java Spring. Namun, berbeda dengan Spring, Micronaut tidak menggunakan Java Reflection API. Sebagai gantinya, ia terintegrasi langsung dengan kompiler Java melalui prosesor anotasi. Hal ini memungkinkan Micronaut untuk menghitung satu set kelas tambahan yang berada di samping kelas yang didefinisikan pengguna. Kelas-kelas ini berfungsi untuk melakukan dependency injection, serta mendefinisikan proxy waktu kompilasi dan aspect-oriented secara sepenuhnya tanpa refleksi.
Karena cara Micronaut berintegrasi langsung dengan kompiler bahasa, saat ini satu-satunya bahasa JVM yang didukung Micronaut adalah Java, Kotlin, atau Groovy. Rencana untuk mendukung bahasa lain ada di masa depan.
Kenapa Micronaut sangat cocok untuk microservices?
Micronaut memiliki banyak fitur yang dibuat khusus untuk microservices, termasuk yang berikut:
Reactive Streams. Micronaut mendukung framework apa pun yang mengimplementasikan standar Reactive Streams. Framework ini juga terintegrasi dengan driver database reaktif untuk database SQL dan NoSQL.
Microservices berbasis pesan. Micronaut mendukung berbagai sistem pesan, termasuk Kafka, RabbitMQ, MQTT, JMS, dan NATS.io. Dukungan untuk Pulsar direncanakan untuk rilis mendatang.
Fungsi serverless. Micronaut mendukung pengembangan, pengujian, dan penerapan fungsi serverless untuk berbagai penyedia cloud, termasuk AWS Lambda, Oracle Functions, Google Cloud Functions, dan Azure Functions.
Dokumentasi OpenAPI. Micronaut membuat file YAML pada waktu kompilasi yang dapat ditambahkan sebagai sumber daya statis kemudian atau disajikan melalui browser menggunakan alat seperti Swagger UI.
Siap dengan GraalVM. Aplikasi Micronaut dapat dikompilasi menjadi gambar native GraalVM untuk mengurangi waktu startup lebih lanjut. GraalVM menggunakan pendekatan analisis statis dunia tertutup untuk menghasilkan gambar native yang memerlukan konfigurasi untuk bagian dinamis aplikasi. Kurangnya refleksi dan pemuatan kelas dinamis pada Micronaut berarti konfigurasi yang lebih sedikit diperlukan untuk membuat gambar native GraalVM beroperasi.
Apa saja alternatif untuk Micronaut?
Alternatif untuk framework Micronaut meliputi:
Beberapa framework dalam daftar di atas, termasuk ASP.NET dan Spring, telah mulai mengintegrasikan beberapa ide yang dipelopori oleh Micronaut.