Java 交叉编译 - 最新 JDK 的好处

2023-12-03

我维护一个 Java 应用程序,在分发它之前我总是使用 JDK 1.6 进行编译,因为这是我的应用程序所需的最低版本 - 我不使用任何更新的功能。我不认为在更高版本中编译它有什么意义,否则旧的 JRE 将无法运行它(即使用 Java 1.6 的 Mac OSX 上的用户)。

现在,随着最近关于 Java 的安全新闻报道以及 JDK 更高版本中的错误修复,最好使用以下语法使用最新的 JDK 进行交叉编译:

javac -Xlint -source 1.6 -target 1.6 -bootclasspath jre6/lib/rt.jar MyClass.java

这会生成一个在 JRE 1.6 下运行良好的类文件,但是与首先使用 JDK 1.6 相比有什么好处吗?我是否利用了较新 JDK 中的任何优化,或者是否生成了相同的字节码?


您应该考虑以下几点:

  1. 字符串连接的字节码发生了多次变化。它不再是性能不佳的陷阱。但我不确定这是否来自字节码表示的重构或来自更改虚拟机。
  2. 旧的(系统)JDK/JRE 可能会在开发计算机上带来安全风险。如果开发人员使用过时的 JDK/JRE,他可能容易受到正在执行的恶意软件的攻击。
  3. 客户端过时的 java 版本会让用户面临安全风险。如果您允许用户使用旧的 Java 版本,他们就会这么做。这可能存在安全风险。
  4. Java 6 不再受到公开支持。安全问题在于,用户既没有被告知他的java版本应该更新,也没有被强迫这样做。请记住,Java 位于安全漏洞的前三名之列。
  5. You can use Java 1.7 features while compiling for 1.6 target. Using -source 1.7 and -target 1.6 you can use language features like int i = 0b011
  6. JDK 附带的工具已更新。也许有用于开发 java 应用程序的新工具,例如在某个时刻javaVisualVM已添加到 JDK 中。

看看这个列表,我认为使用当前 JDK 的优点胜过使用旧 JDK 的优点。

