Java修炼 之 基础篇(二)Java语言构成
上次的博文中Java修炼 之 基础篇(一)Java语言特性我们介绍了一下Java语言的几个特性,今天我们介绍一下Java语言的构成。
所谓的Java构成,主要是指Java运行环境的组成,从外围到核心依次是Java开发工具包JDK(Java Develop Tookit)、Java运行时环境JRE(Java Runtime Environment)、Java虚拟机JVM(Java Vitual Machine)。
JDK
JDK主要提供了一些用Java语言开发的组件(javac.exe、jar.exe、javadoc.exe等等),另外JDK中还包含完整的JRE。如果安装好JDK之后,会发现JDK中包含了两套JRE,一套位于Jdk\jre目录下,另一套位于Java目录下。
相对来讲,第二套少了Server端的Java虚拟机和其它几个文件,除此之外两者没有任何区别,但我们在安装JDK的时候还是需要安装第二套JRE,这是因为两套JRE的分工不同,对于Java程序员来讲,开发Java程序的时候,由于会优先寻找"java、javac等"所在目录父目录下的JRE,所以会执行第一套JRE,但当执行一般外部程序的时候,则会执行的第二套JRE。
JRE
JRE是Java运行的基础,它主要提供了Java运行的各种API,一个Java程序想要运行,必须要安装JRE才可以。这是因为在解释.class的时候,JVM需要调用解释.class所需要的JRE下的lib类库。
JVM
JVM是一个虚构的计算机,它是通过在实际计算机上模拟计算机的各种功能来实现的。JVM本身有一套相对完整的硬件计算机架构,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储区。正因为有JVM实现,才会使得Java程序可以在任何操作系统中运行,实现其平台无关性。
在JVM中有个成为Java即时编译器JIT(Just-in-time compiler)的重要组成部分,它能够将一个把Java的字节码转换成处理器指令的程序,同时在此过程中用于加快Java程序的执行时间。
三者之间的联系
了解了JDK、JRE、JVM三者的概念和组成之后,我们可以清晰的了解到Java语言从开始编写、编译和执行的整个过程中三者如何协作和完成的。
首先,编写的源代码会交给JDK,通过JDK中的编译器,将其编译成字节码,也就是通常的.class文件。当一个.class文件需要运行时,则会通过JVM中JIT将其转换成为与平台无关的机器指令。而这些机器指令执行的执行则是在JRE中完成的。整个过程如下图所示:
本篇博客主要给大家介绍了一下Java语言整个运行过程中需要的组成部分和其作用,了解这些的目的在于思考Java这门语言的架构和设计以及为什么Java会是这样的一种架和设计,这样在我们开发和设计的时候才能够充分的借鉴。初学Java的人员,这部分不要深究,简单了解就好,在以后的学习中相信会再次学习的。
下一篇,我们接着继续讲解Java语言的其它内容。
Java修炼 之 基础篇(二)Java语言构成相关推荐
- Java面试题-基础篇二
11.是否可以从一个static方法内部发出对非static方法的调用? 不可以.因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用 ...
- Java面试题——基础篇二
✅作者简介:热爱国学的后端开发者,修心和技术同步精进.
- JVM 内部原理(七)— Java 字节码基础之二
JVM 内部原理(七)- Java 字节码基础之二 介绍 版本:Java SE 7 为什么需要了解 Java 字节码? 无论你是一名 Java 开发者.架构师.CxO 还是智能手机的普通用户,Java ...
- (原创) 脚踏实地学Java之:基础篇
(原创) 脚踏实地学Java之:基础篇 最近与几个朋友闲聊技术,当谈起他们各自用JAVA做项目时所用到的技术时,夸夸其谈,不知所云,犹如布什总统竞选前的演讲一般精彩,听的我是云里雾里,一头雾水!但 ...
- Java面试题基础篇(一)
Java面试题基础篇(一) Java面试题基础篇(一) 1.jre和jdk有什么区别? 2.==与equals的区别? 3.接口和抽象类的共同点和不同点? 4.lamda表达式的优缺点? 5.Stri ...
- 【Java练习题汇总】《第一行代码JAVA》面向对象基础篇,汇总Java练习题——面向对象:特性、类与对象、数组、String、内部类... ~
Java练习题 · 面向对象基础篇 1️⃣ 面向对象基础篇 1️⃣ 面向对象基础篇 一.填空题 面向对象的三大特征:_______ ._______ ._______. 类由_______和_____ ...
- java单线程循环调度_Java基础篇之Java线程模型
原标题:Java基础篇之Java线程模型 Java运行系统在很多方面依赖于线程,所有的类库设计都考虑到多线程.实际上,Java使用线程来使整个环境异步.这有利于通过防止CPU循环的浪费来减少无效部分. ...
- java peek函数_基础篇:JAVA.Stream函数,优雅的数据流操作
写在开头:本文是转载于掘金上的一篇文章,已获得原作者授权,我会在文章最后放上原作者和原文链接. 前言 平时操作集合数据,我们一般都是for或者iterator去遍历,不是很好看.java提供了Stre ...
- 一起学JAVA之【基础篇】4种默认线程池介绍
一起学JAVA之[基础篇]4种默认线程池介绍 默认线程池创建方式 java.util.concurrent 提供了一个创建线程池的工具类Executors,里面有四种常用的线程池创建方法 public ...
最新文章
- wamp环境下安装imagick扩展
- poj3050【dfs】
- 三十、Pyspider爬虫框架总结,爬取Scrapy文档
- dart系列之:dart类中的泛型
- springcloud流程图
- Linux 下 -bash: mysql: command not found解决办法
- 微纪实 | 人工智能产业落地最真实的样子
- Android--SharedPreferences数据存储方案
- 使用ConcurrentDictionary实现轻量缓存
- [转载]Codejock Xtreme ToolkitPro MFC 使用
- aix中c语言生成pdf文档,利用PDFLib生成PDF文档
- 学生管理系统数据库设计
- 一套键鼠同时控制三台电脑?罗技无线键鼠为办公效率加速
- qq空间留言板删除 php,怎么批量删除QQ空间的说说
- 语音情感识别中的音频检测算法学习
- 两个必须更新浏览器的理由,危险就在你身边
- 【数据库基础】02_数据库基础练习
- 企业邮箱登录入口有哪些?企业邮箱如何快速登录?
- 自己写的C盘清理工具 Ver1.0.0
- 百度推广关键词如何出价