第一章是对java的产生,历史的整体介绍

java的使用很广泛,安装jdk的时候会看到一句广告语runs in 10 billions machines。使用java的设备多达几十亿台

1.概述

  • 优点:

    1. 摆脱了平台的限制,一次编写,到处运行
    2. 相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题
    3. 热点代码检测和运行是编译及优化
    4. 完善的应用接口,还有无数来自商业机构和开源社区的第三方类库来帮助他实现各种功能

      。。。

尽管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公司拥有了三大商业虚拟机中的其中两个jRockitHotSpot(另外一个时IBM的J9 VM

4 java虚拟机的发展史

5 展望java技术的未来

6实战: 自己编译jdk

书中提供了怎样自己编译OpenJDK的样例,放着,先看后面的内容

吐槽一下,博客园的markdown编辑器不友好啊,都没有edit and view视图

深入理解java虚拟机-01 走进java的更多相关文章

  1. 深入理解java虚拟机(1)走进jvm

    1.JDK:java程序设计语言.java虚拟机.javaAPI 二.自动内存管理机制 ----------------------------------------------------- 1. ...

  2. 《深入理解 Java 虚拟机》学习 -- Java 内存模型

    <深入理解 Java 虚拟机>学习 -- Java 内存模型 1. 区别 这里要和 JVM 内存模型区分开来: JVM 内存模型是指 JVM 内存分区 Java 内存模型(JMM)是指一种 ...

  3. 深入理解Java虚拟机之图解Java内存区域与内存溢出异常

    Java内存区域与内存溢出异常 运行时数据区域 程序计数器 用于记录从内存执行的下一条指令的地址,线程私有的一小块内存,也是唯一不会报出OOM异常的区域 Java虚拟机栈 Java虚拟机栈(Java ...

  4. [Java 教程 01] Hello,Java!

    前言 从事编程已经有一段时间了,突然发现,Java作为我的第一编程语言,自己似乎对她并有一个系统的思想.当下Java依旧保持着超高的热度,新特性也不断出现,从当初学习的java6版本到最近刚出的jav ...

  5. java虚拟机学习-触摸java常量池(13-1)

    java虚拟机学习-深入理解JVM(1) java虚拟机学习-慢慢琢磨JVM(2) java虚拟机学习-慢慢琢磨JVM(2-1)ClassLoader的工作机制 java虚拟机学习-JVM内存管理:深 ...

  6. 转 Java虚拟机5:Java垃圾回收(GC)机制详解

    转 Java虚拟机5:Java垃圾回收(GC)机制详解 Java虚拟机5:Java垃圾回收(GC)机制详解 哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无 ...

  7. Java虚拟机2:Java内存区域

    1.几个计算机的概念 为以后写文章考虑,也为巩固自己的知识和一些基本概念,这里要理清楚几个计算机中的概念. 1.计算机存储单位 从小到大依次为位Bit.字节Byte.千字节KB.兆M.千兆GB.TB, ...

  8. java虚拟机规范(se8)——java虚拟机结构(六)

    2.11 指令集简介 java虚拟机指令由一个字节的操作码,接着时0个或多个操作数组成,操作码描述了执行的操作,操作数提供了操作所需的参数或者数据.许多指令没有操作数只包含一个操作码. 如果忽略异常处 ...

  9. 【Java虚拟机6】Java内存模型(Java篇)

    什么是Java内存模型 <Java虚拟机规范>中曾试图定义一种"Java内存模型"(Java Memory Model,JMM)来屏蔽各种硬件和操作系统的内存访问差异, ...

随机推荐

  1. Linux下搭建testlink1.9.17

    如果只是要搭建testlink服务的话,建议使用testlink的集成安装包,能避免很多坑 下载地址:https://bitnami.com/stack/testlink/installer 下载好后 ...

  2. php代码编写

    在php文件里,写入header('content-type:text/html;charset = uft-8');<!-- ============================== -- ...

  3. v-if 和 v-show的区别

    简单来说,v-if 的初始化较快,但切换代价高:v-show 初始化慢,但切换成本低 1.共同点 都是动态显示DOM元素 2.区别 (1)手段: v-if是动态的向DOM树内添加或者删除DOM元素:  ...

  4. Spring之事务操作(注解)

    事务操作步骤: <!-- 第一步.配置事务管理器 --> <bean id="transactionManager" class="org.spring ...

  5. C# 多线程之Thread类

    使用System.Threading.Thread类可以创建和控制线程. 常用的构造函数有:   // 摘要: // 初始化 System.Threading.Thread 类的新实例,指定允许对象在 ...

  6. Mybatis返回HashMap时,某个字段值为null时,不会保存key

    转载: http://blog.csdn.net/little2z/article/details/38525327 mybatis 的 callSettersOnNulls 问题项目用到mybati ...

  7. Vasya and Multisets CodeForces - 1051C(英语限制了我的想象力)

    题意: 对输入的每个数都进行分配到两个多重集中,问分配完以后 每个多重集中的个数为1的元素是否相等  相等则输出一个分配方式, 不想等为NO 解析: 三种情况 1.原数列中个数为1 的数的个数为偶数 ...

  8. Django_ KindEditor 插件使用

    KindEditor  富文本编辑器插件 目的及原理: 更便捷的在前端页面上实现用户的文本编辑操作, 本质上就是对标签的样式进行封装和事件预处理, 常规操作都可以通过直接的引入即可实现, 但是对于存在 ...

  9. linux运行sh文件提示 permission denied

    原因:文件没权限 解决:chmod +x 文件名 赋予执行权限或者  chmod 777 文件(赋予最高权限)

  10. 【BZOJ1077】天平(差分约束)

    [BZOJ1077]天平(差分约束) 题面 BZOJ 洛谷 题解 利用矩阵可以很容易得到两个点之间的最大差和最小差,再利用这个信息判断即可.差分约束用\(Floyd\)计算.时间复杂度\(O(n^3) ...