java不可能转化成exe的理由——微软如果开源

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

我们知道,我们所使用的高级语言,所写成的程序,需要经过一步步的编译,最终得到二进制码文件,放到操作系统上执行。然而不同的操作系统,会有不同的原语。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这些东西吧。

时间: 2024-08-11 01:35:18

java不可能转化成exe的理由——微软如果开源的相关文章

java项目采用exe4j打包成exe档

java项目采用exe4j打包成exe档 前言:我们都知道java是平台无关性.能够打包成jar文件,到不论什么操作系统有jre环境的电脑都能够同意!可是我们打包成exe文件就相当于舍弃了这一大优势,只是确实有须要打包成exe的时候吧! 以下介绍方法给大家,将java程序打包成exe可执行文件. 准备工具: eclipse.exe4j(exe4j的下载地址:http://www.pc6.com/softview/SoftView_68764.html#download  如安装遇到问题,请參见:

Java桌面程序打包成exe可执行文件

前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: eclipse.exe4j(网上有软件和帐号下载) 第一步,将java项目打包成可执行jar文件,首先看一下我的java project结构,Main.java是程序入口类,里面有main函数,config目录是些配置文件,lib是用到的第三方类库 开始打包,Simulate(Java项目)-鼠标右键-E

java开启多进程,执行.exe文件

1. .exe文件的生成 使用自己生成的应用程序,该应用程序带有参数.为了简便,以打印  输入的参数 为例,该应用程序的源码如下: // myPrint.cpp #include < iostream > int main(int argc, char * argv[]){ char * it = argv[1]; if (it == nullptr){ std::cout << "This is nothing to be printed." <<

使用JSmooth制造java jar文件可以运行exe文件教程图像

这是我之前在个人博客3yj上面写的一篇文章,如今转载过来,原文地址 (这不是广告哦) 几年前,刚接触java的是.就想用一些方法把自己的劳动果实保护起来,曾经也用过非常多这种工具.有一个特别好用,今天写篇文章跟大家分享. 今天要用到的工具有 JSmooth 0.9.9-7 汉化版,能够到本站下载:JSmooth 0.9.9-7 汉化版 首先要把你的程序打包成双击能够运行的包,详细的方法我就不多说了,网上非常多的,主要命令是:jar cvfm test.jar *.* -C  之类的 主要是确保其

java heap space以及jvisualvm.exe 工具

最近遇到了java heap space错误. 这个问题的原因,其实还是堆溢出了. 解决这个问题 1 首先我们考虑,在代码中哪里使用了较多的对象,但是又没有及时回收. 2 我们可以通过  jvisualvm.exe  工具去查看 我们先到jdk文件夹中的bin目录找到jvisualvm.exe.双击运行 然后找到我们运行的java程序,双击进入 然后按照下面,选择监视,cpu/内存,堆 Dump 然后,选择类,按照大小排序,找到消耗最大的对象,右键在实例视图中显示 这里我找的是int[],反正几

java jar文件打包成exe(Launch4j使用说明)

在日常的项目中需要把jar打包成exe.怎样快速的实现此功能.下面通过Launch4j的使用方法来介绍整个打包过程. 第一步:生成jar文件 第二部:使用Launch4j 图来描述过,简单明了.一切尽在不言中.

使用exe4j把java程序生成可执行的.exe文件

exe4j可以很容易把一个jar打成exe.  下载地址:http://dl.dbank.com/c0owlopqf8 1.下载的安装文件,里面包含一个注册码生成的工具 2.安装exe4j以及破解(注意jre版本必须是1.4到1.6) 3.运行exe4j 运行界面如下图 点击change license,用户名公司名可以任意输入,再输入注册码就OK了 4.点击下一步,选择第二个模式,即把jar包打包成exe.

将.py文件转化成.exe

机子上已经安装好python,且配置好环境变量 编写好xx.py文件 安装pywin32.此处一定注意pywin32有32位和64位之分.可以在命令提示符里输入python来查看python的版本以及是否为32位还是64位(我的python是2.7.9 32位) 安装pyinstaller,只要将pyinstaller解压到任意位置,然后在命令提示符里转到pyinstaller的setup.py位置,输入setup.py  install安装pyinstaller 在命令提示符里转到已经编写好的

如何理解java中的反射机制,为什么利用反射可以写开源框架?(1)

当诸君在使用idea或者eclipse/vscode等代码编辑器时,有没有想过当你在字符串后面或者一个类实例后输入.的时候 后面跟随出来的字符串方法以及类内方法调用是怎样给出提示的? The answer is 反射. 反射的具体介绍 程序可以访问,检测和修改它本身状态或行为的能力,即自描述和自控制. 可以在运行时加载,探知和使用编译期间完全未知的类. 给Java插上动态语言特性的翅膀,弥补强类型语言的不足. java.lang.reflect包,在Java2时代就有,在Java5得到改善. 反