JVM java历史

依托于Java虚拟机的语言

- Java

- Ckojure - Kisp的方言

- Jython - 将python运行在JVM上

- Groovy - JVM上的脚本语言

- Scala - 专注于高并发解决方案

- Kotlin - 安卓开发首选

Java发展史

- 跨平台系统,Oak

- Sun发布Java和HotJava产品

- JDK1.0,运行环境和开发环境,核心api,用户界面api,发布技术,jvm,使用Classic虚拟机解释执行

- JDK1.1 AWT,内部类,JDBC,RMI,反射,sun获得hotspot虚拟机

- Jython创造,目前已经可以运行Django了

- JDK1.2 兼容智能卡和小型消费设备,大型服务器系统,发布JSP/Servlet规范,Java分裂为J2EE,J2SE,J2ME,解释和编译混合执行

- JDK1.3 Hotspot成为Java默认虚拟机

- JDK1.4 Classic虚拟机淘汰

- JDK1.5 改名5.0,范型,注解,自动装箱拆箱,枚举,可变长参数,增强foreach

- JDK1.6 开源OpenJDK,Hotspot是它的默认虚拟机

- 新语言Clojure出现

- Oracle收购BEA,得到JRockit虚拟机

- Scala:Twitter迁移大部分Ruby服务到Scala

- Oracle收购Sun,准备规划整合Hotspot和JRockit虚拟机

- JDK1.7发布,新垃圾回收器G1,64位压缩指针,NIO2.0,增加invokedynamic指令

- JDK1.8 Lambda表达式

- JDK1.9 Java模块化

Java语言规范

  • 数字的表示
//JDK1.7允许在数字中加加入下划线分割int a = 0372;int b = 0xDada_Cafe;int c = 0x00_FF__00_FF;long la = 01;long lb = 0777L;long lc = 0x100000000L;long ld = 2_147_483_648L;long le = 0xC0B0L;float fa = 1e1f;float fb = 2.f;float fc = .3f;float fd = 3.14f;float fe = 6.022137e+23f;double da = 1e1;double db = 2.;double dc = .3;double dd = 0.0;double de = 1e-9d;double df = 1e137;
  • 数据类型

    • 原始

      • 数字型:(byte 8bit ,short 16bit ,int 32bit,long 64bit)有符号,char 16bit 无符号,float 32bit,double 64bit
      • 布尔型:boolean :true,false
    • 引用

    Java虚拟机规范

  • 特性
    • 跨平台
    • 优秀的垃圾回收器
    • 可靠的即时编译器
  • 内容
    • 虚拟机内部结构
    • 虚拟机执行的字节码类型和功能
    • Class文件结构
    • 类的装载,连接,初始化
  • 整数在虚拟机中的表示
    • 在计算机中整数用补码表示,虚拟机也是

      • 概念:原码,反码,补码

        • 原码:1符号位 + 其余二进制数
        • 反码:符号位不变,其余取反
        • 补码:负数补码= 反码+1 ,正数补码= 原码
      • 补码好处:
        • 统一数字0的表示,原码很难确定无符号数字0
        • 简化整数的加减计算,正负数计算统一成加法。
//-10在虚拟机的表示

// 0x80000000 为符号为1,其余是0的32位数字,得到i位数字,并把除i之外的其他位数设置为0,然后把i移到最右输出

int d = -10;

for(int i = 0; i<32;i++){

int t = (d & 0x80000000 >>> i) >>> (31-i);

System.out.print(t);

}
  • 浮点型在虚拟机的表示

    • IEEE754定义的浮点数格式

      • 三部分:符号位 + 指数位 + 尾数位
      • float 32bit :1符号位 + 8指数位 + 23尾数位 s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm
    • 浮点数-5 1 10000001 0100000000000000000000
      • 符号为 1 ,负数
      • 指数位 129
      • 尾数位(实际上是24位) : e不全位0,前面加1=10100000000000000000000 ,全为0,则附加0
- 表示特殊数字

    - 正无穷

    - 负无穷

    - NaN

    - 最大浮点数

    - 最小规范化正浮点数

    - 最小正浮点数

    - 0

编译和调试虚拟机

  • 作用

    • 得到一个debug版本,支持更多虚拟机参数
    • 用于虚拟机代码单步调试
  • centos7构建jdk8
  • 拉取源码:
