与其他专业团队成员一样,我是采用OpenJDK的成员之一,但是从最近8个月开始加入,我们经历了Java SE 8 开发,编译,编码,讨论等各个阶段,直到将其付诸实践为止。 。 它于2014年3月18日发布,现在可供您使用。
我很高兴宣布本系列“ Java SE 8新功能之旅 ”,我将在其中编写示例,以简化Java SE 8知识的获取,开发经验,新功能以及将利用您的知识的API,增强您的编码方式,并提高生产率。 希望您喜欢它,就像我在编写时一样。
我们将浏览Java SE 8(项目和API)中的新主要和重要功能,该平台旨在支持更快,更轻松的Java开发。 我们将学习Project Lambda ,这是一种支持Java代码中lambda表达式的新语法。
检查新的Stream API以处理集合并管理并行处理。
使用DateTime API计算时间跨度,以表示,管理和计算日期和时间值。
除了Nashorn之外,新的引擎还可以更好地支持Java虚拟机使用JavaScript代码。
最后,我还将介绍一些鲜为人知的功能,例如将字符串连接到列表的新方法,以及其他将在日常任务中为您提供帮助的其他功能。
有关Java SE 8功能和教程的更多信息,我建议您也参考Java教程官方网站和Java SE 8 Java API文档 。
我们将在本系列中讨论的主题包括:
- 安装Java SE 8,注意事项和建议。
- 引入Java SE 8的主要功能后,变化很大。
- 使用lambda表达式和方法引用。
- 使用流遍历集合。
- 使用新的DateTime API计算时间跨度
- 使用Nashorn从Java运行JavaScript。
- 其他新功能和API更改。
-
安装Java SE 8,注意事项和建议。
-
在Windows上安装Java SE 8
为了在Microsoft Windows上运行Java SE 8,请首先检查您拥有哪个版本。 Windows 8、7,Vista和XP支持Java SE 8。 具体来说,您将需要这些版本。 对于Windows 8或8.1,您需要Windows的桌面版本。 不支持Windows RT。 您可以在任何版本的Windows 7以及最新版本的Windows Vista和Windows XP上运行Java SE 8。 在基于Server的Windows版本上,您可以运行2008和64位版本的2012。如果要在Java Applet上运行,则需要64位浏览器,这些浏览器可以包括Internet Explorer 7.0及更高版本,Firefox 3.6和更高版本。以上版本以及Windows上支持的Google Chrome,但Mac上不支持。您可以从以下网址下载Java SE 8的Java开发者工具包:
- URL java.oracle.com它将带您到当前的Java主页。
- 单击Java SE。
- 在热门下载下。 然后单击Java 8的下载链接。
-
在Mac上安装Java SE 8
为了在Mac OS X上使用Java SE 8,必须具有运行Mac OS X 10.7.3的基于Intel的Mac,即Lion或更高版本。 如果您使用的是Mac的旧版本,则将无法编程或运行Java 8应用程序。 为了安装Java SE 8,您需要在Mac上具有管理权限。 为了在浏览器中运行Java applet,您需要使用Safari或Firefox之类的64位浏览器.Google Chrome是32位浏览器 ,并且不能用于此目的 。 Windows上的SE,同一网站上有MAC OS .dmg版本可供下载和安装。 实际上包含所有操作系统版本。 但是,我们的重点是Windows和MAC。
现在,您可以在Windows和MAC OS X平台上开始使用Java SE 8进行编程了。
大概安装了Java SE 8之后,让我们深入了解第一点,并简要地了解一下Java SE 8的主要功能,以开始我们最喜欢的IDE的编码之旅。
-
-
引入Java SE 8的主要功能后,变化很大。
JSR 337:Java SE 8发行内容概述
Java SE 8是Java编程语言和Java虚拟机的主要发行版。 它包括许多更改。 有些文章比Lambda表达式等文章有更多的报道,但是我将同时讨论主要变化和一些次要变化。
JSR 335:Lambda表达式
可能最受关注的是Project Lambda,这是一组新的语法功能,可让Java开发人员充当函数程序员。 这包括lambda表达式,方法引用和其他一些功能。
JSR 310:日期和时间API
有一个用于管理日期和时间的新API。 替换旧的类。 这些较旧的类仍在Java Runtime中,但是在构建新应用程序时,您可能希望移至这套新功能,这些功能可以简化代码并更加直观地编程。 有一些新类可以管理本地日期,时间和时区,以及计算不同时间之间的差异。
流API
添加了用于管理集合的新工具,包括列表,地图,集合等。流允许您处理集合中的每个项目,而无需编写明确的循环代码。 它还使您可以将处理分为多个CPU。 因此,对于大型,复杂的数据集,您可以看到显着的性能提升。
纳斯霍恩项目
Nashorn JavaScript引擎也是Java SE 8的新功能。 这是一个全新JavaScript引擎,从头开始编写,可以使用JavaScript进行编码,但可以集成Java类和对象。Nashorn的目标是在Java中使用本机JVM实现轻量级高性能JavaScript运行时。 该项目旨在使Java开发人员能够通过JSR-223在Java应用程序中嵌入JavaScript,并使用jrunscript命令行工具开发独立JavaScript应用程序。在有关Nashorn的文章中,我将介绍如何从命令行运行Nashorn代码。 还有如何在单独的文件中编写JavaScript,然后从Java代码执行这些文件。
并发API增强。
并发框架也有增强,使您可以管理和累积多个线程中的值。 还有很多较小的变化。
字符串,数字有新工具
在字符串类和其他新类中,有一些用于创建分隔列表的新工具。 有一些用于汇总数字的工具,包括整数,双精度数,双精度数等等。
其他新功能
还有一些工具可以更好地检测空情况,我将在本系列中介绍所有这些工具。
我将介绍如何使用新的便捷方法来处理文件。
那么,Java SE 8何时可用?
答案是,现在。 它于2014年3月18日发布。对于使用Java构建客户端站点应用程序的开发人员,JavaFX富互联网应用程序框架现在支持Java 8。 而且大多数Java企业版供应商也都支持Java 8。 是否立即迁移到Java SE 8取决于您正在处理的项目类型。
对于许多服务器和客户端站点应用程序,它立即可用。
尚不支持Android。
Android开发人员要当心; 目前,Android不支持Java SE 8语法和API。
直到最近,Android才采用了一些最新的Java 7语法。 因此,Android可能需要一些时间才能支持此最新语法或最新API。 但是对于所有其他Java开发人员来说,值得一看的是这些新功能。
那IDE呢?
所有主要的Java开发环境都支持Java SE 8。 包括Oracle的Netbeans , Intellij Idea和Eclipse 。 在本系列中,我将使用Netbeans版本8在Netbeans中进行所有演示,可以从https://netbeans.org/downloads/下载。
但是,在开始研究本系列之前,让我们先检查一下,我们可能已经安装了Java SE 8,并在Netbeans下启动了一个新项目,该项目将包含我们将要编写的所有代码。 然后开发一个lambda代码来测试我们的项目是否可以在Java SE 8中正常工作。
或者,您可以从我的Github帐户下载系列源代码,使用Netbeans打开它,然后按照我接下来显示的内容以及即将发布的系列代码进行操作。
Github上的项目: https : //github.com/mohamed-taman/JavaSE8-Features
带有Lambda表达式的Java SE 8上的Hello world应用程序。
步骤(如果浏览我的代码,则不需要):
- 打开NetBeans 8 –>从文件–>新建项目–>从左侧,然后选择Maven –>从右侧,然后选择Java应用程序 –>单击下一步。
- 请遵循以下屏幕截图变量定义,或更改为您喜欢的名称和值–>然后单击“完成”。
- 如果一切正常,则在项目导航器上应具有以下结构:
- 单击项目“ Java8Features” –>单击“ 文件” ,从上层菜单–>然后单击“ 项目属性” 。
- 在类别 ->从左侧选择Source ,然后检查“ Source / Binary format”是否为1.8。 –>从左侧打开Build ,然后选择Compiler ,然后检查“ Java Platform”是否指向您当前的JDK 8安装–>单击“ 确定” 。
- 如果没有JDK 8,则转到工具 –>选择, Java平台 –> 添加平台 –>然后选择Java标准版 –>然后指向已安装的JDK 8。
- 现在我们的项目已配置为可与Java 8配合使用,因此让我们添加一些Lambda代码。
- 在“ eg.com.tm.java8.features”包上,右键单击,然后从菜单“ –eg.com.tm.java8.features.overview”下的菜单中选择“ 新建” ->“ Java接口” ->“将其命名为可打印 ”。单击完成 。
- 实现Printable接口,如下所示:
/** Copyright (C) 2014 mohamed_taman** This program is free software: you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation, either version 3 of the License, or* (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.** You should have received a copy of the GNU General Public License* along with this program. If not, see <http://www.gnu.org/licenses/>.*/package eg.com.tm.java8.features.overview;/**** @author mohamed_taman*/ @FunctionalInterface public interface Printable {public void print(); }
- 在同一程序包上添加以下名为“ Print”的类,其主要方法如下:
/** Copyright (C) 2014 mohamed_taman** This program is free software: you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation, either version 3 of the License, or* (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.** You should have received a copy of the GNU General Public License* along with this program. If not, see <http://www.gnu.org/licenses/>.*/package eg.com.tm.java8.features.overview;import static java.lang.System.out; /**** @author mohamed_taman*/ public class Print {public static void main(String[] args) {Printable job = ()-> out.println("Java SE 8 is working "+ "and Lambda Expression too.");job.print();}}
- 右键单击Print class并选择Run 。 如果一切正常,那么您应该看到以下输出。
------------------------------------------------------------------------ Building Java8Features 1.0-SNAPSHOT ------------------------------------------------------------------------ --- exec-maven-plugin:1.2.1:exec (default-cli) @ Java8Features --- Java SE 8 is working and Lambda Expression too. ------------------------------------------------------------------------ BUILD SUCCESS
- 祝贺您的Java SE 8项目运行良好,让我们解释一下我们编写的内容。
这些代码大多数都可以在Java 7上运行 ,但是Java SE 8中在此处添加了一个注释,即FunctionalInterface 。 如果未正确为Java 8配置Netbeans环境,则此注释将导致错误,因为它不会被识别为有效的Java代码。 我没有看到任何错误,因此这很好地表明Eclipse正在按我的期望工作。
接下来,我将打开名为Print.java的此类定义。 这是具有主要方法的类,因此我可以将其作为控制台应用程序运行,并且它具有新的Java 8语法的关键行。
它正在创建一个功能接口的实例,我刚刚使用lambda表达式向您展示了,该表达式是Java在Java 8之前不存在的一种语法样式。我将在下一篇文章的早期部分解释这种语法的作用。
但是,您现在只需要知道,如果这段代码没有引起任何错误,那么Netbeans就会再次将其识别为有效的Java语法。 我正在创建该接口的实例,然后调用该接口的print方法。 因此,我将运行代码。
我将单击工具栏上的“运行”按钮,然后在控制台中看到成功的结果。 我创建了一个对象,它是使用lambda表达式的该接口的实例。 我已经调用了它的方法,并将其输出到控制台。 因此,如果一切正常,那么您的状态就很好。 您已经准备好开始在Netbeans中使用Java SE 8进行编程。 如果您在使用过程中遇到任何问题,请返回之前的步骤并逐步进行操作。 一次一步 。
资源:
- Java教程,Lambda表达式
- JSR 310:日期和时间API
- JSR 337:Java SE 8发行内容
- OpenJDK网站
- Java平台,标准版8,API规范
翻译自: https://www.javacodegeeks.com/2014/06/java-se-8-new-features-tour-the-big-change-in-java-development-world.html