前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JDK 10 的 109 项新特性

JDK 10 的 109 项新特性

作者头像
精讲java
发布于 2018-07-03 10:44:04
发布于 2018-07-03 10:44:04
7580
举报
文章被收录于专栏:平凡文摘平凡文摘

(点击上方公众号,可快速关注)

来源:开源中国, www.oschina.net/translate/109-new-features-in-jdk-10

虽然感觉 JDK9 发布才仅仅几周的时间,然而,随着新的 OpenJDK 的发布节奏,JDK10 已经到达发布候选里程碑阶段。

我看过各种关于 JDK10 新特性的博客,但是它们都倾向于关注通过 JEPS 定义的大方面。这篇博文,我将看看是否可以罗列出 JDK10 中已经发生变化的方方面面(包括新增的和剔除的)。

有时候,我会做一些关于 Java SE 的报告会。之前我在“ JDK9 的 55 个新特性”的报告会上曾开玩笑说:下次我将做的恐怕是“ JDK10 的 5 个新特性”。然而事实证明,即使仅有六个多月的开发时间,JDK10 依然超乎想象。

即便我不再为 Oracle 工作,我也在此先做一个“安全港声明”,以便消除误会。这个列表是由下面这些公开可用的信息整理编辑的:JDK Enhancement Proposals (JEPs)、the OpenJDK bug database 和 Java SE 10 public review specification (JSR 383) 。当然,尽管我已尽可能的研究以保证信息准确,但在 JDK 10 最终发布之前仍可能会发生变化。

大事记

JDK10 包含 12 个JEP (改善提议):

  • 【286】局部变量类型推断 :对于开发者来说,这是 JDK10 唯一的真正特性。它向 Java 中引入在其他语言中很常见的 var ,比如 JavaScript 。只要编译器可以推断此种类型,你不再需要专门声明一个局部变量的类型。一个简单的例子是:

var x = new ArrayList<String>();

这就消除了我们之前必须执行的 ArrayList<String> 类型定义的重复。我鼓励你们去读 JEP ,因为上面有一些关于这个句法是否能用的规则。

