Java入门须知术语
文章目录
- 前言
- JVM (Java Virtual Machine)
- JVM的组成部分
- JVM的作用
- 为什么需要JVM
- JRE(Java Runtime Environment)
- JRE的组成部分
- JRE的作用
- 为什么需要JRE
- JDK(Java Development Kit,Java开发工具包)
- JDK的组成部分
- JDK的作用
- 为什么需要JDK
- JAR
- 1.1 使用JAR包有以下几个显著的好处
- Class
- Object
- OOP
- Encapsulation 封装
- Inheritance 继承
- Polymorphism 多态
- Interface 接口
- Abstract Class
- Exception Handling
- Garbage Collection
- Multithreading
- 总结
前言
记录java小白须知的一些术语
JVM (Java Virtual Machine)
JVM(Java Virtual Machine,Java虚拟机)是Java技术体系的核心组件,它是一个抽象化的计算机,能够在各种不同的硬件和操作系统平台上通过软件模拟的方式来执行Java字节码。简单来说,JVM为Java程序提供了一个标准化的运行环境,使得编写的Java代码能够实现“一次编写,到处运行”(Write Once, Run Anywhere)的目标。以下是JVM的一些关键特性和用途:
JVM的组成部分
- 类加载器(Class Loaders):负责查找并加载类文件到内存中,准备执行。JVM有不同类型的类加载器,包括Bootstrap ClassLoader、Extension ClassLoader、Application ClassLoader以及自定义类加载器,它们共同构成了类加载的层次结构。
- 运行时数据区(Runtime Data Areas):包括方法区、堆、Java栈、本地方法栈、程序计数器等,用于存储程序运行时的各种数据和控制信息。
- 执行引擎:负责解释或编译字节码为机器码,并执行这些指令。现代JVM采用即时编译(JIT, Just-In-Time Compilation)技术来提高执行效率。
- 内存管理:通过垃圾回收器(Garbage Collector, GC)自动管理内存,回收不再使用的对象所占用的空间,减少程序员的负担。
- 安全性:提供了安全机制来限制程序的非法访问,如类加载器验证、安全沙箱等,增强了程序的安全性。
JVM的作用
- 平台无关性:JVM作为Java代码与底层硬件和操作系统的中间层,屏蔽了具体平台的差异,使得Java程序可以跨平台运行,无需重新编译。
- 代码安全:通过类加载器的验证机制和安全策略,确保加载的类安全可靠,防止恶意代码执行。
- 内存管理自动化:自动的内存管理和垃圾回收机制简化了开发过程,避免了常见的内存泄露和指针错误问题。
- 性能优化:JVM可以通过即时编译、方法内联、代码缓存等多种技术优化代码执行效率,提升应用性能。
- 动态扩展:支持动态加载类和动态链接库,使得程序可以在运行时扩展功能。
为什么需要JVM
JVM的设计初衷是为了实现跨平台的兼容性和可移植性,这是通过将Java源代码编译为与平台无关的字节码(.class文件)来实现的。字节码是一种中间语言,它不直接对应任何特定的硬件架构,而是由JVM在目标平台上解释或编译执行。这种设计允许开发者编写一次代码,然后在任何安装了JVM的平台上运行,极大地提高了开发效率和程序的可维护性。此外,JVM还负责内存管理、安全性检查、性能优化等工作,减轻了开发者的负担,使得他们可以更加专注于业务逻辑的实现。
JRE(Java Runtime Environment)
JRE(Java Runtime Environment,Java运行时环境)是Java平台的一个组成部分,它为运行Java应用程序提供必要的环境。JRE包含了使Java程序得以在计算机上执行的所有组件,而不包括开发工具。以下是JRE的关键组成部分和其主要作用:
JRE的组成部分
- Java虚拟机(JVM, Java Virtual Machine):JVM是核心部分,负责解释或编译Java字节码为机器代码并执行。它是Java跨平台特性的基石,确保了编译后的Java程序可以在任何安装了相应JRE的设备上运行。
- Java类库:包含了Java语言的基本类和API,这些是Java程序运行时所需的预编译类文件。这些类库提供了基本功能,如输入输出处理、网络通信、字符串操作、集合框架等。
- Java应用程序启动器:用于启动Java应用程序的工具,它管理JVM的启动并传递必要的参数给JVM,让程序开始执行。
JRE的作用
- 运行Java应用程序:JRE使得终端用户无需了解Java编程细节,即可在他们的设备上运行Java应用程序。无论是桌面应用、Web应用的客户端(Applet,尽管已不常用)还是服务器端应用,只要有JRE,用户就能直接运行。
- 跨平台兼容性:因为JRE保证了Java程序的跨平台性,用户可以在不同的操作系统上安装对应的JRE来运行相同的Java程序,无需担心兼容性问题。
- 简化最终用户的安装和使用:开发者可以将程序打包成JAR文件,最终用户只需安装JRE,就可以直接运行这些程序,无需关心编译等开发环节。
为什么需要JRE
JRE的存在是为了分离开发环境与运行环境,使得Java应用程序的分发和使用变得简单。对于大多数最终用户而言,他们并不需要编译器、调试器等开发工具,仅需一个能够执行Java程序的环境即可。因此,JRE提供了一个轻量级、易于部署的解决方案,确保了用户能够专注于使用应用程序,而非关心技术细节。此外,它也是Java“一次编写,到处运行”哲学的关键实现部分,确保了应用的广泛普及和易用性。
JDK(Java Development Kit,Java开发工具包)
JDK(Java Development Kit,Java开发工具包)是Java程序员进行开发工作的核心工具集。它是Oracle公司(以及早期的Sun Microsystems)为Java平台提供的官方开发环境,旨在支持编写、编译、调试和运行Java应用程序。JDK是Java初学者和专业开发者都必须掌握的关键组件。下面是对JDK的详细说明:
JDK的组成部分
- Java编译器(javac):将源代码(.java文件)转换为可执行的Java字节码(.class文件)。
- Java运行时环境(JRE):包含JVM(Java虚拟机)和Java类库,是运行Java程序的必要条件。
- Java文档生成器(javadoc):从源代码注释中自动生成HTML格式的API文档。
- Java调试器(jdb):用于调试Java应用程序,允许设置断点、查看变量值等。
- 性能分析工具(如jconsole、jvisualvm):监控和分析Java应用程序的性能,包括内存使用、CPU占用等。
- 命令行工具:如jar(用于创建和管理JAR文件)、javap(Java反汇编器,查看字节码)、keytool(密钥和证书管理工具)等。
- 类库和API文档:Java标准库中的类和接口,为开发者提供了大量预先实现的功能,包括集合、多线程、网络编程、数据库连接(JDBC)、图形用户界面(Swing)等。
JDK的作用
- 开发支持:提供必要的工具帮助开发者编写、编译Java代码。
- 编译和执行:将源代码编译为字节码,并通过JRE运行这些字节码。
- 调试与测试:利用调试器和分析工具检测和修复代码错误,优化性能。
- 打包与部署:使用jar工具将类和资源打包成可分发的JAR文件。
- 文档生成:自动生成API文档,便于团队协作和后期维护。
为什么需要JDK
JDK是开发Java应用程序的基石,它不仅仅包含了运行Java程序所需的JRE,更重要的是提供了全面的开发工具和库,使得开发者能够高效地完成从编码、编译、测试到部署的整个开发流程。没有JDK,开发者无法从头开始创建新的Java应用程序,也无法利用Java的高级特性和类库来增强应用功能。
总之,JDK是Java开发的必备工具包,它确保了Java语言的跨平台性,同时通过丰富的工具链提升了开发效率和应用质量。
JAR
JAR 文件是 Java ARchive 文件的缩写,它是 Java 平台上的一种文件格式,主要用于聚合大量的 Java 类文件、相关的元数据和资源(如图片、配置文件等)到一个压缩的文件中。JAR 文件类似于 ZIP 文件,使用 ZIP 压缩算法进行压缩。它简化了类和资源的管理和分发过程。
JAR 文件的主要用途包括:
- 打包应用程序或库:开发人员可以将项目中的所有类文件和资源打包成一个 JAR 文件,便于发布、分发和部署Java应用或库。
- 封装库:第三方库通常被打包成 JAR 文件供其他开发者使用,只需将 JAR 文件添加到项目的类路径中即可使用其中的类和资源。
- 可执行程序:通过在 JAR 文件的清单(MANIFEST.MF)中指定主类,可以使其成为可直接双击运行的可执行 JAR 应用程序。
- 模块化应用:在Java平台模块系统(JPMS,自Java
9起引入)中,虽然主要使用JMOD文件,但JAR文件也可以作为模块的一部分被使用,进行模块化开发。
1.1 使用JAR包有以下几个显著的好处
-
模块化和组织结构清晰:JAR包允许将相关类和资源文件组织在一起,形成一个逻辑单元,便于管理和维护。这对于大型项目尤其重要,因为它帮助保持代码结构的整洁和模块化。
-
简化部署:将应用或库打包成一个JAR文件简化了部署过程。只需分发单个文件,而不是多个分散的类和资源文件,降低了部署的复杂度和出错的可能性。
-
版本控制:JAR包内可以包含版本信息,有助于追踪和管理不同版本的库或组件,便于回滚或升级。
-
提高加载效率:JAR文件可以被JVM高效加载,因为它们是预编译的,并且可以被缓存。此外,由于JAR文件是压缩的,减少了磁盘空间占用和网络传输时间。
-
安全性:JAR文件可以被数字签名,确保文件的完整性和来源的真实性。这对于防止恶意代码注入和确认软件的可靠性至关重要。
-
跨平台兼容性:由于Java的平台无关性,JAR文件可以在任何支持Java的平台上使用,提高了代码的可移植性。
何时使用JAR包:
- 当你需要分发或共享自己的Java库、组件或服务时,打包成JAR文件可以让其他人方便地将其集成到他们的项目中。
- 开发Java应用程序时,如果你的应用由多个模块组成,每个模块可以打包成独立的JAR,便于管理和复用。
- 需要在Java Web Start或Applet中部署应用程序时,使用JAR包可以减少下载时间和提高安全性。
- 当你想要创建一个可执行的Java应用时,通过在JAR的Manifest文件中指定Main-Class属性,可以使其成为一个可直接运行的jar应用。
- 在需要利用Java模块系统中,尽管主要使用JMOD文件,但JAR文件仍然可用于包含资源或作为模块的一部分。
Class
Class: Java程序的基本单位,源代码经过编译后生成的字节码文件,每个类都定义了一种对象的结构和行为。
Object
Object: 对象是类的实例,Java是一种面向对象的编程语言,通过对象来表示现实世界中的实体。
OOP
OOP (Object-Oriented Programming): 面向对象编程。强调将数据和处理数据的方法封装在对象中,通过对象交互来设计和实现程序。
Encapsulation 封装
Encapsulation: 封装,将数据(属性)和操作数据的方法(行为)捆绑在一起,隐藏内部细节,只暴露公共接口。
Inheritance 继承
Inheritance: 继承,子类可以继承父类的属性和方法,实现代码复用和扩展。
Polymorphism 多态
Polymorphism: 多态,允许使用父类类型的引用指向子类对象,使得同一接口可以表现出不同的行为。
Interface 接口
Interface: 接口,定义了一组没有具体实现的方法,用来规定某些类必须遵循的规则或提供特定功能。
Abstract Class
Abstract Class: 抽象类,不能直接实例化,可以包含抽象方法(没有具体实现的方法),为子类提供共通的实现基础。
Exception Handling
Exception Handling: 异常处理,Java中通过try-catch-finally结构来捕获和处理程序运行时可能发生的异常情况。
Garbage Collection
Garbage Collection: 垃圾回收,自动管理内存,自动回收不再使用的对象所占的内存空间,程序员无需手动释放内存。
Multithreading
Multithreading: 多线程,Java支持同时执行多个线程,以提高程序的执行效率和响应速度。
总结
java 基础概念认识
相关文章:
Java入门须知术语
文章目录 前言JVM (Java Virtual Machine)JVM的组成部分JVM的作用为什么需要JVM JRE(Java Runtime Environment)JRE的组成部分JRE的作用为什么需要JRE JDK(Java Development Kit,Java开发工具包)JDK的组成部分JDK的作用…...
Spring Boot中集成WebSocket
目录 WebSocket简介WebSocket原理WebSocket的使用场景在Spring Boot中集成WebSocket 创建Spring Boot项目添加依赖配置WebSocket创建WebSocket处理器配置WebSocket端点前端使用WebSocket添加WebSocket拦截器 WebSocket简介 WebSocket是一种在单个TCP连接上进行全双工通信的…...
18.多分类问题代码实现
在机器学习中,多分类问题是一类常见的问题,它涉及到将输入数据划分为多个类别中的一个。例如,在图像识别中,我们可能需要将图像分为不同的类别,如手写数字识别(MNIST数据集)就是将手写数字图像分…...

