写点什么

JavaOne 2015 主题演讲 Part1

  • 2015-11-26
  • 本文字数:1730 字

    阅读完需:约 6 分钟

在今年的 Java 20 周年的庆祝大会中,JavaOne 2015 的中心议题是“Java 的 20 年”。甲骨文公司 Java 平台软件开发部的副总裁 Georges Saab 的主题演讲就将关注点放在了 java 的发展历程、它主要的发展里程碑,并且深度关注于 Java8 及其更新。甲骨文公司 Java 平台首席架构师 Mark Reinhold 的主题演讲奠定了 Java 发展的路线图,并展示了定于 2016 年 Q3 季度发布的 Java9 。

Reinhold 提到 Java 成功的关键在于辨识到了痛点;找出了缺失的抽象类并添加了抽象类,以此方式来满足现有的解决方案。

Reinhold 还说到“目标是随着时间的推移,要持续改善开发人员的开发效率,同时保留 Java 的可读性、简化性、通用性以及兼容性的核心价值。”

他推断,缺失的抽象类已经引领了 Java5 的泛型与 Java8 的 lambdas 表达式中的重大创新。2008 年,Jigsaw 项目引入了 _ 模块 _ 的概念,以此来解决两个不同的痛点:类路径地狱 (Classpath Hell) 和庞大的单体 JDK。

类路径地狱 (Classpath Hell)

据 Reinhold 所称,类路径 (Classpath) 的根本问题在于它们不仅仅是类。他说“类路径是一种查找类的方式,不必关心组件、包甚至它们的预期用途。”

在类路径中,甚至都无法确定你们寻找的类就在 jar 文件内;我们也不知道是否有任何与应用开发接口相关的冲突。并且,当开发人员不知道或是不理解内部接口的目的,并对其进行改变时,内部接口就可能会暴露出一些安全问题。

重要通知:接下来 InfoQ 将会选择性地将部分优秀内容首发在微信公众号中,欢迎关注 InfoQ 微信公众号第一时间阅读精品内容。

据 Reinhold 所称,模块为 jar 文件提供了一个强有力的抽象类,模块是一个程序组件,它不仅能在 java 编程语言中实现,在 java 虚拟机中同样也能。正如他所说的“模块是脱离类路径地狱 (Classpath Hell) 的关键。”

  • 模块可被看做是包的容器,与此同时,该模块也表述了它与其他模块是如何联系的;
  • 模块是包的容器;
  • 模块为其依赖的其他模块命名;
  • 一个模块不会对其他模块进行干扰;
  • 模块只有通过其它依赖它的模块才能输出特定的包来使用。

为了在 Java9 中使用模块,所需的 jar 文件中的模块必须在 module-info.java 文件中进行声明。文件名不是一个类的名字,它是一个约定,就像 package-info.java 一样;但它仍可以通过 javac 进行编译。模块化的 jar 文件包含 module-info.class。该模块化的 jar 文件可作为一个单独的产物进行传送;对于 java9 预先发布的版本来说,模块化 jar 文件就像常规 jar 文件一样运行。

Reinhold 提到,通过允许终端用户以从下到上或从上到下的方式将现有的系统进行模块化,模块的采用就大大地简化了。

单体 JDK

Jigsaw 项目提供了很多新的用例,传统意义上来讲这些用例不适合庞大的单体 Java SE JDK。某些用例包括:

  • 小型设备——没有足够空间去存储所有的 Java SE 包。
  • 云应用——不需要复制整个的 Java SE JDK。因为在云中,密度是主要因素。(注:密度指的是能为一套特定的软硬件进行交付的系统与服务的数量。)
  • 维护与安全——庞大、整体化的 JDK 系统在子系统之间存在着千丝万缕的联系。并且,它缺乏内部接口的封装,这会导致安全问题。

据 Reinhold 所称,“模块为强有力的封装提供可依赖的配置。”

