ava 8是挤满了一些真正令人兴奋的特性在JVM和语言水平。虽然这个版本最初设想的一些特性得到了作用域或推动释放9日确实有很多新特性。许多新增加的底层的改进在编译器,JVM或help-system水平。这样,虽然我们可能受益于他们。说了这么多,让我们来看看java8的5大特性,我们认为是绝对必须让你知道。 5 r4 u# P' a2 z5 d ]' A8 `6 y; A9 o
Java 8的五大特性,将改变你的代码之路: s5 |/ ^& ^1 U8 y, T% j6 \
2 l Q, D4 I1 F r9 f% g1 、 Lambda表达式
1 y+ {- ~) X" x9 r1 c5 T4 | 8 z0 K+ Y; o) b
即使我们真的不想在这里成为主流,但毫无疑问,从开发人员的角度来看, Java的8最显着特征是Lambda表达式的新的支持。这除了语言的Java带来了函数式编程的最前沿,在那里与其他功能的基于JVM的语言,如Scala和Clojure的。
, N, v" J8 K1 `/ s. n. } k0 h& y/ Z; f3 I% k& Y
我们之前研究过的Java如何实现的Lambda表达式,以及它是如何比较采取斯卡拉的方法。从Java的角度来看,这是迄今为止最大增加的语言在过去十年中的一个。0 h+ I+ C$ y# M( k- r
4 U5 A e) I6 |/ g% o 9 V) x h& p' T
至少,它建议你熟悉lambda语法,特别是因为它涉及到数组和集合操作,其中lambda表达式已经紧密集成到核心语言库。它极有可能,你会开始看到越来越像下面两个第三方的片段,并在您的组织代码的代码。
" [# _, O$ ?5 _5 m% X
" [6 j$ Y: V$ K; E由特定的类字段的值分组的集合的一个漂亮的有效途径。
W! X: T. d& h# H
+ A: p9 s5 I% o( T0 x, W8 y2 b0 P2 、并行操作1 {7 ^$ s" M1 E& m8 j
1 n) ]+ ^+ x8 W- H( D4 M8 U
与另外Lambda表达式的数组来操作,引入了Java的一个关键概念到内部迭代的语言。本质上作为开发人员,我们已经习惯了使用循环操作作为最基本的编程风格之一,正确的在那里与if和else 。5 x7 B$ C1 d1 R; k' F0 x6 V
# @7 S4 w1 r; k# _9 O: ~- P1 r
Lambda表达式的推出开启了范式各地,与实际迭代上一个lambda函数应用现在由核心库本身(即内部迭代)的集合。
1 `. K0 A5 E/ A* ]2 m; K X
7 M: I; z6 \. Q7 z9 D你可以认为这是迭代器从哪里要对其执行操作的集合中提取的下一个项目的实际操作是通过一个迭代器的一个扩展。一个令人兴奋的可能性打开了这种设计模式是为了让操作进行了长数组,如排序,筛选和映射,以进行并行的框架。当与服务器的代码,是在连续的基础处理冗长的集合处理,这可能会导致重大的吞吐量改进与相对较少的工作从你的结束。. y- y( I( l% m. x, {9 p
* l4 \: j- Q2 s& C7 J下面是相同的代码段同上,但使用框架的新的并行处理能力 -
) Q4 r7 K1 l+ B+ M% I% Q/ ^
# W9 l$ g0 i% f K2 g# i$ s2 a9 E这是这一切需要,使这个算法运行在多线程一个相当小的变化。& k/ L# ? w, t' }
8 n* b0 F# K7 T: r5 ]3, JAVA + JavaScript的= ❤
% B; A& M# w+ |' s4 i: l
4 @* T2 s. O( `' b' y: ^1 d' `Java的8正在向右其最大的历史错误1 - Java和JavaScript之间不断增长的距离,一个只在过去几年有所增加。有了这个新的发布,Java 8推出了一个完全新的JVM的JavaScript引擎 - 犀牛。这台发动机使得独特的使用了一些在Java 7中引入了诸如invokedynamic的提供JVM级别的速度,以JavaScript执行在那里与V8和的SpiderMonkey的喜欢的新功能。+ d) |3 W1 o! R: j/ W* b, h' h2 \
/ W) m$ ~# [" x u1 N) \* g
这意味着下一次你正在寻找的JS整合到后端,而不是建立一个node.js的实例,你可以简单地使用JVM来执行代码。这里的好处是让你的Java和JavaScript代码之间的无缝互操作性的进程,而不必使用不同的IPC / RPC方法来弥补缺口的能力。
: A) I [# k# | \- |' E2 M: L; H# } $ q' G2 r; x J5 K1 \4 Z8 \; m
4、新的日期/时间API的
! @4 L+ o+ D5 u& A- X, o1 H 8 s9 Q5 h" ~0 i' T+ F
在目前的原生Java类库API的复杂性一直是疼痛的原因为Java开发人员多年。乔达时间已经填补这一真空多年,与Java 8 。该清早起来就一个直接的问题是,为什么没有Java的8采用乔达作为其原生的时间框架。因为什么被认为是一个设计缺陷乔达,爪哇8从头开始实施自己的新的日期/时间API 。好消息是,不像Calendar.getInstance ( ) ,新的API在设计时头脑简单,和清除操作,以在人类可读和机器时间格式上的操纵值操作。
$ U, [$ m5 i1 }- _5 w2 Q
' v! j: [ Y. `4 h5、并发蓄电池
5 I: k- s9 y( e
7 w" i2 m, i% v$ B; s其中一个在并发编程中最常见的情况是更新由多个线程访问的数字计数器。已经有许多成语来做到这一点,多年来,从同步块(其引入竞争的高层次)开始,到读/写锁AtomicInteger ( S) 。而最后的是更有效的,因为它们直接依赖于处理器的指令发布,他们需要更高程度的了解,才能正确实现所需的语义。 文章来源:http://www.alqsoft.com/xinwenzixun/javakaifa/2014/0416/60.html
" B a4 u* {# W/ V( m$ a |