TIOBE语言热度榜
https://www.tiobe.com/tiobe-index/
Java生态圈
平台:Java虚拟机扮演举足轻重的作用
Groovy、Scala、JRuby、Kotlin等都是Java平台的一部分
文化:Java几乎是“开源”的代名词
第三方开源软件和框架:Tomcat、Structs、MyBatis、Spring
JDK和JVM本事也有不少开源的实现:OpenJDK、Harmony
社区:世界最多的技术维护者,开源社区支持
JDK 编写+javac+Jconsole...
JRE JVM+核心类库
JVM 承上启下,承上:Java字节码,启下:各种操作系统
Java:跨平台的语言
JVM:跨语言的平台
Java不是最强大的语言,但是JVM是最强大的虚拟机
For the sake of security .the Java virtual machine imposes strong syntactic and structural constraints on the code in a class file.
However,any language with functionality that can be expressed in terms of a valid class file can be hosted by JVM,
attracted by a generally available ,machine-independent platform ,
implementors of other language can turn on the JVM as a delivery vehicle for their languages.
字节码
- 平时说的java字节码,表示java语言编译的字节码。但是其实,任何能在JVM平台上执行的字节码格式都是一样的。所以,应该统称为JVM字节码
- 不同的编译器,可以编译出相同的字节码文件,字节码文件也可以再不同的JVM上运行
- JVM和Java没有必然的联系,JVM只与特定的二进制文件格式-Class文件格式所关联,Class文件中包含JVM指令集(字节码,Bytecodes)和符号集,还有一些其他的辅助信息
多语言混合编程
Java发展的重大事件
Open JDK 和 Oracle JDK
在JDK11之前,OracleJDK中还会存在一些OpenJDK中没有的、闭源的功能,但是在JDK11中,这两者几乎一致
2019年后,比如,Shenandoah GC,OpenJDK很多时候居然比商用OracleJDK功能还多???
虚拟机和Java虚拟机
虚拟机
- 系统虚拟机:对物理计算机的仿真
- 程序虚拟机:为执行单个计算机程序而设计,在Java虚拟机中执行的指令称为Java字节码指令
在虚拟机上运行的软件都被限制于虚拟机提供的资源中
Java虚拟机
- Java技术的核心:JVM
- Java虚拟机就是二进制字节码的运行环境。解释/编译为对应平台的机器指令执行,每一条Java指令,JVM都有详细的定义,比如,怎么取操作数,怎么处理操作数,处理结果放在哪里?
- 一次编译,到处运行
- 自动内存管理
- 自动垃圾回收功能
JVM的位置
JVM是运行在OS之上,与硬件没有直接的交互