实时通信的方式——WebRTC
文章目录 基于WebRTC实现音视频通话P2P通信原理如何发现对方? 不同的音视频编解码能力如何沟通?(媒体协商SDP)如何联系上对方?(网络协商) 常用的API音视频采集getUserMedia核心对象RTCPeerConne…...

Android 使用 ActivityResultLauncher 申请权限
前面介绍了 Android 运行时权限。 其中,申请权限的步骤有些繁琐,需要用到:ActivityCompat.requestPermissions 函数和 onRequestPermissionsResult 回调函数,今天就借助 ActivityResultLauncher 来简化书写。 步骤1:创…...

如何将前端项目打包并部署到不同服务器环境
学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学,可以点心心支持一下哈(笔记是根据b站尚硅谷的前端讲师【张天禹老师】整理的,用于自己复盘,有需要学习的可以去b站学习原版视频&…...

什么样的展馆场馆才是科技满满?就差一张智慧场馆大屏
随着科技的飞速发展,传统的场馆展示方式已经无法满足现代人对信息获取和体验的需求。智慧场馆大屏作为一种新型的展示方式,应运而生。它将高清大屏显示技术、智能交互技术、数据分析技术等融为一体,为观众带来更加丰富、生动的展示体验。 一…...

python核心编程(二)
python面向对象 一、基本理论二、 面向对象在python中实践2.1 如何去定义类2.2 通过类创建对象2.3 属性相关2.4 方法相关 三、python对象的生命周期,以及周期方法3.1 概念3.2 监听对象的生命周期 四、面向对象的三大特性4.1 封装4.2 继承4.2.1 概念4.2.1 目的4.2.2 分类4.2.3 t…...

【wiki知识库】02.wiki知识库SpringBoot后端的准备
📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、📂打开SpringBoot项目 2.1 导入所需依赖 2.2修改application.yml配置文件 2.3导入MybatisPlus逆向工程工具 2.4创建一个公用的返回值 2.5创建CopyUtil工具类 2.6创建…...
python tuple(元组)
python list(列表)、创建、访问、内置index、判断in、not in、添加元素、insert、append、extend、列表排序、颠倒顺序、删除元素、remove、pop、clear-CSDN博客 目录 tuple: 元组的主要特点包括: tuple的创建 单个元组需要注…...
opencv调用摄像头保存视频
opencv调用摄像头保存视频 文章目录 opencv调用摄像头保存视频保存视频(采用默认分辨率640 x 480)保存视频(指定分辨率,例1280720) 保存视频(采用默认分辨率640 x 480) import cv2 import time # 定义视频捕捉对象 cap cv2.Vide…...

STM32定时器四大功能之定时器编码接口
1什么是编码器接口? 编码器接口接受编码器的正交信号,根据编码器产生的正交信号脉冲控制CNT的自增和自减,从而指示编码器的旋转方向和旋转速度。 每个高级定时器和通用定时器都有一个编码器接口,同时正交编码器产生的正交信号分…...

全国各城市间驾车耗时和距离矩阵数据集(更新至2022年)
数据简介:城市之间距离越远,耗时越长。经济发达地区的交通状况较好。各城市之间的驾车耗时和距离存在差异。有些城市之间的交通非常便捷,而有些城市之间的交通则较为不便。这表明中国的交通网络发展尚不平衡,需进一步优化。特别是…...

推荐二轮电动车仪表盘蓝牙主芯片方案-HS6621CGC
随着国内二轮电动车的火热开启,电动车的智能化程度越来越高;电动车的智能操控需求也越来越高,现在介绍蓝牙控制面板的一些功能;例如:定位(GNSS),设防,实时上报数据&#…...

『香橙派』基于Orange Pi AIpro打造高效个人云存储解决方案
读完这篇文章里你能收获到 了解Orange Pi AIpro硬件优势,为构建高效云存储基础设施的理想平台。学会使用Orange Pi AIpro硬件平台,搭载Ubuntu Server系统,打造云存储环境。掌握利用Kodbox软件,享受文件管理、多格式预览及编辑的全…...
Sylvester矩阵、子结式、辗转相除法的三者关系(第二部分)
【三者的关系】 首先,辗转相除法可以通过Sylvester矩阵进行,过程如下(以 m 8 、 l 7 m 8、l 7 m8、l7为例子)。 首先调整矩阵中 a a a系数到最后面几行,如下所示: S ( a 8 a 7 a 6 a 5 a 4 a 3 a 2 …...

PyTorch的数据处理
💥今天看一下 PyTorch数据通常的处理方法~ 一般我们会将dataset用来封装自己的数据集,dataloader用于读取数据 Dataset格式说明 💬dataset定义了这个数据集的总长度,以及会返回哪些参数,模板: from tor…...

第14章-蓝牙遥控小车 手把手做蓝牙APP遥控小车 蓝牙串口通讯讲解
本文讲解手机蓝牙如何遥控小车,如何编写串口通信指令 第14章-手机遥控功能 我们要实现蓝牙遥控功能,蓝牙遥控功能要使用:1.单片机的串口、2.蓝牙通信模块 所以我们先调试好:单片机的串口->蓝牙模块->接到一起联调 14.1-电脑控制小车 完成功能…...
【补充1】字节对齐
文章目录 1.字节对齐的基本概念2.字节对齐规则3.实践出真知(加大难度)4 位域 1.字节对齐的基本概念 (1)现代计算机中内存空间都是按照byte划分的, 从理论上讲似乎对任何类型的变量的访问可以从任何地址开始࿰…...
Java数据库连接(JDBC)
一、引言 在Java应用程序中,经常需要与数据库进行交互以存储、检索和处理数据。Java数据库连接(JDBC)是Java平台中用于执行这一任务的标准API。JDBC允许Java程序连接到关系数据库,并使用SQL语句来执行查询和更新操作。本教程将详…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
TCP/IP 网络编程 | 服务端 客户端的封装
设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...

云原生安全实战:API网关Envoy的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口,负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...
2025.6.9总结(利与弊)
凡事都有两面性。在大厂上班也不例外。今天找开发定位问题,从一个接口人不断溯源到另一个 接口人。有时候,不知道是谁的责任填。将工作内容分的很细,每个人负责其中的一小块。我清楚的意识到,自己就是个可以随时替换的螺丝钉&…...
k8s从入门到放弃之Pod的容器探针检测
k8s从入门到放弃之Pod的容器探针检测 在Kubernetes(简称K8s)中,容器探测是指kubelet对容器执行定期诊断的过程,以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...

五、jmeter脚本参数化
目录 1、脚本参数化 1.1 用户定义的变量 1.1.1 添加及引用方式 1.1.2 测试得出用户定义变量的特点 1.2 用户参数 1.2.1 概念 1.2.2 位置不同效果不同 1.2.3、用户参数的勾选框 - 每次迭代更新一次 总结用户定义的变量、用户参数 1.3 csv数据文件参数化 1、脚本参数化 …...
python打卡day49@浙大疏锦行
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...