hg clone http://hg.openjdk.java.net/jdk8/jdk8 YourOpenJDK

cd YourOpenJDK

bash ./get_source.sh

原文地址:https://www.cnblogs.com/fubinhnust/p/11956031.html

时间: 2024-12-12 10:52:03

JVM java历史的相关文章

java历史简介

java历史简介 Java是一种计算机编程语言,拥有跨平台.面向对象.泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发. 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言.希望用于控制嵌入在有线电视交换盒.PDA等的微处理器 1994年将Oak语言更名为Java 1998年JDK1.2时,更名为Java 2 Platform 分为标准版J2SE,企业版J2EE,微型版J2ME Java 既安全.可移植,又可跨平台,而且人们发现它能够解决Intern

java历史

背景 Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出.Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的.1995年更名为Java,并重新设计用于开发Internet应用程序.用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台.动态Web.Internet计算.从此,Java被广泛

JVM(java 虚拟机)

JVM(java 虚拟机) 一.JVM简介 1.JVM:Java Virtual Machine (java 虚拟机) 通过软件来模拟出来的具有完整的硬件系统功能.运行在完全隔离的环境中的完整的计算机系统. 2.种类: 1)Sun Classic 经典款2)Exact VM 准确式内存管理3)Sun HotSpot VM 热代码跟踪 二.JVM运行时的区域 1.运行时的区域 2.线程隔离区域(程序计数器.java栈) 程序计数器:是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改

jvm java虚拟机

jdk jre ==================================== # ./jre1.6.0_27-for-linux.bin # ls /usr/java/jre1.6.0_27/ # mv /usr/java/jre1.6.0_27/* /usr/java/ # vi profile27 export JAVA_HOME=/usr/javaexport PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=$JAVA_HOME/lib ==

JVM(Java Virtual Machine)

Java语言的一个非常重要的特点就是与平台的无关性.而使用Java虚拟机是实现这一特点的关键.一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码.而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译.Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行.Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行.这就是Java的能够“一

jvm java虚拟机 新生代的配置

版权声明:本文为博主原创文章,未经博主允许不得转载.不经过允许copy,讲追究法律责任,欢迎加入我们的学习提升群523988350,可以相互交流 目录(?)[+] 111 -Xmn参数 112 第一种情况-Xmx20m -Xms20m -Xmn1m -XXSurvivorRatio2 -XXPrintGCDetails 113 第二种情况-Xmx20m -Xms20m -Xmn7m -XXSurvivorRatio2 -XXPrintGCDetails 114 第三种情况-Xmx20m -Xms

Java语言编程 - Java历史简介

1.1 Sun公司 介绍Java的历史之前,先介绍一下Java语言的缔造公司,Sun公司,Sun公司的全称是:Stanford University Network.值得一提的是,Sun公司从1982年成立到2000年达到顶峰用了近二十年时间,而走下坡路只用了一年,最后2009年4月20日甲骨文以现金收购Sun公司,交易价格达74亿美元. 1.2 计算机语言的发展 计算机语言也是一步步发展起来的,由最初的机器语言,直接用机器能识别0和1写程序,对于人来说很难用这样的语言:之后出现了汇编语言,利用

java 环境配置 及java 历史

知识点概括:1 Java 的历史 2 JDK 的配置 3 文件的编译与执行 4 转义字符的使用 5 规范代码 练习内容  :在命令窗口切换路径:编写Hello Word 程序 详细笔记 1  计算机的发展史.硬件中  内存,CPU 硬盘 对作为开发者比较重要.  所以程序的运行都要经过CPU, 转速越快,处理能力与越强. 有7200转,5400转等等. 2   市场上的硬盘之所以出现比实际标明的内存大小要小,是因要制造商 是按 1000的进制单位,而非1024来计算. 3  Java 的发展史

jvm java内存区域的介绍

jvm虚拟机在运行时需要用到的内存区域.广泛一点就是堆和栈,其实不然,堆和栈只是相对比较笼统的说法,真正区分有如下几个 先上图一: 总的就是 java的内存模型 内存模型又分堆内存(heap)和方法区(有时也称为non-heap)和栈 堆又分新生代(Young)和老年代(old/Tenured) 新生代又分默认比例为8:1:1的eden空间.from survivor空间.to survivor空间 当进行垃圾回收时,eden.survivor from 存活得对象会复制到servivor to