跨平台
- 为什么能够跨平台
java 编译后的文件并不是机器语言而是 后缀为 .class 的字节码文件,通过在不同平台实现的虚拟机,将.class文件解释成对应的机器码,实现在不同平台运行。
java语言的执行过程:
编译 -> 解释 -> 运行
| |
.class 文件 机器码
- jvm 整体介绍知识
- 什么是jvm
java virtual machine,运行java字节码的虚拟机,针对不同的系统有不同的实现,目的是使用相同的字节码,在不同的系统有相同的结果。
2. jvm,jdk,jre的区别
jre: jvm+(java类库,java 命令) 功能:只能运行java程序,不能创建新程序
jdk: jre+(编译程序命令) 功能:创建和编译程序
3. 如何理解 jvm 的解释与编译并存
解释与编译: 解释与编译都是将高级语言 翻译为机器码的一个步骤 解释由解释器实现,编译由编译器实现(java 编译后的是 .class 文件,所以也不绝对)
问题背景:java程序运行时,jvm加载.class文件,通过解释器逐行解释执行,这个过程会比较慢
JIT对jvm的性能优化: 对于经常要被调用的方法和代码块,也就是热点代码,当JIT完成一次编译后,会将字节码对应的机器码保存下来,下次直接使用。
在jvm 启动时岁解释器和编译器的参数控制:
-Xint:只解释执行
-Xcomp:关闭解释器,
HotSpot 的惰性评估:jvm根据代码被执行的情况收集信息并做相应的优化,因此,代码执行次数越多,速度越快
jdk 9 新的编译模式, AOT: 直接将字节码编译成机器码,避免了JIT预热的开销,
JDK支持分层编译和AOT协作使用,但是AOT的 编译质量 比不上 JIT。
Q:1.什么是 JIT 预热
2.什么是JDK 分层编译
面向对象
- 封装
封装将一个对象的属性私有化,同时提供一些可以被外界访问属性的方法。
- 继承
1.子类具有父类非private的方法
2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
3.子类可以重写父类的方法
- 多态
通用解释:父类的引用指向子类的对象。
官方解释:定义的引用变量指向的具体类型和调用的方法在编程时并不确定,在运行时才能确定。
java中实现多态的两种方式:
继承父类,实现接口
支持多线程
- 如何支持的
- 与c++对比
可靠
- 如何体现
安全
- 如何体现
支持网络编程
- 具体使用什么实现
语言特性
- 反射
- 泛型
- lambda表达式