Hệ sinh thái công cụ build cho JVM từ lâu đã là nguồn gây bức xúc cho các lập trình viên, với những công cụ như Maven và Gradle thường xuyên bị chỉ trích về độ phức tạp và vấn đề hiệu năng. Cuộc thảo luận gần đây xoay quanh Mill, một công cụ build nhanh cho JVM, đã làm dấy lên một cuộc tranh luận thú vị về hiện trạng của các hệ thống build trong hệ sinh thái Java và liệu có còn nhiều điểm cần cải thiện hay không.
Tranh luận về độ phức tạp của công cụ build
Nhiều lập trình viên trong cộng đồng đã bày tỏ sự thất vọng với các công cụ build JVM truyền thống, chỉ ra một số vấn đề chính:
- Độ phức tạp trong cấu hình : Cấu hình dựa trên XML của Maven và DSL của Gradle bị chỉ trích vì tạo ra gánh nặng nhận thức không cần thiết
- Đường cong học tập : Các lập trình viên cho biết họ dành tới 30% thời gian để xử lý các hệ thống build thay vì viết code
- Vấn đề hiệu năng : Các công cụ build truyền thống thường được ghi nhận là chạy chậm, đặc biệt là khi khởi động lạnh
- Phụ thuộc plugin : Sự phụ thuộc vào các plugin và mối quan hệ phụ thuộc giữa chúng đã tạo ra thứ mà một số lập trình viên gọi là địa ngục phụ thuộc plugin
Cách tiếp cận của Mill đối với hệ thống build
Mill cố gắng giải quyết những điểm yếu này thông qua một số tính năng chính:
- Hiệu năng : Tuyên bố nhanh hơn Maven 5-10 lần và nhanh hơn Gradle 2-4 lần đối với các codebase Java tương đương
- An toàn kiểu : Sử dụng hệ thống kiểu của Scala để phát hiện lỗi cấu hình sớm
- Tích hợp IDE : Cung cấp hỗ trợ IDE mạnh mẽ thông qua IntelliJ và VSCode
- Bộ nhớ đệm : Triển khai tự động lưu đệm và song song hóa các tác vụ build
Phản hồi từ cộng đồng
Cuộc thảo luận cho thấy sự chia rẽ trong cộng đồng:
-
Phe truyền thống : Một số lập trình viên thích cách tiếp cận khai báo của Maven, cho rằng cấu hình dựa trên XML của nó, mặc dù dài dòng, nhưng dễ dự đoán và được hiểu rõ.
-
Phe hiện đại : Những người khác hoan nghênh cách tiếp cận của Mill, đặc biệt là cấu hình an toàn kiểu và hiệu năng được cải thiện.
-
Phe hoài nghi : Một số lập trình viên đặt câu hỏi liệu việc đưa Scala vào như một ngôn ngữ cấu hình build có đáng với độ phức tạp bổ sung hay không.
Áp dụng thực tế
Mill hiện đang được sử dụng trong một số dự án quan trọng, bao gồm:
- C3P0 JDBC Connection Pool
- Coursier JVM dependency resolver
- Ammonite REPL
- SpinalHDL và Chisel hardware design frameworks
Phát triển cộng đồng
Dự án đang tích cực khuyến khích sự tham gia của cộng đồng thông qua chương trình tiền thưởng, cung cấp từ 500-2000 USD cho những đóng góp đáng kể. Hiện tại, khoảng 10.000 USD đã được chi trả, với 20.000 USD khác dành cho các đóng góp trong tương lai.
Hướng tới tương lai
Mặc dù Mill cho thấy triển vọng trong việc giải quyết nhiều điểm yếu trong hệ sinh thái build JVM, cuộc thảo luận của cộng đồng làm nổi bật một câu hỏi lớn hơn: liệu độ phức tạp trong các công cụ build JVM có phải là vốn có của lĩnh vực này hay là kết quả của các quyết định thiết kế trong quá khứ. Tác giả của dự án, Li Haoyi, thừa nhận rằng công cụ vẫn đang phát triển, với phiên bản 1.0 có thể ra mắt khi tốc độ thay đổi đột phá giảm đáng kể, có thể vào cuối năm 2025.
Đối với các lập trình viên muốn thử nghiệm Mill, dự án cung cấp tài liệu chuyên dụng cho các dự án Java, Scala và Kotlin, mặc dù một số người dùng cho biết đường cong học tập có thể khá dốc, đặc biệt là đối với những người không quen với Scala.