深入理解java虚拟机-01 走进java
第一章是对java的产生,历史的整体介绍
java的使用很广泛,安装jdk的时候会看到一句广告语runs in 10 billions machines。使用java的设备多达几十亿台
1.概述
- 优点:
- 摆脱了平台的限制,一次编写,到处运行
- 相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题
- 热点代码检测和运行是编译及优化
- 完善的应用接口,还有无数来自商业机构和开源社区的第三方类库来帮助他实现各种功能
。。。
尽管java有这么多优点,相对于其他语言,使用上简单了很多。但是作为一名java程序员,想到在此方面有更高的造诣,还是要思考“程序这样写好不好”,因此就需要多java的运行环境--java虚拟机有一定的了解,这样才能上升到
不惑的境界、
2.java技术体系
sun官方定义的java技术体系包括以下几个组成部分
1. java程序设计语言
2. 各种硬件平台上的java虚拟机
3. class文件格式
4. java api类库
5. 来自商业机构和开源社区的第三方java类库
我们可以把1,2,4这三部分统称为jdk(java development kit),jdk是用于支持java程序开发的最小环境
另外,可以把java api类库中的java SE API子集和java虚拟机加这两部分同城为jre(java runtime environment),jre是支持java程序运行的标准环境

java技术体系可以分为4个平台
- java card:java小程序(Applets)运行在小内存设备上的平台
- java me:支持移动终端,J2ME
- java se(Standard Edition):支持面向桌面级应用,,J2SE
- java ee(Enterprise Edition): 多层架构的企业应用, J2SE
3. java发展史
java诞生在1996年,1月23日,jdk1.0发布。jdk1.0提供了一个纯解释执行的java虚拟机实现Sun Classic VM。jdk1.0版本的代表技术包括java虚拟机,applet,awt等
1996年底,sun公司在美国旧金山举行了首届javaOne大会,从此JavaOne成为全世界数百万java开发者每年一度的技术盛会(我咋不知道呢)
1997年,sun公司发布了jdk1.1,技术代表有jar文件格式、jdbc、javabeans、RMI(啥?),支持内部类(Inner Class)和反射(Reflection)
1998年,sun公司发布了里程碑版本1.2,工程代号playground(竞技场),java技术体系分为三个部分:j2se,j2me,j2ee。出现了EJB,java plug-in,Java IDL、Swing等。这个版本第一次内置了JIT(just in time)编译器。在语言和API级别上,java添加了strictfp关键字(不知道是啥)和现在java编码中常用的一些类Collections集合类。
1999年4月27日,HotSpot虚拟机(熟悉的名字)发布,它最初是由一家名为Longview Technologies的小公司开发,因为表现优异,在97年被sun收购。后来它成为了jdk1.3之后所有版本的sun jdk的默认虚拟机
中间连续发布了一些版本,但都没什么大的特性
2004年9月30日,1.5发布。改进非常大:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环等语法特性,提供了concurrent并发包
2006年12月11日,1.6对虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载方面的算法
2006年11月13日的javaone大会上,sun公司宣布最终会将java开源,建立了OpenJDK组织对这些源码进行独立管理。除了少量的产权代码外,OpenJDK几乎包括了SunJDK的全部代码。
2011年7月28日,1.7发布提供了G1收集器,加强对非java语言的调用
2009年4月20日。oracle公司74亿美元收购了sun公司,此前oracl'e公司已经收购了另外一家大型中间件企业BEA公司,自此,oracle公司拥有了三大商业虚拟机中的其中两个jRockit和HotSpot(另外一个时IBM的J9 VM)
4 java虚拟机的发展史
5 展望java技术的未来
6实战: 自己编译jdk
书中提供了怎样自己编译OpenJDK的样例,放着,先看后面的内容
吐槽一下,博客园的markdown编辑器不友好啊,都没有
edit and view视图
深入理解java虚拟机-01 走进java的更多相关文章
- 深入理解java虚拟机(1)走进jvm
1.JDK:java程序设计语言.java虚拟机.javaAPI 二.自动内存管理机制 ----------------------------------------------------- 1. ...
- 《深入理解 Java 虚拟机》学习 -- Java 内存模型
<深入理解 Java 虚拟机>学习 -- Java 内存模型 1. 区别 这里要和 JVM 内存模型区分开来: JVM 内存模型是指 JVM 内存分区 Java 内存模型(JMM)是指一种 ...
- 深入理解Java虚拟机之图解Java内存区域与内存溢出异常
Java内存区域与内存溢出异常 运行时数据区域 程序计数器 用于记录从内存执行的下一条指令的地址,线程私有的一小块内存,也是唯一不会报出OOM异常的区域 Java虚拟机栈 Java虚拟机栈(Java ...
- [Java 教程 01] Hello,Java!
前言 从事编程已经有一段时间了,突然发现,Java作为我的第一编程语言,自己似乎对她并有一个系统的思想.当下Java依旧保持着超高的热度,新特性也不断出现,从当初学习的java6版本到最近刚出的jav ...
- java虚拟机学习-触摸java常量池(13-1)
java虚拟机学习-深入理解JVM(1) java虚拟机学习-慢慢琢磨JVM(2) java虚拟机学习-慢慢琢磨JVM(2-1)ClassLoader的工作机制 java虚拟机学习-JVM内存管理:深 ...
- 转 Java虚拟机5:Java垃圾回收(GC)机制详解
转 Java虚拟机5:Java垃圾回收(GC)机制详解 Java虚拟机5:Java垃圾回收(GC)机制详解 哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无 ...
- Java虚拟机2:Java内存区域
1.几个计算机的概念 为以后写文章考虑,也为巩固自己的知识和一些基本概念,这里要理清楚几个计算机中的概念. 1.计算机存储单位 从小到大依次为位Bit.字节Byte.千字节KB.兆M.千兆GB.TB, ...
- java虚拟机规范(se8)——java虚拟机结构(六)
2.11 指令集简介 java虚拟机指令由一个字节的操作码,接着时0个或多个操作数组成,操作码描述了执行的操作,操作数提供了操作所需的参数或者数据.许多指令没有操作数只包含一个操作码. 如果忽略异常处 ...
- 【Java虚拟机6】Java内存模型(Java篇)
什么是Java内存模型 <Java虚拟机规范>中曾试图定义一种"Java内存模型"(Java Memory Model,JMM)来屏蔽各种硬件和操作系统的内存访问差异, ...
随机推荐
- 三步轻松搞定delphi中CXGRID手动添加复表头(多行表头,报表头)
网上有代码动态生成cxgrid多行表头的源码,地址为:http://mycreature.blog.163.com/blog/static/556317200772524226400/ 如果要手动设计 ...
- 基于Vue-cli 快速搭建项目
Vue-cli可以快速帮助我们创建一个项目,这是官方给我们提供的脚手架.下面我说一下vue-cli的使用方法. 一.准备工作 在使用vue-cli时,首先需要安装nodejs,npm,其次需全局安装v ...
- 题解 P5239 【回忆京都】
你们这些写题解的,就不能把话说清楚嘛!(吐槽1) 你们这些出题的,就不能多出点东方嘛!(吐槽2) 你们这些做题的,就不来写一篇详细一点的题解嘛!(吐槽3) 以上均是个人吐槽,纯属吐槽,不带任何针对性和 ...
- javaee, javaweb和javase的区别以及各自的知识体系
javaee, javaweb和javase的区别以及各自的知识体系 来源 https://blog.csdn.net/weixin_39297312/article/details/79454642 ...
- 【题解】 [SCOI2011]糖果 (差分约束)
懒得复制,戳我戳我 Solution: 首先考虑\(X=1\)的情况,我们其实只用用一下并查集把相等的点合为一个点 然后后面的四个式子我们就可以用差分约束了,就拿\(X=2\)的情况来说吧,我们用\( ...
- 利用powerful number求积性函数前缀和
好久没更博客了,先水一篇再说.其实这个做法应该算是杜教筛的一个拓展. powerful number的定义是每个质因子次数都 $\geq 2$ 的数.首先,$\leq n$ 的powerful num ...
- HDU 4303 Hourai Jeweled 解题报告
HDU 4303 Hourai Jeweled 解题报告 评测地址: http://acm.hdu.edu.cn/showproblem.php?pid=4303 评测地址: https://xoj. ...
- word 大纲-目录
- java基础基础总结----- String
- Java大话设计模式
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...