JVM科普
二刷周先生的《深入理解JVM》时,没想到已经出了第三版,拿着第二版的我在风中凌乱....
第一次看这本书的时候是在19年的暑假前后,转眼即将到了20年的暑假,一年里,我也开始做了一些web开发上的工作,然而用到JVM的地方似乎仅仅限于开发环境和服务器的部署环境。这部分的知识偏理论,或者说,没有需要高强度优化JVM的场景。
不过,养兵千日用兵一时,技术不能等用时再去学,不管是未雨绸缪亦或是杞人忧天,我都决定结合第三版的内容重新整理一下之前的笔记。
再看前言
如果开发人员不了解虚拟机诸多技术特性的运行原理,就无法写出最适合虚拟机运行和自优化的代码。
如果把编程比作开枪,那么掌握枪的原理就可能在卡壳的时候迅速解决问题,虽然枪不总是会出现问题。
不完美的程序
世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程.
完成优于完美!
Java发展史
1991.4 :Java语言前身Oak诞生
1995.5:Oak语言改名为Java
1996.1:JDK1.0发布,代表技术包括JVM,Applet,AWT
- Applet是一种Java程序,需要嵌入在HTML中解释执行
- AWT是早期的抽象窗口工具包,目前流行的有Swing,JavaFx
1997.2:JDK1.1发布,代表技术有JAR文件格式,JDBC,内部类,反射
2002.2:JDK1.4发布,新的技术有正则表达式,NIO,日志类
- 正则表达式是对字符串操作的一种逻辑格式
- NIO在IO的基础上增加了缓冲区,是一种非阻塞式的IO模型
2004.9:JDK1.5发布,新的技术有自动装箱,泛型,注解,枚举,foreach循环
2006.11:Sun公司宣布将Java开源,并建立了OpenJDK组织对源码进行管理。
2009.4:Oracle以74亿美元收购Sun公司。
2014.3:Oracle发布JDK1.8,新的特性有Lambda表达式,Stream API
2017.9:JDK9发布,新特性有模块化系统,可交互的REPL工具,JIT,JVMCI等等
2018.3:JDK10发布,新特性包括JEP286局部变量的类型推断,JEP317向G1引入Full GC
2018.9:JDK11发布,新特性包括基于嵌套的访问控制,JavaFx被移除【JDK1.8有】
2019.3:JDK12发布,新特性有低暂停时间的GC,微基准测试套件,Switch表达式。
JVM族谱
3.0版本加上了更加形象的比喻
- 虚拟机始祖:Sun Classic,于96年在JDK1.0中发布
- 武林盟主:HotSpot VM,目前使用最广泛的虚拟机,一直沿用至今
- 小家碧玉:Mobile VM,面对移动领域和嵌入式市场,前景并不乐观
- 天下第二:BEA公司的JRockit和IBM的J9,其中JRockit被Oracle收购后基本上停止更新了,J9仍然在沿用
- 软硬合璧:BEA Liquid 运行于特定硬件的虚拟机,拥有更强大的性能
什么是广义的虚拟机?
虚拟机本质是一种软件,可分为系统虚拟机(仿真物理机)和程序虚拟机(执行单个计算机程序,比如JVM)。
什么是Java虚拟机(JVM)?
JVM是一种将字节码转化为机器码的软件,从而实现Java语言跨平台的目的。
最新文章
- FLAG_ACTIVITY_CLEAR_TOP
- 一面cvte
- 8天学通MongoDB——第二天 细说增删查改
- 基于SAML的单点登录介绍
- Spring 注解回顾
- 自动化工具word文档批量转html
- Java 8 默认方法和多继承深入解析
- windows下删除Linux
- 一位菜鸟的java 最基础笔记
- 实例讲解webpack的基本使用第四篇
- QMAKESPEC环境变量详解
- iOS集合视图单元格高亮和选中的区别
- 用SpriteBuilder简化";耕牛遍地走";的动画效果(三)
- Webpack4教程:第一部分,入口、输入和ES6模块
- elasticsearch中 refresh 和flush区别(转)
- maven项目使用log4j
- 电子商务系统+java+web+完整项目+包含源码和数据库Java实用源码
- C语言删除指定文件
- java基础-day18
- Python高级特性:迭代器和生成器 -转
热门文章
- Django---进阶9
- Spring Boot 2.x基础教程:事务管理入门
- hacknos靶机实战
- Scala 基础(三):Scala语言快速开发入门
- Django -MD5密码加密与登录
- Android 高德地图 java.lang.UnsatisfiedlinkError Native method not found: com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;)
- bzoj4459[Jsoi2013]丢番图
- 【高性能Mysql 】读书笔记(一)
- JavaScript动画实例:沿五角星形线摆动的小圆
- 不懂DevOps!他在升职加薪的那天下午,提出了离职