美文网首页
1.Java概述

1.Java概述

作者: JarvisTH | 来源:发表于2020-06-18 20:51 被阅读0次

1.Java技术体系
从广义上讲,Kotlin、Clojure、JRuby、Groovy等运行于Java虚拟机上的编程语言及其相关的程序 都属于Java技术体系中的一员。

如果仅从传统意义上来看,JCP官方[1]所定义的Java技术体系包括了以 下几个组成部分:

  • Java程序设计语言
  • 各种硬件平台上的Java虚拟机实现
  • Class文件格式
  • Java类库API
  • 来自商业机构和开源社区的第三方Java类库

JDK(Java Development Kit):是用于支持Java程序开发的最小环境,Java程序设计语言、Java虚拟机、Java类库这三部分的统称。

JRE(Java Runtime Environment):是支持Java程序运行的标准环境,Java类库API中的Java SE API子集[3]和Java虚拟机这两部分的统称。

Java技术体系所包括的内容

2.JVM家族

  • Sun Classic/Exact VM
  • HotSpot VM
  • Mobile/Embedded VM
  • BEA JRockit/IBM J9 VM
  • BEA Liquid VM/Azul VM
  • Apache Harmony/Google Android Dalvik VM
  • Microsoft JVM及其他

3.Java技术未来

  • 无语言倾向
    在HotSpot虚拟机基础上增强而成 的跨语言全栈虚拟机,可以作为“任何语言”的运行平台使用,这里“任何语言”包括了Java、Scala、 Groovy、Kotlin等基于Java虚拟机之上的语言,还包括了C、C++、Rust等基于LLVM的语言,同时支 持其他像JavaScript、Ruby、Python和R语言等。Graal VM可以无额外开销地混合使用这些编程语言, 支持不同语言中混用对方的接口和对象,也能够支持这些语言使用已经编写好的本地库文件。
Graal VM

Graal VM的基本工作原理是将这些语言的源代码(例如JavaScript)或源代码编译后的中间格式 (例如LLVM字节码)通过解释器转换为能被Graal VM接受的中间表示,这个过程称为程 序特化(Specialized,也常被称为Partial Evaluation)。从更严格的角度来看,Graal VM才是真正意义上与物理计算机相对应的高级语言虚拟机,理由是 它与物理硬件的指令集一样,做到了只与机器特性相关而不与某种高级语言特性相关。

  • 新一代即时编译器
    即时编译,热点代码会被HotSpot的探测机制准确定位捕 获,并将其编译为物理硬件可直接执行的机器码,在这类应用中Java的运行效率很大程度上取决于即 时编译器所输出的代码质量。
    HotSpot虚拟机中含有两个即时编译器,分别是编译耗时短但输出代码优化程度较低的客户端编译 器(简称为C1)以及编译耗时长但输出代码优化质量也更高的服务端编译器(简称为C2)。
    自JDK 10起,HotSpot中又加入了一个全新的即时编译器:Graal编译器,Graal编译器是C2编译器替代者,Graal编译器本身就是由Java语言写成,在保 持输出相近质量的编译代码的同时,开发效率和扩展性上都要显著优于C2编译器。
    使用-XX:+UnlockExperimentalVMOptions-XX:+UseJVMCICompiler参数来启用Graal编译器。

  • 向Native迈进
    这里有提到提前编译,它是相对于即时编译的概念,提前编译能带来的最大好处是Java虚拟机加载这些已经预编 译成二进制库之后就能够直接调用,而无须再等待即时编译器在运行时将其编译成二进制机器码。理 论上,提前编译可以减少即时编译带来的预热时间,减少Java应用长期给人带来的“第一次运行慢”的 不良体验,可以放心地进行很多全程序的分析行为,可以使用时间压力更大的优化措施。
    提前编译的坏处也很明显,它破坏了Java“一次编写,到处运行”的承诺,必须为每个不同的 硬件、操作系统去编译对应的发行包;也显著降低了Java链接过程的动态性,必须要求加载的代码在 编译期就是全部已知的,而不能在运行期才确定,否则就只能舍弃掉已经提前编译好的版本,退回到 原来的即时编译执行状态。

  • 灵活的胖子
    HotSpot的定位是面向各种不同应用场景的全功能Java虚拟机。

  • 语言语法持续增强

相关文章

  • 1.Java概述

    1.Java技术体系从广义上讲,Kotlin、Clojure、JRuby、Groovy等运行于Java虚拟机上的编...

  • 1.Java概述

    Java概述 技术体系 Java技术体系技术体系说明Java SE(Java Standard Edition):...

  • 1.java的概述

    1. 程序一词来自生活,通常指完成某些事情的固定步骤,合理顺序 System.out.println(“记录");...

  • 1.Java语言概述

    1.Java语言概述 是SUN(Stanford University Network,斯坦福大学网络公司 ) 1...

  • 第一章-java语言简介

    第一节:java语言概述 一、java简介[了解] 1.java概述 1.1java是什么? 学习之前需要了解,j...

  • Java NIO总结(一):Channel、Buffer、Sel

    0. 概述 1.Java NIO 2.ChannelChannel到Channel的数据传输transferFro...

  • Java EE应用

    1.Java EE应用概述 1.1 Java EE应用分层模型 Domain Object(领域对象)层 由POJ...

  • java中的日志框架

    各日志框架配置原则: 先看官网 --> 再看源代码 --> 最后中文博客 1.java中日志概述 1.1 java...

  • 深入理解Java虚拟机一

    一、为什么要学习Java虚拟机 1.Java虚拟机概述 Java虚拟机即Java Virtual Machine,...

  • Day69-jenkins集成maven && sonarqub

    1.Java项目部署基本概述? 2.手动部署Java项目至Web集群? 安装jenkins 如果需要使用高版本Ma...

网友评论

      本文标题:1.Java概述

      本文链接:https://www.haomeiwen.com/subject/smrpxktx.html