Java 虚拟机 1:什么是 Java(1),DubboSPI 及自适应扩展原理
排名第一的部署平台
有 30 亿部移动电话运行 Java
100%的蓝光盘播放器附带了 Java
有 50 亿张 Java 卡在使用
1.25 亿台 TV 设备运行 Java
前 5 个原始设备制造商均提供了 Java ME
很牛逼不是吗?OK,这么牛逼的背后,我们 Java 开发人员有想过每天和我们朝夕相处的 Java 到底是什么呢?当然,很多人脑海里第一反应一定是,Java 不就是一门编程语言吗,咱们每天写代码的语言啊。当然,这么说也是对的,只是 Java 实际包含的面更广,一起往下来看下。
经过了多年的发展,Java 早已由一门单纯的计算机编程语言,演变为了一套强大的技术体系。是的,什么是 Java,我想技术体系四个字应该是最好的概括了吧。Java 设计者们将 Java 划分为 3 种结构独立但却彼此依赖的技术体系分支,它们分别对应着不同的规范集合和组件:
Java SE(标准版),主要活跃在桌面领域,主要包含了 Java API 组件。
Java EE(企业版),活跃在企业级领域,除了包含 Java API 组件外,还扩充有 Web 组件、事务组件、分布式组件、EJB 组件、消息组件等,综合这些技术,开发人员完全可以构建出一个具备高性能、结构严谨的企业级应用,并且 Java EE 也是用于构建 SOA
(面向服务架构)的首选平台。
Java ME(精简版),活跃在嵌入式领域,称之为精简版的原因是,它仅保留了 Java API 中的部分组件,以及适应设备的一些特有组件。
上面讲到 Java 技术体系的分支,那既然 Java 是一种技术体系,我们来看一下组成这种技术体系的技术:
Java 编程语言
字节码
Java API,包括 Java API 类库和来自商业机构以及开源社区的第三方类库
Java 虚拟机
很多时候我们只关注了第一点,因为第一点才是和工作切实相关的。Java 技术体系所包含的内容实际上 Java 官方有提供给我们一张图,图片来源http://docs.oracle.com/javase/7/docs/
更多大厂面试资料以及视频教程领取,可以点击直接进入,免费获取!暗号:CSDN
Java 能获得如此广泛的认可,除了它拥有一门结构严谨、面向对象的编程语言之外,还有许多不可忽视的优点:
1、它摆脱了硬件平台的束缚,实现了“一次编写、到处运行”
2、它提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题
3、它实现了热点代码检测和运行时编译及优化,这使得 Java 应用能随着运行时间的增加而获得更高的性能
4、它有一套完整的应用程序接口,还有无数来自商业机构和开源社区的第三方类库来帮助它实现各种各样的功能
5、它与身俱来对分布式技术的支持就比较完善
但是,Java 最大的优势和财富还不是以上这些,就像高翔龙老师在《Java 虚拟机精讲》中写的,Java 真正强大的地方是因为拥有全世界最多的技术拥护者和开源社区支持,他们无时无刻都保持着最充沛的体力与思维,一步一步地驱动着 Java 技术的走向。
两个常见的重要概念。其实上面的图中已经划分出了 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
前面有讲过,“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(Java Community Process)是一套制定 Java 技术规范的机制,通过制定和审查 JSR(Java Specification Requests)推动 Java 技术规范的发展。一个已经提交的 JSR 要想成为最终状态,需要经过正式的公开审查,并由 JCP 委员会投票决定,最终的 JSR 会提供一个参考实现,它是免费而且公开源代码的。JSR 并非只由 Oracle 管理,任何个人都可以注册并参与审查 JSR,对于 Java 语言发展动态感兴趣的人来说,跟踪 JSR 的动态发展是一条不错的学习途径。在 JCP 官网http://www.jcp.org/中可以查看所有的 JSR,下面列举几个大家熟悉的 JSR:
JSR 14,泛型
JSR 51,NIO
JSR 175,注解
JSR 201,枚举以及自动装箱等
JSR 221,JDBC4.0 API
最后,轮到这个大哥登场,也是之后文章的主角。为什么 Java 可以实现所谓的“一次编写,到处运行”,主要是因为虚拟机的存在。Java 虚拟机负责 Java 程序设计语言的安全特性和平台无关性。Java 虚拟机屏蔽了与具体操作系统平台相关的信息,使得 Java 语言编译器只需要生成在 Java 虚拟机上运行的字节码,就可以在多种平台上不加修改地运行。Java 虚拟机使得 Java 摆脱了具体机器的束缚,使跨越不同平台编写程序成为了可能。
评论