[Java] Java 技术和 JVM 基础

Java 由 Sun 公司在 1995 首次发布,既是一门编程语言,也是一个计算平台。

Java 运行时版本 Java Runtime Edition

当你下载 Java 完时候,你会得到一个 Java Runtime Time(JRE)。JRE 由三部分组成 : JVM,Java 平台的核心类,支持 Java 平台的库。这三部分是执行 Java 应用运行的基础。

Java 编程语言

Java 是一门面向对象的编程语言,包括以下特性:

平台独立 - Java 应用被编译成字节码存储在 .class 文件中,运行在 JVM 里面。由 Java 应用运作在 JVM 里面,所以可以跑在不同的机器、设备上面。

面向对象 - 略

自动垃圾回收 - Java 自动地分配、回收内存空间,应用程序不会被这个问题捆绑。

丰富的标准库 - 略

Java Development Kit

JDK 是一个工具集合,用于开发 Java 应用。利用 JDK,可以编译用 Java 语言编写的程序,并使其运行在 JVM 上。JDK 还提供了打包、分发 Java 应用的工具。

JDK 和 JRE 共享同一个 Java Application Programming Interfaces(Java API)。

Java API 是一个预打包好的库的集合,用于创建 Java 应用。Java API 通过提供许多通用的工具,使得开发变得更容易些。提供的工具可用于处理:字符串操作、时间日期处理、网络编程、数据结构的实现(例如, list, map, stack 和 queue)

Java Virtual Machine

Java Virtual Machine(JVM),是一个抽象的计算机器。JVM 是一个程序,但是对于运行在里面的程序来说,JVM 相似一个机器。Java 程序使用同一套接口和库,各个操作系统的 JVM 实现把 Java 语言指令翻译成当前操作系统的指令命令。这样,Java 程序编可以达到平台无关的目的。

JVM 完全不知道 Java 编程语言,只知道一个特殊的库格式,.class 文件格式。一个 .class 文件包含 JVM 指令或者字节码,一张符号表,以及其他的辅助信息。

JVM 架构

Java 商标归 Oracle 所有,Oracle 在发布的 JRE 包含一个Oracle 的 JVM,名为 HotSpot。下面介绍的是 HotSpot 的架构。

HotSpot 的关键组件

上图中高亮出来三个部分的是 JVM 性能相关的三个关键组件。在进行性能优化时,关注点也在这三个组件上面。

Heap,堆,用于存储对象的数据。

Garbage Collector, 垃圾回收器,用于管理 Heap 区域的内存。JVM 在启动时选择哪一个垃圾回收器。大多数的优化选项,和 Heap 的大小、垃圾回收器的选择有关。

JIT Compiler, 即时编译器,和性能有很大的关系,不过对于新版本的 JVM 很少需要调优。

性能优化基础

通常,对一个 Java 应用进行性能调优时,主要关注两个关键目标中的一个:响应速度或者吞吐量。

响应速度(Responsiveness)

响应速度,是指一个应用或者系统响应一个请求,并提供被请求的数据,需要多久。

例如:

一个桌面程序的 UI 响应一个事件需要多久

一个网站返回一个页面需要多久

返回一个数据库查询需要多久

对于一个关注响应速度的应用来说,长时间的暂停是不可以接受的。这里的焦点在于响应时间应当很短暂。

吞吐量(Throughput)

吞吐量,关注的是在指定一段时间内,让一个应用处理任务的的量尽可能地多。

例如:

在给定时间内,可以完成的交易次数

在一个小时内,可以完成的批处理程序有多少

在一个小时内,可以完成的数据库查询次数有多少。

关注吞吐量的应用,一般可以接受长时间的暂停。由于高吞吐量的应用更关注长时间内的性能变化,所以响应速度不是重点。

参考资料

Java Technology and the JVM, Java Garbage Collection Basics, Oracle

时间: 2024-10-16 17:40:40

[Java] Java 技术和 JVM 基础的相关文章

关于Java面试知识点解析——JVM基础篇

跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽.切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的轨迹),还是钱给少了,不受重视. 准备不充分的面试,完全是浪费时间,更是对自己的不负责(如果title很高,当我没说).今天给大家分享下 Java面试知识点解析--JVM基础篇 1)Java 是如何实现跨平台的? 注意:跨平台的是 Java 程序,而不是 JVM.JVM 是用 C/C++ 开发的,是

