深入理解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)来屏蔽各种硬件和操作系统的内存访问差异, ...
随机推荐
- Majority Element问题---Moore's voting算法
Leetcode上面有这么一道难度为easy的算法题:找出一个长度为n的数组中,重复次数超过一半的数,假设这样的数一定存在.O(n2)和O(nlog(n))(二叉树插入)的算法比较直观.Boyer–M ...
- Android DatePickerDialog和TimePickerDialog显示样式
可以用DatePickerDialog显示选取日期的对话框.可以设置显示的样式 1.通过构造方法设置显示样式. 可以通过DatePickerDialog(Context context, int th ...
- FileStream功能被禁用
今天还原数据库,遇到如下问题: 网上的解决方法大概是三种: 1.讲数据库备份文件权限设置为“EventOne” 2.打开SQLServer配置管理器,选中服务然后右击“属性”将FileStream相关 ...
- python自动化之调试
#####调试 #####查看日志与断言 ''' 抛出异常使用raise语句.在代码中,raise语句包含以下部分: (1)raise关键字; (2)对Exception函数的调用; (3)传递给Ex ...
- 一本通1644【例 4】佳佳的 Fibonacci
1644:[例 4]佳佳的 Fibonacci 时间限制: 1000 ms 内存限制: 524288 KB sol:搞了大概一个多小时什么结果都没,被迫去看题解,感觉自己菜到家了qaq ...
- Exploring Pyramids UVALive - 3516 (记忆化DP)
题意:给定一个序列 问有多少棵树与之对应 题目连接:https://cn.vjudge.net/problem/UVALive-3516 对于这一序列 分两种2情况 当前分支 和 其它分支 用df ...
- MT【172】内外圆
$P,Q$是两个定点,M为平面内一个动点,且$\dfrac{|MP|}{|MQ|}=\lambda(\lambda>0,\lambda\ne1)$, 点M的轨迹围成的区域面积为S , 设$S=f ...
- 【BZOJ3733】[Pa2013]Iloczyn (搜索)
[BZOJ3733][Pa2013]Iloczyn (搜索) 题面 BZOJ 题解 把约数筛出来之后,直接爆搜,再随便剪枝就过了. 最近一句话题解倾向比较严重 #include<iostream ...
- BZOJ 2879 [Noi2012]美食节 | 费用流 动态开点
这道题就是"修车"的数据加强版--但是数据范围扩大了好多,应对方法是"动态开点". 首先先把"所有厨师做的倒数第一道菜"和所有菜连边,然后跑 ...
- 【JLOI 2012】时间流逝(期望,树上高斯消元)
题目链接 这是一道传统的期望题,可是有一些套路值得我去掌握. 我们用$s$来表示一种状态,就是当前拥有的能量圈,是一个正整数拆分的形式. 用$f_{s}$表示如果遇到果冻鱼后丢掉了最小的能量圈后的状态 ...