如何用AI技术降噪? QCon 广州“音视频架构实践”专场给你答案! 了解详情
写点什么

从 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:485296
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

ThreadLocal到底是什么?它解决了什么问题?,kalilinux渗透教程视频

Java 程序员 后端

Threadtear:一款多功能Java代码反混淆工具套件,小米java社招面试

Java 程序员 后端

Vue 数组操作(1),java设计模式书籍推荐有代码讲解

Java 程序员 后端

vue遇到的坑,linux网络编程pdf百度云

Java 程序员 后端

Vue 数组操作,java基础教程百度网盘

Java 程序员 后端

Vue学习之v-if和v-for指令,tomcat常见面试题

Java 程序员 后端

Vue学习之自定义指令,宅家36天咸鱼翻身入职腾讯

Java 程序员 后端

Tomcat性能优化前后,有多大的差距,今天测试给大家看,linux视频教程推荐

Java 程序员 后端

Flink 的容错管理详细剖析

五分钟学大数据

flink 11月日更

【终极预告】Apache ShardingSphere Dev Meetup 彩蛋篇

SphereEx

开源社区 ShardingSphere Meetup SphereEx 热门活动

ThreadLocal基本使用和内存泄漏分析,kafka性能调优

Java 程序员 后端

Tomcat性能优化前后,有多大的差距,今天测试给大家看(1)

Java 程序员 后端

requests库与 lxml 库常用操作整理+总结,爬虫120例阶段整理篇

梦想橡皮擦

11月日更

ThreadLocal内存泄漏分析与解决方案(1),linux文件系统原理

Java 程序员 后端

WPF学习——依赖项属性,中软国际java面试流程

Java 程序员 后端

SQL语句基本语法及函数方法,java编程入门视频教程下载

Java 程序员 后端

双11攻略来啦:参与Oracle VS openGauss 在线研讨,与盖国强老师、李国良教授面对面!

墨天轮

oracle opengauss 对话

Struts 学习笔记1 -Struts Framework 概览,BAT面试&高级进阶

Java 程序员 后端

Tomcat实现热部署、热加载原理解析,线程池底层实现原理

Java 程序员 后端

Vue学习之事件修饰符,java后端开发入门

Java 程序员 后端

vue移动端自适应,mybatis面试问题

Java 程序员 后端

SymmetricDS 数据库双向同步开源软件入门,我要自学网java基础百度云

Java 程序员 后端

质效中台助力实现质量度模型规模化落地

百度Geek说

架构 中台 测试 QA

ThreadLocal内存泄漏分析与解决方案,Java完全自学手册下载

Java 程序员 后端

String Bean 注入方式,2021年Java程序员职业规划

Java 程序员 后端

Vue 生命周期 钩子函数,mybatisdao接口工作原理

Java 程序员 后端

windows下nginx的安装及使用,linux实用教程第三版pdf

Java 程序员 后端

xxl-job 源码运行解析,java基础编程视频

Java 程序员 后端

SSM整合,kafka教程分享

Java 程序员 后端

Thymeleaf基本使用,java基础入门第二版第二章答案

Java 程序员 后端

Tomcat各种网络异常场景解决方案及优化,基础+底层+算法+数据库

Java 程序员 后端

「云智公开课」百度沧海·存储

「云智公开课」百度沧海·存储

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