1.编译成class和直接用java,大小问题,class文件精炼过,去掉了注释等等
2.如果在jvm运行时编译的话,编译这一步也会消耗很长时间。况且每次运行都得编译。假设你把tomcat停掉再重启,还是得额外编译一遍
3.jvm的规范。jvm规定的就是class规范。其它语言只要编译生成的class代码符合我的规范,我就能让你在jvm上运行。现在你的想法是java文件直接和jvm绑定。那么其它语言就用不了了java,kotlin,Scala,Clojure,Groovy,Jython,JRuby 这些编译成class文件后都可以在java虚拟机上运行, 虽然叫java虚拟机,但是只与符合其规范的class二进制文件所关联,虚拟机不关心class是由什么语言编译而来。有些资料也管这叫虚拟机的语言无关性。
4.把编译单独摘出来,更有利于解耦,是代码运行和代码编译之间的解耦。以后你有更好的编译工具,完全可以替代java提供的
Java文件为什么一定要先编译成class文件,JVM为什么不直接解释java文件
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 先谈谈JVM 这篇文章主要是讲class文件和类加载机制,但是整个过程都和jvm密切相关,所以先从jvm说起。 J...
- 前言 作为一个Java开发者,对技术的追求而不仅仅停留在会用API,会写基本功能上,要想在技术上有更高的造诣,就需...
- Understanding bytecode makes you a better programmer 前言 作...