zoukankan      html  css  js  c++  java
  • java的一些基本概念——java11、jdk、jre、jvm等

    Java字节码

    先介绍下c语言的编译过程,写好代码用编译器(比如gcc)编译过后是机器能够直接执行的二进制机器码。
    java也类似这种情况,但是java代码文件编译过后不是任何机器都能识别的机器码,而是只有java虚拟机(JVM)才能识别的java字节码。

    JVM

    java的虚拟机,java文件编译后的.class文件就是运行在JVM上的。
    Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。通过对中央处理器(CPU)所执行的软件实现,实现能执行编译过的Java程序码(Applet与应用程序)。
    作为一种编程语言的虚拟机,实际上不只是专用于Java语言,只要生成的编译文件匹配JVM对加载编译文件格式要求,任何语言都可以由JVM编译运行。此外,除了甲骨文,也有其他开源或闭源的实现。

    JRE

    Java运行环境(Java Runtime Environment,简称JRE)是一个软件,由太阳微系统所研发,JRE可以让计算机系统运行Java应用程序(Java Application)。
    JRE的内部有一个Java虚拟机(Java Virtual Machine,JVM)以及一些标准的类别函数库(Class Library)。

    JDK

    JDK包含了一批用于Java开发的组件,其中包括:
    javac:编译器,将后缀名为.java的源代码编译成后缀名为“.class”的字节码
    java:运行工具,运行.class的字节码
    jar:打包工具,将相关的类文件打包成一个文件
    javadoc:文档生成器,从源码注释中提取文档,注释需匹配规范
    jdb debugger:调试工具
    jps:显示当前java程序运行的进程状态
    javap:反编译程序
    appletviewer:运行和调试applet程序的工具,不需要使用浏览器
    javah:从Java类生成C头文件和C源文件。这些文件提供了连接胶合,使Java和C代码可进行交互。[2]
    javaws:运行JNLP程序
    extcheck:一个检测jar包冲突的工具
    apt:注释处理工具[3]
    jhat:java堆分析工具
    jstack:栈跟踪程序
    jstat:JVM检测统计工具
    jstatd:jstat守护进程
    jinfo:获取正在运行或崩溃的java程序配置信息
    jmap:获取java进程内存映射信息
    idlj:IDL-to-Java编译器。将IDL语言转化为java文件[4]
    policytool:一个GUI的策略文件创建和管理工具
    jrunscript:命令行脚本运行
    JDK中还包括完整的JRE(Java Runtime Environment),Java运行环境,也被称为private runtime。包括了用于产品环境的各种库类,如基础类库rt.jar,以及给开发人员使用的补充库,如国际化与本地化的类库、IDL库等等。

    JDK中还包括各种样例程序,用以展示Java API中的各部分。

    java收费

    对于最新的jdk11
    Oracle 将发布两个不同版本,分别为 Oracle JDK 和 OpenJDK 「除了所附带的许可文件不一样,刚发布的版本几乎完全相同」。
    对于 Oracle JDK 来说,支持 BCL 协议,开发人员可以免费使用,但不能用于生产,如果全额付费的话,可支持到 2026 年 9 月。
    对于 OpenJDK 来说,支持 GPL 协议「一般只支持到发布的前 6 个月内」,可以用于公司使用,因此,对于JDK 11 来说,应该有JDK 11.0.0,然后是两个安全补丁 11.0.1 和 11.0.2 。如果你要继续使用 Oracle 的 OpenJDK 构建和安全补丁,那么您将必须在发布后的一个月内迁移到 JDK 12,见如下图绿色的部分为免费支持版本。

    AdoptOpenJDK

    一个非甲骨文出品的openjdk实现,支持 GPL 协议且免费。AdoptOpenJDK 开发团队表示 JDK 11 版本将在下一个主要版本发布一年后继续使用4年,并且他们将提供持续构建 OpenJDK 的源存储库中创建和发布的安全修补程序。

    参考:
    https://yq.aliyun.com/articles/645952
    https://zh.wikipedia.org/wiki/JDK
    https://zh.wikipedia.org/wiki/JRE
    https://zh.wikipedia.org/wiki/Java虚拟机
    https://zh.wikipedia.org/wiki/Java字节码
    https://zhuanlan.zhihu.com/p/44837223

  • 相关阅读:
    turtle绘制彩色螺旋线
    turtle 画一朵花
    Spark Streaming+Kafka提交offset实现有且仅有一次(exactly-once)
    利用Spark实现Oracle到Hive的历史数据同步
    spark-submit提交Spark Streamming+Kafka程序
    SparkStreaming+Kafka 实现统计基于缓存的实时uv
    SparkStreaming+Kafka 实现基于缓存的实时wordcount
    基于OGG的Oracle与Hadoop集群准实时同步介绍
    Spark Streaming连接Kafka入门教程
    spark连接hive(spark-shell和eclipse两种方式)
  • 原文地址:https://www.cnblogs.com/feipeng8848/p/10281056.html
Copyright © 2011-2022 走看看