JAVA虚拟机精讲-第一章 Java体系结构(一)

0x00 了解Java

最早大概可追溯至1991年四月份,Sun的绿色计划(Green Project)开始着手于发展消费性电子产品(Consumer Electronics),所使用的语言是C、C++、及Oak (为Java语言的前身),到1994由于网络的兴起年计划改变。当时主要想寻找的嵌入式产品通用的语言。

Java 原来就叫Oak,但是由于商标问题,工程师由咖啡得到灵感,1995年更名为java,并在同年发布了1.0版本。下面是jdk版本,代号和发布时间

  • JDK 1.1.4 Sparkler 宝石 1997-09-12
  • JDK 1.1.5 Pumpkin 南瓜 1997-12-13
  • JDK 1.1.6 Abigail 阿比盖尔–女子名 1998-04-24
  • JDK 1.1.7 Brutus 布鲁图–古罗马政治家和将军 1998-09-28
  • JDK 1.1.8 Chelsea 切尔西–城市名 1999-04-08
  • J2SE 1.2 Playground 运动场 1998-12-04
  • J2SE 1.2.1 none 无 1999-03-30
  • J2SE 1.2.2 Cricket 蟋蟀 1999-07-08
  • J2SE 1.3 Kestrel 美洲红隼 2000-05-08
  • J2SE 1.3.1 Ladybird 瓢虫 2001-05-17
  • J2SE 1.4.0 Merlin 灰背隼 2002-02-13
  • J2SE 1.4.1 grasshopper 蚱蜢 2002-09-16
  • J2SE 1.4.2 Mantis 螳螂 2003-06-26
  • J2SE 5.0 (1.5.0) Tiger 老虎 2004-10
  • J2SE 6.0 (Beta) Mustang 野马 2006-04
  • J2SE 7.0 Dolphin 海豚 2011-07
  • J2SE 8.0 2014-03
  • J2SE 9.0 2017

2009.4.20  Oracle74亿美元收购Sun ,java开始由Oracle 主导开发。

截至到2017年4月,最新的是 jdk 8,今年下半年将会推出java9 版本分为java SE,java EE,java ME。

0x01 Java优点

  1. 体系结构中立
  2. 安全性优越
  3. 多线程
  4. 分布式
  5. 丰富的第三方开源组件。

java可以实现“一次编译,处处运行”(Write Once,Run Anywhere),功不可没的是字节码,java编译生成的是字节码,具有平台通用性。运行需要Java虚拟机JVM。

0x02 对象模型和语法结构

面向对象语言,吸收了c/c++的优点,没有指针,引入垃圾回收等。

体系结构:java,字节码,java API和JVM

字节码:跨平台的基石,与机器不相关,java编译后产生的文件是字节码,以.class后缀。其实也是语言无关,其他语言也可以编译成字节码。

JVM:负责运行java程序,主要是解析(或编译)字节码。现在主要是基于栈的JVM,如HotSpot,IBM J9等;android的Dalvik也是一个,基于寄存器的jvm,不过有的地方不符合jvm规范设置。JVM 内部:

 

0x03 OpenJDK

OpenJDK是sun/Oracle的一种开源版本,属于开源社区,GPL V2 协议,允许商业用途。

TaobaoVM 是淘宝基于OpenJDK的定制虚拟机,主要是根据业务调整,采用intel cup优化GC性能;使用crc32指令实现降低JNI的调用开销。还有创新的GCIH(GC invisible heap)实现off-heap,使生命周期长的对象移到堆外,GC不能管理到,降低GC回收频率和i、提升GC回收效率,并且GCIN对象可以JVM进程共享。

0x04 自行编译OpenJDK

OPENJDK官网下载,然后配置环境编译,具体看书本。可单独编译jdk和hotspot,还有讲了一些基本的调试。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据