Java SE 8 新特性之旅 : Java开发世界的大变动

我很自豪的成为了adopt-OpenJDK的一员,像其他专业团队成员一样,但是我只刚加入了8个月,我们一同经历了Java SE 8 的开发、编译、编码、讨论……等等,直到JDK上线。Java SE 8发布于2014年3月18日,现在可供下载使用。

我很高兴发布这一系列“Java SE 8 新特性之旅”,我会写一些例子来简化Java SE 8知识的获取、开发经验、新特性和API,然后

利用你的知识,提高你的编码能力,同时提高你的生产力。我希望你能像我写文章一样享受它。

我们将游览Java SE 8(项目和APIs)中的重要特性,平台设计支持更快、更简单的Java开发。我们会学到Lambda项目,一种在Java

代码支持Lambda表达式的新语法。了解用来处理集合和管理并行处理的新的Stream API。用代表、管理和计算日期和时间值的DateTime API来计算时间间隔。

还有Nashorn,一个新引擎,有了它,Java虚拟机可以更好的支持JavaScript代码的使用。

最后,我还会涉及到一些很少有人知道的特性,比如把strings加入到lists中的新方法和其他更多的能够帮你处理日常任务的特性。

想要获取更多的Java SE 8特性和指南,我建议你参考http://docs.oracle.com/javase/tutorial/官方网站和Java SE 8 Java API 文档。

在这个系列中我们涉及的主题包含:

1.安装Java SE 8,注意事项和建议。

2.介绍Java SE 8 主要特性,大的改动。

3.使用lambda表达式和方法参考。

4.用streams遍历集合。

5.用新的DateTime API计算时间间隔。

6.在Java里面用Nashorn运行JavaScript。

7.其他的新特性和API变动。

1.安装Java SE 8,注意事项和建议

1)在Windows上安装Java SE 8

为了在微软Windows系统上运行Java SE 8,首先要检查你的Windows系统版本。Java SE 8 支持windows8,7,Vista和XP。

如果你想要运行Java Applets,你需要一个64位的浏览器,包含IE 7以上、Firefox3.6以上版本和支持Windows的谷歌浏览器,而不是

在Mac上的。你能下载Java SE 8的JDK从:

1.地址java.oracle.com,显示Java主页。

2. 点击Java SE。

3. 在TOP Downloads下,点击Java 8的下载链接。

2)在Mac上安装Java SE 8

为了在Mac OS X上运行Java SE 8,你必须有一个基于Intel的Mac并且运行Mac OS X 10.7.3,版本Lion或更高。如果你是Mac的老版本,你不能在其上编程来运行Java 8应用程序。为了安装Java SE 8 你需要Mac电脑的管理员权限。并且为了在浏览上运行Java Applets,你需要一个64位的浏览器,比如Safari或者Firefox。谷歌浏览器是32位的,不能运行Java Applets。和先前在Windows上安装Java SE的描述一样,一样的网站下载MAC OS版的 .dmg文件来安装。实际上这个页面包含了所有支持的操作系统的版本。然而

我们的焦点还是Widnows和Mac。

现在在Windows和MAC OS X平台上,你已经准备好开始用Java SE 8编程了吧。

在我们安装完Java SE 8之后,让我们投入第一点,简单的看一下Java SE 8的主要特性,在我们最爱的IDE上开始编程之旅。

2.介绍Java SE 8 主要特性,大改动

JSR 337概述:Java SE 8 发布内容

Java SE 8是Java编程语言和Java虚拟机的重要发布。涉及了很多改动。其中一些比其他更全面,比如Lambda表达式,但我要讲的是大的改动和一些小的变动。

JSR 335:Lambda 表达式

可能最引人注意的就是Lambda项目了,一套新的语法,让Java开发者可以像函数式程序员一样工作。这个项目包括了lambda表达式,方法参考和一些其他的能力。

JSR 310:Date和Time API

新的管理dates和times的API。替代了老版本的类。那些较老版本的类仍然在Java Runtime里面,但是当你创建新的应用程序时,你可能会迁移到这套新的API,它会简化你的代码和让你的编程更直观。有管理本地日期、时间和时区,以及计算不同时间之差的新类。

Stream API

添加了管理集合的新工具,包括lists,maps,sets,等等。stream允许你处理集合中的每一项而不用去写循环代码。它还允许你把你的处理分解到多个CPU。所有,对于复杂的大数据集,你能看到显著的性能提高。

Nashorn项目

Nashorn JavaScript引擎也是Java SE 8新加入的。这是一个全新的JavaScript引擎,允许你用JavaScript编码并和Java类整合到一起。Nashorn的目标是在原生JVM的Java中实现一个轻量级的高性能的JavaScript运行时。这个项目旨在通过JSR-223让Java开发者

