Oświadczenie: jestem stronniczy, pisząc książkę o programowaniu Polyglot na JVM (Shameless Plug !! - The Well-Grounded Java Developer) :)
Po pierwsze, zmianę należy wprowadzać tylko tam, gdzie jest to naprawdę uzasadnione!
Dobrym początkiem jest rozważenie piramidy języka programowania Oli Bini. Ola mówi o językach stabilnych, dynamicznych i specyficznych dla domeny.
Java jest stabilnym językiem (typowo statycznym i zarządzanym) iz różnych powodów (mogę się do nich później zgłosić, jeśli ludzie są zainteresowani) nie jest idealnym wyborem dla projektów warstw dynamicznych (np. Rapid Web Development) lub projektów warstw specyficznych dla domeny (np. Modelowanie domena Enterprise Integration Pattern). Jeśli masz projekt pasujący do jednej z tych warstw, może to być dobre miejsce na rozpoczęcie.
Możesz również rozważyć wprowadzenie nowego języka w warstwie stabilnej, aby zastąpić Javę, jeśli istnieje podstawowa funkcja oferowana przez język alternatywny. Na przykład Scala po prostu obsługuje współbieżność w bezpieczniejszy i bardziej naturalny sposób niż Java.
Zgodnie z życzeniem, trochę więcej na ten temat. WRT Java:
- Rekompilacja jest pracochłonna
- Pisanie statyczne może być nieelastyczne i prowadzić do długich czasów refaktoryzacji
- Wdrożenie jest procesem ciężkim
- Składnia Java nie jest naturalnym rozwiązaniem do tworzenia DSL
W tym momencie możesz zadać sobie pytanie: „Jakie wyzwania programistyczne mieszczą się w tych warstwach? Który język (języki) powinienem wybrać? ”, Pamiętaj, że nie ma srebrnej kuli, ale mam pewne kryteria, które możesz wziąć pod uwagę przy ocenie swoich wyborów.
Specyficzne dla domeny
- Kompilacja / ciągła integracja / ciągłe wdrażanie
- Dev-ops
- Modelowanie wzorca integracji korporacyjnej
- Modelowanie reguł biznesowych
Dynamiczny
- Szybkie tworzenie stron internetowych
- Prototypowanie
- Interaktywne konsole administracyjne / użytkownika
- Skrypty
- Test Driven Development / Behavior Driven Development
Stabilny
- Kod współbieżny
- Pojemniki do aplikacji
- Podstawowa funkcjonalność biznesowa
Zacznij od małego modułu niskiego ryzyka (pamiętaj, że te języki JVM często pięknie współdziałają z istniejącym kodem Java) lub projektu. Wyjaśnij, że będzie to prototyp wyrzucany.
Upewnij się, że zapoznałeś się z cyklem życia programowania i aspektami narzędziowymi dla tego języka. Będziesz chciał upewnić się, że możesz TDD, uruchamiać narzędzia do budowania i ciągłą integrację, mieć potężne wsparcie IDE i wszystkie inne czynniki. W przypadku niektórych języków wystarczy zaakceptować fakt, że niektóre narzędzia nie istnieją lub są bardzo podstawowe. Siła programisty i wsparcie dla narzędzi może przewyższać siłę języka.
Upewnij się, że istnieje aktywna społeczność, która może pomóc Twojemu zespołowi, gdy utknie. Lokalne grupy użytkowników są do tego jeszcze lepsze.
Upewnij się, że programiści przechodzą wstępne szkolenie językowe, szczególnie jeśli język nie jest językiem OO (przejście do Clojure nie jest trywialne).
To chyba tyle. Osobiście z powodzeniem korzystałem z Groovy, Scali i Clojure wraz z Javą do takich zadań, jak przetwarzanie XML, budowanie szybkich stron internetowych i robienie niektórych danych.