【问题标题】:How to create operating system using Java? [duplicate]如何使用Java创建操作系统? [复制]
【发布时间】:2015-10-07 20:27:03
【问题描述】:

无论如何我可以使用 java 创建操作系统吗?无论如何我可以嵌入windows java库,这样我就可以用JFrame、JFileChooser、JTextArea等开发我的操作系统了吗?或者从长远来看,学习 C 或 C++ 会更好吗?

【问题讨论】:

  • 我怀疑你可以用 Java 创建一个操作系统。 Java 需要在 Java 虚拟机中运行。 IE它不是直接在硬件上运行的。可能有一些方法可以将您的 Java 代码编译成 C 或其他可以直接在机器上运行的语言。如果您想制作操作系统,我建议您学习 C 和汇编。编写操作系统也与编写程序有很大不同。您必须处理所有代码。你不能依赖其他人来实现目录或输入输出和内存管理的想法。
  • @Timothy Murphy 我认为 Java 可以直接在硬件上运行:en.wikipedia.org/wiki/Java_processor
  • @cad 够公平的。但是您的操作系统只能在该类型的处理器上运行。
  • 我更新了我的答案以解决您的最后一个问题。我认为它值得一读,但它主要是基于意见的。我也投了赞成票,因为这是一个很好的问题,尽管之前已经回答过:)

标签: java operating-system


【解决方案1】:

简短回答:不。

首先,Java 使用操作系统来运行您的 java 代码。很多windows都是用操作系统渲染的。

其次,您应该注意,大多数(如果不是全部)操作系统都是以机器/汇编代码启动的。如果您的目标是自己制作一个操作系统并且完全从头开始,那么您将需要学习汇编,并且没有办法解决这个问题。幸运的是,您只需要编写少量程序集,就可以运行用 C 或 C++ 编写的东西(请注意,Java 运行时是用 C/C++ 编写的)。

由于 Java 使用操作系统的本机代码来管理/渲染窗口和控件,并且假设您在没有使用上述库的情况下从源代码编译 Java,如果您编写了唯一的代码来处理渲染控件和窗口的所有图形那么是的,假设一旦你完成了基本的工作,你就可以用java编写大部分操作系统。您应该知道,由于它们依赖于操作系统,因此您将无法使用太多 javafx 或 swing。

最后,我强烈建议上大学并接受扎实的教育,然后我会进一步建议您在拥有经验丰富的程序员团队的公司工作至少 4 年(至少),然后才能承担如此艰巨的任务就像创建操作系统一样。你不会自己编写一个有用的操作系统,而且你似乎拥有任何语言的知识。

编辑: 正如其他答案中提到的那样,有些机器的微处理器本机地理解 java 字节码。但是,为该处理器编写的操作系统只能在该处理器上运行,并且不会广泛分发 atm。出于学习目的,您最好只在您现在可以访问的任何东西上坚持使用 JVM,您实际上并没有太多收获。

另外,学习编写操作系统是我鼓励所有程序员学习的任务。它将让您更好地了解计算机的内部和外部工作原理。从编程的角度来看,相对于高级语言,您不会因为使用一种语言而不是另一种语言而失去或获得太多。有些人争辩(也许我同意)Java 不使用指针,因此大多数人都忽略了这一点,但是如果您的意图是用 Java 做所有事情,那么您只需要了解 Java。

作为一个观点,我认为你最好学习你遇到的每一种编程语言,以及每一种语言的前身。我并不是说要成为 BCPL 或 COBOL 或该级别的任何东西的高级程序员,但至少要研究,学习如何做基本的事情并知道它们存在并且(在大多数情况下)可以做所有其他语言可以做的所有事情。

我的专业建议是,学习并掌握您的雇主希望您使用的任何语言。如果你换工作准备学习新的东西。并非所有工作都使用 Java 或 C++,因此如果您只使用 Java 或什至 C/C++,那么您在就业市场上将不会有市场。

【讨论】:

  • ...我喜欢你的回复,我支持你,但是在这个新时代,你不需要受过教育或为别人工作的经验来实现某事......所有你需要sk你自己是,你有多想实现你的这个目标,然后尽你所能去实现它,网上有很多免费资源可以学习机器语言和一般的编程语言。我们需要学习摆脱这种思维定势教育是唯一的方法,并意识到我们都有潜力嵌入我们的 DNA。你可以做任何你梦想的事情。只需专注并推动
  • 在你开始谈论大学之前真是太好了:p“不要把上学和教育混为一谈……”
【解决方案2】:

是的,你可以。

许多选项可以做到这一点:

  1. JNI 提供 Java 代码与本机代码的通信。您可以使用本机代码开发引导加载程序,但使用 Java 开发 UI
  2. Java 处理器:JVM 的硬件实现
  3. Java 优化处理器
  4. 嵌入式 Java
  5. picoJava

等等..

没有什么可以阻止您使用 Java 开发操作系统。您可以找到许多用 Java 编写的操作系统:从 CISCO 到 NASA...

然而,即使是创建一个微型操作系统也需要付出很多努力。

【讨论】:

  • Java 处理器是个好主意。
  • 因此,基本上,除非您使用的 CPU 是在了解 Java 的情况下构建的,否则您必须先编写机器代码才能做到这一点。很公平。不会在大多数家用电脑上运行,但我肯定看到它的目的和价值是长期错误的。您确实没有解决关于是否应该费心学习 C/C++ 的问题
  • @QuinnRoundy 我认为提出问题的人对我的回答感到满意。仔细阅读我提供的第 1 点:我说过,您可以用本机代码编写引导加载程序,即 C/C++,但也可以用 Java 编写其他东西,并让它们使用 JNI 进行通信。关于你的观点you can't do it without writing machine code to start with UNLESS you use a CPU that was built knowing Java already.,我想说计算机甚至不知道 C/C++,它只知道 0 和 1。关于“不会在大多数家用计算机上运行”的评论,我会说这取决于架构及其支持。 .
  • 我只是在清理一些旧答案。我知道 x86-32/64 是如何工作的,除此之外我不会声称任何东西。当计算机打开时,它对堆栈、堆等一无所知(它有它们的寄存器,只是没有配置)操作系统会完成这项工作,这几乎完全是在机器/汇编中完成的。是的,我意识到你提到过(和我一样)我同意一旦你有一个功能加载器就可以使用 Java。计算机只知道 0 和 1……是和不知道,它知道地址空间、算术等。但它不知道堆栈在哪里,是否会使用“任务管理器”等。跨度>
猜你喜欢
  • 2018-03-31
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 2010-12-31
  • 2018-06-23
  • 1970-01-01
相关资源
最近更新 更多