11 điểm bởi xguru 2024-10-30 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • Công cụ build đa ngôn ngữ nhanh và có khả năng mở rộng, hỗ trợ Java, Scala, Kotlin
  • Các công cụ build JVM thường bị đánh giá là chậm và rối rắm, nhưng Mill được thiết kế để tận dụng tối đa hiệu năng và tính tiện dụng của JVM
  • Có thể build cùng một codebase Java nhanh hơn Maven 5-10 lần và nhanh hơn Gradle 2-4 lần
  • Duy trì build gọn gàng và dễ hiểu với ngôn ngữ cấu hình có kiểu và đồ thị tác vụ bất biến
  • Mở rộng tốt từ các dự án nhỏ chỉ có một module đến các monorepo quy mô lớn với hàng trăm module

Ưu điểm của Mill

  • Hiệu năng: Đồ thị build của Mill tự động cache và chạy song song các tác vụ build để giữ workflow luôn nhanh và phản hồi tốt. Nó cung cấp các công cụ giúp xác định và giải quyết điểm nghẽn trong build, đồng thời chỉ thêm mức overhead tối thiểu vào logic cần thiết để build dự án
  • Khả năng bảo trì: Vượt ra ngoài YAML và Bash, bạn có thể viết cấu hình và logic tùy biến bằng mã ngắn gọn có kiểm tra kiểu, đồng thời sử dụng cây module bất biến và đồ thị tác vụ. Nhờ đó có thể phát hiện sớm vấn đề cấu hình và giúp IDE (IntelliJ hoặc VSCode) hiểu build Mill tốt hơn so với các hệ thống build khác
  • Tính linh hoạt: Tác vụ và module của Mill cho phép làm mọi thứ, từ thêm các bước build đơn giản đến cả toolchain ngôn ngữ hoàn chỉnh. Bạn có thể dùng mọi thư viện JVM trong build, tận dụng hệ sinh thái plugin Mill bên thứ ba phong phú của Mill, hoặc tự viết plugin rồi phát hành lên Maven Central để người khác sử dụng

Mill so với các công cụ build khác

  • Mill vay mượn ý tưởng từ các công cụ khác như Maven, Gradle, Bazel, nhưng cố gắng học lấy điểm mạnh của từng công cụ và cải thiện các điểm yếu của chúng
  • Mill vs Maven
    • Mill kế thừa cải tiến về việc cung cấp các giá trị mặc định tốt của Maven
      • JavaModule tích hợp sẵn của Mill đi theo phong cách "quy ước hơn cấu hình" của Maven, nên các dự án Mill nhỏ chỉ cần rất ít công sức để bắt đầu, còn các dự án Mill lớn hơn sẽ có cấu trúc nhất quán dựa trên các giá trị mặc định đó
    • Mill tự động cache và chạy song song build để mang lại mức tăng tốc 3-10 lần
      • Điều này đúng không chỉ với các tác vụ tích hợp sẵn đi kèm Mill mà cả với các tác vụ hay module tùy chỉnh. Nó giúp tối đa hóa sự linh hoạt của workflow build trên dòng lệnh để duy trì năng suất, đặc biệt quan trọng với các codebase lớn vốn có xu hướng build chậm. Trong khi workflow "clean install" của Maven có thể mất hơn 1 phút thì trên Mill có thể chỉ mất vài giây
    • Mill giúp tùy biến công cụ build dễ hơn Maven rất nhiều
      • Dự án thường sẽ phát triển vượt xa việc chỉ biên dịch một ngôn ngữ duy nhất. Bạn sẽ cần sinh mã tùy chỉnh, workflow linting, tích hợp công cụ, artifact đầu ra hoặc hỗ trợ thêm ngôn ngữ khác. Khả năng mở rộng và trải nghiệm IDE của Mill cho phép bạn thực hiện việc này trực tiếp một cách dễ dàng và an toàn bằng mã có kiểm tra kiểu và các tác vụ sandbox
  • Mill vs Gradle
    • Mill đi theo sự ngắn gọn và khả năng mở rộng của Gradle
      • Thay vì những trang XML dài dòng, mọi dòng trong build Mill đều có ý nghĩa. Ví dụ, việc thêm dependency trong Mill chỉ cần 1 dòng giống như Gradle, khác với 5 dòng khai báo <dependency> thường thấy trong Maven. Cũng như Gradle, người dùng cuối có thể dễ dàng tùy biến build theo đúng nhu cầu mà không phải trải qua quy trình viết plugin
    • Mill có thể nhanh hơn Gradle 2-3 lần
      • Cả Mill và Gradle đều tự động cache và chạy song song build, nhưng Mill làm điều đó với overhead cố định thấp hơn nhiều. Điều này đồng nghĩa với việc ít phải chờ công cụ build hơn và có nhiều thời gian hơn cho những việc thực sự quan trọng trong dự án
    • Mill áp dụng các best practice ngay từ mặc định
      • Mọi phần trong build Mill đều được cache và hỗ trợ incremental theo mặc định. Mọi tác vụ Mill đều ghi đầu ra vào vị trí tiêu chuẩn. Mọi phụ thuộc giữa các tác vụ đều được tự động ghi nhận mà không cần chú thích thủ công. Trong khi Gradle đòi hỏi khá nhiều công sức và kiến thức chuyên sâu để hiểu build và thiết lập đúng cách, trải nghiệm IDE tốt của Mill giúp build dễ hiểu hơn và mô hình mở rộng của nó giúp tránh cấu hình sai, vì vậy trong Mill, cách dễ nhất thường cũng là cách đúng nhất

Chưa có bình luận nào.

Chưa có bình luận nào.