java核心技术36问——谈谈你对java平台的理解

       觉得自己毕业两年了,期间也看了一些书,了解了一下java核心的知识点,但目前时隔久远,早已忘记的差不多了。

这些天看了一些学习文件,看到前oracle首席工程师杨晓峰的核心技术36讲,故写博客记录之。

     谈谈你对java平台的理解?  这个问题应该是面试中经常会被提到问题。一般我们回答也不外乎:一次编译,到处执行;垃圾回收等。虽然回答没有错,但是深入到具体的如何编译如何执行,垃圾回收算法等等,可能就不真切了。这一讲只是谈了理解,所以算是浅藏辄止,了解一个大概。

第一讲主要讲了如下知识:

典型回答:

java本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运行”(write once , run anywhere),能够非常容易地获得跨平台能力;另外就是垃圾收集(GC,Carbage Collection) ,java通过垃圾收集器(Carbage Collector) 回收分配内存,大部分情况下,程序员不需要自己操心内存的分配和回收。

我们日常会接触到JRE(java runtime Environment) 或者JDK(java Development Kit) 。JRE,也就是java运行环境,包含了JVM和java类库,以及一些模块等。而JDK可以看做是JRE的一个超集,提供了更多工具,比如编译器,各种诊断工具等。

对于“java是解释执行”这句话,这个说法不太准确。我们开发的java的源代码,首先通过Javac编译成为字节码,然后在运行的时,通过java虚拟机(jvm)内嵌的解释器将字节码转化成为最终的机器码。当时常见的jvm,比如我们大多数情况下使用的oracle jdk提供的hotspot jvm,都提供了jit(just-in-time) 编译器,也就是通常所说的动态编译器,jit能够在运行的时候能够将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而不是解释执行了。

 

结构如图:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章