Зависит от того, что вы подразумеваете под «достаточно зрелым для реального корпоративного продукта», и от вашего относительного уровня терпимости для жизни на переднем крае.
Например, в настоящее время я создаю «реальный»- продукт мирового уровня »в Clojure (я был бы в равной степени доволен Scala, только Clojure немного лучше соответствовал моим потребностям с точки зрения параллелизма и метапрограммирования).
Я очень доволен своим решением.
Некоторые краткие перспективы, если вы рассматриваете этот «пост-Java» путь:
Сообществавелики и полезны, но вам все равно придется решать проблемы самостоятельно, хотя бы потому, что никто больше не сталкивался с такой же проблемой.Ни один из них, вероятно, не будет непреодолимым, но он представляет некоторый дополнительный риск для графиков доставки.
И Scala, и Clojure могут быть очень продуктивными (с точки зрения стоимости, предоставляемой клиентам за час кодирования), но вы можете одинаково хорошо писать плохой и не поддерживаемый код в любом языке.Java в значительной степени заставляет вас писать вещи стандартизированным, несколько многословным, но синтаксически простым и понятным способом.С Scala и Clojure вы получаете целый новый арсенал сумасшедших способов поразить цель или выстрелить себе в ногу.Сможет ли ваша команда наилучшим образом использовать преимущества Scala / Clojure?
Труднее (хотя отнюдь не невозможно) привлечь на борт опытных людей с существующими навыками Clojure / Scala.С другой стороны, люди, которые обладают этими навыками (или стремятся приобрести их), скорее всего, будут одними из наиболее талантливых / мотивированных разработчиков, поэтому поиск все еще может быть продуктивным.
Будьте готовы принять жесткие решения относительно того, следует ли ориентироваться на языковые / библиотечные функции, которые «только за углом».Например, вы ждете, когда улучшенная примитивная поддержка появится в Clojure 1.3?Или обойтись с совершенно адекватными, но более медленными примитивными функциями в штучной упаковке в Clojure 1.2?
Большим преимуществом использования JVM является то, что вы все равно можете в полной мере использовать экосистему Java безпривязан к Java как к языку.Не стоит недооценивать, насколько это полезно: например, я использую несколько чрезвычайно хорошо протестированных, зрелых библиотек Java (например, Netty ), довольно прозрачно в моем приложении Clojure.Это значительно снижает ваш риск и количество новых разработок, которые вам нужно сделать.