我对Java或编程很新。在我通过互联网来掌握这种语言的旅程中,我提出了这样的说法"写一次在任何地方运行"多次。
但我发现许多软件要求您为您的操作系统选择合适的版本。有时只有一个版本可用。
你能解释一下为什么会这样吗?
答案 0 :(得分:6)
[根据评论扩展]
Java在虚拟机JVM上运行。在理想的世界中,这意味着操作系统在此背后被抽象出来,您只需要确保您的代码与JVM一起工作,这将使其与底层操作系统一起工作。这可以通过使用错误的路径分隔符或行结尾来撤消;这不是绝对真理。
应用程序可以使用许多特定于操作系统的方法/库/函数/等,这可能使您无法将自己限制在一个通用代码库中。相反,他们可能希望利用平台提供的一些优势,并使用它创建一个单独的应用程序。
声明可能应该在“以一般方式写一次,随处运行”的某处,但这不是那么活泼。
此声明通常与Java相关联,但也有其他语言包含此内容:Javascript和HTML等网络语言将在任何浏览器上运行,因为浏览器本身构成了语言与底层操作系统之间的抽象。
其他语言没有(完全?),因为它们的工作方式不同:C#将使用底层的.NET框架,因为它仅适用于Windows。存在一个跨平台变体(Mono),但考虑C#真正的跨平台将是一种夸大其词。
答案 1 :(得分:3)
编译Java程序或源代码以生成"字节码" (中间二进制格式)。其次,字节码由作为Java虚拟机(JVM)一部分的解释器执行。 "写一次,到处运行"指的是编写的应用程序是Java可以在任何具有Java虚拟机(JVM)的硬件上运行,并且JVM现在已经许可给数百个操作系统供应商系统,包括Microsoft for Windows。
答案 2 :(得分:1)
嗯,有些东西实际上是跨平台的(大多数标准Java库),而其他一些东西可能需要适合操作系统的版本。通常,这适用于使用动态库的软件,这些库不是用Java编写的。在这种情况下,不同操作系统的版本都包含了此操作系统的库。
如果仅针对一个操作系统的版本 - 可能是因为其他操作系统不存在所需的库或开发人员没有移植它。它仍然可能实际上是跨平台的,但开发人员只在一个操作系统下对其进行了测试。
答案 3 :(得分:0)
您的问题更多地基于平台依赖性/独立性。
Java是一种独立于平台的编程语言,这意味着您编写的代码将在运行Windows,Linus,Unix等的所有计算机上生成相同的输出...而无需对代码进行任何更改。要运行Java程序,您需要安装JVM(Java虚拟机)。现在JVM做了什么。好吧,它将您的代码转换为操作系统可以理解的机器代码。因此,JVM依赖于平台,因为每个操作系统都有不同的机器代码。
所以,基本上你只编写一次Java程序,可以在任何地方使用/运行。
答案 4 :(得分:0)
你可以在一个平台上编写源代码并在任何地方运行它。如果新的java版本可用但是当前版本运行代码,你可能会遇到问题。