Відмова: Я упереджений, коли пишу книгу про програмування поліглотів на JVM (Shameless Plug !! - Добре заземлений Java Developer) :)
По-перше, вам слід ввести зміни лише там, де це справді виправдано!
Гарне місце для початку - розглянути піраміду мови програмування Ола Біні. Ola розповідає про стабільні, динамічні та доменні мови.
Java - це стабільна мова (статично набрана та керована), і з різних причин (я можу піти на них пізніше, якщо люди зацікавлені) не є ідеальним вибором для проектів динамічного рівня (наприклад, швидка веб-розробка) або проектів, що стосуються доменного шару (наприклад, моделювання домен шаблону інтеграції підприємств). Якщо у вас є проект, який вписується в один із цих шарів, то це може бути гарним місцем для початку.
Ви також можете розглянути можливість введення нової мови на стабільному шарі для заміни Java, якщо є основна функція, яку пропонує альтернативна мова. Наприклад, Scala просто обробляє сумісність безпечнішим і природнішим способом, ніж Java.
Як вимагається, ще дещо з цього приводу. WRT Java:
- Рекомпіляція трудомістка
- Статичне введення тексту може бути негнучким і призводити до тривалих часів рефакторингу
- Розгортання - це важкий процес
- Синтаксис Java не є природним придатним для створення DSL
На цьому етапі ви можете запитати себе: “Який тип програмних проблем відповідає цим шарам? Яку (-ю) мову я обрати? », Пам’ятайте, що немає срібної кулі, але у мене є деякі критерії, які ви можете врахувати, оцінюючи свій вибір.
Доменний
- Побудова / безперервна інтеграція / безперервне впровадження
- Дев-опс
- Моделювання моделей інтеграції підприємств
- Моделювання бізнес-правил
Динамічний
- Швидкий веб-розвиток
- Прототипування
- Інтерактивні адміністративні / користувацькі консолі
- Сценарій
- Тест-керований розвиток / Поведінка
Стабільний
- Паралельний код
- Контейнери для додатків
- Основна функціональність бізнесу
Почніть з невеликого модуля низького ризику (пам’ятайте, що ці мови JVM часто прекрасно взаємодіють з існуючим кодом Java) або проекту. Дайте зрозуміти, що це буде викинутим прототипом.
Переконайтесь, що ви дослідили аспекти життєвого циклу програмування та інструменти для цієї мови. Ви хочете переконатися, що можете TDD, запускати інструменти побудови та постійну інтеграцію, мати потужну підтримку IDE та всі ці інші фактори. Для деяких мов вам просто доведеться визнати, що певного інструментарію немає або є дуже базовим. Сила розробника та підтримка інструментів можуть переважати міцність мови.
Переконайтеся, що є яскрава спільнота, яка може допомогти вашій команді, коли вони застрягнуть. Місцеві групи користувачів для цього ще кращі.
Переконайтеся, що розробники отримують початкову мовну підготовку, особливо якщо мова не є мовою стилю OO (перехід на Clojure нетривіальний).
Саме про це я думаю. Я особисто успішно використовував Groovy, Scala та Clojure у своїй розробці разом із Java для таких завдань, як обробка XML, створення швидких веб-сайтів та певне стискання даних.