我只是作一个猜想,理由如下:

我们知道,我们所使用的高级语言,所写成的程序,需要经过一步步的编译,最终得到二进制码文件,放到操作系统上执行。然而不同的操作系统,会有不同的原语。jvm可以跨平台,是因为不同的操作系统上有不同的jvm,并且所需要的源代码,却是相同的。

我们都知道,运行在jvm上的是.java编译过来的.class文件。要想转化成.exe的可执行文件,按照我们的常理来推测,或许从.class文件开始往.exe转化。或许直接从.java开始转化不是更好吗?那么得有一个专门解释.java或.class的东西,关键在于目前我们没有见过这种东西。我们只见过神奇的jvm。

其实,.java.和.class只有jvm懂得。jvm可以转化到执行程序的最后一步,就是与操作系统的交互。在这期间根本不需要用到.exe这个东西。也就是说jvm做了直观上我们认为.exe才会做的事情。于是,我猜到了,Java不可能转化成exe的理由:

这是因为.class就相当于我们的exe了,这两者身份相同。背景不同。.exe应当是微软的发明,在微软操作系统中,应当有一个类似于jvm的东西存在,只是一直没有公开它的内容。所以要想实现java转化为exe还得由微软公司去开发这么一套的转化体系。然而目前jvm已经很好的做到了这一点。如果把这个东西给做出来,也只是摆设。没有任何的利益可言。说到这里我开始觉得c++是编写windows程序的专用语言的这句话到底是怎么一回事了。

值得一提的是,我觉得微软操作系统宝贵的部分,怕正是这个类似于jvm的东西了。他们以后所有的核心赌注应该都在这上面了。因为这是他们一切优势的源泉。说微软保密知识,也只能是在这里的保密了。

试想一下如果微软也开始搞开源,那会是怎样的一个情景。是不是java会瞬间丧失其优势呢?或者说开源的东西瞬间丧失竞争力呢?但是在我看来,如果微软也开源了,那么java就会更方便的安装。用户的电脑上将能多腾出一片空间。这时也许会有一个java与exe的结合体出现。详细理由,还请读者自己思考,说出来,就失去了趣味了。

结尾:

    作为这篇文章的读者在读完之后,还是不要再费心思去想如何把java转化成exe而再一步去方便一个用户去使用你编写的程序了。既然你使用了java编写,那你就老老实实的安装你的jvm吧。或者,就直接用c++去编写你的程序,学好MFC,Qt这些东西吧。

你可能感兴趣的内容
Java序列化与static 收藏,3245 浏览
0条评论

dexcoder

这家伙太懒了 <( ̄ ﹌  ̄)>
Owner