Android 进阶之简述 JVM 基础(一):走进Java
2017-10-18 00:00
253 查看
作者 | 井方哥
地址 | https://zhuanlan.zhihu.com/p/30101849
声明 | 本文是 井方哥 原创,已获授权发布,未经原作者允许请勿转载
概述
作为一名 Android 开发工程师,从用 Java 写的第一个 HelloWorld 至今差不多有三年了。一日在家不小心打开了《深入理解Java虚拟机》,就有一种非常想迅速把这本书读完的冲动。我突然才发现做Java开发已有三年之久居然没有真正的去了解它。随着项目的深入,我就必须要对其中的原理非常的了解,才能够做出高性能的程序,也是去避免那些各自无法理解的随机问题的基本功。
说明: 本系列多处摘抄《深入理解Java虚拟机》中内容,主要精简了本书的要点,并叙述自己对本书的理解。本人才疏学浅,文章中有不对的地方,还望批评指教。
Java技术体系
Java、Groovy、JRuby等运行在 Java 虚拟机上的语言以及相关的程序都属于Java技术体系中的一员;
Java虚拟体系组成:
Java程序设计语言
各种硬件平台上的 Java 虚拟机
Class文件格式
JavaAPI类库
第三方类库
JDK: Java设计语言、Java虚拟机、Java API 类库 统称为JDK(Java Development Kit),为 Java 程序开发的最小环境;
Java 发展史
1991年4月,James Gosling(Java之父——詹姆斯·高斯林)在sun公司领导了绿色计划,Java语言前身:Oak(橡树)诞生;
1995年5月23日,Oak改名Java,提出“write Once ,Run Anywhere";
1996年1月23日:Java1.0发布;
2006年12月11日:JDK1.6发布;
2009年2月19日:JDK1.7完成第一个版本,由于各种原因,迭代版本无法按计划发布;
2009年4月20日:Oracle公司宣布正式以74亿美元收购sun公司;
Java虚拟机发展史
Sun Classic :纯解释器方式来执行Java代码,如果要使用JIT编译器,得加外挂;
Sun HotSpot VM:
Sun JDK 和 OpenJDK 中所带虚拟机,目前使用最广泛的虚拟机;
热点代码探测技术:
通过执行计数器找出最有编辑价值的代码,通知JIT编译器以方法为单位进行编译;
在最优化的执行时间和最佳执行性能取得平衡;
Google Android Dalvik VM:
Dalvik,来源冰岛的一个小渔村;
不是一个Java虚拟机,没有遵循Java虚拟机规范;
使用寄存器架构,而不是JVM常用的栈架构;
不能直接执行 Class文件,但是可以执行有 Class 文件转化后的 dex 文件;
小结
在Java相关技术中,JVM是Java语言的运行环境,除了我们所熟知的Java,还有 Groovy 等语言都是运行在JVM之上的。詹姆斯·高斯林是Java 的创始人,从 Sun 到 Oracle,经过了很多版本的迭代。对于上层应用的开发者而言,无需关注底层JVM是怎么玩的。从表面上来看,在我们平时的开发中没有很大的帮助。但是了解其中的原理,有助于我们理解Java,理解面向对象编程,有助于我们写出更加优质的代码。
推荐
1 微信小程序实战篇-购物车
2 四步准备 Android
面试
3 Android 启动过程框架
END
相关文章推荐
- Android 精进之简述 JVM 基础(二):Java内存区域与内存溢出异常
- 简述JVM基础(七): Java 内存模型与线程
- Java基础--简述JRE、JVM、JDK之间的关系与Java基础知识点
- Android 精进:简述 JVM 基础(三):垃圾收集器与内存分配策略
- Java基础之jdk1.8 JVM内存模型简述,含String常量池简单分析
- Java基础--简述JRE、JVM、JDK之间的关系与Java基础知识点
- JVM虚拟机基础:Java对象大小与类型详解
- [原创]Android 基于NDK的JNI开发 C调用java和java调用C的进阶教程
- android学习必备java基础知识——内部类
- Java基础:JVM(Java 虚拟机)的详细讲解
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- java获取http:图片下载代码——android基础编
- 黑马程序员Java培训、Android培训_语言基础
- Android Java 框架基础[知识点汇总]
- Android JAVA 语言基础例子代码
- 黑马程序员Java培训、Android培训_网络编程的基础知识
- 黑马程序员Java培训、Android培训_Java基础加强_笔记
- Java(JVM)虚拟机结构基础,和JAR文件包及jar命令详解
- java获取http:图片下载代码——android基础编
- Java(JVM)虚拟机结构基础(转自Java研究组织)