За перевод конечно спасибо, но выигрыш при использовании LambdaJ невелик.
Во первых надо себя переучивать думать их категориями (глаз набит на стандартные шаблонны циклов с ифами). Но тут конечно можно старперов лесом отправить.
Во вторых большинство кода уже написано без LambdaJ (помнить два способа обработки расточительно, а поддерживать-переписывать утомительно). Хотя тут все можно отрефакторить (красота в коде это красиво).
В третьих некоторые вещи (оптимально написанный код, который действительно нужен) сделать на LambdaJ — это немного оверхед (конструкция по сложности будет впечатлять не меньше циклов с ифами).
В четвертых отладка станет немного адом, хотя тут очень сильно зависит от специфики кода и программиста.
Плюс к тому производительность, как вы уже упоминали, да и исходный код у LambdaJ не очень…
Не лень когда проект на 1к строк, а когда на 10к, не говоря уже о 100к, то действительно несколько «лениво».
Или предлагаете саппортить код в одном стиле, а писать новый в другом?
Не назвал бы это удачным решением.
Не всегда повышает, увы.
В частности, если ты не знаешь конкретно LambdaJ (хотя и используешь функциональный подход с использованием, допустим, Google Collections), то сходу прочитать, что будет делать тот или иной участок кода, довольно сложно.
Главное — в лиспах не нужно считать скобки, из-за древовидного кода.
Вообще, в языках с замыканиями и функциями первого класса намного проще, понятнее и меньше скобок. Соглашусь с тов. vansickle и посоветую посмотреть Scala.
Без поддержки лямбд самим языком синтаксис смотрится конечно не вполне красиво, лучше уж переходить на Scala если есть желание пользоваться элементами ФП.
Не так лямбды нужны, как.нет-овские expression'ы — именно из-за них.нетовский LINQ есть такой, какой он есть. Чтоб написав «x => x>5» была возможность именно провайдеру проанализировать что от него хотят и построить или SQL-запрос соответствующий или URL или просто перебрать элементы.
LINQ for Java: LambdaJ