有趣的是,需要注意 var 不能成为一个关键字,而是一个保留字。这意味着你仍然可以使用 var 作为一个变量,方法或包名,但是现在(尽管我确定你绝不会)你不能再有一个类被调用。

  • [310]应用类数据共享(CDS) :CDS 在 JDK5 时被引进以改善 JVM 启动的表现,同时减少当多个虚拟机在同一个物理或虚拟的机器上运行时的资源占用。JDK10 将扩展 CDS 到允许内部系统的类加载器、内部平台的类加载器和自定义类加载器来加载获得的类。之前,CDS 的使用仅仅限制在了 bootstrap 的类加载器。
  • [314]额外的 Unicode 语言标签扩展:这将改善 java.util.Locale 类和相关的 API 以实现额外 BCP 47 语言标签的 Unicode 扩展。尤其是,货币类型,一周的第一天,区域覆盖和时区等标签现在将被支持。
  • [322]基于时间的版本控制:正如我在之前的博客中所讨论的,我们的 JDK 版本字符串格式几乎与 JDK 版本一样多。有幸的是,这是最后需要使用到的,我们可以坚持用它。这种格式使用起来很像 JDK9 中介绍的提供一个更加语义的形式。有一件困扰我的事是包含了一个 INTERIM 元素,正如 JEP 提议中所说,“永远是0”。好吧,如果永远是0,那它有什么意义呢?他们说这是为未来使用做保留,但我仍不是很赞同。我认为,这有些冗余繁杂。这也消除了在 JDK9 中有过的相当奇怪的情形。第一次更新是 JDK 9.0.1 , 非常符合逻辑。第二次更新是 JDK 9.0.4 ,不合逻辑。原因是,在 JDK9 的版本计数模式下,需要留下空白以便应急或不在预期安排的更新使用。但既然没有更新是必须的,为什么不简单称之为 JDK 9.0.2 呢?
  • [319]根证书:在 JDK 中将提供一套默认的 CA 根证书。关键的安全部件,如 TLS ,在 OpenJDK 构建中将默认有效。这是 Oracle 正在努力确保 OpenJDK 二进制和 Oracle JDK 二进制功能上一样的工作的一部分,是一项有用的补充内容。
  • [307] 并行全垃圾回收器 G1 : G1 是设计来作为一种低延时的垃圾回收器(但是如果它跟不上旧的堆碎片产生的提升速率的话,将仍然采用完整压缩集合)。在 JDK9 之前,默认的收集器是并行,吞吐,收集器。为了减少在使用默认的收集器的应用性能配置文件的差异,G1 现在有一个并行完整收集机制。
  • [313]移除 Native-Header 自动生成工具:Java9 开始了一些对 JDK 的家务管理,这项特性是对它的延续。当编译 JNI 代码时,已不再需要单独的工具来生成头文件,因为这可以通过 javac 完成。在未来的某一时刻,JNI 将会被 Panama 项目的结果取代,但是何时发生还不清楚。
  • [304]垃圾回收器接口: 这不是让开发者用来控制垃圾回收的接口;而是一个在 JVM 源代码中的允许另外的垃圾回收器快速方便的集成的接口。
  • [312]线程-局部变量管控:这是在 JVM 内部相当低级别的更改,现在将允许在不运行全局虚拟机安全点的情况下实现线程回调。这将使得停止单个线程变得可能和便宜,而不是只能启用或停止所有线程。
  • [316]在备用存储装置上的堆分配:硬件技术在持续进化,现在可以使用与传统 DRAM 具有相同接口和类似性能特点的非易失性 RAM 。这项 JEP 将使得 JVM 能够使用适用于不同类型的存储机制的堆。
  • [317] 试验性的基于 Java 的 JIT 编译器:最近宣布的 Metropolis 项目,提议用 Java 重写大部分 JVM 。乍一想,觉得很奇怪。如果 JVM 是用 Java 编写的,那么是否需要一个 JVM 来运行 JVM ? 相应的,这导致了一个很好的镜像类比。 现实情况是,使用 Java 编写 JVM 并不意味着必须将其编译为字节码,你可以使用 AOT 编译,然后在运行时编译代码以提高性能。这项 JEP 将 Graal 编译器研究项目引入到 JDK 中。并给将 Metropolis 项目成为现实,使 JVM 性能与当前 C++ 所写版本匹敌(或有幸超越)提供基础。
  • [296]: 合并 JDK 多个代码仓库到一个单独的储存库中:在 JDK9 中,有 8 个仓库: root、corba、hotspot、jaxp、jaxws、jdk、langtools 和 nashorn 。在 JDK10 中这些将被合并为一个,使得跨相互依赖的变更集的存储库运行 atomic commit (原子提交)成为可能。

新 API