在Java应用程序中嵌入JavaScript,用jrunscript命令行工具开发独立的JavaScript应用程序。在Nashorn的文章中,

我会描述怎样在命令行中运行Nashorn代码。但也怎样在不同的文件中写JavaScript,然后在你的Java代码中执行这些文件。

并行API加强

并行框架也得到了加强,允许你在多线程里管理和累积值。

String,numbers有了新工具

创建存储string限制lists的新工具和其他的新类。有计算数字的工具,包括intergers,longs,doubles等。

其他的新特性

也有新的工具能更好的检测null情况,并且我会在这个系列中描述所有这些。我还会描述怎么用新的便捷方法来处理文件。

那么,Java SE 8 什么时候能用?

答案是,现在。Java SE 8 正式发布于2014年3月18日。Java开发者可以构建客户的网站应用程序,JavaFX富网络应用框架现在也支持Java 8了。并且大多数的Java企业版的厂商也支持Java 8。你是否立即迁移到Java 8这取决于你现在正在做的项目。

对许多服务和客户网站应用程序,Java SE 8 现在就是有效的。

Android还不行

Android开发者注意:Java SE 8 语法和API现在不支持运行在Android上。

最近Android刚刚支持了Java 7 语法。所以,可能需要一些时间Android才会支持最新的语法或APIs。但对于所有的Java开发者来说,是值得了解一下这些特性的。

开发工具怎么样?

Java 8 已经在主要的Java开发环境中获得了支持,包括Oracle的Netbeans,Intellij Idea和Eclipse。我所写文章系列中的所有的例子都是在NetBeans下完成。用的NetBeans V8 ,下载地址https://netbeans.org/downloads/

不管怎样在我们开始深入这个系列之前,我们首先检查是否已经安装好了Java SE 8,用Netbeans开始一个新项目,包含我们会写

到的所有代码。然后开发一段lambda代码来测试我们的项目在Java SE 8是否工作正常。

你可以选择下载这个系列中的所有代码在我的Githut上,https://github.com/mohamed-taman/JavaSE8-Features

基于Java SE 8,用Lambda表达式写的Hello world应用程序

步骤

1.打开 NetBeans 8 –> from file –> New project –> 从左侧选择 Maven –> 从右侧选择 Java Application –> 点击下一步。

2.按照下图所示填写内容,或者改成你喜欢的名字和值->点击完成按钮。

3.如果事情进展顺利你应该能看到下面的结构,用project navigator视图。

4.点击项目“Java8Features”->点击File,从上级菜单->然后,“Project properties”。

5.在Category下->从左侧选择Source,然后检查 “Scource/Binary format” 是1.8。->从左侧打开Build,然后选择 Complier,然后检查 “Java Platform” 指向了你已经安装的JDK 8,点击OK。

6.如果JDK 8 没有出现,找到tools->选择,Java Platforms->Add Platform->然后选择Java Standard Edition->然后指向你已经安装好的JDK 8。

7.现在我们的项目已经配置好了JDK 8,所以让我们添加一些Lambda代码吧。

8.在包“eg.com.tm.java8.features”,右击,从菜单中选择New->Java Interface->命名为Printable,点击finish按钮。

9.如下实现Printable接口

package eg.com.tm.java8.features.overview;

@FunctionalInterface
public interface Printable {

    public void print();
}

10.在相同的包下添加如下类,命名为“Print”,主要方法如下:

package eg.com.tm.java8.features.overview;

import static java.lang.System.out;

public class Print {

    public static void main(String[] args) {

        Printable job = ()-> out.println("Java SE 8 is working "
                                        + "and Lambda Expression too.");

        job.print();
    }

}

11.右击Print类,选择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

12.祝贺你的Java SE 8 项目工作良好,让我们解释一下刚才所写的代码。

这段代码的大部分都可以在Java 7上运行,但是有一个注解是在Java SE 8 中新添加的,FunctionalInterface。如果你的

Netbeans工作环境没有配置好Java 8,这个注解会报错,因为它会被当作是无效代码。我没看见错误,所以这是一个好迹象。

下面我们打开Print.java的定义。这个类有一个main方法,所以我可以用控制台程序来运行它,里面有一行关键代码是Java 8语法。 它lambda表达式创建了我刚刚展示给你们的功能接口的一个实例,一种Java 8之前不存在的语法。我会在下篇文章里解释这种语法的作用。 但是你现在需要知道的是如果这段代码没有报错,那么再一次,Netbeans认为它是有效代码。我创建了那个接口的实例并且调用了接口的print方法。因此,我运行了这段代码。

