为什么.java文件要先编译成.class文件,不可以直接通过.java文件
java吧
全部回复
仅看楼主
level 9
炜爵爷cc 楼主
为什么.java文件要先编译成.class文件,不可以直接通过.java文件翻译成机器码吗?
2019年05月05日 10点05分 1
level 9
炜爵爷cc 楼主
我个人认为编译成class文件有两个好处,一个是有了编译器可以直接确认代码是否符合规范,有没有错误。第二个是缩写文件大小,方便网络传输
2019年05月05日 13点05分 3
level 9
炜爵爷cc 楼主
不知道各位有何高见呢
2019年05月05日 13点05分 4
面试交流(摸鱼吹水)群 640-568-049
2020年11月06日 07点11分
level 8
你管这么多干嘛?要你转吗?代码写好就行了
2019年05月05日 23点05分 5
知其然不知所以然,就感觉走在半空,内心不踏实 内心不稳啥都做不了
2019年05月06日 00点05分
不是说要知道所有细节,但大体脉络还是得明白
2019年05月06日 00点05分
level 9
炜爵爷cc 楼主
我的意思是虚拟机完全可以把javac这个命令放到虚拟机里面,这个虚拟机就会读取我们的.java文件,然后内部转成虚拟机指令啊还是直接转成机器码啊都行,而对于我们使用者来说是透明的,我们根本不会知道class文件这么个东西
2019年05月06日 00点05分 7
转成虚拟机指令再转成机器码
2019年05月06日 00点05分
level 9
炜爵爷cc 楼主
说实话我这里是有点模糊的,有没有大佬教育下我?没自知之明的装 逼脑 残滚开。虚拟机读取虚拟机指令,最终肯定还是和普通进程一样转换成底层硬件的指令集吧
2019年05月06日 00点05分 8
level 1
jit就可以啊
2019年05月06日 00点05分 9
jit是直接全部转成机器码吧在虚拟机执行时候
2019年05月06日 01点05分
level 14
[小乖][小乖]
2019年05月06日 01点05分 10
level 2
看见标题本来想喷的,进来以后,打扰了[乖]
2019年05月06日 01点05分 11
level 12
那你为啥不用c
2019年05月06日 01点05分 13
level 9
class文件的内容是描述性的,和平台无关 如果按你的想法直接翻译成字节码的话,就是对应平台的字节码了 无法跨平台了 个人理解 可能不对
2019年05月06日 01点05分 14
level 9
你去看jdk源码,有些方法是native标识的,没有具体的实现 编译成class文件所有平台都是一样的,但是jvm执行的时候在不同的平台翻译成的字节码是不一样的 所以不能一步到位翻译成字节码
2019年05月06日 01点05分 15
level 12
你这属于运行时编译执行,跟静态编译没多大区别,但是运行时编译第一次执行会很慢,而且编译的也是字节码,要想二进制需要其他编译器
2019年05月06日 01点05分 16
字节码不算是二进制文件吗?
2019年05月06日 03点05分
@炜爵爷cc 并不属于,那只是java编译器用于方便执行的代码,对开发者写的代码进行优化整理,让jvm直接能执行,二进制通常指可直接执行不依赖其他容器
2019年05月06日 03点05分
@一瓣洋葱º 二进制指机器能直接读懂的指令?就是机器码?字节码只是虚拟机能读懂?
2019年05月06日 03点05分
@一瓣洋葱º 可是我觉得虚拟机既然叫虚拟机,那就是一台虚拟机器啊,能被虚拟机器直接读懂的文件就是机器码啊
2019年05月06日 03点05分
level 6
你家虚拟机能直接识别字节编码。。。?
class文件都是二进制编码。。。。
2019年05月06日 01点05分 17
字节编码与二进制编码是什么区别啊?
2019年05月06日 03点05分
@炜爵爷cc 打错,,是字符编码和二进制编码
2019年05月06日 03点05分
level 5
编译成class可以具备跨平台的性质,并且预编译成class文件计算机更容易理解这种语言,速度更快
2019年05月06日 02点05分 18
跨平台和变不变class没关系。不过预编译确实会更快更易理解
2019年05月06日 03点05分
终于有个靠谱的了
2019年12月06日 01点12分
@炜爵爷cc 如果没有语法错误,编译器(compiler)就会生成一个扩展名为.class的字节码文件。字节码类似于机器指令,但它是体系结构中立的,是可以在任何带java虚拟机(JVM)的平台上运行的。虚拟机不是物理机器,而是一个解释Java字节码的程序。这正是Java字节码的主要优点之一:不同的硬件平台上运行
2020年06月11日 00点06分
@LongD61 摘自Java语言程序设计基础篇第10版(翻译版)第14页,作者Y.Daniel.Liang
2020年06月11日 00点06分
1 2 尾页