Tuyên bố miễn trừ trách nhiệm: Tôi thiên vị khi tôi đang viết một cuốn sách về lập trình Polyglot trên JVM (Trình cắm không biết xấu hổ !! - Nhà phát triển Java có căn cứ) :)
Đầu tiên, bạn chỉ nên giới thiệu sự thay đổi khi nó thực sự được bảo hành!
Một nơi tốt để bắt đầu là xem xét kim tự tháp ngôn ngữ lập trình của Ola Bini. Ola nói về các ngôn ngữ cụ thể, ổn định và tên miền.
Java là ngôn ngữ ổn định (được nhập và quản lý tĩnh) và vì nhiều lý do (tôi có thể đi sâu vào sau nếu mọi người quan tâm) không phải là lựa chọn lý tưởng cho các dự án lớp động (ví dụ: Phát triển web nhanh) hoặc các dự án lớp cụ thể của miền (ví dụ: mô hình hóa miền Mẫu tích hợp doanh nghiệp). Nếu bạn có một dự án phù hợp với một trong những lớp đó thì đó có thể là một nơi tốt để bắt đầu.
Bạn cũng có thể xem xét giới thiệu một ngôn ngữ mới ở lớp ổn định để thay thế Java nếu có một tính năng cơ bản mà ngôn ngữ thay thế cung cấp. Ví dụ, Scala chỉ đơn giản xử lý đồng thời theo cách an toàn và tự nhiên hơn Java.
Theo yêu cầu, một số chi tiết về điều này. Java WRT:
- Biên dịch lại rất tốn công
- Gõ tĩnh có thể không linh hoạt và dẫn đến thời gian tái cấu trúc dài
- Triển khai là một quá trình nặng nề
- Cú pháp của Java không phù hợp tự nhiên để sản xuất DSL
Tại thời điểm này, bạn có thể tự hỏi: Những loại thử thách lập trình nào phù hợp với các lớp này? Tôi nên chọn ngôn ngữ nào? Hãy nhớ rằng không có viên đạn bạc, nhưng tôi có một số tiêu chí mà bạn có thể xem xét khi đánh giá các lựa chọn của mình.
Tên miền cụ thể
- Xây dựng / Tích hợp liên tục / Triển khai liên tục
- Dev-op
- Mô hình tích hợp doanh nghiệp
- Mô hình hóa quy tắc kinh doanh
Năng động
- Phát triển web nhanh
- Tạo mẫu
- Bảng điều khiển quản trị / người dùng tương tác
- Viết kịch bản
- Kiểm tra hướng phát triển / Phát triển hướng hành vi
Ổn định
- Mã đồng thời
- Container ứng dụng
- Chức năng kinh doanh cốt lõi
Bắt đầu với một mô-đun rủi ro thấp nhỏ (hãy nhớ rằng, các ngôn ngữ JVM này thường tương tác tốt với mã Java hiện có) hoặc dự án. Làm rõ rằng đây sẽ là một nguyên mẫu vứt đi.
Đảm bảo rằng bạn đã điều tra vòng đời lập trình và các khía cạnh công cụ cho ngôn ngữ đó. Bạn sẽ muốn đảm bảo rằng bạn có thể TDD, chạy các công cụ xây dựng và Tích hợp liên tục, có hỗ trợ IDE mạnh mẽ và tất cả các yếu tố khác. Đối với một số ngôn ngữ, bạn sẽ phải chấp nhận rằng một số công cụ nhất định không có hoặc rất cơ bản. Sức mạnh của nhà phát triển và hỗ trợ công cụ có thể lớn hơn sức mạnh của ngôn ngữ.
Hãy chắc chắn rằng có một cộng đồng sôi động có thể giúp đội của bạn khi họ gặp khó khăn. Các nhóm người dùng địa phương thậm chí còn tốt hơn cho việc này.
Hãy chắc chắn rằng các nhà phát triển được đào tạo ngôn ngữ ban đầu, đặc biệt nếu ngôn ngữ không phải là ngôn ngữ theo kiểu OO (chuyển sang Clojure là không tầm thường).
Đó là về nó tôi nghĩ. Cá nhân tôi đã sử dụng thành công Groovy, Scala và Clojure trong quá trình phát triển của mình cùng với Java cho các tác vụ như xử lý XML, xây dựng các trang web nhanh và thực hiện một số thao tác dữ liệu.