Functional Java和Guava之间有很好的比较吗?
我想在我将要教授的课程中使用功能Java或Guava(或者不太可能是Scala)。虽然有很多函数式语言可以在JVM上运行,但我想坚持使用尽可能像Java的东西,即在概念上和语法上与Java 8中预期的功能特性最兼容的东西。
看起来Prompical Java和Guava是最好的候选者。我无法找到任何在功能,易用性,与直接Java的概念接近等方面比较它们的东西。有谁知道这些库之间有很好的比较吗?
我想在我将要教授的课程中使用功能Java或Guava(或者不太可能是Scala)。虽然有很多函数式语言可以在JVM上运行,但我想坚持使用尽可能像Java的东西,即在概念上和语法上与Java 8中预期的功能特性最兼容的东西。
看起来Prompical Java和Guava是最好的候选者。我无法找到任何在功能,易用性,与直接Java的概念接近等方面比较它们的东西。有谁知道这些库之间有很好的比较吗?
Guava的目标不是在Java中提供功能性习语。从功能解释番石榴维基页面:
过度使用Guava的函数式编程习语会导致冗长,混乱,不可读和低效的代码。这些是迄今为止最容易(也是最常见)被滥用的番石榴部分,当你用荒谬的长度让你的代码“一行”时,番石榴团队会哭泣。
请注意,在使用番石榴的功能实用程序时,传统的命令式做事方式不是更具可读性。试着把它写出来。那有那么糟糕吗?这是否比你即将尝试的荒谬笨拙的功能方法更具可读性?
过于依赖函数式习语在Java 7之前没有太多意义,因为开销太高(参见垂直问题)。Java 8将改变这一点,这将改变Java库和程序在细节层面上的设计方式。在 Java 中最多 7 有意义的东西在 Java 8 中会受到一定程度的阻碍。这将激发新版本的 Effective Java 和许多新的 API。
如果你想教函数式编程,最好坚持(或多或少)纯函数式语言。每一种与FP和OOP混杂(或模拟)的语言都会分散注意力。
如上所述,Guava只是一个Java库 - 一个Java 5兼容库,甚至(截至第11版)。Guava在函数式编程上的位置由Kevin Bourrillion总结:
“语法很糟糕。与此同时,这些东西现在,一直都是,并且将永远只是一个权宜之计,直到正确的语言变化能够出现,那时我们终于可以真正决定最佳语法,并让函数式编程开始真正使Java中的生活变得更好。所以我还没有决定在函数/谓词方面投入多少精力;它在图书馆里更多是因为它必须如此,而不是因为我们认为它是皇冠上的明珠。