1、Java概况
问题诊断和性能调优问题后续需要补充学习。
“一次书写,到处执行”:Java代码不需要针对不同的平台进行多次书写,将一套Java源码( .java文件)编译成字节码(bytecode,.class文件)后,可以通过不同平台的JVM翻译(Interpreter)成对应的机器码,从而达到一套源码在任一平台上执行。
Java代码执行分为编译期和运行时,编译期通过Javac将Java源码编译成字节码,运行时通过JVM进行解释执行。但Java不是纯解释执行的,在运行时,会通过JIT(Just-In-Time)编译器将热代码编译(Compilation)成机器码,进行编译执行。
一种新的编译方式,AOT(Ahead-Of-Time Compilation):运行前,将字节码直接编译成机器码,避免了JIT预热的开销。
2、Exception和Error
Exception和Error都继承Throwable,只有Throwable类型才可以被throw和catch。
Exception分为可检查(checked)异常和不检查(unchecked)异常两种。
- 可检查异常是指在编译期会被编译期检查出来的异常,必须进行显式的捕捉和处理。
- 不检查异常是指运行时异常,例如 NullPointerException 和 ArrayIndexOutOfBoundsException 等。通常都是可以在逻辑上进行避免的异常,在编译期不做要求。
Java新的特性,Try-with-resouces和Mutiple-catch,这样可以自动的close,避免过try-catch-finally的方式,相对便捷。
try (BufferedReader br = new BufferedReader(…);
BufferedWriter writer = new BufferedWriter(…)) {// Try-with-resources
// do something
catch ( IOException | XEception e) {// Multiple catch
// Handle it
}
NoClassDefFoundError 和 ClassNotFoundException 的辨析。 www.wuleshen.com/2020/06/28/…