深入理解Java(一)对Java平台的理解

最近面试总是被问到一些奇怪的问题,说奇怪吧也不妥,偏僻更合适一点。猛的被问到这些,一下子答不上来,或者回答的不够全面,错失良机使我对此深恶痛绝,痛定思痛之后,我决定系统的对Java知识体系做一个完整学习与总结,避免此类事情发生。那么就从现在开始吧。

第一个问题是: 谈谈你对Java平台的理解?“Java是解释执行”,这句话正确吗?

回答:

Java是一种面向对象语言,最显著特性有两个方面,第一就是我们常说的“一次编译,到处执行。”,也是Java跨平台能力的基础,之所以这么说,是因为java语言本身和其他语言没有太大的区别,java语言并不能够跨平台,而是在不同的平台都有能够让Java执行的平台而已(安装了jdk);第二个就是gc(垃圾回收),大部分情况下,Java的内存并不需要我们手动的分配和回收,gc会帮我们完成这部分工作。

JRE(Java Runtime Environment)和JDK(Java Development Kit)。JRE是Java运行时环境,包含了JVM和Java类库等,JDK是Java开发环境,可以看做是JRE的超集,提供了更多的工具,比如编译器,诊断工具等。

“Java是解释执行”这句话并不准确。Java代码首先通过javac编译成字节码(.class文件),字节码是不能够在机器运行的,在运行Java代码时,jvm会内嵌的解释器(classloader)会将字节码转换为机器能够识别的机器码,然后运行。这样看起来java代码好像就是在解释字节码来运行。但是还有另外一种情况,JIT(just in time),这又是什么意思呢?jit就是我们通常说的动态编译器,它能够在运行时,将热点代码编译成机器码,这种情况下部分热点代码(经常运行的代码)就属于编译执行,而不是解释执行。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从今天开始读《深入理解 Java 虚拟机》一书,并开设了同名专题 深入理解 Java 虚拟机。计划在 2 周内将全...
    SawyerZh阅读 13,471评论 17 215
  • 姓名:周君会 学号:17011210526 转载自: http://www.jianshu.com/p/...
    lotus儿阅读 6,054评论 1 9
  • 我没有发表过文章,因为不善于表达自己。有时候想说的话,如果通过这种方式表达出来,总觉得太矫情,也许天南地北地绕了一...
    天空有朵雨做的云liu阅读 2,823评论 0 3
  • 因为年少,我们常常会忽略生命中极为重要的东西,譬如肩上担负的希望和责任。其中,来自父母的期待,或许是最直观的一个。...
    性淡如菊阅读 2,817评论 0 8
  • 今天的文章主题,我的自媒体运营流水账日记。 所谓流水账,就是回忆一下今天就做了什么,反身哪里做的不足,做下改变计划...
    陈记锋阅读 1,391评论 0 0