写点什么

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

评论

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

Qz学算法-数据结构篇(非线性结构、树)

浅辄

数据结构 三周年连更

招商证券与易观千帆达成合作,持续深耕数字化金融

易观分析

金融 证券

Spring Boot之根据数据库连接信息指定分页查询表结构信息

bug菌

Spring Boot 2 spring-boot 三周年连更

探秘!第四代北斗芯片

江湖老铁

OpenHarmony驱动子系统开发—GPIO

鸿蒙之旅

OpenHarmony 三周年连更

如何在 Linux 中查看正在运行的进程?这三个命令轻松实现!

wljslmz

Linux 三周年连更

iOS MachineLearning 系列(9)—— 人物蒙版图生成

珲少

sdn网络

乌龟哥哥

三周年连更

【直播回顾】3月银行APP用户体验评测+中国金融业财富管理AI应用分析

易观分析

金融 银行

深入理解vue2.x双向数据绑定原理

不叫猫先生

Vue vue响应式 三周年连更

产品质量管理利器,华为云发布CodeArts Defect缺陷管理服务

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

Java 中的 null 到底是什么?

Java架构历程

Java 三周年连更

Bitmap引起的OOM问题

芯动大师

App 三周年连更 Out Of Memory

《一文带你读懂:云原生时代业务监控》

后台技术汇

三周年连更

干货|SpringBoot JMS(ActiveMQ)API实践应用详解

浅羽技术

Apache 中间件 ​ActiveMQ 消息列队 三周年连更

【Linux】之Jumpserver堡垒机的部署_搭建

A-刘晨阳

Linux 跳板机 三周年连更

程序员失业:现实还是幻想?| 社区征文

断墨寻径

人工智能 三周年征文

Marior去除边距和迭代内容矫正用于自然文档矫正

合合技术团队

人工智能 OCR 识别

《详谈·张勇》

石云升

读书笔记 三周年连更

从软件哲学角度谈 Amazon SageMaker

亚马逊云科技 (Amazon Web Services)

Amazon SageMaker

什么是软件开发领域的 disruptive innovation

汪子熙

软件工程 软件开发 三周年连更

多维评测指标解读2022MSU世界编码器大赛结果

阿里云CloudImagine

云计算 编码 编码器 视频云 MSU

使用 Vue.js 和 JavaScript 在 Web 应用程序中下载 PDF 文件

海拥(haiyong.site)

三周年连更

【Python实战】Python采集图书信息

BROKEN

三周年连更

大数据集群的部署实例

TiAmo

大数据 集群 三周年连更 开发实例

基于STM32+华为云设计的智慧烟感系统

DS小龙哥

三周年连更

一键生成rpc网关服务项目代码,让你轻松实现跨语言、跨平台的服务调用

vison

微服务 Go 语言 gin 代码自动生成 rpc gateway

Git 速查表:初学者必备的 12 个 Git 命令

Se7en

ChatGPT-4!又双叒叕写了一本量化交易的书(附下载)

量化投资与机器学习

机器学习 量化投资 ChatGPT4 对冲基金 Quant

2023移动端技术探索

轻口味

android 移动端 行业趋势 三周年连更

Selenium操作已经打开的浏览器

IT蜗壳-Tango

三周年连更

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