本文采自网上八股,个人理解并总结之后发布博客,方便个人后期复习,如有侵权立刻删除!
Java语言特点
-
简单易学;
-
面向对象(封装,继承,多态);
-
平台无关性( Java 虚拟机实现平台无关性)(一次编译,随处运行,但是现在虚拟化技术较为成熟,如Docker、K8S、Mesos);
-
支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持);
-
可靠性(具备异常处理和自动内存管理机制);
-
安全性(Java 语言本身的设计就提供了多重安全防护机制如访问权限修饰符、限制程序直接访问操作系统资源);
-
高效性(通过 Just In Time 编译器等技术的优化,Java 语言的运行效率还是非常不错的)
-
支持网络编程并且很方便;
-
编译与解释并存;
JDK、JRE、JVM之间联系
JDK是(Java Development Kit)的缩写,它是功能齐全的 Java SDK(Source Development Kit)。它是JRE+JDT(Java Development Tools):比如编译 java 源码的编译器 javac 以及一些其他工具比如 javadoc(文档注释工具)、jdb(调试器)、jconsole(基于 JMX 的可视化监控⼯具)、javap(反编译工具。
JRE是Java Runtime Environment缩写,它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。包含 Java 应用程序的运行时环境和必要的类库。
JDK包含JRE,JRE包含JVM。
什么是字节码?采用字节码的好处是什么?
字节码:.class文件,能被JVM理解的代码叫字节码,所以对于java代码,在编译之后能够随处运行;
好处:1.解决了传统解释型语言执行效率低的问题
2.拥有可移植性特点
这里着重说一下源代码到运行过程
对于.class文件--》机器码,JVM加载字节码文件,通过解释器进行逐行解释运行,但是由于效率不高,引入了JIT编译,JIT(just-in-time compilation),JIT属于运行时编译,第一次编译之后会把字节码对应的机器码保存,所以下一次相同的字节码就直接使用机器码能提高效率,所以这个也是为什么Java是编译与解释共存的语言