EDIT: 我进行了一些调查,现在我建议您安装适合您的目标版本的 JDK。由于 bootstrap/ext 类路径,您在交叉编译时无论如何都需要 JDK。看如何针对旧平台版本进行交叉编译了解更多信息。该站点还指出不同 JDK 之间的编译存在差异(倒数第二段),并建议使用与您的目标版本相关的 JDK(最后一段)。同样相关的可能是javac 文档.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 交叉编译 - 最新 JDK 的好处 的相关文章

  • 清理码头 - 删除“不必要”的东西

    我习惯用Jetty http jetty codehaus org jetty 作为我的网络容器 我对我做了什么安装步骤得到原始的焦油球并且清理一些目录和文件从中 我在这里想提出的是 您通常从 Jetty 中删除什么以在生产 登台环境中使用
  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • 如何使用 SimpleDateFormat 解析多种格式的日期

    我正在尝试解析文档中的一些日期 用户似乎以类似但不完全相同的格式输入了这些日期 以下是格式 9 09 9 2009 09 2009 9 1 2009 9 1 2009 尝试解析所有这些内容的最佳方法是什么 这些似乎是最常见的 但我想让我困扰
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • 主线程如何在该线程之前运行?

    我有以下代码 public class Derived implements Runnable private int num public synchronized void setA int num try Thread sleep 1
  • 如果使用的 JVM 是 x86 或 x64,则以不同的方式解决 Maven 依赖关系?

    我设置了一个 Maven 存储库来托管一些 dll 但我需要我的 Maven 项目根据使用的 JVM 是 x86 还是 x64 下载不同的 dll 例如 在运行 x86 版本 JVM 的计算机上 我需要从存储库下载 ABC dll 作为依赖
  • 在java中实现你自己的阻塞队列

    我知道这个问题之前已经被问过并回答过很多次了 但我只是无法根据互联网上找到的示例找出窍门 例如this http tutorials jenkov com java concurrency blocking queues html or t
  • Java 服务器-客户端 readLine() 方法

    我有一个客户端类和一个服务器类 如果客户端向服务器发送消息 服务器会将响应发送回客户端 然后客户端将打印它收到的所有消息 例如 如果客户端向服务器发送 A 则服务器将向客户端发送响应 1111 所以我在客户端类中使用 readLine 从服
  • 无法加载或查找主类,可以在命令行中使用,但不能在 IDE 中使用[重复]

    这个问题在这里已经有答案了 在将其标记为重复之前 请先听我说完 我正在尝试使用 gradle 导入一个 java 项目 功能齐全 适用于所有其他笔记本电脑 没有问题 我的项目 100 正常运行 适用于所有其他笔记本电脑 当我的笔记本电脑被重
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • Java 收集返回顶级项目的映射的嵌套流

    我有以下模型 class Item String name List
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 无法捕获 Spring Batch 的 ItemWriter 中的异常

    我正在编写一个 Spring Batch 流程来将数据集从一个系统迁移到另一个系统 在这种情况下 这就像使用RowMapper实现在传递给查询之前从查询构建对象ItemWriter The ItemWriter称为save我的 DAO 上的
  • 如何在 Quartz 调度程序中每 25 秒运行一次?

    我正在使用 Java 的 Quartz Scheduling API 你能帮我使用 cron 表达式每 25 秒运行一次吗 这只是一个延迟 它不必总是从第 0 秒开始 例如 序列如下 0 00 0 25 0 50 1 15 1 40 2 0
  • JVM:是否可以操作帧堆栈?

    假设我需要执行N同一线程中的任务 这些任务有时可能需要来自外部存储的一些值 我事先不知道哪个任务可能需要这样的值以及何时 获取速度要快得多M价值观是一次性的而不是相同的M值在M查询外部存储 注意我不能指望任务本身进行合作 它们只不过是 ja
  • Android AutoCompleteTextView 带芯片

    我不确定我是否使用了正确的词语来描述此 UI 功能 但我已附上我希望在我的应用程序中实现的目标的快照 它由 Go SMS 使用 用户在编辑文本中键入联系人 在用户从完成下拉列表中选择联系人后 该联系人将被插入到编辑文本中 如附图所示 编辑文
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A

