Java特性
考的是我们对Java 语言的全局认知,大概需要分以下去作答,探讨
- 一、基本的语言特性
- 面向对象(封装,继承,多态)
- 反射
- 泛型
- Lambda
- 二、 丰富的Java类库
- 集合包,并发包,网络,IO/NIO
- 三、Java虚拟机
- 垃圾回收器
- 平台无关性(JVM运行.class文件)
- 编译模式有解释 也有 编译(Just - in - time编译实现),混合模式
- 四、JRE提供了很多辅助工具
- javac ,jps,jstack
理解平台无关性(一次编译,到处运行)
“一次编译、到处运行” 说的是Java语言跨平台的特性,Java语言与cpu 硬件的交互依赖JVM的实现,只要我们在平台上安装了JRE,编译好的代码就可以运行,本质上其他语言也是具有跨平台性的,只是Java做的比较成熟。
程序从源代码到运行的三个阶段:编码——编译——运行——调试,Java在编译阶段则体现了跨平台的特点。编译过程大概是这样的:首先是将Java源代码转化成.CLASS文件字节码,这是第一次编译。.class文件就是可以到处运行的文件。然后Java字节码会被转化为目标机器代码,这是是由JVM来执行的,即Java的第二次编译。
“到处运行”的关键和前提就是JVM。因为在第二次编译中JVM起着关键作用。在可以运行Java虚拟机的地方都内含着一个JVM操作系统。从而使JAVA提供了各种不同平台上的虚拟机制,因此实现了“到处运行”的效果。
是否是解释执行
解释执行 和 编译执行混合
- 1、Java源代码经过Javac编译成.class文件
- 2、.class文件经JVM解析或编译运行
- (1)解析:.class文件经过JVM内嵌的解析器解析执行
- (2)编译:存在JIT编译器(Just In Time Compile 即时编译器)把经常运行的代码作为"热点代码"编译与本地平台相关的机器码,并进行 各种层次的优化