必知必会JVM一-什么是JVM?

简介: 必知必会JVM一-什么是JVM?

1. 前言


大家都知道,Java程序设计语言最早的口号就是,Write Once,Run Anywhere,一次编写,到处运行。只实现一次编码。可以再任何平台运行。那就吸引了大批的开发者进行尝试,不需要在为不同的操作系统上做适配。那么JAVA是怎么实现这种方式的呢?C语言我只编写了一次,也可以在windows和linux下运行呢?那什么叫跨平台呢?我们来以次解答。


2.跨平台的方式


跨平台主要有两种方式,一种是运行跨平台(JAVA),一种是编译跨平台(C,GO)。



2020052417560386.jpg


编译跨平台


编译跨平台例如c语言,程序写好之后,在windows下编译成exe,在linux编译成可以执行文件.这就是为什么C写一次也可以在不同的系统下进行运行了。但是需要在对应的系统上面对源码重新进行编译,如果用到了系统底层的一些函数,如果没有做兼容,可能会出现程序不兼容的问题。


20200524173224178.png


运行跨平台

运行跨平台就是指我们java程序经过编译成.class文件,由java虚拟机进行解析成对应的机器字节码,在对应的机器上运行。相当于运行JAVA的机器上都部署了一套统一的环境,由这个环境去运行JAVA程序。那提供这个环境的就是JAVA的虚拟机


20200524173214252.png


3.什么是虚拟机?


虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。


4.JAVA开发包


在大家安装JAVA JDK的时候,一般会有JDK和JRE两个比较重要的文件夹。那么热门分别是什么呢。可以见下图。

20200524173531410.png

我们平时开发依赖的是JDK,因为它提供了很多的工具包。还有一些常用的命令工具。JRE是JAVA的基本运行环境。他们的对应关系可以见官网的这张图。


20200524174207525.png


课件JDK其实是包含JRE的。单JDK比JRE多了一些工具命令。因此以后面试官再问你JDK和JRE是什么区别的时候,别再说他们俩是一样的东西了。

5、为什么学习JVM

既然JVM是JAVA已经给我们提供好了,那么我们为什么要学习JVM呢?


20200524175152613.png


主要想精通JAVA肯定要了解JAVA的运行原理啦,并且对于代码优化以及OOM异常等各种问题排查都能提供很多的思路。当然,最重要的是为了赢得同时崇拜的目光,进行装逼啦~哈哈。



20200524175520365.gif


今天先简单介绍这里,下章我们介绍下JVM重点的运行时数据区。

 

学习JAVA的童鞋可以点个关注哈,互相交流JAVA经验。

目录
相关文章
|
存储 关系型数据库 PostgreSQL
PostgreSQL通过DBLINK执行存储过程创建表
在A服务器创建存储存储过程CREATE OR REPLACE FUNCTION "public"."crt_tab"() RETURNS "pg_catalog"."int4" AS $BODY$declare str_sql varchar(100);ret int;begincreate ta...
2272 0
剑指offer58 - 2刷题打卡
剑指offer58 - 2刷题打卡
72 0
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用合集之2.2.1版本同步mysql数据写入doris2.0 ,同步完了之后增量的数据延迟能达到20分钟甚至一直不写入如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
240 1
|
分布式计算 安全 Java
Spark 编译出现 InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Spark 编译出现 InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
368 0
|
Java 程序员
如何在Java中创建优雅的对象来提升程序性能
其实这个问题很多人都进行过解答,也有很多小伙伴在Java四大名著之一的《Effective Java》中的第1~5小节了解过,不过我还是想结合自己的理解对这个问题进行总结和归纳,谈谈为什...
489 0
|
10月前
|
存储 自然语言处理 小程序
Python编程入门:从零基础到编写你的第一个程序
【8月更文挑战第31天】探索编码的奥秘,开启你的编程之旅。本文将引导你通过Python语言轻松步入编程世界。无需担心没有基础,我们将从最基础的概念开始,一步步带你理解编程的核心思想,并最终实现一个属于你自己的小程序。让我们一同见证,如何将一行行代码转化为能够执行任务的数字魔法。
|
SQL 关系型数据库 数据库
sql如何新建数据库实例
sql如何新建数据库实例
|
消息中间件 存储 中间件
Greenplum GPKafka【部署 01】使用GPKafka实现Kafka数据导入Greenplum数据库完整流程分享(扩展安装文件网盘分享)
Greenplum GPKafka【部署 01】使用GPKafka实现Kafka数据导入Greenplum数据库完整流程分享(扩展安装文件网盘分享)
128 0
|
安全 Linux Shell
【Hello Linux】 Linux的权限以及Shell原理(上)
【Hello Linux】 Linux的权限以及Shell原理
92 0