我目前正在使用gradle,似乎可以通过java插件设置sourcecompatibility和targetcompatibility
我想知道除了与旧的JDK向后兼容之外,我们使用sourcecompatibility/targetcompatibility的原因是什么?
如果没有设置sourcecompatibility/targetcompatibility,升级到最新的java会更容易吗?
是否应该使用sourcecompatibility和targetcompatibility?
源兼容性和目标兼容性变量与打开javac的源和目标直接相关。这些用于交叉编译(javac的相关文档,相关SO问题)。这些值的唯一目的是使类文件向后兼容。它们实际上没有任何其他用途。这是一个或多或少出于安全目的而添加的功能。您可以安装较新的JDK,并使用这些值编译代码,而不是在您的机器上安装较旧、安全性较差的JDK。
不过,这些标志有一个主要警告:仅仅因为您设置了这些值并不意味着您编写的代码可以在旧JVM上运行。这是因为虽然javac
会编译您的类以使它们与旧JVM兼容,但您最终仍然可以绑定到旧JVM中不存在的方法。
例如,如果您将兼容性值设置为'1.6'
并且您正在使用JDK 8运行构建,您仍然可以编写如下代码:
Objects.equals(obj1, obj2);
编译器不会抱怨。它仍然会构建而不抱怨该行。但是,如果您尝试使用Java6运行它,您会收到一个错误,说明Objects.equals
不存在,因为Object
是在Java7中引入的。
换句话说:-source
和-Target
使您的. class文件与旧的JVM兼容,但它们不会验证代码使用的类和方法。唯一的方法是使用-bootclasspath
,此时,您不妨下载并使用旧的JDK编译,因为您必须这样做才能获得所需的rt.jar
文件(相关SO问题)。
就升级而言,设置这些值并不一定会限制您的升级能力。如果您计划在该版本中使用它,那么您编写的代码必须与您使用的任何值兼容,但没有什么阻止您更改它们并开始使用更新的功能和API。
我找不到任何关于什么Java版本可以用于Android Gradle“源兼容性”和“目标兼容性”的选择的信息。 我可以获得当前的Java JDK路径,比如:'c://Program Files/Java/jdk1.7.0_45'到'1.7',那么选择是'1.7'还是'1.6'? 或者,如果您有一个到'1.8'的路径:'1.8'、'1.7'和'1.6'? 我如何确定哪些选择是可用的? 谢了!
本章提供了有关 版本控制 章节中提供的破坏性和非破坏性修改列表的详细说明。 什么算是一个破坏性(不兼容)的变化并没有明确的定义。本指南应该被视为指示性的,而不是每一种可能变化的全面清单。 这里列出的规则只涉及客户端兼容性。预期API生产者明白在部署方面的要求,包括实现细节的变化。 一般目的是,服务端更新到一个新的minor版本或patch版本不该破坏客户端。可预期的破坏类型有: 源代码兼容性:针对
语言补丁 Array.isArray Object.assign JSON.stringify console-polyfill Object.keys Object.is Array.prototype.forEach Function.prototype.bind 或者直接使用https://polyfill.io/ 提供的动态补丁方案 <script src="https://cdn.pol
在使用Java编译器(
我在gradle文件中的当前配置是 这个规范使我的项目特定于Java1.7。 我的要求是我应该能够为不同的java版本构建我的项目,比如Java1.7和Java1.8 PS:就像gradle中的概要文件构建一样,我们可以指定不同的java版本。
本文向大家介绍highcharts 兼容性,包括了highcharts 兼容性的使用技巧和注意事项,需要的朋友参考一下 示例 牌 支持的版本 IE浏览器 6.0 + 火狐浏览器 2.0以上 铬 1.0 + 苹果浏览器 4.0以上 歌剧 9.0 + iOS(Safari) 3.0 + Android浏览器 2.0以上 Highcharts支持旧版浏览器的jQuery 1.6+版本,以及现代浏览器的2