剑指JVM:虚拟机实践与性能调优
上QQ阅读APP看书,第一时间看更新

1.2 Java及JVM的简介

1.2.1 Java:跨平台的语言

十几年来,Java始终占据编程语言排行榜前列。TIOBE 2022年7月公布的编程语言排行榜,如图1-1所示。

随着Java以及Java社区的不断壮大,Java也早已不再是简简单单的一门计算机语言了,它更是一个开放的平台、一种共享的文化、一个庞大的社区。

作为一个开放的平台,JVM功不可没。JVM负责解释执行字节码的程序,不仅可以执行Java程序,任何一种能够编译成字节码的计算机语言都可以在JVM上运行,如Groovy、Scala、JRuby、Kotlin等语言,因此它们也属于Java平台的一部分,Java平台也因它们变得更加丰富多彩。也就是说,JVM的设计解决了Java程序跨平台的问题,同时还解决了很多语言的跨平台问题。

图1-1 2022年7月公布的最新编程语言排行榜

作为一种共享的文化,Java开源的决策可谓英明。正因为开源,在Java生态圈里有着数不清的流行框架,如Tomcat、Struts、Hibernate、Spring、MyBatis等。包括JDK和JVM自身也有不少开源的实现,如OpenJDK、Apache Harmony等。现在一提到Java,大家就能想到“开源”,共享的精神在Java世界里无处不在。

作为一个庞大的社区,Java拥有全世界最多的技术参与者和拥护者,有数不清的开源社区、活跃的论坛、丰富的技术博客、优质的视频资料。使用Java开发的应用有桌面应用程序、嵌入式开发到企业级应用、移动端App、后台服务器、中间件,其形式之丰富、参与人数之众多也是其他语言无法企及的。显然Java社区已经构建起了一个良好而庞大的生态系统。正如那句谚语:“人多力量大,柴多火焰高。”这些Java语言的使用者和支持者才是Java最大的优势和财富。恭喜正在看本书的你,也即将成为这个大家庭的一员。

世界上没有最好的编程语言,只有最适用于具体应用场景的编程语言。Java语言的跨平台性是“一次编译,到处运行”,编写的以“.java”结尾的源文件,经过编译器编译之后生成字节码文件,字节码文件可以在不同的平台上进行解释运行。针对不同操作系统安装对应平台的JVM虚拟机即可运行Java程序,如图1-2所示。

图1-2 Java语言的跨平台性

按照技术所服务的领域来划分,Java技术体系可以分为以下四条主要的产品线。

(1)Java SE(Standard Edition):支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,这条产品线在JDK 6以前被称为J2SE。

(2)Java EE(Enterprise Edition):支持使用多层架构的企业应用(如ERP、MIS、CRM应用)的Java平台,除了提供Java SE API外,还对其做了大量有针对性的扩充,并提供了相关的部署支持,这条产品线在JDK 6以前被称为J2EE,在JDK 10以后被Oracle放弃,捐献给Eclipse基金会管理,此后被称为Jakarta EE。

(3)Java ME(Micro Edition):支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API有所精简,并加入了移动终端的针对性支持,这条产品线在JDK 6以前被称为J2ME。有一点读者请勿混淆,现在在智能手机上非常流行的、主要使用Java语言开发程序的Android并不属于Java ME。

(4)Java Card:支持Java小程序(Applets)运行在小内存设备(如智能卡)上的平台。