Java9及以上版本是否仍然与平台无关?

Java9及以上版本是否仍然与平台无关?,java,deployment,Java,Deployment,我问这个问题是因为现在开发人员需要在不同的操作系统(如windows、Linux或Mac操作系统)上编译代码,以创建最终的可交付成果。对于开发人员来说,它看起来开销更大。是的,当然它仍然是独立于平台的 Java字节码在Windows、Linux或Mac OS之间不会更改 您可以获取在windows上编译的类文件,或者内部包含类的Jar文件,并将它们复制到Linux或Mac OS机器上,只要平台的主要版本与最初编译它们的版本相同或更高,它们就可以工作 因此,如果它们是使用针对Java9运行时的Ja

我问这个问题是因为现在开发人员需要在不同的操作系统(如windows、Linux或Mac操作系统)上编译代码,以创建最终的可交付成果。对于开发人员来说,它看起来开销更大。

是的,当然它仍然是独立于平台的

Java字节码在Windows、Linux或Mac OS之间不会更改

您可以获取在windows上编译的类文件,或者内部包含类的Jar文件,并将它们复制到Linux或Mac OS机器上,只要平台的主要版本与最初编译它们的版本相同或更高,它们就可以工作


因此,如果它们是使用针对Java9运行时的Java9编译器编译的,那么执行它们的平台将需要是Java9或更高版本。否则您将得到一个不受支持的ClassVersionError。

java是独立于平台的,但java运行时环境JRE不是

所以,如果开发人员想为各种平台提供产品,而不在用户环境中安装jre, 对于每个平台,该产品应包含不同的jre


+编译并不重要,只需完成一次。

您似乎误解了Java 9的功能,它似乎将取代Java Web Start作为桌面应用程序的部署工具

JWS使用普通Jar作为可交付内容,但要求已经在用户机器上安装Java运行时环境。另一方面,打包工具将把Jar包装成适合Windows a.exe或Unix a.so等的可执行文件。要做到这一点,本机可执行文件需要为每个系统编码JRE的部分Jar是平台独立的,但需要为每个操作系统制作JRE


如果您向用户交付一个可执行Jar并通知他们需要安装Java插件来运行它,那么这个Jar仍然可以兼容所有支持Java的操作系统。

你说的是什么最终的可交付成果?现在开发人员需要在不同的操作系统上编译他的代码谁告诉你的?你是对的,我应该使用打包而不是编译。你是对的,自包含的应用程序打包确实给了我们一个机会这是一个很好的解决方案,可以摆脱我们在Java8之前下载和安装的笨重JRE。但是,我在这里提到这是开发人员的开销,因为每个人的机器上都没有Linux和Mac OS。所以我认为最好有一种工具/docker映像/virtual box映像,它可以包含所有操作系统,并运行这些打包工具来简化开发人员的工作。您是对的,自包含的应用程序打包无疑为我们提供了一个很好的解决方案,以摆脱我们在java 8之前下载和安装的笨重JRE。你对我写的东西读得太多了。我对它是否“好”没有意见。这正是甲骨文公司的决定。但是,我在这里提到这是开发人员的一项开销,因为每个人的机器上都没有Linux和Mac操作系统,为什么他们必须这么做。。。。因此,我认为最好有某种工具/docker映像/虚拟盒映像,它可以包含所有操作系统,并运行这些打包工具来简化开发人员的工作。想什么就想什么。但这是一个问答网站,而不是。。宣传和意见论坛。你的问题已经回答了。