有 73 项新增内容添加到了标准类库中。

  • java.awt.Toolkit int getMenuShortcutKeyMaskEx(): 确定哪个扩展修饰符键是菜单快捷键的适当加速键。
  • java.awt.geom.Path2D: void trimToSize(): 将此 Path2D 实例的容量计算到它当前的大小。应用可使用此操作将路径的存储空间最小化。这个方法也被添加到 Path2D.Double 和 Path2D.Float 类。
  • java.io.ByteArrayOutputStream: String toString(Charset): 重载 toString(),通过使用指定的字符集解码字节,将缓冲区的内容转换为字符串。
  • java.io.PrintStream: lang.io.PrintWriter: 这两个类都有三个新的构造函数,它们需要额外的 Charset 参数。
  • java.io.Reader: long transferTo(Writer): 从这个 Reader 中读取所有字符,并按照所读的顺序将字符写入给定的 Writer 。
  • java.lang.Runtime.Version: 有四种新方法返回新(JEP 322)版本字符串字段的整数值: feature()、interim()、patch() 和 update() 。
  • java.lang.StackWalker.StackFrame: String getDescriptor(): 按照 JVM 标准返回此堆栈帧所代表的方法的描述符。 String getMethodType():返回此堆栈帧所代表的方法类型,描述参数类型和返回值类型。
  • java.lang.invoke.MethodType: Class<?> lastParameterType():返回这个方法类型的最后一个参数类型。如果这个方法类型没有参数,则返回空类型作为岗哨值(Sentinel Value)。
  • java.lang.management.RuntimeMXBean: long getPid(): R 返回正在运行的 JVM 的进程 ID 。
  • java.lang.management.ThreadMXBean: ThreadInfo[] dumpAllThreads(boolean, boolean, int): 返回所有活动线程的线程信息,其中有指定的最大元素数量和同步信息的堆栈跟踪。 ThreadInfo[] getThreadInfo(long[], boolean, boolean, int): 返回每个线程的线程信息,这些线程的标识位于输入数组中,其中有指定的最大元素数量和同步信息的堆栈跟踪。
  • java.lang.reflect.MalformedParameterizedTypeException: 添加了一个新的构造函数,它以字符串的形式作为参数来获取详细信息。
  • java.net.URLDecoder: java.net.URLEncoder: 这两个类都有新的重载的解码和编码方法,将 charset 作为附加参数。
  • java.nio.channels.Channels: 两个新的静态重载方法,允许使用 Charset 的 newReader(ReadByteChannel,Charset)和newWriter(WriteByteChannel,Charset)。
  • java.nio.file.FileStore: long getBlockSize(): 在这个文件存储中返回每个块的字节数。
  • java.time.chrono: 这个包里有三个类,HijrahEra、MiinguoEra 和 ThaiBuddhistEra ,都有同样的方法。
  • String getDisplayName(TextStyle, Locale): 这将返回用于识别 era 的文本名称,适合于向用户展示。
  • java.time.format.DateTimeFormatter: localizedBy(Locale): 返回指定格式器的一个副本,其中包含地区、日历、区域、小数和/或时区的本地化值,这将取代该格式器中的值。
  • java.util: DoubleSummaryStatistics、IntSummaryStatistics 和 LongSummaryStatistics 都有一个新的构造函数,它包含 4 个数值。它使用指定的计数、最小值、最大值和总和构造一个非空实例。
  • java.util.List: java.util.Map: java.util.Set: 这些接口中的每一个都增加了一个新的静态方法,copyOf(Collection)。这些函数按照其迭代顺序返回一个不可修改的列表、映射或包含给定集合的元素的集合。
  • java.util.Optional: java.util.OptionalDouble: java.util.OptionalInt: java.util.OptionalLong: 每一个类都有一个新的方法,orElseThrow() ,它本质上和 get() 一样,也就是说,如果 Optional 有值则返回。否则,将抛出 NoSuchElementException 。
  • java.util.Formatter: java.util.Scanner: 这两个类都有三个新的构造函数,除了其他参数之外,它们都带有一个 charset 参数。

其它翻译版本(1)

  • java.util.Properties: 这有一个新的构造函数,它接受一个 int 参数。这将创建一个没有默认值的空属性列表,并且指定初始大小以容纳指定的元素数量,而无需动态调整大小。还有一个新的重载的 replace 方法,接受三个 Object 参数并返回一个布尔值。只有在当前映射到指定值时,才会替换指定键的条目。
  • java.SplittableRandom: void nextBytes(byte[]): 用生成的伪随机字节填充一个用户提供的字节数组。
  • java.util.concurrent.FutureTask: 添加了 toString() 方法,该方法返回一个标识 FutureTask 的字符串,以及它的完成状态。在括号中,状态包含如下字符串中的一个,“Completed Normally” 、“Completed Exceptionally”、 “Cancelled” 或者 “Not completed”。
  • java.util.concurrent.locks.StampedLock: boolean isLockStamp(long): 返回一个标记戳表示是否持有一个锁。 boolean isOptimisticReadStamp(long): 返回一个标记戳代表是否成功的进行了乐观读(optimistic read)。 boolean isReadLockStamp(long): 返回一个标记戳表示是否持有一个非独占锁(即 read lock )。 boolean isWriteLockStamp(long): 返回一个标记戳表示是否持有一个独占锁(即 write lock )。
  • java.jar.JarEntry: String getRealName(): 返回这个 JarEntry 的真实名称。如果这个 JarEntry 是一个多版本 jar 文件的入口,它被配置为这样处理,这个方法返回的名字是 JarEntry 所代表的版本条目的入口,而不是 ZipEntry.getName() 返回的基本条目的路径名。如果 JarEntry 不代表一个多版本 jar 文件的版本化条目或者 jar 文件没有被配置为作为一个多版本 jar 文件进行处理,这个方法将返回与 ZipEntry.getName() 返回的相同名称。
  • java.util.jar.JarFile: Stream<JarEntry> versionedStream(): 返回 jar 文件中指定版本的入口对应 Stream 。与 JarEntry 的 getRealName 方法类似,这与多版本 jar 文件有关。
  • java.util.spi.LocaleNameProvider: getDisplayUnicodeExtensionKey(String, Locale): 为给定的 Unicode 扩展键返回一个本地化名称。 getDisplayUnicodeExtensionType(String, String, Locale): 为给定的 Unicode 扩展键返回一个本地化名称。
  • java.util.stream.Collectors: toUnmodifiableList(): toUnmodifiableSet(): toUnmodifiableMap(Function, Function): toUnmodifiableMap(Function, Function, BinaryOperator): 这四个新方法都返回 Collectors ,将输入元素聚集到适当的不可修改的集合中。
  • java.lang.model.SourceVersion: 现在有了一个字段,它代表了 JDK 10 的版本。 java.lang.model.util.TypeKindVisitor6: javax.lang.model.util.TypeKindVisitor9: (我必须承认,我从来没听说过这些类) R visitNoTypeAsModule(NoType, P): 访问一个 MODULE 的 pseudo-type 。我不确定为什么只有这两个类得到这个方法,因为还有 Visitor7 和 Visitor8 变量。
  • javax.remote.management.rmi.RMIConnectorServer: 这个类已经添加了两个字段: CREDENTIALS_FILTER_PATTERN 和 SERIAL_FILTER_PATTERN 。
  • javax.ButtonModel:看,Swing 还在更新! ButtonGroup getGroup(): 返回按钮所属的组。通常用于单选按钮,它们在组中是互斥的。
  • javax.plaf.basic.BasicMenuUI: Dimension getMinimumSize(JComponent): 返回指定组件适合观感的最小大小。

