1.谈谈你对java的理解
- 平台无关性 :一次编译到处运行
- GC :java的垃圾回收机制
- 语言特性:反射,泛型,labda表达式
- 面向对象 :封装,集成,多态
- 类库:集合,io,nio,并发,网络库等
- 异常处理
2.Compile Once,Run AnyWhere如何实现
- 2.1通常java程序的运行主要分两个阶段
编译时
运行时
javap 反编译字节码文件 javap -help查看帮助文档
3.为什么JVM不直接把源码解析成机器码执行?
3.1.准备工作:如果直接解析成机器码,那么就需要做一系列的语法相关校验工作,而且每次做完校验
这些校验结果都不会被保留下来,那么导致每次执行文件的效率降低,那么引入了编译文件之后,每次JVM
直接把字节码转成机器码执行即可.既做了校验,也提高执行效率.
3.2.兼容性:
JVM不光可以执行java语言编译后的字节码文件,还可以执行ruby scale语言的编译文件,大大提高了JVM的
兼容性,也符合软件设计