Giới thiệu ngôn ngữ lập trình JVM mới vào môi trường doanh nghiệp đã thiết lập


11

Hãy tưởng tượng rằng nơi làm việc hiện tại của bạn là một cửa hàng Java. Có rất nhiều kiến ​​thức tích hợp về ngôn ngữ Java và có một quy trình xây dựng và triển khai toàn diện để xử lý mọi thứ một cách trơn tru và nhanh nhẹn.

Một ngày nọ, một dự án xuất hiện và chỉ cần hét lên để được viết, nói, Ruby. Chỉ các nhà phát triển cấp cao mới có bất kỳ manh mối nào về Ruby nhưng có một khái niệm chung là vì JRuby tồn tại cho JVM nên cơ sở hạ tầng hiện tại có thể tiếp tục được sử dụng và hỗ trợ. Ngoài ra, JRuby có thể chỉ ra cách thức triển khai các ứng dụng hiện tại tốt hơn với ít mã hơn để điều này có thể thể hiện sự di chuyển đang diễn ra.

Hãy nhớ rằng JRuby chỉ là một ví dụ, nó có thể là Clojure hoặc Groovy hoặc bất cứ thứ gì khác chạy trên JVM.

Câu hỏi là làm thế nào bạn sẽ giới thiệu loại thay đổi này - nếu có?



1
không thể tưởng tượng cửa hàng 'Java nào mà bạn có thể nói về đó
Gareth Davis

@Jonas Liên kết tốt - Rất nhiều thứ để nhai ở đó.
Gary Rowe

Câu trả lời:


15

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.


+1 cho câu trả lời thấu đáo - đặc biệt là "chuyển sang Clojure là không tầm thường". Tôi sẽ đánh giá cao một số mở rộng về tiêu chí lựa chọn lớp cụ thể của lớp / miền động. Chúc may mắn với cuốn sách!
Gary Rowe

@Gary Rowe - Tôi sẽ mở rộng về tiêu chí lựa chọn một chút, kiểm tra lại sau 10 - 15 phút :)
Martijn Verburg

@Martin Cảm ơn bạn đã biết thêm thông tin, đánh giá cao.
Gary Rowe

Câu trả lời tuyệt vời, Martijn, rất chi tiết và suy nghĩ tốt. Có lẽ bạn nên viết một cuốn sách về những thứ này! ;)
Rein Henrichs

@Rein, tôi phải thừa nhận rằng tôi đã có thể diễn giải một phần của chương 7 được viết để thảo luận về câu hỏi này;)
Martijn Verburg

3

Tôi muốn thêm một vài suy nghĩ về chủ đề được nêu lên với nhận xét "nếu có". Thật vậy, tại sao người ta nên giới thiệu thêm ngôn ngữ cho nhóm? Đúng, nếu bạn chỉ nhìn vào bất kỳ dự án nào, ngôn ngữ mới có thể trở thành công cụ lý tưởng cho nhiệm vụ. Nhưng nếu bạn sắp có nhiều dự án, bạn có thể sẽ có thêm một vài ngôn ngữ bổ sung theo thời gian. Tôi không biết về chu kỳ bảo trì và số dự án của bạn, nhưng rất có thể nhóm sẽ phải cung cấp khá nhiều kiến ​​thức chuyên môn về nhiều ngôn ngữ hơn trước.

Từ quan điểm kinh doanh, thêm ngôn ngữ có nghĩa là thêm các yêu cầu phức tạp và kiến ​​thức cho nhóm. Điều này kéo dài thời gian điều chỉnh nghề nghiệp, làm cho việc thay thế các chuyên gia trong nhóm của bạn trở nên khó khăn hơn và đòi hỏi phải đào tạo bổ sung cho các thành viên trong nhóm, nghĩa là chậm lại trong thời gian ngắn.

Trong mắt tôi, một chiến lược để giới thiệu được hoan nghênh cũng nên đề cập đến những vấn đề như vậy ngoài các khía cạnh chức năng thuần túy. Là lợi ích dự kiến ​​có giá trị thêm rắc rối và những bất lợi như những gì tôi đã đề cập ở trên? Nếu điều này có thể được chứng minh, tỷ lệ chấp nhận có thể cao hơn nhiều. Chỉ ra những khoản đầu tư tốt đẹp trong trình độ của các thành viên trong nhóm cũng có thể giúp ích.


2

Tôi muốn nói, bắt đầu xung quanh các cạnh. Thể hiện ngôn ngữ trong một số mã không sản xuất như tập lệnh xây dựng, plugin maven, báo cáo đang chạy, v.v. Một khi họ thấy tiện ích và đơn giản, họ có thể có xu hướng cho phép vào dự án quy mô nhỏ, v.v.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.