Java学习之Java的运行环境

Java 时下已经非常流行。全球每天有超过百万的程序员在用Java进行着程序的开发。用Java编写的程序也因为其硬件环境无关性而越来越受到人们的青睐。如果您希望成为Java世界的一员,那就看看这个系列的文章也许对您会有帮助。

无论哪种语言都需要有它特定的运行环境也就是平台,Java 同样不例外。您也许会问,Java程序不是有硬件环境无关性吗?好吧,我希望这篇文章可以回答好这个问题。

几乎所有的语言都是需要通过编译或者解释才可以被您的电脑执行。可是Java有一点不同,它同时需要这两个过程。其实,也正是因为这个原因才使Java这种语言具有了平台无关性。当您写好了一个Java程序的时候(当然这个时候您并不用真的会写Java程序)。首先,通过一段翻译程序将它编译成一种叫做字节码的中间代码。然后再由java平台的解释器将它翻译成为机器语言来执行----平台的核心叫做JVM(Java虚拟机)。Java的编译过程也与其它的语言不同。例如像c++这样的语言,在编译的时候,是与机器的硬件平台信息密不可分的。编译程序通过查表将所有指令的操作数和操作码等等转换成内存的偏移量即程序运行时的内存分配方式,以保证程序运行。而Java却是将指令转换成为一种*.class的文件,这种文件不包含硬件的信息。需要执行的时候只要经过装了JVM的机器解释,创立内存布局后再通过查表来确定一条指令所在的地址。这样就有效的保证了Java的可移植性和安全性。那么Java平台为什么会有这么好的特性呢?

通常一个程序运行的平台是一个硬件或者软件运行的环境。目前比较流行的是Windows 2000, Linux, Solaris, 和MacOS。Java的平台不太一样,它由两个部分组成:一个是Java Virtual Machine即Java虚拟机,另一部分是Java Application Programming Interface (Java API) 即Java应用程序设计接口,这两部份软件就构成了Java运行的基本的环境。Java API 是一个大的已经做好的软件集合,这个集合里有许多开发时所需要的控件,用来辅助开发。Java API和JVM整合在一起处于机器硬件之上。也就是说,Java平台把一个Java应用程序从硬件系统分离开从而很好的保证了程序的独立性。为了更好的适应开发的需要,Java的设计者们为我们提供了三种Java平台:Java 2 Micro Edition (J2ME ), Java 2 Standard Edition (J2SE)和 Java 2 Enterprise Edition (J2EE). 每一个版本都提供了丰富的开发工具箱以适应不同的开发需要。

让我们来具体看看Java平台的核心JVM的具体结构。
为了让编译产生的字节码可以更好的解释与执行,一共把JVM分成了主要的6块:JVM解释器,指令系统,寄存器,栈,存储区,碎片回收区。

JVM解释器就是这个虚拟机的处理字段码的CPU。

JVM指令系统同硬件计算机很相似。一条指令分成操作码和操作数两部分组成。操作码为8位二进制数,操作数可以根据需要而定。操作码是为了说明一条指令的功能,所以JVM可以有多达256种不同的操作指令。

JVM有自己的虚拟寄存器,这样就可以快速的和JVM的解释器进行数据交换。为了功能的需要,JVM设置了常用的4个32位寄存器:pc(程序计数器),optop(操作数栈顶指针),frame(当前执行环境指针),vars(指向当前执行环境中第一个局部变量的指针)。

JVM栈是指令执行的时候数据和信息存储的场所和控制中心,它提供给JVM解释器运算所需要的信息。

JVM存储区就是为了把编译过后的字节码等信息存储起来。

JVM碎片回收是指将那些使用过后的Java类的具体的实例从内存进行回收,这就使得开发人员免去了自己编程控制内存的麻烦和危险。随着JVM的不断升级其碎片回收的技术和算法也更加合理。比较经典的算法有引用计数、复制、标记-清除和标记-整理。在JVM1.4.1版以后产生了一种叫分代收集技术,简单的来说就是利用对象在程序中生存的时间划分成代,以这个为标准进行碎片回收。关于碎片回收将在以后的文章中专门讲解。

最后,通过本文我希望能使大家对Java的运行平台有一个比较清楚的了解。在接下来的文章《 Java学习之踏上旅途的第一步》里我将告诉大家如何安装一个Java平台以及如何开始我们的第一个小程序

时间: 2016-11-13

Java学习之Java的运行环境的相关文章