JVM 规范改动

这些改动相当小:

  • 4.6节:类文件格式(第99页)。在方法访问标志方面有小的改动。
  • 4.7节:模块属性(第169页)。如果模块不是 java.base ,则 JDK 10 不再允许设置 ACC_TRANSITIVE 或 ACC_STATIC_PHASE 。
  • 4.10节:类文件的校验(第252页)。dup2 指令已改变了 typesafe form 1 的定义,颠倒了 canSafleyPushList 一节中类型的顺序(你需要仔细查看才能发现它)。
  • 5.2节:Java 虚拟机启动(第350页)。该描述添加了在创建初始类或接口时可使用用户定义的类加载器( bootstrap 类加载器除外)。

对 Java 语言规范的更改

这里还有一些更改,但主要是为了支持局部变量类型推断。

  • 第3.8节:标识符(第23页)。在忽略了可忽略的字符之后,标识符的等价性现在被考虑了。这似乎是合乎逻辑的。
  • (第24页)一个新的 Token,TypeIdentifier,它支持对局部变量类型推断的新用法,而 var 的使用不是关键字,而是一个具有特殊含义的标识符,作为局部变量声明的类型。
  • 第4.10.5节:类型预测(第76页)。这是一个相当复杂的部分,它涉及到捕获变量、嵌套类以及如何使用局部变量类型推断。我建议你阅读规范中的这一部分,而不是试图解释它。
  • 第6.1节:声明(第134页)。一个反映使用 TypeIdentifier 来支持局部变量类型的推断的小改动。
  • 第6.5节:确定名字的含义(第153页,第158页和第159页)。根据类型标识符的使用而更改类类型。
  • 第6.5.4.1:简单的 PackageOrTypeNames(第160页)
  • 第6.5.4.2节:合规的 PackageOrTypeNames(第160页)。这两种方式都与使用 TypeIdentifier 有细微的变化。
  • 第7.5.3:单静态导入声明(第191页)。这改变了导入具有相同名称的静态类型的规则。除非类型是相同的,否则这将成为一个错误,在这种情况下,重复被忽略。
  • 第7.7.1:依赖(第198页)。如果你明确声明一个模块需要 java.base ,那在必要的关键字之后,你就不能再使用修饰符(例如静态)了。
  • 第8部分:正式参数(第244页)。接收者参数可能只出现在一个实例方法的 formalparameters 列表,或者是一个内部类的构造函数中,其中内部类没有在静态上下文中声明。
  • 第9.7.4节:注释可能出现的地方(第335页)。有一个与局部变量类型推断相关的变更。
  • 第14.4部分:局部变量声明语句(第433页)。实现局部变量类型推断所需的大量更改。
  • 第14节:增强的 for 语句(第455页)。这个结构已经更新,包括对局部变量类型推断的支持。
  • 第14.20.3节:try-with-resources(474页)。这个结构已经更新,包括对局部变量类型推断的支持。

最后,第 19 章有多处语法更新,反映了应更多使用 TypeIdentifier 类型标识符,而不仅仅是 Identifier 标识符,以支持局部变量类型推断。

