Java是跨平台的吗?
我想开发一个跨平台的应用程序
Java是跨平台的吗?我的意思是,我可以在Windows中开发Java应用程序并在Mac OS X和Linux中使用它吗
如果是,如何进行
我发现应用程序是用Java编写的,有两个安装文件,一个用于Windows,另一个用于Mac。这使我困惑强>
如有任何说明或建议,将不胜感激
你可以在下面搜索框中键入要查询的问题!
我想开发一个跨平台的应用程序
Java是跨平台的吗?我的意思是,我可以在Windows中开发Java应用程序并在Mac OS X和Linux中使用它吗
如果是,如何进行
我发现应用程序是用Java编写的,有两个安装文件,一个用于Windows,另一个用于Mac。这使我困惑强>
如有任何说明或建议,将不胜感激
# 1 楼答案
关于Java的可移植性,有一个重要的警告。“业务逻辑”(非UI内容)是非常可移植的,但Java至少有六种不同(且不兼容)的用户界面范例,因此,例如,为在Android上运行而编写的Java代码(甚至忽略Android不兼容的JVM)不会在诺基亚手机上运行,而其中任何一种的代码都不会在台式PC上运行
但据我所知,没有其他语言比这更好
# 2 楼答案
这取决于你所说的“跨平台”是什么意思。Java代码可以在任何支持JDK的操作系统上编译成字节码二进制类或jar文件,并在任何支持JRE的平台上运行。然而,大多数编译后的语言都可以在任何平台上编译,只要设计人员满足它的要求。java比C++更容易携带,但这并不意味着C++代码将无法在任何平台上编译。p>
换句话说,不要只在这一个功能上选择你的语言。为应用程序选择最好的语言将是一种更好的方法。也许脚本语言最适合你。也许可以发布另一个问题,询问用什么语言来解决你的具体问题
# 3 楼答案
是的,在一个操作系统上编写和编译的Java可以在另一个操作系统上运行。许多现代操作系统都可以使用JVM
# 4 楼答案
Java应用程序打包为。jar文件。只要用户安装了JRE(JRE是免费提供给用户的),它们就可以在为应用程序实现正确Java运行时环境的任何操作系统上运行
每个操作系统运行应用程序的具体过程都不同
Java开发工具包提供了一些库,允许调用应该在任何操作系统上工作的系统功能(例如文件操作、用户界面)。然而,具体的行为可能会有所不同(类似于一个网站在不同浏览器中的不同外观)。此外,Java应用程序的“外观”可能与专门为该操作系统设计的应用程序的外观不完全匹配
# 5 楼答案
您可以在每个有JVM的设备上运行Java应用程序。如果没有,那你就不走运了
Oded的评论很重要。C和C++在很多设备上都有编译器。p>
在切换平台时,Java字节码不需要重新编译
C和C++将要求开发者在将应用程序重新分配给目标系统之前重新编译应用程序,但是一旦完成,客户端将能够在没有问题的情况下运行。p>
无论您选择哪种语言,都必须解决特定于平台的定制和设置问题。应用程序越依赖于特定于平台的功能,其可移植性就越差
更新:
让我们重温一下问题中的原话:
这就是目标——直接引用。没有关于web、移动或桌面应用程序的详细信息
定义“跨平台”。听起来这里的偏见是“字节码可移植性”。C/C++不能做到这一点,但只要您坚持使用ANSI C/C++并且避免使用供应商扩展,“源代码可移植性”当然是可能的
Java从一开始就以字节码的可移植性而闻名。这就是JVM带给你的。这并不意味着整个应用程序都是可移植的,因为您可能没有很好地管理其他依赖项
如果我用“C/C++”代替“Java在这个群体中,跨平台意味着不同的东西。我不能选择一个为一个平台编译的.exe或.so,并期望在另一个平台上运行它,但如果我为每个平台创建一个.exe或.so,并使它们可用,那么肯定有可能在多个平台上运行相同的源代码
如果你已经把Java应用打包成JAR,你可以把它放在任何你喜欢的平台上
如果有多个C/C++。对于你感兴趣的平台,你当然可以在需要的时候运行它
# 6 楼答案
Java是跨平台的,即编译的Java程序在所有存在JVM的平台上运行。(这适用于所有主要操作系统,包括Windows、Mac OS和Linux。)
是的,这是可能的
这(以及安全方面)是在虚拟机中运行程序的主要优势之一
.java
文件中).class
文件中).jar
文件)中的类文件同样的
.jar
文件可以在Windows系统、Mac系统等上分发和执行这是因为一些应用程序依赖于特定于平台的功能。然后,它们与不同的平台特定库捆绑在一起
除非您开发的应用程序本身依赖于特定于平台的功能(例如低级系统调用),否则您应该能够使用普通Java做得很好
重要评论@Peter Lawrey