《Java SE Development Kit》作为整个 Java 开发的核心配置,由 Java 运行环境、开发工具以及 Java 基础类库源代码构成,是 Java 开发必须搭建的运行环境。无论何种 Java 开发,都需要配置该环境,Java 在开发领域的贡献举足轻重,是其他技术难以企及的。
Java SE 的 JDK 9 已正式发布。新功能 jshell 让 Java 领先其他编程语言和平台,Java 开发者无需再羡慕自带 REPL 的语言,也不用为测试 Java 功能而开启 Groovy shell。另外,主要的大功能 Jigsaw 实现了 Java 模块化,使定制和裁剪 JDK 更加便捷。
虽然 Java SE Development Kit 推出了全新的 jdk9,但网上有传言称 jdk9 没有 32 位版本。实际上,jdk9 暂未放弃 32 位运行环境,用户可以下载 32 位的 jdk9 进行开发。有使用 JDK 经验的用户对此应该比较清楚。
javac:编译器,可将源程序转换为字节码。
jar:打包工具,能把相关的类文件打包成一个文件。
javadoc:文档生成器,可从源码注释中提取文档。
jdb:debugger,用于查错。
java:用于运行编译后的 java 程序(.class 后缀的)。
appletviewer:小程序浏览器,是一种可执行 html 文件上 Java 小程序的 Java 浏览器。
Javah:可产生能调用 Java 过程的 C 过程,或建立能被 Java 程序调用的 C 过程的头文件。
Javap:Java 反汇编器,可显示编译类文件中的可访问功能和数据,同时解释字节代码含义。
Jconsole:Java 系统调试和监控工具。
1. Java 平台级模块系统
Java 9 引入了全新的模块系统。随着代码库规模增大,构建复杂且混乱的代码的可能性急剧增加,会面临代码封装困难以及依赖关系不明确的问题。模块系统解决了这些问题,模块化的 JAR 文件包含额外的模块描述器,通过 “requires” 表示对其他模块的依赖,“exports” 语句控制哪些包可被其他模块访问,未导出的包默认封装在模块内。
例如,在 “module-info.java” 文件中的模块描述器示例:
module blog {
exports com.pluralsight.blog;
requires cms;
}
2. Linking
使用具有显式依赖关系的模块和模块化的 JDK 时,可借助 Java 9 的新 jlink 工具,根据应用程序模块声明的依赖信息,创建只包含运行应用程序所需模块的最小运行时环境,无需使用完整的 JDK 安装版本。
3. JShell : 交互式 Java REPL
许多语言都有交互式编程环境,Java 现在也加入其中。可从控制台启动 jshell 直接输入并执行 Java 代码,其即时反馈便于探索 API 和尝试语言特性,还能提供良好的教学环境,提高编程效率。
比如测试 Java 正则表达式时,jshell 能让编程更轻松,教学中也无需再解释 “public static void main(String [] args)” 这类代码。
4. 改进的 Javadoc
Javadoc 现在支持在 API 文档中进行搜索,输出符合 HTML5 标准,且每个 Javadoc 页面会显示 JDK 模块类或接口的来源信息,无需再通过 Google 查找 Javadoc 页面。
5. 集合工厂方法
Java 9 新增了几种集合工厂方法,可直接用元素填充集合,使代码更简洁易读,还能避免选择特定的集合实现。这些方法返回的集合是不可变的,添加元素会抛出 “UnsupportedOperationException” 。
例如:
Set ints = Set.of(1, 2, 3);
List strings = List.of("first", "second");
6. 改进的 Stream API
Java 9 对 Stream API 进行了改进,Stream 接口新增了 dropWhile、takeWhile、ofNullable 等 4 个方法,iterate 方法也有新的重载,可通过 Predicate 指定迭代结束条件。此外,Optional 和 Stream 的结合得到优化,可通过 Optional 的新方法 `stram` 将 Optional 对象转换为 Stream 对象。
7. 私有接口方法
Java 8 引入了接口的默认方法,Java 9 允许向接口添加私有辅助方法,解决了默认方法代码复用且不希望辅助方法成为公共 API 的问题,有助于使用默认方法开发 API 的实现。
例如:
public interface MyInterface {
void normalInterfaceMethod();
default void interfaceMethodWithDefault() { init(); }
default void anotherDefaultMethod() { init(); }
// This method is not part of the public API exposed by MyInterface
private void init() { System.out.println("Initializing"); }
}
8. HTTP/2
Java 9 提供了新的 HTTP 调用方式,替代老旧的 `HttpURLConnection` API,支持 WebSocket 和 HTTP/2,但新的 HttpClient API 以孵化器模块交付,功能可能不完全稳定。
9. 多版本兼容 JAR
对于库的维护者来说,多版本兼容 JAR 是个好特性。由于用户升级 Java 版本较慢,库需要向后兼容较老版本,而该特性允许在库中运用 Java 9 的新特性。
配置命令
在 CMD 命令提示符输入 java -version
— jshell 是非常有趣的新功能,让 Java 领先其他编程语言和平台,它与 Graal+Truffle、Substrate VM 开启了无限可能,Java 开发者无需再羡慕其他自带 REPL 的语言。
— Jigsaw(Java 模块化)是主要的大功能,使定制和裁剪 JDK 更直接,能更方便地发现和解决包冲突。
— JVMCI 是 JVM 的 JIT 编译器研发关注的功能,第三方开发可更方便地向 HotSpot VM 插入强大插件,如使用 Graal 编译器,Oracle JDK 9 计划在未来发布基于 Graal 与 JVMCI 的 AOT 编译器。
— Oracle JDK 9 / OpenJDK 9 将 G1 作为默认 GC 选项,若要使用 Parallel GC、CMS GC 等其他 GC,需在命令行显式指定。


陌生来电要警惕,分享屏幕别随意,未知链接不点击,个人信息不透露,转账汇款多核实,骗局千万要记牢。
有效预防诈骗,请安装国家反诈中心APP!
《Java SE Development Kit》最新版159.69MB