有了模块化,伴随着增强的安全性,开发人员只使用需要的功能。因此,在 JDK 9 中,所有非关键的内部接口将被封装。某些关键的内部接口例如 sun.misc.Unsafe 仍然可以访问。(绝大部分)内部接口封装的提出表明“JDK 9 中引入的、替换掉原有版本的关键内部接口在 JDK 9 中将被弃用,或者被封装或者在 JDK 10 中被删除。”

Reinhold 提到被封装后的内部接口仍可以在编译时和运行时通过命令行标志来进行访问。

延伸资源:

有关 Jigsaw 项目的更多信息,请查阅:

JEP 200: 模块化 JDK

JEP 201: 模块化源代码

JEP 220: 模块化运行时图形

JEP 260: 封装大多数内部接口

JEP 261: 模块化系统

快速启动Jigsaw 项目

查看英文原文: JavaOne 2015 Keynotes (Part 1)


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者(已满),InfoQ 读者交流群(#2)InfoQ 好读者)。

2015-11-26 18:001991

评论

发布
暂无评论
发现更多内容

详谈数据中心网络中的四种不同类型的虚拟化技术:VXLAN、NVGRE、STT和SPBM

wljslmz

6 月 优质更文活动

【Nest系列】1.初识 NestJS 和 Hello, World

昆吾kw

Node Nest.js

WMS 实物库存系统设计

红袖添香

系统设计 系统架构 供应链物流 WMS仓库管理 库存系统

当 Rokid 遇上函数计算

阿里巴巴云原生

阿里云 云原生 Rokid

C语言编程语法—结构

芯动大师

C语言 语法 6 月 优质更文活动

PoseiSwap IDO 即将开启,一览 $POSE 经济模型

股市老人

绿了,又绿了,现在程序员行情已经好转了吗?华为都不刷人了!

互联网架构师小马

Java java面试 Java八股文 Java面试题 Java面试八股文

全国大数据与计算智能挑战赛:面向低资源的命名实体识别基线方案,排名13/64

汀丶人工智能

人工智能 自然语言处理 关系抽取 命名实体识别 6 月 优质更文活动

SpringWeb服务应用响应式Web开发组件:响应式编程和SpringBoot

互联网架构师小马

在Linux中,如何列出和删除 Iptables 防火墙规则?

wljslmz

6 月 优质更文活动

SpringWeb服务构建轻量级Web技术体系:SpringGraphQL

互联网架构师小马

MySQL DeadLock -- 二级索引导致的死锁

红袖添香

MySQL 数据库 数据库死锁

IT知识百科:什么是OTN——光传送网?

wljslmz

6 月 优质更文活动

2023-06-17:说一说redis中渐进式rehash?

福大大架构师每日一题

redis 福大大架构师每日一题

2023中国高校计算机大赛 — 大数据挑战赛:论文学科分类(清华大学主办)

汀丶人工智能

人工智能 自然语言处理 深度学习 文本分类 6 月 优质更文活动

为什么中国一有创新,就被说套壳?

脑极体

套壳

PoseiSwap IDO 即将开启,一览 $POSE 经济模型

西柚子

极限科技旗下软件产品 INFINI Easysearch 通过统信 UOS 认证

极限实验室

搜索引擎 UOS 统信 国产化替代 easysearch

JAVA实现一个工作流引擎

小小怪下士

Java 程序员 工作流

SpringWeb服务构建轻量级Web技术体系:SpringHATEOAS

互联网架构师小马

PoseiSwap IDO 即将开启,一览 $POSE 经济模型

鳄鱼视界

基于51单片机的智能营养秤系统设计与实现

DS小龙哥

6 月 优质更文活动

2023-06-18:给定一个长度为N的一维数组scores, 代表0~N-1号员工的初始得分, scores[i] = a, 表示i号员工一开始得分是a, 给定一个长度为M的二维数组operatio

福大大架构师每日一题

golang 算法 rust 福大大架构师每日一题

飞书深诺多系统数据同步方案

飞书深诺技术团队

JavaOne 2015 主题演讲 Part1_Java_Monica Beckwith_InfoQ精选文章