Поскольку Guava - это скорее библиотека общего назначения, в которой, как оказалось, имеются функциональные идиомы, а функциональная Java предназначена исключительно для реализации функциональных идиом в Java, функциональная Java звучит как более подходящая, возможно, с более полным набором FP-подобных функций.
С другой стороны, я предпочитаю Guava , потому что это более универсальное назначение, и поэтому я использую несколько функций, не связанных с функциональными идиомами.
Одна из проблем с обеими библиотеками (как отмечено в вики Guava в вышеупомянутых постах) - это «вертикальный шум» анонимных внутренних классов для ваших функциональных объектов.Еще одна библиотека, которая пытается исправить это с помощью аннотаций и APT: Jedi .
Еще один подход, который делает любую из перечисленных выше библиотек (Guava, FJ или Jedi) менее шумной без аннотаций:библиотека, которую я написал, Funcito , вдохновленная синтаксисом Mockito.Он более ограничен в том, что он может упростить на этом этапе, по сути, заключая в себе одиночные вызовы методов, но это то, чем я сейчас занимаюсь в большинстве случаев.