booter.exe的作用就是将用java写的JVM编译并装入内存,简单的说就是将JVM.class编译成JVM.exe(JVM.exe也是内存中的二进制代码,并不是真实存在的文件,我暂时称之为JVM.exe) , 这个过程花了5秒种。
在这个操作系统中,汇编程序只能执行1秒钟。之后汇编程序就退出内存,也再也不执行了。内存中只剩下用Java写的JVM.exe。
之后所有的操作都有JVM.exe来进行,JVM.exe负责将其它的Abc.class、Def.class等等编译成Abc.exe、Def.exe......操作系统正式启动。
JNode的官方网站上有Java写的JVM的性能和SUN的JVM进行性能比较的结果,JNode中用Java写的JVM竟然能比SUN公司用C++写的JVM还快!见: http://www.jnode.org/node/51
结果如下:
运行评测程序ArithOpt时:
JNode :20ms*
Sun J2SDK :30ms**
JNode的官方网站上有Java写的JVM的性能和SUN的JVM进行性能比较的结果,JNode中用Java写的JVM竟然能比SUN公司用C++写的JVM还快!见: http://www.jnode.org/node/51
结果如下:
运行评测程序ArithOpt时:
JNode :20ms*
Sun J2SDK :30ms**
上面JNode 中用Java写的JVM与Sun 的用C++写的JVM的比较是在Pentium4 2Ghz with 1GB of memory上比较的
其实,无论是c++,java,vb,delphi还是perl,他们最终在cpu中执行时都是“二进制代码”,没有本质区别,他们的差别就在于:不同的编译器编译出来的“二进制代码”的优化程度不同。用程序员直接写出的汇编由于没有进行深入的优化,很难达到其它用java/c++/delph/vb编译器的优化程度,所以我说:手写汇编的速度达不到c++/java的速度,实质就是说:“手写汇编再编译出来的‘二进制代码’的优化程度没有用c++ /java编译器编译出来的‘二进制代码’的优化程度高”
底层用C++或汇编来写,并不是因为他们更快,而是因为他们更节省内存、操作硬件更方便,VB是一种解释语言,它的内存占用量也很大,而且VB中直接操作内存等硬件的方法并不多,而且C++已经有许多已经成型的类库,用C++写JVM明显比VB强。如果你“感觉”eclipse或永中慢就认定Java慢,那么大家“感觉”WindowsXP慢是不是大家就应该认定 "C++慢 "呢?。谁快谁慢,拿数据说话吧。
另外,不要因为某些java程序启动慢就认定java慢。这除了因为上面说的原因外,还因为:
C++启动较快也不全是因为C++本身的原因,许多C++写的软件所需的一些.exe和.dll在操作系统启动时就已经启动了(比如和窗口相关的一些.dll).
.NET程序启动较快就是因为.NET的虚拟机其实在操作系统启动时就已经启动了。
而其它一些大型软件如Microsoft Word启动较快,就是因为操作系统启动时就已经启动了和Word相关的一些服务和功能
