Penafian: Saya bias karena saya menulis buku tentang pemrograman Polyglot di JVM (Shameless Plug !! - Pengembang Java yang Beralasan Baik) :)
Pertama, Anda hanya harus memperkenalkan perubahan yang benar-benar dijamin!
Tempat yang baik untuk memulai adalah mempertimbangkan piramida bahasa pemrograman Ola Bini. Ola berbicara tentang bahasa yang stabil, dinamis dan spesifik domain.
Java adalah bahasa yang stabil (diketik secara statis & dikelola) dan karena berbagai alasan (saya bisa membahasnya nanti jika orang tertarik) bukan pilihan ideal untuk proyek lapisan dinamis (mis. Pengembangan Web Cepat) atau proyek lapisan khusus domain (mis. Pemodelan domain Pola Integrasi Perusahaan). Jika Anda memiliki proyek yang cocok dengan salah satu lapisan itu maka itu bisa menjadi tempat yang baik untuk memulai.
Anda juga dapat mempertimbangkan memperkenalkan bahasa baru pada layer stabil untuk menggantikan Java jika ada fitur mendasar yang ditawarkan bahasa alternatif. Sebagai contoh, Scala hanya menangani konkurensi dengan cara yang lebih aman dan lebih alami daripada Java.
Seperti yang diminta, beberapa lagi tentang ini. WRT Java:
- Rekompilasi melelahkan
- Pengetikan statis dapat menjadi tidak fleksibel dan menyebabkan waktu refactoring yang lama
- Penempatan adalah proses kelas berat
- Sintaksis Java tidak cocok secara alami untuk menghasilkan DSL
Pada titik ini, Anda mungkin bertanya pada diri sendiri: “Apa jenis tantangan pemrograman yang cocok di dalam lapisan-lapisan ini? Bahasa mana yang harus saya pilih? ”, Ingat tidak ada peluru perak, tetapi saya memang memiliki beberapa kriteria yang dapat Anda pertimbangkan ketika mengevaluasi pilihan Anda.
Khusus domain
- Bangun / Integrasi Berkelanjutan / Penerapan berkelanjutan
- Pengembang
- Pemodelan Pola Integrasi Perusahaan
- Pemodelan Aturan Bisnis
Dinamis
- Pengembangan Web yang cepat
- Prototyping
- Konsol administrasi / pengguna interaktif
- Scripting
- Pengembangan Berbasis Tes / Pengembangan Berbasis Perilaku
Stabil
- Kode bersamaan
- Wadah aplikasi
- Fungsi bisnis inti
Mulailah dengan modul kecil risiko rendah (ingat, bahasa-bahasa JVM ini sering berinteraksi dengan kode Java yang ada dengan indah) atau proyek. Jelaskan bahwa ini akan menjadi prototipe yang dibuang.
Pastikan Anda telah menyelidiki siklus hidup pemrograman dan aspek tooling untuk bahasa itu. Anda akan ingin memastikan Anda dapat TDD, menjalankan alat membangun dan Integrasi Berkelanjutan, memiliki dukungan IDE yang kuat dan semua faktor lainnya. Untuk beberapa bahasa Anda hanya harus menerima bahwa alat tertentu tidak ada, atau sangat mendasar. Kekuatan pengembang dan dukungan tooling dapat melebihi kekuatan bahasa.
Pastikan ada komunitas yang bersemangat yang dapat membantu tim Anda saat mereka macet. Grup pengguna lokal bahkan lebih baik untuk ini.
Pastikan pengembang mendapatkan pelatihan bahasa awal, terutama jika bahasa tersebut bukan bahasa gaya OO (pindah ke Clojure adalah non-sepele).
Itu saja yang saya pikir. Secara pribadi saya telah berhasil menggunakan Groovy, Scala, dan Clojure dalam pengembangan saya bersama Java untuk tugas-tugas seperti pemrosesan XML, membangun situs web cepat dan melakukan beberapa pengelompokan data.