Java 9 揭秘(1. 入门介绍)
文 by / 林本托

在第一部分中,主要讲解如下内容:
- JDK 9 包含了哪些内容
- 运行代码的系统要求
- 如何安装 NetBeans
1 JDK 介绍
JDK 9是Java开发工具包的第九个主要版本,计划于2017年7月下旬发布。它带来了许多令人兴奋的新功能。 本套教程主要介绍Java开发人员在日常编程中有用的功能。 你可以在http://openjdk.java.net/projects/jdk9/上找到所有功能的完整列表。
JDK 9最重要和最令人激动的功能之一是模块系统,该模块系统是以代码名称Jigsaw的项目开发的。 JDK设计人员一直在努力将模块系统引入Java平台超过10年。 它计划是以前的几个JDK版本的一部分,后来被删除。Jigsaw 项目也多次延迟了JDK 9版本的发布。 不过Jigsaw 最近正在积极行动,发布新的JDK版本。
Tips
Jigsaw是OpenJDK项目下的一个子项目,旨在为Java SE平台设计、实现一个标准的模块系统,并应用到该平台和JDK中。
Jigsaw项目遇到了什么困难导致这么多年才完成?Jigsaw的主要目标是为Java开发人员提供一种称为模块的软件组件,来开发应用程序的方法。模块可以将其API导出以供公众使用并封装其内部。模块还可以声明对其他模块的依赖,并且可以在启动时验证这些依赖关系,从而在运行时避免发生类型缺失的错误。 JDK本身被分成一系列相互交互的模块。这提供了一个可扩展的运行时。如果你的应用程序使用JDK的子集,则可以创建包含应用程序和应用程序模块中使用的JDK模块的运行时映像。模块系统的所有这些功能看起来都很正常。一直困扰着JDK设计师的主要问题是模块系统的向后兼容性和迁移。 Java已经存在了20多年了。任何重大的特性,包括模块系统,都必须轻易应用。根据Java社区的反馈,重新设计和改进了几次迭代,最后走到了现在这一步。
JDK 9的另一个重要补充是JShell,它是Java的交互式编程环境。 JShell是一个命令行工具和API,它允许执行一段代码并获得即时反馈。 在JShell之前,你必须编写一个完整的程序,编译它并运行它来获得结果。 JShell是你在日常开发中使用的工具。 JShell对初学者至关重要,可以帮助他们快速学习Java语言,而无需了解程序结构的细节,如模块和程序包。
Tips
关于JShell相关知识,可以在博客园或简书中搜索“Java 9 尝鲜之交互式编程环境”这篇文章,里面有详细介绍。
除此而外,JDK 9还增加了其他一些新特性使你的开发变得更轻松。 例如,Reactive Streams API,集合工厂方法,筹划中的HTTP/2 Client API,Stack-Walking API,Platform Logging API和统一的JVM logging。
2 运行代码的系统要求
首先,你需要下载JDK 9 (Java Development Kit 9) ,目前可以直接去 Oracle 官网下载。
首先需要先同意许可协议,然后就可以下载了。Java 9 可以运行在很多平台上:
- Windows 32-bit
- Windows 64-bit
- macOS 64-bit (formerly known as Mac OS X * or simply OS X)
- Linux 32-bit
- Linux 64-bit
- Linux on ARM 32-bit
- Linux on ARM 64-bit
下一步需要配置环境变量。跟之前的 JDK 配置方法相同。这里,我以 macOS 10.12 版本为例,在 Macbook 上的配置。这里会需要 vi 的一些基本操作,可以去网上查找如何使用。
下载完 JDK 后,直接运行。然后安装目录在:/library/Java/JavaVirtualMachines/jdk-9.jdk/
在 Terminal 下,进入到你的用户的当前目录下(一打开就是你的用户默认目录,实在不清楚在命令行敲入cd
则会切换到默认目录下)。在命令行中执行ls -a命令,列出当前目录下的包括隐藏的文件或目录。

4.找到 .bash_profile文件,此文件会影响你当前用户的配置信息,并执行vi .bash_profile 命令编辑此文件。

5.进入编辑页面后,配置 Java Home 和 Path 环境变量:
配置 Java 环境变量
6.配置完以后,使用esc键退出编辑状态,输入“:wq”,保存并退出。并执行. .bash_profile,使配置文件立刻生效。在命令行下执行javac -version,如果输出如下信息,则说明 JDK 配置正确。