我点击了工具栏上的Run按钮,在控制台上我看到了成功的结果。我已经创建了一个对象,是用lambda表达创建的接口的实例。

我还调用了它的方法,它输出了一个字符串在控制台上。所以,如果所有都工作正常,你状态很好。你已经在Netbeans里用Java SE 8开始编程了。如果这过程中你有任何问题,回到上一步,检查你的步骤。一次一步。

时间: 2024-10-05 05:32:09

Java SE 8 新特性之旅 : Java开发世界的大变动的相关文章

Java SE 6 新特性: HTTP 增强--转

概述 Java 语言从诞生的那天起,就非常注重网络编程方面的应用.随着互联网应用的飞速发展,Java 的基础类库也不断地对网络相关的 API 进行加强和扩展.在 Java SE 6 当中,围绕着 HTTP 协议出现了很多实用的新特性:NTLM 认证提供了一种 Window 平台下较为安全的认证机制:JDK 当中提供了一个轻量级的 HTTP 服务器:提供了较为完善的 HTTP Cookie 管理功能:更为实用的 NetworkInterface:DNS 域名的国际化支持等等. NTLM 认证 不可

Java SE 6 新特性: JMX 与系统管理

Java SE 6 新特性: JMX 与系统管理 2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马).跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不错的提升.与 Tiger 在 API 库方面的大幅度加强相比,虽然 Mustang 在 API 库方面的新特性显得不太多,但是也提供了许多实用和方便的功能:在脚本,WebService,XML,编译器 API,数据库,JMX,网

Java SE 6 新特性: 编译器 API

新 API 功能简介 JDK 6 提供了在运行时调用编译器的 API,后面我们将假设把此 API 应用在 JSP 技术中.在传统的 JSP 技术中,服务器处理 JSP 通常需要进行下面 6 个步骤: 分析 JSP 代码: 生成 Java 代码: 将 Java 代码写入存储器: 启动另外一个进程并运行编译器编译 Java 代码: 将类文件写入存储器: 服务器读入类文件并运行: 但如果采用运行时编译,可以同时简化步骤 4 和 5,节约新进程的开销和写入存储器的输出开销,提高系统效率.实际上,在 JD

Java SE 6 新特性: Java DB 和 JDBC 4.0

http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何使用 Java 语言高效.可靠.简洁地访问数据库一直是程序员们津津乐道的话题.新发布的 Java SE 6 也在这方面更上层楼,为编程人员提供了许多好用的新特性.其中最显著的,莫过于 Java SE 6 拥有了一个内嵌的 100% 用 Java 语言编写的数据库系统.并且,Java 6 开始支持 J

Java SE 6 新特性: 对脚本语言的支持

2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马).跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不错的提升.与 Tiger 在 API 库方面的大幅度加强相比,虽然 Mustang 在 API 库方面的新特性显得不太多,但是也提供了许多实用和方便的功能:在脚本,WebService,XML,编译器 API,数据库,JMX,网络 和 Instrumentation 方面都有不

Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结

Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结 1.1. Java的编年史2 1.2. Java版本:JDK 1.02 1.3. Java版本:JDK 1.13 1.4. Java版本:JDK 1.2 (Java 2)4 1.4.1. 1999年5 1.4.2. 2000年5 1.5. Java版本:JDK 1.35 1.5.1. 2001年6 1.5.2. 2002年7

Java 8的新特性—终极版

声明:本文翻译自Java 8 Features Tutorial – The ULTIMATE Guide,翻译过程中发现并发编程网已经有同学翻译过了:Java 8 特性 – 终极手册,我还是坚持自己翻译了一版(写作驱动学习,加深印象),有些地方参考了该同学的. Java 8 前言: Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java 8 – Lambdas

Java 8 新特性:Java 类库的新特性之 Stream类 ——诺诺"涂鸦"记忆

----------   诺诺学习技术交流博客.期待与您交流!    ---------- 详情请查看:http://blog.csdn.net/sun_promise  Java 类库的新特性之 Stream类 (注:此文中涉及到的一部分图片为网络图片,若有问题,请联系我将其删除.) 一.Java8对IO/NIO 的改进 Java 8 对 IO/NIO 也做了一些改进,主要包括: 改进了java.nio.charset.Charset 的实现,使编码和解码的效率得以提升: 精简了jre/lib

Java 8 新特性:Java 类库的新特性之 Optional类 ——诺诺"涂鸦"记忆

----------   诺诺学习技术交流博客.期待与您交流!    ---------- 详情请查看:http://blog.csdn.net/sun_promise  Java 类库的新特性之 Optional类 1.Optional简述 到目前为止,著名的NullPointerException是导致Java应用程序失败的最常见原因.过去,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的