Java8新引进的Lambda表达式其实不像Scala中的Lambda那末壮大,它仅仅触及了Lambda的外相。比方,并非一切函数都能够作为一等元素(first-class)传进其他函数中,函数必需被显式地界说为Lambda表达式大概利用函数式接口。在汇合操纵方面,借助于新的java.util.stream包,开辟职员能够在一些Java汇合上编写函数式作风的操纵,这和Scala中的办法相似,可是后者更简便、范例更准确。Java和Scala之间仍然有很年夜的差异,Java其实不会酿成一门函数式言语,它的方针是企业,同时要包管安定的向后兼容性;而Scala的方针则是多核软件开辟。Java8向前迈出了巨大的一步,这一点让良多人都十分镇静,乃至关于Scala程序员也是云云,可是它的方针并非“干失落”Scala,现实上,这二者应当是一种互补的干系。
Scala在计划上就是函数式,而Java则是被扩大成函数式,在函数式的纯度上这两门言语就纷歧样,我以为Java8是不是可以获得乐成很年夜水平上取决于JDK的完成情形。假如JDK8安定且凝结性高,那末对Scala而言一定会形成伟大的打击。假如仅仅必要进修一些新的语法就可以使用和其他言语类似的语法及特征,那保持本人熟习的言语往进修一门新言语的来由是甚么呢?
Java不成能替换Scala。起首Scala开辟十分活泼,计划明晰,方针明白。JDK的开辟则对照停止。很明显,关于Oracle而言定时托付一个新的JDK仿佛有一些贫苦。以是,我团体对JDK8在2014年可否包括之前答应的一切特征持嫌疑立场。而就Scala而言,假如统统停顿顺遂,那末我们能够在往年见到Scala2.11,该版本会办理良多使人厌恶的成绩。其次,JDK类库在计划上就有一些缺点,要成为一门真实的函数式言语必需要办理这些缺点,比方汇合框架。再就是Java相对良多其他的言语太甚于拢沂褂Java开辟了12多年的企业使用,而利用Scala才两年,可是我其实不想回到已往。固然Java生态体系十分优异,JVM也十分巨大,可是Java作为一门言语已有点过期了。
我以为Java8的函数式功效太少,来得也太迟了。固然这的确是一个改善,可是间隔Scala仍然很远。那些真正在意这些功效的开辟职员早就转向了其他的函数式言语。Java8的确会为Java开辟职员带来函数式编程的认识,可是一部分隔发职员希冀取得更多的特征,而另外一部分则基本不在意。
思索到Java7给我们带来的劫难,同时鉴于Java8仅完成了闭包的一部分而其他部分将会在Java9中完成,我以为Scala基本没需要忧虑。就是在今天我们不能不将一台新呆板从Java7回退到Java6,缘故原由是一些Eclipse插件没法在新版本上事情。Java8大概会是多数人利用(绝对而言)的一门优异言语。
欢迎光临 仓酷云 (http://ckuyun.com/) | Powered by Discuz! X3.2 |