至此,JDK 配置完成。
3 如何安装 NetBeans
如果要编译并运行Java 程序程序,需要在计算机上安装集成开发环境(IDE),例如NetBeans或Eclipse。 目前没有IDE完全支持JDK 9中的模块系统。但是,NetBeans支持每个NetBeans项目创建一个模块。 也就是说,如果要在NetBeans中创建三个Java模块,则需要创建三个NetBeans Java项目。 一个Java模块可以使用NetBeans中的项目依赖关系来引用其他Java模块。 目前,NetBeans不支持多模块Java项目。 可以在wiki页面上找到有关NetBeans中模块系统支持的最新信息:http://wiki.netbeans.org/JDK9Support。
你可以从以下链接下载最新的支持JDK 9的NetBeans版本:http://bits.netbeans.org/download/trunk/nightly/latest/。里面有很多NetBeans版本供我们下载,为了方便,我们直接下载“All”的这个版本。

至此,JDK 9的配置已经完成,NetBeans也已经下载,关于NetBeans的详细配置,会在后面的章节中介绍。
Java 9 揭秘(1. 入门介绍)的更多相关文章
- 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...
- 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字
084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...
- 083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法
083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法 本文知识点:构造方法-带参构造方法 说明:因为时间紧张, ...
- 082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法
082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法 本文知识点:构造方法-无参构造方法 说明:因为时间紧张, ...
- Java 9 揭秘全目录汇总
Tips 做一个终身学习的人. 当写这篇文章时,关于Java 9的学习就先告一段落了. 首先介绍一下背景,大概两个月前,我突然有兴趣想看看Java 9,当时读了一本英文原著<Java 9 Rev ...
- 《Java 9 揭秘》全目录汇总
Tips 做一个终身学习的人. 当写这篇文章时,关于Java 9的学习就先告一段落了. 首先介绍一下背景,大概两个月前,我突然有兴趣想看看Java 9,当时读了一本英文原著<Java 9 Rev ...
- 初识Hadoop入门介绍
初识hadoop入门介绍 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. < ...
- Java程序员快速入门Go语言
这篇文章帮助Java程序员快速入门Go语言. 转载至 开源中国社区. http://www.oschina.net 本文将以一个有代表性的例子为开始,以此让Java程序员对Go语言有个初步认识,随后将 ...
- mybatis入门介绍一
首先介绍一下Mybatis是什么?mybatis是Java的持久层框架, JAVA操作数据库是通过jdbc来操作的,而mybatis是对jdbc的封装. 使用mybatis之后,开发者只需要关注sql ...
- mybatis入门介绍二
相信看过我的上一篇博客的同学都已经对mybatis有一个初步的认识了.这篇博客主要是对mybatis的mapper代理做一下简单的介绍,希望能够帮助大家共同学习. 我的上一篇博客:mybatis入门介 ...
随机推荐
- angular5中使用jsonp请求页面
说多了,都是眼泪,折腾了很久,各种百度,查到的例子,全都报错,可能是因为我的angular的版本太高,向下都不兼容? 我的angular版本为最新的5.2.11: 下面是正确的jsonp请求的方法 1 ...
- Android 如何关闭Navigation Bar M
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- SHELL pv uv 统计事例
#!/bin/sh #statistics newplive logs SOURCELOGS=$ ];then echo echo "please input file!" ech ...
- C# •MouseDown •MouseDown •MouseUp 的先后顺序
鼠标按下事件发生的顺序 MouseDown event. Click event. MouseDownevent. MouseUp event. 可以写个测试,放一个picture控件 private ...
- [转] libtool的作用及应用
今天使用 autoconf 的时候遇到一个 libtool 的问题,觉得这个东西挺有意思,找了个文档过来,暂时记录. 转自:http://blog.csdn.net/larntin2002/artic ...
- k-means算法MATLAB和opencv代码
上一篇博客写了k-means聚类算法和改进的k-means算法.这篇博客就贴出相应的MATLAB和C++代码. 下面是MATLAB代码,实现用k-means进行切割: %%%%%%%%%%%%%%%% ...
- Oracle 中包(Package)
一.什么要使用包? 在一个大型项目中,可能有很多模块,而每个模块又有自己的过程.函数等.而这些过程.函数默认是放在一起的(如在PL/SQL中,过程默认都是放在一起 的,即Procedur ...
- 语法——原型prototype深入理解
console.log('-----------------------------Object'); var obj = {}; console.log(obj.__proto__ === Obje ...
- 【DB2】索引
1. 索引的概念 1.1 索引的优点 索引是表的一个或多个列的键值的有序列表,创建索引的原因有2个: 确保一个或多个列中值的唯一性 提高对表进行的查询的性能.当查询时想要以更快的速度找到所需要的列,或 ...
- 转 ImageMagick及PHP的imagick扩展的安装及配置
imagick是一个PHP的扩展,用ImageMagick提供的API来进行图片的创建与修改,不过这些操作已经包装到扩展imagick中去了,最终调用的是ImageMagick提供的API Image ...