Google App Engine将支持PHP运行环境

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   [ 科技讯]5月21日消息,要挑战 Amazon Web Services,看来 Google 的决心是很大的.在今年的 Google I/O 2013 之中,Google 除了更新了不少 Android 的 APIs 外,同时也针对旗下云端计算服务 Google App Engine 更新.早前,Google 在 发布会中正式公布 Google App Eng

使用Docker搭建Java Web运行环境

一.Docker是干什么的 Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发, 源代码托管在 Github 上, 遵从Apache2.0协议开源.Docker的目标是实现轻量级的操作系统虚拟化解决方案. 学习Docker首先要了解几个概念: 镜像-Docker的镜像和常见的系统ISO镜像类似,包含了应用程序的信息: 容器-容器相当于一个可以运行起来的虚拟机,应用程序运行在容器中,Docker运行在"Docker"上: 仓库

java学习笔记1--开发环境平台总结

1.Java程序设计语言 Java程序设计语言是一种高级语言,它用我们熟悉的字词.句等表述需要计算机为我们做的事情.大多数程序设计语言,都要经过编译或解释以便能在计算机上运行. 在Java程序设计语言中,所有源代码写在一个扩展名是.java的纯文本文件里.这些源文件通过Java编译器(javac.exe)编译 成.class文件..class文件不包含本地处理器的代码,而包含Java虚拟机机器语言代码,它是一种在Java平台上被解释器解释的平台无关代 码,称之为"字节码". Java执

arm下搭建java的运行环境---在线等

问题描述 如题:我想在arm环境下搭建一个java的运行环境.列举的越详细越好.首次接触arm,对arm一无所知.当前的arm的操作系统是linux. 解决方案 解决方案二:arm?什么东西?解决方案三:引用1楼xyylove520的回复: arm?什么东西? 我也不是很明白?arm是一种微处理器吧.我纳闷的是jdk为什么不能安装?从网上搜索得到的结果也不是很明白.说是要交叉编译等等之类的解决方案四:jdk装在linux下跟那个东西有关系啊?不了解,呵呵,坐等高人出现.解决方案五:引用3楼xyy

我的java学习经验谈1

  第一篇:编程环境的搭建这一段刚刚好报了学校的summer school,将要学习我们这里计算机专业的桥梁课程,正好是java,我本人原来从来没有接触过java,只是一直在网上看到这东西真的是很火,好像java的程序员年薪都是几十K,其实扯淡,任何经验丰富的程序员年薪都因该是几十K,再牛逼的语言,学的不好,用的不精,照样发不上工资,我写这个东西主要是自己的学习笔记,我只想把自己的经验拿出来和大家分享,不敢称的第一篇:编程环境的搭建这一段刚刚好报了学校的summer school,将要学习我们这

Java学习笔记

笔记 本笔记是在看浙大翁恺老师的视频教学时所做,希望对Java初学者有帮助! 一.Java基础1.正确认识Java(1)Java是一种有生产力的OOP语言,C++能做的Java都能做(2)Java与网络关系不大,更不是用来做网页的(3)Java是UNIX世界的产物,具有UNIX的思想(4)Java在国外广泛的被用来做各种应用2.Java历史(1)Brithday:May 23,1995(2)1991:Set-Top box:Jame Gosling(3)1994:OAK and FirstPer

编程学习:Java学习从入门到精通

编程 Java Learning Path (一).工具篇 一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar).不论什么Java应用服务器实质都是内置了某个版本的JDK.因此掌握JDK是学好Java的第一步.最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BE

我的Java学习之路 !苦啊

这里说说我的经历吧.大学前以及大学前面三年的经历就不说了,因为大学前的高中就是好好学习,大学前三年就是混过来的. 我上的学校还算可以,虽然不是北大清华这样第一流名牌大学,但至少也算中国的第二流名牌大学了.大学中前面三年都陪伴着游戏过去,所学到的只是些计算机基础知识.到大四后我突然发现就业的问题就在眼前,而自己似乎什么也不会,于是开始看书.最一开始重点看的是C++,可是后来自从看了一本J2ME的书以后被Java所吸引.当时虽然学校上过Java课程,但是自己也只是学了很少的皮毛,也就只会写写Hell

Java学习从入门到精通

Java学习从入门到精通工具篇一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar).不论什么Java应用服务器实质都是内置了某个版本的JDK.因此掌握JDK是学好Java的第一步.最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有G