2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:002091

评论

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

企业级开发平台的演进

世开 Coding

软件开发 低代码 快速开发平台 少代码

常见恶意软件类型及危害

郑州埃文科技

网络安全 恶意软件 办公安全

Go语言入门04—循环语句

良猿

Go golang 后端 10月月更

如何进行企业数字化转型?传统企业数字化转型的3大底层逻辑

优秀

企业数字化转型

BH1750 光照传感器文档详解 及 驱动设计

矜辰所致

传感器 stm32 I2C协议 10月月更 BH1750

一文彻底搞懂前端缓存机制

hellocoder2029

JavaScript

前端懒加载和预加载

hellocoder2029

JavaScript

node+express操作cookie

木偶

前端 Node Express 10月月更

Go语言入门03—条件语句

良猿

Go golang 后端 10月月更

生产环境P0级事故,整个项目组被罚

CTO技术共享

为什么vue3要选用proxy,好处是什么?

hellocoder2029

JavaScript

数字云栖,邀您共享极致计算与创新进化的科技盛宴

阿里云CloudImagine

阿里云 边缘计算 云栖大会

秒杀活动!!!! 如何撑住10W QPS

CTO技术共享

10月月更

强烈推荐!腾讯T8架构师手写的SpringBoot分布式架构笔记

小小怪下士

Java 分布式 后端 springboot

途游游戏 DevOps 实践|都说「单元测试」好,「AAAC四步法」少不了

极狐GitLab

DevOps 运维 单元测试 CI/CD 代码安全

担时代任务 与国家同频 | 九科信息创始人万正勇:自主可控是中国超级自动化技术发展的必要条件

九科Ninetech

RPA 信创

遮罩和蒙版有什么区别,视频遮罩怎么用

懒得勤快

【10.14-10.21】写作社区优秀技术博文更新啦!

InfoQ写作社区官方

优质创作周报

“程”风破浪的开发者|OpenHarmony应用开发环境搭建

技能实验室

OpenHarmony “程”风破浪的开发者

pt尾递归优化

hellocoder2029

JavaScript

自主创新、领先一代,星环科技成功登陆科创板

星环科技

大数据 开源

ERP到底是自研还是外采好????

CTO技术共享

10月月更

鸿蒙开发入门 | 开发第一个鸿蒙应用+页面跳转

TiAmo

华为 鸿蒙开发 10月月更

golang中的map

六月的

Go map

uniapp打开地图选择位置

源字节1号

软件开发 前端开发 后端开发 小程序开发

驾考宝典携手HMS Core统一扫码服务,构建复杂场景中的流畅扫码体验

HarmonyOS SDK

扫码

不可错过!14位安全大拿齐聚!AMD、Arm及Intel等技术专家解读系统安全 | 2022云栖大会

OpenAnolis小助手

开源社区 系统安全 云栖大会 龙蜥安全专场 操作系统峰会

Paddlenlp之UIE模型实战实体抽取任务【打车数据、快递单】

汀丶人工智能

nlp

Mysql数据库基础之数据库的安装与配置

渔戈

MySQL 数据库 10月月更

原来Vue3的computed属性还能这么用啊🔥

渔戈

Vue 前端 10月月更

分布式事务-CAP理论

zarmnosaj

10月月更

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