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。通过观看这些开发者的直播或视频,你可以看到如何应用这些新功能。
Java 8五大主要功能为开发者提供了哪些便利?的更多相关文章
- 微软正式发布VS2015和.Net为开发者提供数百个新功能
今天,我很高兴地向大家宣布:Visual Studio 2015 和 .Net 4.6 的正式版本现已提供下载! 自去年十一月我们提出了微软开发技术的愿景:让所有开发者,无论他在什么平台,开发哪种应用 ...
- JBuss--为所有JFinal开发者提供二次开发的后台管理系统
百度搜索:JBuss 或jfinal.com官网https://www.jfinal.com/share/1704 JBuss背景: 2018年6月1日,作者“为道日损”从上海一家xxx公司离职,那时 ...
- 华为云DevCloud为开发者提供高效智能的可信开发环境
在HUAWEI CONNECT 2019期间,在华为云云服务开发者分论坛上,华为云布道师做了<CloudIDE:开发者的高效.智能的可信开发环境>专题演讲,主要介绍了华为云DevCloud ...
- 关于 HSSF 和 XSSF 功能的开发者入门指南 (Apache POI 操作 Excel)
关于 HSSF 和 XSSF 功能的开发者入门指南 笔者深夜无眠,特此对本文翻译一部分,未完成部分待后续更新 本文源文地址 意欲使用 HSSF 和 XSSF 功能快熟读写电子表格?那本文就是为你而写的 ...
- Java 基本数据类型 sizeof 功能
Java 基本数据类型 sizeof 功能 来源 https://blog.csdn.net/ithomer/article/details/7310008 Java基本数据类型int 32b ...
- Java实现发邮件功能---网易邮箱
目录 Java实现发邮件功能 前言 开发环境 代码 效果 结束语 Java实现发邮件功能 前言 电子邮件的应用场景非常广泛,例如新用户加入,即时发送优惠清单.通过邮件找回密码.监听后台程序,出现异常自 ...
- Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比
Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比: Unix/Linux (Bash) Windows(MS-DOS) Java 进入目录 cd cd - 创建 ...
- ElasticSearch7.3学习(三十)----ES7.X SQL新特性解析及使用Java api实现sql功能
一.ES7 sql新特性 1.1 数据准备 创建索引及映射 建立价格.颜色.品牌.售卖日期 四个字段 PUT /tvs PUT /tvs/_mapping { "properties&quo ...
- 微软发布独立Android模拟器 为开发者提供测试
微软发布了 Visual Studio 2015 正式版,除了免费的社交版之外,另外也有付费的专业版.这套工具除了提供 Windows 应用程序的整合环境之外,你也可以利用它来开发 Android 程 ...
随机推荐
- ASP.NET路由模型解析
大家好,我又来吹牛逼了 ~-_-~ 转载请注明出处:来自吹牛逼之<ASP.NET路由模型解析> 背景:很多人知道Asp.Net中路由怎么用的,却不知道路由模型内部的运行原理,今天我就给大家 ...
- Partition:Partiton Scheme是否指定Next Used?
在SQL Server中,为Partition Scheme多次指定Next Used,不会出错,最后一次指定的FileGroup是Partition Scheme的Next Used,建议,在执行P ...
- Web安全相关(四):过多发布(Over Posting)
简介 过多发布的内容相对比较简单,因此,我只打算把原文中的一些关键信息翻译一下.原文链接如下: http://www.asp.net/mvc/overview/getting-started/gett ...
- bzoj3037--贪心
题目大意: applepi手里有一本书<创世纪>,里面记录了这样一个故事--上帝手中有着N 种被称作"世界元素"的东西,现在他要把它们中的一部分投放到一个新的空间中去以 ...
- [数据结构]——堆(Heap)、堆排序和TopK
堆(heap),是一种特殊的数据结构.之所以特殊,因为堆的形象化是一个棵完全二叉树,并且满足任意节点始终不大于(或者不小于)左右子节点(有别于二叉搜索树Binary Search Tree).其中,前 ...
- EC笔记:第4部分:22、所有成员都应该是private的
EC笔记:第4部分:22.所有成员都应该是private的 更简单的访问 用户不用记得什么时候该带上括号,什么时候不用带上括号(因为很确定的就要带上括号) 访问限制 对于public的成员变量,我们可 ...
- JavaScript 正则表达式语法
定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...
- SCNU ACM 2016新生赛决赛 解题报告
新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...
- 希尔排序(java)
时间复杂度为O( n^(3/2) )不是一个稳定的排序算法 如何看一个算法是否稳定:{("scala",12),("python",34),("c++ ...
- 一步步开发自己的博客 .NET版(4、文章发布功能)百度编辑器
前言 这次开发的博客主要功能或特点: 第一:可以兼容各终端,特别是手机端. 第二:到时会用到大量html5,炫啊. 第三:导入博客园的精华文章,并做分类.(不要封我) 第四:做个插件,任何网站上的技术 ...