问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java编译

发布网友 发布时间:2022-04-23 18:54

我来回答

6个回答

热心网友 时间:2023-10-13 19:59

java的源程序是通过java的编译器可以编译成.class文件 编译出来的文件是为了让java的虚拟机JVM识别 运行也是通过JVM来运行的。。JVM充当一个翻译 把.class文件翻译给windows内核接口 这样来运行的。
你刚刚问的为什么不干脆直接编译成.exe文件 那是因为java翻译成.class文件一方面是为了移植方便 拿到Linux等其他操作系统上 只要有JVM 还是能执行的 如果是生成.exe文件 那就丧失了移植性了。 这个是sun原本的意愿
为什么到现在都没有个像样的把java代码编译成.exe的软件呢 是因为 代码编译很难 而且编译出的代码要非常规范 这个很难 一般都是搞底层开发的人才有这种技术 虽然也能做出来 但是那些高低层的都不屑于写java编译.exe 他们都看java的笑话呢。。 所以咱们这些java程序员很悲哀啊。。写的得意的东西给别人看 别人都不能运行。。
我曾经跟你差不多 对java不能直接编译.exe文件很恼火。。现在也算习惯了 唉哥们 真想的话就 苦学底层吧 学个10年8年 然后再花个半年的时间来做这个东西 倒时候咱们这个java中人 肯定都歌颂你赞美你。。现在。。

还有提醒你 现在网上大多数的打着口号说能吧java代码编译成.exe的人 都不是真的 他们只是做了个包装 把java包装成.exe 但是这种包装也只能对本身机器有效 如果是换台机器 这个包装的.exe就不能运行了。。很烂 很淫荡

热心网友 时间:2023-10-13 19:59

*.exe是机器码。与操作系统和硬件相关性很高。
java为实现较好的平台无关性,因此在底层操作系统上构建了一个java虚拟机,
也就是JVM。java程序的运行是通过将*.class里的虚拟机代码根据操作系统上的虚拟机进行翻译成为操作系统可执行的机器命令来执行的。
*.java的代码是给人看的。
*.class的代码是编译器优化过后虚拟机码,执行效率高。
由于java是解释性语言,因此不会生成exe文件。不过Microsoft 的java SDK中有个jexegen.exe可以实现exe转化。一般来说没必要转化的。

热心网友 时间:2023-10-13 20:00

class文件并不是可运行的文件,class只是一个中间代码,所以要运行必须还是要通过虚拟机再次翻译成和当前系统关联的可运行代码才可以。
要把Java转化到exe现在的做法就是打包,使用jmooth,打包的时候最好带上一个环境,只要就可以在没有Java的机器上运行。

热心网友 时间:2023-10-13 20:00

首先要明确的是:所有的高级编程语言,包括C,C++,JAVA等等,都需要通过相应的编译程序编译成CPU能识别的二进制代码,也就是101010001...或者是类似于汇编代码的低级语言再通过解释器解释才能让CPU执行。否则在计算机看来C,C++,JAVA等写出的源代码和文本文件一样都是没有任何意义。所以编译就是一个介于高级语言和机器语言之间的翻译过程。
*.exe就是C、C++或C#编译后并打包的结果。java也有相似的处理,可以经编译后打包成jar文件,双击就可直接执行(当然和*.exe的执行不同,需要通过JVM解释运行)。
*.exe文件是已经经过编译器处理成直接能够让你的机器识别的应用程序,而java的*.class只是一个类似于汇编指令的中间代码,和机器代码之间仍然有巨大差别,无法由CPU直接识别执行,所以需要由“中间代理商”:也就是所谓JVM(java虚拟机)一句一句地将*.class解释执行(也就类似于同声传译啦)。你可能要问为何多此一举?那是因为不同的CPU芯片有不同的机器代码格式,我们现在用的windowsXP都是基于的x86指令集的,但是还有许许多多我们可能听都没听说过的指令系统,如果你想把你电脑上的一个软件直接搬到其他系统上。。没门!其他系统看不懂!如果想要执行怎么办?只能用针对该系统指令集的编译器将源代码重新编译成可执行二进制文件,因此移植的时候必须将所有的源代码拷贝过去,只用原来编译过的二进制代码是不行的。针对这一问题,java看似舍近求远的做法是为了达到更好的可移植性,不需要在新系统上重新编译,一旦系统上装有JVM(言下之意就是并且JVM支持这种指令集)只需要让JVM执行过程中把*.class解释给那个系统听就可以了。
至于“为什么不可以用java源代码直接在虚拟机中运行,为什么还要经过编译?”:编译是一个预处理过程,涉及分析源文件的语法含义,代码优化,以及CPU的寄存器分配等等。。工程浩大,是无法在执行程序的过程中同步执行。

热心网友 时间:2023-10-13 20:01

class文件是你编写JAVA时系统为了识别自动生成的,

热心网友 时间:2023-10-13 20:02

不要用微软的思想强加给Sun,也不要强加给Java程序员
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 如何将java源代码转换为实用程序... java源代码编译的时候怎么处理注释部分的 哪位高手帮忙完成下面的java题目。(高分) JAVA如何把源代码转成二进制数? 求把java程序翻译成c++程序 Java的编译程序先将Java源程序翻译成与机器无关的__________。12.表达式¨23 & 18’’的值是__________。 帮忙把这段简单的Java代码翻译成c语言,谢谢了 怎样将Java源代码转换成Java开应用程序 在java程序中可以直接将一段中文翻译为英文,或者翻译为别的语言吗。如果可以,怎么实现? 在java编程中用什么命令来编译java源文件 可以将源文件编译成字节码文... JAVA基础试题求助 Java编译器如何实现把原始的代码翻译成目标机的机器语言? 借呗怎么延期还款怎么弄 支付宝借呗到期可以还最低还款吗? 借呗手动还款 蚂蚁借呗怎样更改还款日 蚂蚁借呗怎么设置还款时间 借呗能改还款日期嘛 修改蚂蚁借呗还款日期 借呗怎么改成20号还款 JAVA大手能给翻译一下吗,这些都代表什么? 将一个简单的C程序翻译成Java语言 翻译下java??? 为什么苹果6好好的突然间就很费电? 苹果6手机,突然迅速耗电,然後关机了,再充电充不进去了!怎麼回事? 苹果6才用了就突然耗电快,那去维修说要刷机,换电池,是怎么回事 苹果6手机突然电池不耐用怎么回事? 苹果6突然耗电快是不是电池原因 怎样补救 苹果6电池耗电特别快,一部电视剧看完就没什么电了,玩游戏几分钟就没电了,而且现在充电还特别的快, 苹果6突然耗电特别快是不是电池坏了 苹果6突然耗电快是不是电池原因? 为什么我的手机下载微信之后没有漂流瓶 下载微信有漂流瓶的 中国最大的几个床上用品批发市场是那几个,分别在哪里。 表示老人过世,怎么发朋友圈? 漂流瓶下载到微信下载微信里面打开没有漂流瓶。打开了里面儿急用还没有? 中国最大家纺批发市场在哪 为什么新的没有漂流瓶 西安床上用品批发市场都在那里? 父亲离世伤感的句子发朋友圈怎么说?