数字化转型浪潮中,金融行业如何破局?获取学习视频 了解详情
写点什么

从 Java 9 开始,javac 的 -target 和 -source 命令将不再支持 1.5/5 及更早版本

  • 2013 年 7 月 01 日
  • 本文字数:889 字

    阅读完需:约 3 分钟

最近有一项面向 Java 8 和 Java 9 的 JDK 增强提案( JDK Enhancement Proposal ),即 JEP 182,意在为 Java 编译器所使用的 -target 和 -source 命令的支持模型制订相关规则。该提案建议,除当前版本外,Java 编译器最多支持 3 个更早的版本。

-target 标志允许编译器生成特定版本的 Java 类文件格式。尽管我们通常指定的是 Java 版本,比如 1.5/5 或 1.6/6,但是该选项实际上会被翻译为生成的类文件中所使用的字节码版本号:

  • 48Java 4
  • 49Java 5
  • 50Java 6
  • 51Java 7
  • 52Java 8(尚未发布)
  • 53Java 9(尚未发布)

-source 标志允许编译器将新的语言构造(如 Lambda 表达式、try-with-resources 以及 switch 中使用字符串等等)看做错误。一些新语言特性(比如 Lambda 表达式)需要使用特定的字节码功能(比如 invokedynamic),因此,-source 指定的版本比 -target 指定的版本还新往往是不可能的。

JEP 182 阐明,在 Java 9 及以后的版本中,javac 的 -target 和 -source 最多支持更早的 3 个版本。Java 6 的产品周期已于今年年初终止,因此 Java 8 编译器的限制是仅向前支持到 Java 6,这种限制应该不会给人们带来重大影响。然而,如果没有特别说明,有些构建工具(比如 Maven)默认兼容的源代码版本是 1.5/5,可能需要加以更新才能在 Java 8 上运行。而 Java 9 则支持 1.9/9、1.8/8、1.7/7 和 1.6/6。

变化已经开始,Java 8 的 -target 不再接受 jsr14 和 1.4 等选项。如果 -source 和 -target 指定的选项是 1.5/5 或更早版本,编译器会发出警告。Java 9 在发布时将不再支持 1.5/5。

从实践的角度看,这一变化看上去不算很大。但是直到最近,OSGi 运行时一直是使用“-source 1.5 -target jsr14”来编译的,这样源代码可以包含泛型,但是生成的字节码却能兼容 J2ME。Eclipse 代码库中去年已经删除了使用jsr14 的地方。因为Android 几乎已经消灭了J2ME (但是不管怎么说,只要像Felix 和Equinox 这样的OSGi 运行时还有用,对J2ME 的商业需求就仍然存在) ,所以对大多数Java 开发者而言,使用较新的运行时来编译应该不是问题。

查看英文原文: Java 9 to Drop Support for Compiling 1.5 and Older Source Code

2013 年 7 月 01 日 10:485286
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 121.7 次阅读, 收获喜欢 30 次。

关注

评论

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

Maven 项目执行的时候提示 JAVA_HOME is not correctly set 错误

HoneyMoose

送你两个神器,关系数据库数据入湖轻松应对

华为云开发者联盟

数据库 数据湖 数据迁移 关系数据库 实时数据

Stack Overflow 2021 开发者调查报告出炉,开发浪潮中的变与不变

清秋

语言 & 开发 文化 & 方法 Stack Overflow 开发者报告 编程语言排行

JavaScript 之事件循环(Event Loop)

网易云信

U2Net基于ModelArts Notbook的仿真实验

华为云开发者联盟

开源 modelarts 目标检测算法 U2Net Notbook

Fil价格今日行情?Fil有投资的价值吗?

区块链 分布式存储 IPFS fil fil价格今日行情怎么样

Ipfs排名前十的公司有哪些?怎么选择靠谱的ipfs公司?

区块链 分布式存储 IPFS fil ipfs公司

Jetpack Compose 架构分层

Changing Lin

8月日更

揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿

阿里云视频云

阿里云 直播架构 直播技术 视频直播 视频云

【SpringCloud 技术专题】「原生态 Fegin」打开 Fegin 之 RPC 技术的开端,你会使用原生态的 Fegin 吗?(下)

浩宇天尚

SpringCloud OpenFegin Fegin 8月日更

Flink CDC 2.0 正式发布,详解核心改进

Apache Flink

flink

这几个棘手的面试常见问题,如何高情商的回答?

架构精进之路

情商 8月日更

Java Arrays.asList 和 new ArrayList(Arrays.asList()) 的对比

HoneyMoose

初识 C#

若尘

C# 8月日更

区块链钱包搭建,去中心钱包搭建,仿IM钱包

测试经验| 音视频通话相关app如何进行测试

anyRTC开发者

软件测试 音视频 实时通信

FastApi-12-Form表单

Python研究所

FastApi 8月日更

金三银四,如何远程面试拿下大厂offer?(附大厂面经+面试宝典)

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

Prometheus监控的4个黄金指标

Rubble

Prometheus 8月日更

20张图让你彻底掌握负载均衡的秘密

负载均衡 编程 程序员 计算机

原理分析!如何将springboot项目打成war包放入tomcat中运行

Summer

Java 学习 程序员 架构 springboot

最全总结 | 聊聊 Python 数据处理全家桶(PgSQL篇)

星安果

Python 数据库 postgresql PgSQL

解决安全漏洞扫描,就靠它了

百度开发者中心

产品 最佳实践 企业动态 百度安全

Mybatis自定义拦截器与插件开发

码农参上

8月日更

Hive企业级性能优化

五分钟学大数据

hive hive性能优化

FunTester框架教程(一)

FunTester

教程 接口测试 API测试 测试框架 FunTester

更智能更高效!区块链打造更“美” 服装行业

旺链科技

区块链 服装产业

【Vue2.x 源码学习】第三十三篇 - diff算法-收尾+阶段性总结

Brave

源码 vue2 8月日更

什么是工控主机?工控主机安卓主板有哪些配置?

双赞工控

Flutter Android 端 FlutterInjector 及依赖流程源码分析

工匠若水

flutter android 8月日更

巧用Python访问台达AS228交互

林建

Python Modbus协议 台达 AS228T

“一键上链”技术大牛教你快速构建链上应用

“一键上链”技术大牛教你快速构建链上应用

从Java 9开始,javac的-target和-source命令将不再支持1.5/5及更早版本_Java_Alex Blewitt_InfoQ精选文章