写点什么

Java 虚拟机 1:什么是 Java,太完整了

用户头像
Java高工P7
关注
发布于: 1 小时前

上面讲到 Java 技术体系的分支,那既然 Java 是一种技术体系,我们来看一下组成这种技术体系的技术:


  1. Java 编程语言

  2. 字节码

  3. Java API,包括 Java API 类库和来自商业机构以及开源社区的第三方类库

  4. Java 虚拟机


很多时候我们只关注了第一点,因为第一点才是和工作切实相关的。Java 技术体系所包含的内容实际上 Java 官方有提供给我们一张图,图片来源http://docs.oracle.com/javase/7/docs/


更多大厂面试资料以及视频教程领取,可以点击直接进入,免费获取!暗号:CSDN


Java 的优点




Java 能获得如此广泛的认可,除了它拥有一门结构严谨、面向对象的编程语言之外,还有许多不可忽视的优点:


1、它摆脱了硬件平台的束缚,实现了“一次编写、到处运行”


2、它提供了一个相对安全的内存管理和访


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


问机制,避免了绝大部分的内存泄露和指针越界问题


3、它实现了热点代码检测和运行时编译及优化,这使得 Java 应用能随着运行时间的增加而获得更高的性能


4、它有一套完整的应用程序接口,还有无数来自商业机构和开源社区的第三方类库来帮助它实现各种各样的功能


5、它与身俱来对分布式技术的支持就比较完善


但是,Java 最大的优势和财富还不是以上这些,就像高翔龙老师在《Java 虚拟机精讲》中写的,Java 真正强大的地方是因为拥有全世界最多的技术拥护者和开源社区支持,他们无时无刻都保持着最充沛的体力与思维,一步一步地驱动着 Java 技术的走向。


JDK 和 JRE




两个常见的重要概念。其实上面的图中已经划分出了 JDK 和 JRE 的范围了。我们对这张图做一个归纳,用我们的语言简单地总结一下什么是 JDK 和 JRE:


1、JDK(Java Development Kit),是用于支持 Java 程序开发的最小环境,基本上 Java 程序设计语言、Java 虚拟机、Java API 类库这三部分组成了 JDK


2、JRE(Java Runtime Enviroment),是支持 Java 程序运行的标准环境,Java API 类库中的 Java SE API 自己和 Java 虚拟机这两部分组成了 JRE


OpenJDK




前面有讲过,“Java 真正强大的地方是因为拥有全世界最多的技术拥护者和开源社区支持,他们无时无刻都保持着最充沛的体力与思维,一步一步地驱动着 Java 技术的走向”。其实 JDK 在一开始并不是开源的,但是随着开源运动的蓬勃发展,2006 年 Sun 公司宣布将对 Java 开放源代码,开源的 Java 平台开发主要集中在 OpenJDK 项目上。2009 年 4 月 15 日,Sun 公司正式发布 OpenJDK,JDK 7 则是 Java 开源后发布的第一个版本,任何组织和个人都可以为 Java 的发展做出贡献。当然 OpenJDK 和真正的 Oracle JDK(因为 Sun 公司被 Oracle 公司在 2010 年收购了嘛,所以就叫做 Oracle JDK 了)还是有区别的:


OpenJDK 中的代码基本上都来自于 Oracle JDK,属于 Oracle JDK 的一个分支,但是其中去除了一些非开源的组件和代码,替换成了开源的组件和代码,主要是加密和图形的部分。因此用 OpenJDK 代替 Oracle JDK 可能会有一些的不兼容。


对于 OpenJDK 感兴趣的,可以在 OpenJDK 官网http://download.java.net/openjdk/jdk7/下载 OpenJDK 的源代码。像 Java 虚拟机 HotSpot、Java 编译器 Javac、JNI 等等,源代码都在里面。


JCP 和 JSR




JCP(Java Community Process)是一套制定 Java 技术规范的机制,通过制定和审查 JSR(Java Specification Requests)推动 Java 技术规范的发展。一个已经提交的 JSR 要想成为最终状态,需要经过正式的公开审查,并由 JCP 委员会投票决定,最终的 JSR 会提供一个参考实现,它是免费而且公开源代码的。JSR 并非只由 Oracle 管理,任何个人都可以注册并参与审查 JSR,对于 Java 语言发展动态感兴趣的人来说,跟踪 JSR 的动态发展是一条不错的学习途径。在 JCP 官网http://www.jcp.org/中可以查看所有的 JSR,下面列举几个大家熟悉的 JSR:


  1. JSR 14,泛型

  2. JSR 51,NIO

  3. JSR 175,注解

  4. JSR 201,枚举以及自动装箱等

  5. JSR 221,JDBC4.0 API


Java 虚拟机




最后,轮到这个大哥登场,也是之后文章的主角。为什么 Java 可以实现所谓的“一次编写,到处运行”,主要是因为虚拟机的存在。Java 虚拟机负责 Java 程序设计语言的安全特性和平台无关性。Java 虚拟机屏蔽了与具体操作系统平台相关的信息,使得 Java 语言编译器只需要生成在 Java 虚拟机上运行的字节码,就可以在多种平台上不加修改地运行。Java 虚拟机使得 Java 摆脱了具体机器的束缚,使跨越不同平台编写程序成为了可能。


要多提一句,我们现在说的 Java 虚拟机基本上都是 JDK 自带的虚拟机 HotSpot,这款虚拟机也是目前商用虚拟中市场份额最大的一款虚拟机,可以通过在命令行程序中输入“java -version”来查看。


那其实市面上还有很多别的优秀的虚拟机。Sun 公司除了有大名鼎鼎的 HotSpot 外,还有 KVM、Squawk VM、Maxine VM,BEA 公司有 JRockit VM、IBM 公司有 J9 VM 等等。


后记




越学习 Java 虚拟机,越觉得它有意思,工作中越能解决一些复杂的、奇怪的、别人解决不了的问题(为什么你比别人厉害、为什么你比别人拿更高的工资?说白了不就是你能解决别人解决不了的问题、做到别人做不到的事吗?)。又或者,当一个 Java 项目庞大到一定程度之后,就会根据自己的业务需求,定制自己的虚拟机,比如淘宝网就基于 OpenJDK 深度定制了 Taobao VM,能做到这一点的基础就是对 Java 虚拟机有深入的理解。作为一个 Java 开发,如果目标只是把写代码这件事情做好,那么 OK,完全不需要去学习、研究 Java 语言之外的任何东西,每到一个公司,只要简单理解公司项目的整体架构以及理清业务就好了。但是如果目标是成为一名 Java 技术专家、CTO,相信代码可以改变世界(至少我本人是朝着这个方向努力的),那么学习、研究虚拟机绝对是不可缺少的一课。


读者福利




感谢你看到了这里!


我这边整理很多 2021 最新 Java 面试题(含答案)和 Java 学习笔记,如下图



上述的面试题答案小编都整理成文档笔记。 同时也还整理了一些面试资料 &最新 2021 收集的一些大厂的面试真题(都整理成文档,小部分截图)免费分享给大家,有需要的可以 点击进入暗号:CSDN!免费分享~

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
Java 虚拟机1:什么是 Java,太完整了