Servlet---JavaWeb技术的核心基础,JavaWeb框架的基石(一)

初学JavaWeb开发,请远离各种框架,从Servlet开始. Web框架是开发者在使用某种语言编写Web应用服务端是关于架构的最佳实践.很多Web框架是从实际的Web项目抽取出来的,仅和Web的请求和响应处理有关,形成一个基础,在开发别的应用项目的时候则可以从这个剥离出来的基础做起,让开发者更关注具体的业务问题,而不是Web的请求和响应的控制. 框架很多,但套路基本类似,帮你隐藏很多关于HTTP协议细节内容,专注功能开发. 但对于一个初学者来说,过早的接触框架往往事倍功半!同样一个问题,换一种

第一阶段:Java基础 1.JAVA开发介绍---2. JVM、JRE、JDK之间的关系

JDK :英文名称(Java Development Kit),Java 开发工具包,是针对 Java 开发员的产品.jdk 是整个 Java 开发的核心,包括了Java运行环境JRE.Java工具和Java的类库. JRE :英文名称(Java Runtime Environment),指 Java 运行环境.它主要包含两个部分,JVM 和 Java 的类库. JVM :英文名称(Java Virtual Machine),就是 Java 虚拟机,是 Java 能够跨平台的核心.所有的 Jav

java学习之路--简单基础的面试题

1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么. 2)继承:继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类.基类):得到继承信息的类被称为子类(派生类). 3)封装:通常认为封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面.面向对象的本质就是将现实世界描绘成一系列完全自治.封闭的对象.

【Java】Java Servlet 技术简介

Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么,它们是如何工作的,如何使用它们来创建您能够想像到的任意复杂度的 Web 应用程序,以及作为一名专业编程人员,您如何才能最有效地使用 servlet. 5 评论: Roy W. Miller ([email protected]), 独立的软件开发辅导员.程序员和作者, RoleModel Software 2004 年 12 月 2

【Java】Java XML 技术专题

XML 基础教程 XML 和 Java 技术 Java XML文档模型 JAXP(Java API for XML Parsing) StAX(Streaming API for XML) XJ(XML Enhancements for Java) XML 验证 XPath XQuery XSL 转换处理器 XStream 数据绑定 本专题汇总了大量面向 Java 开发人员的 XML 技术文章和教程,内容涉及 XML 基础.Java XML 的文档模型.编程 API 与数据绑定框架以及 Java

JAVA读书推荐----《深入分析Java Web技术内幕》--《java多线程编程核心技术》--《大型网站技术架构 核心原理与案例分析》-《Effective Java中文版》

(1)  首先推荐的不是一本书,而是一个博客,也是我们博客园另外一位博友java_my_life. 目前市面上讲解设计模式的书很多,虽然我前面讲了看书是最好的,但是对设计模式感兴趣的朋友们,我推荐的是这个博客.这位博友的设计模式讲得非常非常好,我认为90%的内容都是没有问题且很值得学习的,其讲解设计模式的大体路线是: 1.随便开篇点明该设计模式的定义 2.图文并茂讲解该设计模式中的结构 3.以详细的代码形式写一下该种设计模式的实现 4.补充内容 5.讲解该设计模式的优缺点 对于一个设计模式我们关

Java Servlet 技术简介

Java Servlet 技术简介 Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么,它们是如何工作的,如何使用它们来创建您能够想像到的任意复杂度的 Web 应用程序,以及作为一名专业编程人员,您如何才能最有效地使用 servlet. 4 评论: Roy W. Miller ([email protected]), 独立的软件开发辅导员.程序员和作者, RoleModel Soft

Java面试准备之JVM详细研究三(类加载机制)

类加载过程 一个类从编写完成后,编译为字节码之后,它要装载进内存有七个阶段: 加载 => (验证-> 准备-> 解析)=> 初始化=> 使用=> 卸载 括号中的三个步骤可以整合成为 “连接”步骤.其中的步骤并不是一个阶段结束,一个阶段才开始的.只是说他们的开始阶段基本遵循此顺序(解析阶段更是可能在使用的时候才发生,目的是配合动态绑定),这些阶段都是互相交叉的混合式进行的,通常会在一个阶段执行过程中调用或激活另一个阶段. 1.加载 ”加载“的过程是”类加载“过程的一个阶段