随机推荐

  • 如何在处理函数的其余部分之前更新 WPF 中的 UI 元素?

    我想在用户单击按钮后立即禁用该按钮以阻止他们再次单击它 单击它时会执行许多检查 并且这些检查似乎是在 UI 更改发生之前完成的 我试图通过为按钮使用单独的线程来做到这一点 但它似乎仍然只在检查完成后更新 这是我正在使用的代码 private
  • 将子文档数组元素添加到mongoDB中的子文档数组元素

    这可能吗 我有一个集合 C 其中包含属性 A1 的数组 每个属性都有一个子属性数组 A2 如何将子文档添加到特定的 C A1 子文档 这是一个例子 db docs insert id 1 A1 A2 1 2 3 A2 4 5 6 如果您知道
  • 实体框架。删除表中的所有行

    如何使用实体框架快速删除表中的所有行 我目前正在使用 var rows from o in dataDb Table select o foreach var row in rows dataDb Table Remove row data
  • 使用 Java 8 将 ms 转换为字符串日期

    我有一个毫秒时间戳 并使用 SimpleDateFormater 对其进行格式化 如下所示 SimpleDateFormat sdfDate new SimpleDateFormat MM d yyyy h mm a return sdfD
  • 如何使用 .NET 从十六进制颜色代码获取颜色?

    如何从十六进制颜色代码中获取颜色 例如 FFDFD991 我正在读取文件并获得十六进制颜色代码 我需要创建相应的System Windows Media Color十六进制颜色代码的实例 框架中有内置方法可以做到这一点吗 我假设这是一个 A
  • MPI 和 C 结构

    我必须承认 当我看到使用 MPI 传输一个 C 结构体需要多少行代码时 我感到非常震惊 在什么情况下可以使用预定义的数据类型简单地传输结构MPI CHAR 考虑以下示例 struct particle double x double y l
  • PHP switch 语句变量范围

    在 PHP 中 switch 语句中的变量作用域是如何处理的 例如 以这个假设的例子为例 someVariable 0 switch something case 1 someVariable 1 break case 2 someVari
  • 如何在maven多模块项目中仅运行父pom.xml

    我有 Maven 多模块项目 在父级 我有一些java文件 在父 pom xml 中 在打包阶段我做了一些事情 通常 当我在父级别运行 mvn package 时 父 pom 的 package 阶段将运行 并且所有模块也将被打包 我正在寻
  • 将数据从 SAP 提取到 SQL Server

    我正在使用 SSIS 包将 SAP 数据库表中的数据提取到 SQL Server 表中 我正在使用 OLEDB 源 目标连接来实现此目的 现在的问题是 SAP 中的一个表有 500 万条记录 需要大约 2 小时才能将这些数据提取到我的 SQ
  • 使用多处理时 cv2.Boost 的 Pickle 异常

    我正在从事名为 Faciel Actions UnitsDetection 的项目 我正在使用 python2 7 和 opencv 2 4 错误 pickle PicklingError Can t pickle
  • 跨多个数据库的连接查询语法错误

    我有2个数据库 即db1 db2 我需要一个查询从这些数据库 db1 db2 中获取数据 每个数据库都有2个表 优惠 发票 在 db1 concessions gt concession 中是主键 db1 invoicing gt 优惠编号
  • 限制正则​​表达式中的字符长度

    我使用以下正则表达式 不限制任何字符长度 var test a z A Z 0 9 lt gt Works fine 在上面 当我尝试将字符长度限制为 15 时 如下所示 它会抛出错误 var test a z A Z 0 9 lt gt
  • 使用json从PHP-MySql服务器获取图像到Android

    我正在开发一个应用程序 它从 php 服务器下载图像并在图像视图中显示图像 但是当我从 php 页面接收图像时 if empty result if mysql num rows result gt 0 result mysql fetch
  • 如何根据部分文件名检查文件是否存在?

    我试图检查我的文件夹中是否存在文件 但我只有部分文件名来检查它 有没有办法检查它 例如我有以下内容 God of War 文件名实际上称为 God of War PSP USA rar file exists 函数是否有某种类似的功能 或者
  • 如何使用python OpenCV找到单通道图像中与特定值匹配的最大连通分量?

    因此 我有一个主要为 0 背景 的单通道图像 以及前景像素的一些值 如 20 21 22 非零前景像素大多与具有相同值的其他前景像素聚集在一起 然而 图像中存在一些噪点 为了消除噪音 我想使用连通分量分析 并且对于每个值 在本例中为 20
  • 纸浆 LP 最小化配制“选择一种类型”约束

    下面的代码用于运行 LP 最小化问题 其中我们有某些食物 它们的营养价值和成本 该代码当前在所呈现的状态下工作 我正在尝试添加另一种类型的约束 我将所有食物分为不同的类别 早餐 午餐 晚餐 零食 我想创建一个约束 其中Only 1早餐 午餐
  • 在 BIML 中的数据流之前创建表

    我正在使用 BIML 和 BIDSHelper 创建 SSIS 包 我正在尝试将数据从 csv 导入到 sql server 我想在数据流发生之前在目标数据库中创建表 这是我的代码
  • NSUserDefaults 与 sqlite3

    我有一个小型 iPhone 应用程序 用于存储对象列表 用户可以添加和删除对象 但此列表将仍然相当小 大多数用户将有 10 30 个对象 NSUserDefaults看起来更容易合作 但会sqlite3能更快吗 只有30条 记录 会有什么明
  • 是否可以嵌套 Angular2 应用程序

    假设我想构建一个可以插入第三方页面的 Angular2 应用程序 第三方页面可能已经使用 Angular2 可能有不同的版本 是否可以在第三方应用程序中引导我的 Angular 2 应用程序
  • Java 交叉编译 - 最新 JDK 的好处

    我维护一个 Java 应用程序 在分发它之前我总是使用 JDK 1 6 进行编译 因为这是我的应用程序所需的最低版本 我不使用任何更新的功能 我不认为在更高版本中编译它有什么意义 否则旧的 JRE 将无法运行它 即使用 Java 1 6 的