2024年11月Java SE Development Kit(JDK开发工具) V17.01官方版下载

发布时间:

  ⑴Java SE Development Kit是整个Java的核心,包括了Java运行环境Java工具和Java基础类库,提供了泛型等非常实用的功能,可以从控制台启动Jshell,可以直接启动输入和执行Java代码,其版本也不断更新,运行效率得到了非常大的提高。

  ⑵Java 平台级模块系统

  ⑶Java 的定义功能是一套全新的模块系统。当代码库越来越大,创建复杂,盘根错节的“意大利面条式代码”的几率呈指数级的增长。这时候就得面对两个基础的问题: 很难真正地对代码进行封装, 而系统并没有对不同部分(也就是 JAR 文件之间的依赖关系有个明确的概念。每一个公共类都可以被类路径之下任何其它的公共类所访问到, 这样就会导致无意中使用了并不想被公开访问的 API。此外,类路径本身也存在问题: 你怎么知晓所有需要的 JAR 都已经有了, 或者是不是会有重复的项呢? 模块系统把这俩个问题都给解决了。

  ⑷模块化的 JAR 文件都包含一个额外的模块描述器。在这个模块描述器中, 对其它模块的依赖是通过 “requires” 来表示的。另外, “exports” 语句控制着哪些包是可以被其它模块访问到的。所有不被导出的包默认都封装在模块的里面。如下是一个模块描述器的示例,存在于 “module-info.java” 文件中:

  ⑸module blog {

  ⑹exports .pluralsight.blog;

  ⑺requires cms;

  ⑻Linking

  ⑼当你使用具有显式依赖关系的模块和模块化的 JDK 时,新的可能性出现了。你的应用程序模块现在将声明其对其他应用程序模块的依赖以及对其所使用的 JDK 模块的依赖。为什么不使用这些信息创建一个最小的运行时环境,其中只包含运行应用程序所需的那些模块呢? 这可以通过 Java 中的新的 jlink 工具实现。你可以创建针对应用程序进行优化的最小运行时映像而不需要使用完全加载 JDK 安装版本。

  ⑽JShell : 交互式 Java REPL

  ⑾许多语言已经具有交互式编程环境,Java 现在加入了这个俱乐部。您可以从控制台启动 jshell ,并直接启动输入和执行 Java 代码。 jshell 的即时反馈使它成为探索 API 和尝试语言特性的好工具。

  ⑿测试一个 Java 正则表达式是一个很好的说明 jshell 如何使您的生活更轻松的例子。 交互式 shell 还可以提供良好的教学环境以及提高生产力,您可以在此了解更多信息。在教人们如何编写 Java 的过程中,不再需要解释 “public static void main(String [] args” 这句废话。

  ⒀改进的 Javadoc

  ⒁有时一些小事情可以带来很大的不同。你是否就像我一样在一直使用 Google 来查找正确的 Javadoc 页面呢? 这不再需要了。Javadoc 现在支持在 API 文档中的进行搜索。另外,Javadoc 的输出现在符合兼容 HTML 标准。此外,你会注意到,每个 Javadoc 页面都包含有关 JDK 模块类或接口来源的信息。

  ⒂通常,您希望在代码中创建一个集合(例如,List 或 Set ,并直接用一些元素填充它。 实例化集合,几个 “add” 调用,使得代码重复。 Java ,添加了几种集合工厂方法:

  ⒃Set ints = Set.of(, , 。

  ⒄List strings = List.of(“first”, “second”。

  ⒅除了更短和更好阅读之外,这些方法也可以避免您选择特定的集合实现。 事实上,从工厂方法返回已放入数个元素的集合实现是高度优化的。这是可能的,因为它们是不可变的:在创建后,继续添加元素到这些集合会导致 “UnsupportedOperationException” 。

  ⒆改进的 Stream API

  ⒇长期以来,Stream API 都是 Java 标准库最好的改进之一。通过这套 API 可以在集合上建立用于转换的申明管道。在 Java 中它会变得更好。Stream 接口中添加了 个新的方法:dropWhile, takeWhile, ofNullable。还有个 iterate 方法的新重载方法,可以让你提供一个 Predicate (判断条件来指定什么时候结束迭代:

  ⒈IntStream.iterate(, i -》 i 《 , i -》 i + .forEach(System.out::println。

  ⒉第二个参数是一个 Lambda,它会在当前 IntStream 中的元素到达 的时候返回 true。因此这个简单的示例是向控制台打印 到 。

  ⒊除了对 Stream 本身的扩展,Optional 和 Stream 之间的结合也得到了改进。现在可以通过 Optional 的新方法 `stram` 将一个 Optional 对象转换为一个(可能是空的 Stream 对象:

  ⒋Stream s = Optional.of(.stream(。

  ⒌在组合复杂的 Stream 管道时,将 Optional 转换为 Stream 非常有用。

  ⒍Java 为我们带来了接口的默认方法。 接口现在也可以包含行为,而不仅仅是方法签名。 但是,如果在接口上有几个默认方法,代码几乎相同,会发生什么情况? 通常,您将重构这些方法,调用一个可复用的私有方法。 但默认方法不能是私有的。 将复用代码创建为一个默认方法不是一个解决方案,因为该辅助方法会成为公共API的一部分。 使用 Java ,您可以向接口添加私有辅助方法来解决此问题:

  ⒎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”; }

  ⒔如果您使用默认方法开发 API ,那么私有接口方法可能有助于构建其实现。

  ⒕Java 中有新的方式来处理 HTTP 调用。这个迟到的特性用于代替老旧的 `HttpURLConnection` API,并提供对 WebSocket 和 HTTP/ 的支持。注意:新的 HttpClient API 在 Java 中以所谓的孵化器模块交付。也就是说,这套 API 不能保证 % 完成。

  ⒖多版本兼容 JAR

  ⒗我们最后要来着重介绍的这个特性对于库的维护者而言是个特别好的消息。当一个新版本的 Java 出现的时候,你的库用户要花费数年时间才会切换到这个新的版本。这就意味着库得去向后兼容你想要支持的最老的 Java 版本 (许多情况下就是 Java 或者 。这实际上意味着未来的很长一段时间,你都不能在库中运用 Java 所提供的新特性。

  ⒘javac – 编译器,将源程序转成字节码。

  ⒙jar – 打包工具,将相关的类文件打包成一个文件。

  ⒚javadoc – 文档生成器,从源码注释中提取文档。

  ⒛jdb – debugger,查错工具。

  ①java – 运行编译后的java程序(.class后缀的。

  ②appletviewer:小程序浏览器,一种执行html文件上的Java小程序的Java浏览器。

  ③Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。

  ④Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。

  ⑤Jconsole: Java进行系统调试和监控的工具。

  ⑥下载压缩包,双击.exe运行,点击下一步。

  ⑦选择安装路径,选择好之后点击下一步。

  ⑧正在安装中,请稍等一会儿。

  ⑨安装完成,点击关闭退出向导。