写点什么

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

评论

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

干货|车来了APM应用性能体验实践

APM App 稳定性 APP稳定性

实测 Google 全同态加密FHE,效果如何?

瑚琏

机器学习 隐私计算 多方安全计算 富数科技 Avatar2.0

阿里首次公布 Java10W 字面试复盘笔记,面面俱到、太全了

Java 程序员 架构 面试

我以为我对Mysql很熟,直到遇到了阿里这份笔记

Java架构师迁哥

JavaWeb 项目服务器部署详细教程(MySQL + JDK + Tomcat)

若尘

MySQL jdk javaWeb java编程 6月日更

Java各种场景获取路径

hasWhere

Flink+Hologres助力伊的家电商平台建设新一代实时数仓

Apache Flink

flink

超全Redis命令总结,墙裂建议收藏,说不定就用上了呢

北游学Java

Java redis

Windows Core Audio 音频开发技术指南

拍乐云Pano

区块链赋能农业振兴,农产品溯源系统

13530558032

开发效率提升50%以上,爱奇艺官网主站的Nuxt实践

爱奇艺技术产品团队

大前端 开发 nuxt

技术干货 | Windows桌面端录屏采集实现教程

ZEGO即构

RTC 录屏采集

IDEA搭建DCM4CHEE开发环境

birdbro

intellij-idea 医学影像 DICOM PACS DCM4CHE

区块链电子合同技术方案,区块链电子合同平台

13530558032

作为一名Android工程师,我们能为Fuchsia OS与鸿蒙OS做点什么

Changing Lin

架构训练营模块 6 作业 - 江哲

江哲

性能排查常用Linux命令

hasWhere

华云大咖说 | 华云数据与福昕鲲鹏携手共建国产云生态

华云数据

AI 转型必看|算法工程师的 AI 启示录

百度大脑

人工智能

cpu突然变高定位步骤

hasWhere

Java版本发布历史

hasWhere

中国信通院云大所与dbaplus社群开启战略合作,共同推动多项标准落地

dbaplus社群

直呼内行!阿里大佬离职带出内网专属“Spring Security Oauth2.0”学习笔记

Java 程序员 架构 面试 微服务

Bzz节点云矿机分币系统开发,云算力矿机租赁

阿里13年算法坚守者为你总结AI创新经验

阿里巴巴大淘宝技术

人工智能 AI 算法

Java性能问题定位命令

hasWhere

恭喜埃文科技入选“创新能力百强企业”!

郑州埃文科技

Zilliz 陈室余:女性的独特洞察,可能为开源发现新机遇 | ECUG Meetup 讲师专访

七牛云

数据库 开源 音视频 Meetup Milvus

RDMA打造存储利器

焱融科技

文件 高性能 数据中心 分布式存储

「区块链+游戏」背后能否诞生下一个腾讯?

CECBC

java文件读写

hasWhere

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