4. 该如何拯救你,Jagsaw?
  Jigsaw项目的目标是使Java模块化,将JRE分拆成可以相互操作的组件。这背后主要的动机是渴望有一个更好、更快、更强大的Java嵌入式。我试图避免提及“物联网”,但我还是说了。减少JAR的体积,改进性能,增强安全性等等是这个雄心勃勃的项目所承诺的。
  但是,它在哪呢?Oracle的首席Java架构师, Mark Reinhold说:  Jigsaw,通过了探索阶段 ,近才进入第二阶段,现在开始进行产品的设计与实现。该项目原本计划在Java8完成。现在推迟到Java9,有可能成为其主要的新特性。
  提醒:如果这正是你在等待的, Java9应该在2016年间发布。同时,想要密切关注甚至参与其中的话,你可以加入到这个邮件列表。
  5. 那些仍然存在的问题
  受检异常
  没有人喜欢繁琐的代码,那也是为什么lambdas表达式那么受欢迎的的原因。想想讨厌的异常,无论你是否需要在逻辑上catch或者要处理受检异常,你都需要catch它们。即使有些永远也不会发生,像下面这个异常是永远也不会发生的:
  try {
  httpConn.setRequestMethod("GET");
  }?catch (ProtocolException pe) { /* Why don’t you call me anymore? */ }
  原始类型
  它们依然还在,想要正确使用它们是一件很痛苦的事情。原始类型导致Java没能够成为一种纯面向对象语言,而移除它们对性能也没有显著的影响。顺便提一句,新的JVM语言都没有包含原始类型。
  运算符重载
  James Gosling,Java之父,曾经在接受采访时说:“我抛弃运算符重载是因为我个人主观的原因,因为在C++中我见过太多的人在滥用它。”有道理,但是很多人持不同的观点。其他的JVM语言也提供这一功能,但是另一方面,它导致有些代码像下面这样:
  javascriptEntryPoints <<= (sourceDirectory in Compile)(base =>
  ((base / "assets" ** "*.js") --- (base / "assets" ** "_*")).get
  )
  事实上这行代码来自Scala  Play框架,我现在都有点晕了。
  提醒:这些是真正的问题么?我们都有自己的怪癖,而这些是Java的怪癖。在未来的版本中可能有会发生一些意外,它将会改变,但向后兼容性等等使得它们现在还在使用。
  6. 函数式编程–为时尚早
  函数式编程出现在java之前,但是它相当的尴尬。Java8在这方面有所改善例如lambdas等等。这是让人受欢迎的,但却不如早期所描绘的那样变化巨大。肯定比Java7更优雅,但是仍需要努力增加一些真正需要的功能。
  其中一个在这个问题上激烈的评论来自Pierre-yves Saumont,他写了一系列的文章详细的讲述了函数式编程规范和其在Java中实现的差异。
  所以,选择Java还是Scala呢?Java采用现代函数范式是对使用多年Lambda的Scala的一种肯定。Lambdas让我们觉得很迷惑,但是也有许多像traits,lazy evaluation和immutables等一些特性,使得它们相当的不同。
  提醒:不要为lambdas分心,在Java8中使用函数式编程仍然是比较麻烦的。