在没有Java之前,同一个应用程序,由于硬件架构和操作系统的不同而需要开发几套应用程序以便程序能运行在不同平台上,这对于开发人员来说无疑是件痛苦的事情,而不同的硬件体系结构和操作系统肯定会长期并存发展,因而需要一门语言解决这个问题,Java顺势而生。Java诞生之初曾有一个著名的口号 “一次编写,处处运行” ,也充分体现了当时的开发人员对实现平台无关性的渴望。实现平台无关性的理想最终实现在操作系统的应用层面上。Sun公司和其他虚拟机提供商发布了很多能运行在不同操作系统上的虚拟机,这些虚拟机都可以运行同一种字节码文件,从而实现了程序的 “一次编写,处处运行” 。通过字节码文件运行程序还有一个优势,实现了语言的无关性,而且这个特性越来越受到开发者的重视。
发展之初,设计者就曾经考虑并实现让其他语言运行与Java虚拟机之上的可能性,在发布规范文档的时候就刻意把Java规范拆分成了Java语言规范和Java虚拟机规范。如今,商业机构以及开源机构已经发展出许多运行于Java虚拟机之上的语言,如Groovy,Scala,Jython等,从事过大数据相关工作的相信对Scala并不陌生。使用这些语言的开发者可能还不是很多,但随着时间的推移和发展,这个队伍正在逐渐壮大。实现语言无关性的仍是虚拟机和字节码文件,虚拟机不与任何编程语言绑定,而只与Class字节码文件绑定,处于安全方面的考虑,虚拟机对Class文件中使用了许多强制性的语法和结构化约束。Java语言的关键字,运算符的语义最终都是由多条字节码命令组合而成,因此字节码命令所能提供的语义描述能力肯定比Java语言本身更加强大,一些Java语言无法支持的语言特性不代表字节码不能有效的支持,这也为别的运行于虚拟机之上的语言提供了有别于Java语言特性的基础。
打赏一个呗