转载声明:本文转载自「精讲JAVA」。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 平凡文摘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java 10 已发布!时隔 6 月带来 109 项新特性
关键时刻,第一时间送达! 期待已久,没有跳票的 Java 10 已正式发布! 为了更快地迭代,以及跟进社区反馈,Java 的版本发布周期变更为了每六个月一次,并且承诺不会跳票。新的发布周期也会严格遵循
java思维导图
2018/04/08
6720
Java 10 已发布!时隔 6 月带来 109 项新特性
Hello——Java10新特性,请了解一下
2018年3月20日,Java 10 正式发布! 相关地址: 官方地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html Jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html 安装指南:https://docs.oracle.com/javase/10/install/overview-jdk-
名山丶深处
2018/05/22
8600
JDK10新特性
G1 是设计来作为一种低延时的垃圾回收器。G1收集器还可以进行非常精确地对停顿进行控制。从JDK7开始启用G1 垃圾回收器,在JDK9中G1成为默认垃圾回收策略。截止到ava 9,G1的Full GC采用的是单线程算法。也就是说G1在 发生Full GC时会严重影响性能。
大忽悠爱学习
2022/06/01
3420
JDK10新特性
JDK10 揭秘
前言 Java自1995年发布至今,已经度过23个年头;JAVA也已经推出了10个大的版本,2018年3月20日正式推出JDK10正式版本。新的版本也隐藏了许多新的奥秘,那么本课就将深入浅出的探究一下
阿凯
2018/06/29
6510
回顾Java 8 9 10的新特性,展望即将来临的11和明年的12【大牛经验】
1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议纪录;
Java帮帮
2018/09/29
3.3K0
回顾Java 8 9 10的新特性,展望即将来临的11和明年的12【大牛经验】
即将发布的 JDK 10 有 109 项新特性,你喜欢哪些?
按计划,JDK 10 将于 3 月 20 日正式发布。据前 Oracle 员工 Simon Ritter 的统计,JDK 10 总共包含 109 项新特性。当然,在最终发布前,可能还会发生变化。
Java团长
2018/08/03
3990
Java 10 新特性解读
开发者经常抱怨Java中引用代码的程度。局部变量的显示类型声明,常常被认为 是不必须的,给一个好听的名字经常可以很清楚的表达出下面应该怎样继续。
一个风轻云淡
2023/10/15
2190
Java 10 新特性解读
JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了【JDK10特性讲解】
  JAVA9和java10 都不是 LTS (Long-Term-Support)版本.和过去的JAVA大版本升级不同,这两个只有半年左右的开发和维护时间. 而JAVA11 也是就是18.9,才是JAVA之后的第一个长期支持版本
