Java是跨平台的吗?

2022-09-01 18:31:00

我想开发一个跨平台应用程序。

Java是跨平台的吗?我的意思是,我可以在Windows中开发Java应用程序并在Mac OS X和Linux中使用它吗?

如果是,如何?

我发现应用程序是用Java编写的,有两个设置文件,一个用于Windows,另一个用于Mac。这让我感到困惑。

任何说明或建议将不胜感激。


答案 1

Java是一个跨平台吗?

Java是跨平台的,从某种意义上说,编译后的Java程序在存在JVM的所有平台上运行。(这适用于所有主流操作系统,包括Windows,Mac OS和Linux。

我的意思是我可以在Windows中开发Java应用程序并在Mac和Linux中使用它?

是的,这是可能的。

这(以及安全方面)是在虚拟机中运行程序的主要优势之一。

如果是,如何?

  • 用 Java 编写应用程序(在文件中).java
  • 使用 Eclipse 或 javac 编译应用程序(到文件中).class
  • (可选)将.class文件捆绑在可执行文件(文件)中.jar

同一个文件可以在Windows系统,Mac系统等上分发和执行。.jar

我发现应用程序是用Java编写的,有两个设置文件,一个用于Windows,另一个用于Mac。这让我感到困惑。

这是因为某些应用程序依赖于特定于平台的功能。然后,它们与不同的特定于平台的库捆绑在一起。

除非您正在开发的应用程序本身依赖于特定于平台的功能(例如低级系统调用),否则您应该能够很好地使用普通Java。

@Peter Lawrey的重要评论

例如,IntelliJ有三个特定于平台的安装程序,它们不是用Java编写的,但有一个zip,你可以在任何平台上解压缩它,它就会工作。


答案 2

您可以在具有 JVM 的每个设备上运行 Java 应用程序。如果没有,你就不走运了。

Oded的评论很重要。C和C++在很多设备上都有编译器。

切换平台时,不需要重新编译 Java 字节代码。

C 和 C++将要求开发人员在将应用程序分发到目标系统之前重新编译应用程序,但一旦完成,客户端将能够正常运行。

无论您选择哪种语言,都必须处理特定于平台的自定义和设置问题。您的应用程序越依赖于特定于平台的功能,其可移植性就越差。

更新:

让我们重新审视一下问题中的原始单词:

我想开发一个跨平台应用程序。

这是目标 - 直接引用。没有关于 Web、移动或桌面应用的详细信息。

Java是跨平台的吗?我的意思是,我可以在Windows中开发Java应用程序并在Mac OS X和Linux中使用它吗?

定义“跨平台”。听起来这里的偏见是“字节码可移植性”。C/C++做不到这一点,但只要你坚持ANSI C/C++,避免使用供应商扩展,“源代码可移植性”肯定是可能的。

Java从一开始就声称自己成名,一直是字节码的可移植性。这就是JVM带给你的。这并不意味着您的整个应用程序将是可移植的,因为您可能没有很好地管理其他依赖项。

如果我用“C/C++”代替“该组中的Java”,那么跨平台意味着不同的东西。我无法选择为一个平台编译的.exe或.so,并期望在另一个平台上运行它,但是如果我为每个平台创建一个.exe或.so,并使它们可用,那么当然可以使相同的源代码在多个平台上运行。

如果是,如何?

如果您已将Java应用程序打包为JAR,则可以将其放在您喜欢的任何平台上。

如果您感兴趣的平台有多个 C/C++ .exe,您当然可以在需要时运行它。


推荐