Java 8五大主要功能为开发者提供了哪些便利?

两年前当Java 8发布后,立即受到了业界的欢迎,因为它大大提高了Java的性能。它独特的卖点是,顾及了编程语言的每一个方面,包括JVM(Java虚拟机)和编译器,并且改良了其它帮助系统。

Java是被搜索得最多的编程语言之一。据Tiobe 指数在最近公布的调查结果显示,Java高居榜首。Tiobe指数的结果每月更新一次。它的排名是以世界各地的程序员,工程师,以及编程课程和第三方供应商为对象,把这些群体在谷歌、必应、雅虎、维基百科、亚马逊、youTube及百度这些流行搜索引擎上的搜索行为作为依据,统计出各种编程语言被搜索的情况。Tiobe指数不是要比较哪种编程语言是最好的,或者哪些代码被用得最多。它旨在帮助编程人员了解自己所掌握的编程技术是否跟得上潮流。当需要使用某种语言开发一个新软件时,编程人员可以参考这些指数,帮助自己做出决定。

(数据来源:http://www.tiobe.com/tiobe-index/

回到Java 8的问题上来,它有哪些新功能呢?下面列举5个最主要的功能。

1. Lambda expressions (Lambda 表达式)

Lambda表达式是一个匿名函数,它在函数式编程中被广泛使用。即使是基于Java虚拟机的编程语言 Scala和Clojure从一开始就有了Lambda表达式,但直到现在,Java都不支持Lambda表达式,因此在编程时就缺少了一个好方法去写代码。

使用Lambda表达式,开发者可以在任何地方使用函数,它也可以作为代码。在此之前,Java开发者不得不使用带有lambdas的匿名模板类,但这样会令工作变得乏味和难以维护。使用lambda表达式就令工作轻松多了。开发者只需要使用一个用逗号分隔的参数列表或集合就可以了,以及在正文中使用符号“->”。

如果有兴趣了解有关Lambda表达式的使用,可以看一下这位开发者的分享:Livestream Titles

2. JavaScript Nashorn

Java和Javascript一直都是不兼容的,不过Java 8全新的JVM Javascript引擎——Nashorn,可以完全解决这个问题了。

Nashorn在速度执行方面借鉴了SpiderMonkey 和 V8。 它还利用了Java7的特征,例如可以执行得更快的invokeDynamic,并改善了Java早期版本的弊端。更重要的是,开发者现在可以在Java的代码中直接写入JavaScript代码,而不必担心执行速度和任何兼容性的问题。

3. Date/time APIs

Java 8另一个很出色的附加功能是它全新的日期/时间 APIs。它借鉴了Joda time,被开发者用来弥补缺乏的支持。Java API库的属性是复杂的,它很容易令开发者犯错。为了弥补这个问题,Java 8从头开始重写了整个API。重写API的另一个原因是在Joda中有一个设计缺陷。新的APIs具有强大的属性,而且使用简单。

4. Stream API

java 8中的另一个新功能是Stream API,这有赖于Lambda语法。它使开发人员能够处理集合。lambda函数和stream API有助加快Java的函数式编程效率,并帮助开发人员编写更有意义的代码。

Stream API可以让开发者轻松地使用集合和操控它们,例如进行计算,过滤等。另外,lambda函数可以帮助开发者写一些比较简单的代码。只不过要小心不要混淆了Stream API 与InputStream和OutputStream。

5. Concurrent accumulators并行累加器

对开发者来说,在工作中遇到的巨大挑战之一就是如何安全地运行代码线程。一般的开发人员可能无法正确地实现线程安全,因为有太多的情况需要注意,包括需要更新多个线程访问的数字计数器。

用java 8,开发者可以利用并行累加器的class,它使开发者能够以线程安全的方式有效处理计数器。

Java 8似乎让Java找回了在过去几年里失去的荣誉。这些全新的功能将令开发者写出高质量的代码,并令java在众多编程语言中保持竞争优势。

除了以上提到的5大功能,Java 8还有其它新功能也是值得大家学习和交流的。在Livecoding.tv ,一个世界各地程序员分享编程直播和进行交流的社交平台上,就有很多项目是使用java开发的,其中有部分就是使用了java 8。通过观看这些开发者的直播或视频,你可以看到如何应用这些新功能。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏斑斓

一个完整的TDD演练案例(一)

实现猜数字的游戏。游戏有四个格子,每个格子有一个0到9的数字,任意两个格子的数字都不一样。你有6次猜测的机会,如果猜对则获胜,否则失败。每次猜测时需依序输入4个...

1983
来自专栏程序员互动联盟

为什么这么多人学不会C语言?

很多人觉得用C语言作为入门语言觉得太难了,里面还有指针,回调,递归之类的操作太难了。为什么这么多人觉得C语言难?笔者根据从业十几年的经验尝试着分析一下。 ? 第...

4046
来自专栏机器学习算法与Python学习

Python高居顶级编程语言交互排行榜第一,你要做些什么呢?

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 IEEE Spectrum 发布了2...

3146
来自专栏java工会

你连java成长史都不了解,谈什么java学习技巧!

1356
来自专栏老九学堂

如何给程序中的变量起个好名字?7个建议让你取对变量名~

新手程序员总是把大量的时间用在学习编程语言上,学习语法,技术和开发工具,他们认为如果掌握了这些就是一个优秀的程序员。

3493
来自专栏木宛城主

敏捷团队的规范与准则

1.序言 打造一个金诚所至的敏捷团队,需要大家自发的来遵守以及完善相应的规范。大家在自我约束的前提下,彼此之间互相影响,由下而上推动团队的建设。所以规矩、准则...

2649
来自专栏带你撸出一手好代码

程序员眼中的正则表达式

写程序时,很多时候就是在跟字符串打交道,用户输入的内容是字符串, 响应用户的输出也是字符串。 假如程序是基于http的web应用, 那所有动态的数据除了多媒体数...

3727
来自专栏编程之旅

《代码整洁之道》读书小结

最近晚间的加班暂时暂停了,大概已经整整一个月每天焦头烂额的写着业务代码,被各种逻辑搞的整个人都不大好了,好在是写的差不多了。

3033
来自专栏技术沉淀

Pandas QQ聊天记录分析

1813
来自专栏程序员八阿哥

自学Python去面试,月薪为何仅3K?面试官问题解析!

很多人认为Python语言简单(实际真的那么简单吗?语法简洁不代表容易学),都去自学Python编程语言,然后寻思出去找一份好的工作,其中学生居多。所以这套面试...

820

扫码关注云+社区

领取腾讯云代金券