Java 技术体系简介

Java 技术体系简介Java技术包含的所有内容:1、Java技术体系2、Java一次编译,到处运行Java技术的核心就是Java虚拟机,因为所有的Java程序都在虚拟机上运行。Java程序的运行需要Java虚拟机、JavaAPI和JavaClass文件的配合。Java虚拟机实例负责运行一个Java程序。当启动一个Java程序时,一个虚拟机实例就诞生了。当程序结束,这个虚拟机实例也就消亡。Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了

大家好,又见面了,我是你们的朋友全栈君。

Java 技术包含的所有内容:
在这里插入图片描述

1、Java技术体系

在这里插入图片描述

2、Java 一次编译,到处运行

Java技术的核心就是Java虚拟机,因为所有的Java程序都在虚拟机上运行。Java程序的运行需要Java虚拟机、Java API和Java Class文件的配合。Java虚拟机实例负责运行一个Java程序。当启动一个Java程序时,一个虚拟机实例就诞生了。当程序结束,这个虚拟机实例也就消亡。
Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么。
正是因为它有针对不同平台的虚拟机,它号称的“一次编译,到处运行”的跨平台特性才能有所保障。
在这里插入图片描述

3、JDK 与 JRE

JDK = JREJava API类库中除Java SE API子集以外的部分Java程序设计语言

(1)JDK
在这里插入图片描述
(2)JRE
在这里插入图片描述

4、Java程序执行流程

java程序执行过程分为两步,下图为流程示意图

  第一步:将java源码(.java文件)通过编译器(javac.exe)编译成JVM文件(.class文件)
  
  第二步:将JVM文件通过java.exe执行,输出结果

在这里插入图片描述
(1)JDK文件
在这里插入图片描述
(2)Java程序的执行依赖于编译环境和运行环境。源码代码转变成可执行的机器代码,由下面的流程完成:
在这里插入图片描述

5、字节码(.class)文件

(1)概念

● Java字节码类文件(.class)是Java编译器编译Java源文件(.java)产生的“目标文件”。 它是一种8位字节的二进制流文件,各个数据项按顺序紧密的从前向后排列, 相邻的项之间没有间隙, 这样可以使得class文件非常紧凑,体积轻巧,可以被JVM快速的加载至内存, 并且占据较少的内存空间(方便于网络的传输)。

● Java源文件在被Java编译器编译之后, 每个类(或者接口)都单独占据一个class文件, 并且类中的所有信息都会在class文件中有相应的描述, 由于class文件很灵活, 它甚至比Java源文件有着更强的描述能力。

● class文件不可以被系统直接执行,而是需要虚拟机解释执行

● class文件中的信息是一项一项排列的,每项数据都有它的固定长度。数据项的不同长度分别用u1, u2, u4, u8表示, 分别表示一种数据项在class文件中占据一个字节, 两个字节, 4个字节和8个字节。
在这里插入图片描述
(2).class文件结构

.class文件示例:在这里插入图片描述
从上面的字节码文件中我们可以看到,里面就是一堆的16进制字节。.class文件各种类型如下:
在这里插入图片描述在这里插入图片描述
class文件只有两种数据类型:无符号数和表。
在这里插入图片描述
(2).class文件解读

具体参考 class描述文件解读

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157008.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++ stringstream 字符串格式化与格式转换方法

    C++ stringstream 字符串格式化与格式转换方法stringstream对象C++stringstream类是一种十分有用的类,特别是当我们需要在程序中使用字符串和数字数据互相转换的时候字符串格式化ss<<过程:数字->stringstream对象->string创建一个stringstream对象,并通过运算符”<<“将数据传递给stringstream对象再调用st…

    2022年5月5日
    96
  • vscode golang环境搭建「建议收藏」

    vscode golang环境搭建「建议收藏」vscode安装百度下载可执行文件,一路nextgolang安装下载地址为:https://golang.google.cn/dl/如果是linux环境,解压到某个目录。然后配置/etc/profile设置相关环境变量如果是windows环境,下载https://dl.google.com/go/go1.13.5.windows-amd64.msi,然后设置环境变量。环境变量为:G…

    2022年10月9日
    0
  • 睿智的目标检测29——Keras搭建YoloV4目标检测平台

    睿智的目标检测29——Keras搭建YoloV4目标检测平台睿智的目标检测29——Keras搭建YoloV4目标检测平台学习前言什么是YOLOV4YOLOV4改进的部分(不完全)改进点解析1、主干特征提取网络Backbone2、主干特征提取网络Backbone学习前言哈哈哈我最喜欢的YOLO更新了!什么是YOLOV4YOLOV4是YOLOV3的改进版,在YOLOV3的基础上结合了非常多的小Tricks。尽管没有目标检测上革命性的改变,但是YOLOV4依然很好的结合了速度与精度。根据上图也可以看出来,YOLOV4在YOLOV3的基础上,在FPS不下降的

    2022年6月24日
    22
  • Integer比较

    Integer比较

    2022年1月5日
    54
  • Dataset之CIFAR-10:CIFAR-10数据集的简介、下载、使用方法之详细攻略

    Dataset之CIFAR-10:CIFAR-10数据集的简介、下载、使用方法之详细攻略Dataset之CIFAR-10:CIFAR-10数据集的简介、下载、使用方法之详细攻略目录CIFAR-10的简介1、与MNIST数据集中目比,CIFAR-10真高以下不同点2、TensorFlow官方示例的CIFAR-10代码文件3、CIFAR-10数据集的数据文件名及用途4、基于CIFAR-10数据集最新算法预测准确率对比CIFAR-10的下载1、下载CIFAR-10数据集的全部数据CIFAR-10使用方法1、使用TF读取CIFAR-10数据官网链接:TheCIFAR-10datas

    2022年10月17日
    0
  • python生兔子问题(递归算法)_用python函数写斐波那契数列

    python生兔子问题(递归算法)_用python函数写斐波那契数列兔子产子1.问题描述有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总对数为多少?2.问题分析兔子产子

    2022年7月31日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号