Java虚拟机1:什么是Java

前言java

让咱们来看一下Java的广告词,来自http://www.java.com/zh_CN/about/编程

  • 97%的企业桌面运行Java
  • 美国有89%的桌面(或计算机)运行Java
  • 全球有900万Java开发人员
  • 开发人员的头号选择
  • 排名第一的部署平台
  • 有30亿部移动电话运行Java
  • 100%的蓝光盘播放器附带了Java
  • 有50亿张Java卡在使用
  • 1.25亿台TV设备运行Java
  • 前5个原始设备制造商均提供了Java ME

很牛逼不是吗?OK,这么牛逼的背后,咱们Java开发人员有想过天天和咱们朝夕相处的Java究竟是什么呢?固然,不少人脑海里第一反应必定是,Java不就是一门编程语言吗,我们天天写代码的语言啊。固然,这么说也是对的,只是Java实际包含的面更广,一块儿往下来看下。安全

 

什么是Java架构

通过了多年的发展,Java早已由一门单纯的计算机编程语言,演变为了一套强大的技术体系是的,什么是Java,我想技术体系四个字应该是最好的归纳了吧。Java设计者们将Java划分为3种结构独立但却彼此依赖的技术体系分支,它们分别对应着不一样的规范集合和组件:oracle

一、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/

 

Java的优势

Java能得到如此普遍的承认,除了它拥有一门结构严谨、面向对象的编程语言以外,还有许多不可忽视的优势:

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

二、它提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题

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

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

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

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

 

JDK和JRE

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

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

二、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:

一、JSR 14,泛型

二、JSR 51,NIO

三、JSR 175,注解

四、JSR 201,枚举以及自动装箱等

五、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,相信代码能够改变世界(至少我本人是朝着这个方向努力的),那么学习、研究虚拟机绝对是不可缺乏的一课。

相关文章
相关标签/搜索