Java技术原理详解

本文为网络资料和个人理解的整合,主要参考以下博文:
http://www.importnew.com/1486.html
http://zhuanlan.zhihu.com/hllvm/19977592
http://www.zhihu.com/question/26913901/answer/35303563
http://blog.csdn.net/bingduanlbd/article/details/8332664
http://www.open-open.com/lib/view/open1408453806147.html
http://blog.csdn.net/zhoudaxia/article/details/26454421
http://blog.csdn.net/zhyhang/article/details/17233251
一、Java的起源
最早大概可追溯至1991年四月份,Sun MicroSystems公司的一个工程师Patrick Naughton被Sun公司自己开发的C++和C语言编译器搞得焦头烂额,他大声抱怨,并威胁要离开Sun转投当时在Steve Jobs领导之下的NeXT公司。领导层为了留住他,给他一个机会,启动Stealth(秘密行动)的项目。随着James Gosling等人的加入,这个项目更名为Green。Sun 公司预料未来科技将在家用电器领域大显身手,于是瞄准用在TV机顶盒等小型系统的程序计。

工程师们一起在加利福尼亚州门罗帕克市沙丘路的一个小工作室里面研究开发新技术,工作小组最初考虑使用C++语言,但是由于使用的是内嵌类型平台,可用的资源极其有限,团队的很多成员发现C++和可用的API在某些方面存在很大问题。根据可用的资金,Sun总裁McNealy提议公司的工程师应该在C++的基础上,开发一种面向对象的环境。于是Gosling试图修改和扩展C++的功能开发一门新语言,最初,他自己称这种新语言 为C++ ++ –,意思是C++加上一些好东西,减去一些坏东西,但是后来Gosling注意到自己办公室外一棵茂密的橡树Oak,就将这个新语言命名为Oak。

到了1992年9月,Oak语言连同Green OS和一些应用程序一起发布在称做Start 7的小设备上,从而使之有了第一次精彩的亮相。随后,Sun开了一家名为FirstPerson的公司,整个团队被转移到这家公司里研发机顶盒,以投标时代华纳公司的一个项目。团队开发出了一个高交互性的设备,但是Active TV太过超前,有线电视业界认为该设备给予用户过多地控制权,因此该项目没有获得时代华纳公司和有线电视服务商的青睐。随后Sun公司沮丧地关闭了FirstPerson,召回了整个团队,因而早期的Java也就中途夭折了,但OaK语言却得到了Sun总裁McNealy的赏识。

直至 1994年下半年,由于Internet的迅猛发展和环球信息网 WWW的快速增长,第一个全球信息网络浏览器Mosaic诞生了;此时,工业界对适合在网络异构环境下使用的语言有一种非常急迫的需求;Games Gosling看见Oak在互联网上应用的前景,对Oak进行了小规模的改造,但Oak已经被另外一个公司注册了,由于众多程序设计师钟爱印度尼西亚爪哇岛的香浓咖啡,于是Java在命名征集会上脱颖而出,于1995年5月正式发布。Java语言中的许多库类名称,多与咖啡有关,如JavaBeans(咖啡豆)、NetBeans(网络豆)、ObjectBeans (对象豆)等等,Java的Logo也正是一杯正冒着热气的咖啡。
二、Java 运行原理
1、高级语言运行过程
在程序真正运行在CPU上之前,必须要让OS的kernel理解我们在编辑器或者IDE里根据每种语言的语法规则敲入的源代码,kernel才能做出相关的调度,所以需要先将源代码转化成可执行的二进制文件,这个过程通常由编译器完成。有些编译器直接将源代码编译成机器码,载入内存后CPU可以直接运行。而机器码的格式与跟具体的CPU架构相关连,例如ARM CPU无法理解Intel CPU机器码。因此,同样的源代码需要根据不同的硬件进行特定的编译。高级语言转换到低级语言的桥梁就是编译器。程序员写好源代码,编译器将源码编译成可执行的机码,然后CPU读取机器码,执行程序。
2、Java语言的执行过程
这里写图片描述
宽泛地讲,Java源代码(.java)经过java编译器(javac.exe)编译之后,并没有直接转化为机器码,而是转化成一种中间格式——字节码(.class),字节码再经过Java虚拟机解释,转化成机器码,然后经由操作系统到达CPU运行。整个执行过程如下图所示:
这里写图片描述
Java的跨平台是基于JVM虚拟机这一中间物来实现的,Java源程序经过编译器编译后生成虚拟机能够理解的字节码(ByteCode——class文件的内容),虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定系统上的机器码,然后在特定的机器上运行。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。
这里写图片描述
3、JVM——Java Virtual Machine
JVM是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。
三、 JVM的体系结构

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值