Java 编译器与 Linux/Windows 上的编译器相同吗?

问题描述 投票:0回答:5

我在Ubuntu中编写了一些Java代码,但现在我需要程序在Mac中运行(它不应该是现成的产品,我只是希望能够编译源代码)。我只是想知道,在 Mac 中编译时,代码是否会有很多需要更改的地方?

java macos cross-platform
5个回答
5
投票

只要您安装了正确版本的 JRE,您的程序就应该运行,前提是您在运行该程序的计算机上没有硬编码依赖项(即硬编码文件路径等)。


4
投票

Java 的中心思想之一是 一次编写,随处运行 - 换句话说,你只需编写和编译代码一次,然后它就可以在任何安装了 JVM 的平台上运行(具有正确的版本) )。因此,您根本不需要为 Mac 或任何其他操作系统重新编译代码。

Java 编译为 字节码,而不是本机机器代码。 Java 虚拟机解释并执行该字节码,并使用即时编译器将其转换为本机机器代码,以使其快速运行。

您的程序使用 Swing 并不重要 - 这本身并不意味着它不能在 Mac 上运行。

它不起作用的唯一原因是,如果您在代码中使用了硬编码操作系统特定的内容,例如硬编码 Windows 路径,如

C:\Program Files
等 - 这些内容当然在 Mac OS X 上不存在或 Windows 以外的其他操作系统。


4
投票

不要编译任何东西!只需将罐子寄给他们即可。本地 JVM 将完成剩下的工作。这就是java的工作原理。

免责声明:如果您需要第 3 方库 jar,您可能还需要运送它们或创建一个包含您需要的第 3 方 jar 的 war 文件(或类似的打包)。


4
投票

Java 使用 JVM 或 Java 虚拟机 来运行您编译的代码。只要您没有在程序中使用任何奇怪的操作系统特定功能(例如绑定到非 Java 库或运行系统命令),您的“编译”Java 可能会在大多数 Java 实现上运行。

有多个 JVM 版本和多个 JVM 实现,因此,如果您不牢记这一点,您可能遇到兼容性问题


3
投票

编译后字节码是一样的;但如果您使用了 Mac 上不可用的类,您将需要做更多工作。

© www.soinside.com 2019 - 2024. All rights reserved.