11 poin oleh xguru 2024-10-30 | Belum ada komentar. | Bagikan ke WhatsApp
  • Alat build multi-bahasa yang cepat dan skalabel, mendukung Java, Scala, dan Kotlin
  • Alat build JVM sering dinilai lambat dan membingungkan, tetapi Mill dirancang untuk memaksimalkan performa dan kemudahan penggunaan JVM
  • Dapat membangun codebase Java yang sama 5-10x lebih cepat daripada Maven dan 2-4x lebih cepat daripada Gradle
  • Menjaga build tetap rapi dan mudah dipahami dengan bahasa Typed Config serta graph tugas immutable
  • Skalanya baik, dari proyek modul tunggal yang kecil hingga monorepo besar dengan ratusan modul

Kelebihan Mill

  • Performa: Graph build Mill secara otomatis melakukan cache dan paralelisasi tugas build agar alur kerja tetap cepat dan responsif. Mill juga menyediakan alat untuk mengidentifikasi dan mengatasi bottleneck build sambil hanya menambahkan overhead minimal pada logika yang diperlukan untuk membangun proyek
  • Kemudahan pemeliharaan: Menulis konfigurasi dan logika kustom dengan kode ringkas yang diperiksa tipe, melampaui YAML dan Bash, serta menggunakan pohon modul immutable dan graph tugas. Ini membantu menemukan masalah konfigurasi lebih awal dan memungkinkan IDE (IntelliJ atau VSCode) memahami build Mill lebih baik daripada sistem build lain
  • Fleksibilitas: Tugas dan modul Mill memungkinkan segala hal, dari penambahan langkah build sederhana hingga seluruh toolchain bahasa. Anda dapat membawa library JVM apa pun ke dalam build, menggunakan ekosistem plugin Mill pihak ketiga yang kaya, atau menulis plugin sendiri dan menerbitkannya ke Maven Central agar bisa digunakan orang lain

Mill vs alat build lain

  • Mill meminjam ide dari alat lain seperti Maven, Gradle, dan Bazel, tetapi berupaya mempelajari kelebihan masing-masing dan memperbaiki kelemahannya
  • Mill vs Maven
    • Mill mengikuti inovasi Maven dalam menyediakan default yang baik
      • JavaModule bawaan Mill mengikuti gaya "convention over configuration" milik Maven, sehingga proyek Mill kecil hanya memerlukan usaha minimal untuk memulai, sementara proyek Mill yang lebih besar memiliki struktur yang konsisten berdasarkan default tersebut
    • Mill secara otomatis melakukan cache dan paralelisasi build untuk memberikan peningkatan kecepatan 3-10x
      • Ini berlaku bukan hanya untuk tugas bawaan yang disertakan Mill, tetapi juga untuk tugas atau modul kustom. Hal ini membantu memaksimalkan kelincahan alur kerja build di command line agar produktivitas tetap terjaga, terutama pada codebase yang lebih besar yang cenderung memiliki build lambat. Dibandingkan alur kerja Maven "clean install" yang bisa memakan waktu lebih dari 1 menit, di Mill hal itu bisa selesai hanya dalam beberapa detik
    • Mill membuat kustomisasi alat build jauh lebih mudah dibandingkan Maven
      • Proyek biasanya berkembang melampaui sekadar mengompilasi satu bahasa. Diperlukan pembuatan kode kustom, alur kerja linting, integrasi alat, artefak output, atau dukungan bahasa tambahan. Ekstensibilitas Mill dan pengalaman IDE-nya memungkinkan semua ini dilakukan langsung dengan mudah dan aman melalui kode yang diperiksa tipe serta tugas sandbox
  • Mill vs Gradle
    • Mill mengikuti keringkasan dan ekstensibilitas Gradle
      • Alih-alih halaman XML yang panjang, setiap baris dalam build Mill memiliki makna. Misalnya, menambahkan dependency hanya perlu 1 baris di Mill, seperti di Gradle, berbeda dengan deklarasi <dependency> 5 baris yang biasa ditemukan di Maven. Seperti Gradle, pengguna akhir juga dapat dengan mudah menyesuaikan build sesuai kebutuhan spesifik tanpa harus melalui proses penulisan plugin terlebih dahulu
    • Mill bisa 2-3x lebih cepat daripada Gradle
      • Mill dan Gradle sama-sama secara otomatis melakukan cache dan paralelisasi build, tetapi Mill melakukannya dengan overhead tetap yang jauh lebih kecil. Artinya, waktu menunggu alat build menjadi lebih sedikit dan waktu untuk hal-hal yang benar-benar penting dalam proyek menjadi lebih banyak
    • Mill menerapkan best practice secara default
      • Setiap bagian dari build Mill secara default di-cache dan bersifat incremental. Semua tugas Mill menulis output ke lokasi standar. Semua dependency antar tugas ditangkap secara otomatis tanpa anotasi manual. Sementara Gradle memerlukan usaha dan keahlian yang cukup besar untuk memahami build dan mengaturnya dengan benar, pengalaman IDE Mill yang baik membuat build lebih mudah dipahami dan model ekstensibilitasnya membantu mencegah kesalahan dalam konfigurasi build, sehingga di Mill hal yang paling mudah biasanya juga merupakan hal yang benar

Belum ada komentar.

Belum ada komentar.