我看Jnode
经常有人喜欢问,有没有java写的操作系统?有的,Jnode,一款不怎么流行,代码很好看,但是界面很丑,用户体验很差、有很多BUG的操作系统。
我个人觉得:一个操作系统是对一个编程思想的整合,具体用什么语言来写不重要。经过考证,确实有用硬件语言写的Jvm,所以java写操作系统和C、C++比起来没有什么技术上的障碍。而且,我昨天也问过我的老师,为什么不改变java的编译方式,让它也能和C、C++一样能更容易地跑在硬件之上?因为在我看来,java的优势并不在于它的跨平台,而是它的语法习惯,以及java所体现的面向对象思想。所有的类都是Object的子类,光这一点就解决了C++中N多不便解决的问题,还有很多java用以完善C++中的面向对象思想的语法特点。所以,我也在问java写的操作系统的时候是在寻找一个代码易读懂,便于学习和理解的源代码。至于性能方面,我也略略了解过编译原理,我觉得java做到高效也并不是难事(前提条件是java保持语法风格,但是转变为C++那种编译执行的执行方式)。
Jnode的横空出世,是java发烧友的一腔热血浇筑出来的,要推广的可能性很小。但是用于学习还是很不错的,特别是让java程序员去理解GUI编程以及操作系统的经典原理是非常不错的教材性代码。
昨天看到网上的文章提到Jnode作为一款用java写成的操作系统可以有很多java写的应用程序可以直接在它上面跑起来,但是更多的用C、C++写的程序能很方便的在Jnode上面跑起来?恐怕不那么容易吧?就好比windows里面装个虚拟机跑linux,结果为了在虚拟机里面玩游戏,又在虚拟机里面装个虚拟机跑windows一样。
有句话叫“时势造英雄而不是英雄造时势”,用在这里再恰当不过了。面对那么多历时遗留问题,Jnode真的是力不从心。除非,java发烧友的数量超过一定的限度,或者出现天才。
用我们一个老总的话说,其实我们现在做的应用就是在做操作系统。原理上是一样的,确实,从硬件到软件,从虚拟世界到现实世界,道理都是一样的。曾经我还很遗憾,我深爱的java居然不能完整地做一个操作系统,确实是莫大的悲哀。但是当“云计算”呼风唤雨的时候,java在web方面的优势体现得淋漓尽致,既然现在web OS那么火,而服务器端用java的又那么多,何不如让java在web OS这一块大舞台上跳一支更精彩的舞? 在等机会的时候,我们可以选择争取机会,甚至创造机会!
跑在虚拟机上的java并没有因为虚拟机的限制而限制了它的发展,我也更欣赏java在面向对象方面体现出来的智慧光芒,同时也很感谢Jnode背后的团队,让我们这些java程序员共同努力来让java发出更亮的光芒吧!