Java应该是”一次构建,到处运行“ - reddit


Java口号不应该是“一次编写,到处运行”,而应是”一次构建,到处运行“:
“一次编写,到处运行”意味着您的代码是平台无关的。但是,只要使用与平台无关的库包并编写与平台无关的代码,这对于每种平台无关的编程语言(如 c/c++)都适用。
Java 的真正好处是只需编译您的程序一次,然后能够将编译后的 .jar 提供给您的客户,他们能够立即启动 .jar。因此,口号应该是“一次构建,到处运行”。

网友讨论:
我更喜欢“一次编写,到处调试”。

“一次编写,在运行中构建,在生产中调试。”

一次编写,随处运行的酷炫之处在于,在当今的 Java 生态系统中,随处意味着 Linux VM。

人们大大低估了仅使用“平台独立库”并仅编写“平台独立代码”的难度。例如,Java 保证其数字原语的大小和字节顺序。例如,这会影响数据库和网络代码。如果您想编写真正独立于平台的 C,您需要自己处理。Java 为您完成。

开发人员会在他们的笔记本电脑上构建应用程序 - 假设它是 Mac - 并运行测试套件,然后推送到 git。然后将触发一个管道,该管道可能在 linux 上执行另一个构建和测试,它将更改标记为准备好进行生产。然后,将触发另一个管道,这可能会将源代码推送到 docker 映像中以进行另一个构建,生成的镜像会被推送到 Nexus(或其他东西)中以最终部署到产品平台。
从开发人员的角度来看,他们只在他们的 Mac 上编写一次,但它可以在任何地方构建和运行 - 在他们的 Mac、git 管道和 docker 中。他们构建的二进制文件从未真正投入生产。