用户4919348
2022/12/09
4680
JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了【JDK10特性讲解】
JDK10改变你对Java的原有认知
我们昨天说了关于 JDK9 的相关内容,但是 JDK9 相对于 JDK8 来说,没有做出太大的改变,但是从 JDK11 之后,我们就可以看出,JDK 的变更迭代是确确实实的有点厉害了,更别说现在 JDK 都已经更新到20了,但是该学习的还是得学习呀,今天我们就来讲讲这个关于 JDK10 中发生了哪些变化,我们应该怎么使用。
Java极客技术
2023/09/14
1710
JDK10改变你对Java的原有认知
JDK10要来了:下一代 Java 有哪些新特性?
JDK 10 目前正在Rampdown Phase One,开发正在努力的修复着bug。 排期 2017/12/14 Rampdown Phase One 2018/01/11 All Tests Run 2018/01/18 Rampdown Phase Two 2018/02/08 Initial Release Candidate 2018/02/22 Final Release Candidate 2018/03/20 General Availability 新增功能点: 286:
ImportSource
2018/04/03
1.3K0
Java 10正式发布,最新特性全解读
作者|张建锋编辑|郭蕾 北京时间 3 月 21 日,Oracle 官方宣布 Java 10 正式发布。这是 Java 大版本周期变化后的第一个正式发布版本(详见这里),非常值得关注。你可以点击以下地址即刻下载: http://www.oracle.com/technetwork/java/javase/downloads/index.html 去年 9 月,Oracle 将 Java 大版本周期从原来的 2-3 年,调整成每半年发布一个大的版本。而版本号仍延续原来的序号,即 Java 8、Java 9、Ja
美的让人心动
2018/06/14
1.1K0
【小家java】java10新特性(简述十大新特性) 小步迭代
需要注意的是,本次Java10并不是Oracle的官方LTS版本,所以咱们可以先了解新特性。然后坐等java11的发布再考虑在生产中使用吧
YourBatman
2019/09/03
9540
Java 10新特性解密
随着Java开发工具包(JDK)9的发布,大量的注意力都集中在Java的最新特性上,包括引入模块(通过集成项目Jigsaw)。尽管最近的很多关注都集中在这些强大的新功能上,但下一个版本的Java:JDK 10已经开始准备了。在本文中,我们将粗略地介绍一下JDK 10的主要特性,并探讨JDK 10中可能包含的一些特性。 请注意,本文中所包含的信息在写本文时是准确的。但是到发布时,JDK 10特性组预计将会增加。 新功能 与之前的JDK版本一样,对于即将到来的JDK 10也有一些主要特性。这些特性可以分为两个主
CSDN技术头条
2018/02/08
9850
最通俗易懂的 Java 10 新特性讲解
自从 Java 9 开始,Oracle 调整了 Java 版本的发布策略,不再是之前的 N 年一个大版本,取而代之的是 6 个月一个小版本,三年一个大版本,这样可以让 Java 的最新改变迅速上线,而小版本的维护周期缩短到下个版本发布之前,大版本的维护周期则是 3 年之久。而 10 就是这么一个小版本,因为 Java 的后续版本基本都会包含之前新特性,所以还是把 Java 10 带来的改变单独写一写。
未读代码
2020/03/11
5750
最通俗易懂的 Java 10 新特性讲解
Java10的新特性,你知道多少?
从Java 9发布到现在已经过去两个月了,根据最新的发布计划,距离下一个Java版本发布只有四个月时间。Java 10的新特性还在确认当中,所以从现在到GA版中间还是有可能加入重大的变更。不管怎样,在这四个月里,开发者还是可以期待一些新的特性能够被添加到Java 10中。
攻城狮的那点事
2019/06/28
5540
Java 10 新特性解密,引入类型推断机制,将于 2018 年 3 月 20 日发布
JDK 10 是 Java 10 标准版的部分实现,将于 2018 年 3 月 20 日发布,改进的关键点包括一个本地类型推断、一个垃圾回收的“干净”接口。
程序员鹏磊
2018/03/09
1.1K0
Java 10 新特性解密,引入类型推断机制,将于 2018 年 3 月 20 日发布
Java 10的10个新特性,将彻底改变你写代码的方式!
Java 9才发布几个月,很多玩意都没整明白,现在Java 10又要来了。。 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK 10…… 刚学Java的同学是不是感觉一脸蒙逼?!!! 就连我这个老司机也同样感觉如此! Java 更新越来越快,我们做技术的也要跟上步伐,不然总会慢别人一拍,这新东西从国外到国内应用一般要好几年的时间,如果我们提前了解并应用这些新技术对自己不是坏事。 Java 10的新特性 说了这么多,看Java 1
Java技术栈
2018/04/02
7680
Java 10的10个新特性,将彻底改变你写代码的方式!
你想了解的JDK 10版本更新都在这里
以下是 Java 10 中的引入的部分新特性。关于 Java 10 新特性更详细的介绍可参考这里。
我没有三颗心脏
2020/08/24
9210
你想了解的JDK 10版本更新都在这里
JDK 5 ~ 10 新特性倾情整理!
最近连 JDK11都在准备发布的路上了,大家都整明白了吗?也许现在大部分人还在用6-8,8的新特性都没用熟,9刚出不久,10-11就不用说了。 为了大家对JDK有一个全面的了解,下面我为大家整理了JDK5~10的所有关键新特性! JDK5新特性 自动装箱与拆箱 枚举 静态导入 可变参数(Varargs) 内省(introspector) 泛型(Generic) For-Each循环 JDK6新特性 Desktop类和SystemTray类 使用JAXB2来实现对象与XML之间的映射 理解STAX 使用Co
Java技术栈
2018/06/04
5990
聊聊 Java 新特性与设计模式
JDK 中使用 Builder:使用 StringBuilder 或者像下面这样:
Java技术江湖
2023/01/04
3750
聊聊 Java 新特性与设计模式
相关推荐
Java 10 已发布!时隔 6 月带来 109 项新特性
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档