当前位置: 首页 > news >正文

day03java语言特性 JDK、JRE、JVM

1、Java语言的特性

1.1、简单性在Java语言当中真正操作内存的是:JVM(Java虚拟机)所有的java程序都是运行在Java虚拟机当中的。而Java虚拟机执行过程中再去操作内存。对于C或者C++来说程序员都是可以直接通过指针操作内存的。C或者C++更灵活,可以直接程序员操作内存,但是要求程序员技术精湛。C语言或者C++更有驾驭感。Java语言屏蔽了指针概念,程序员不能直接操作指针,或者说程序员不能直接操作内存。这种方式有优点也有缺点:优点:不容易导致内存泄漏。(简单了。)缺点:效率问题,包括驾驭感比较差。飞机航行:如果是C语言表示程序员是飞机驾驶员。如果是Java语言表示程序员是飞机上的乘客。Java语言底层是C++,所以JVM是用C++语言写好的一个虚拟的电脑。JVM在哪里?告诉大家,安装了JDK之后,JVM就代表安装好了。内存是什么?对于计算机来说:最主要的几个部件是什么?CPU:中央处理器,相当于人类的大脑,负责发送并执行指令。是整个计算机的指挥官。CPU是负责计算的,负责运算的。10 + 20 = 30CPU负责将30这个结果计算出来。但是在计算过程中有三个数据需要临时找个空间存储一下:这三个数据分别是:10 20 30内存:程序运行过程当中的临时数据存储空间。断电之后或者关机之后内存中的数据就消失了。硬盘:持久化设备,硬盘上的数据不会因断电而丢失。主板:相当于人类的躯干,是一个载体:CPU、内存条、硬盘等主要的部件都是放在主板上的,主板上有很多线,将以上的部件链接起来。.....1.2、java是堪称完全面向对象的。面向对象更容易让人理解,人类通常是以对象的方式认知世界的。采用面向对象的方式可以让复杂问题简单化。1.3、健壮性主要是因为Java中有一种机制:自动垃圾回收机制(GC机制)。java语言是健壮的,相对于C语言来说,C语言没有Java健壮。Java不容易导致内存的泄漏。C++或者C语言使用不当时很容易导致内存泄漏。JVM负责调度GC机制。程序员不需要干涉。以上讲解中又描述了这几个术语:JVM(C++语言写的一个虚拟的计算机)、GC(垃圾回收机制)1.4、java完全/完美支持多线程并发。1.5、可移植性/跨平台java语言只要编写一次,可以做到到处运行。例如:java程序编写完之后,可以运行在windows操作系统上,不需要做任何改动可以直接运行在Linux操作系统上,同样也可以运行到MaC OS上面。一次编写,到处运行。(平台改变了,程序不需要改。)JVM这种机制实现了跨平台,那么这种机制优点和缺点分别是什么?优点:一次编写到处运行,可以跨平台。缺点:麻烦。对于运行java程序来说必须先有一个JVM。就像你要想在网页上看视频,你必须先安装一个flash是一样的。Java语言可以编写病毒吗?可以,没问题。但是很难让用户中毒。中毒的一般都是java程序员。所以很少有人编写java的病毒脚本。

2、JDK、JRE、JVM三者之间的关系?
JDK:Java开发工具箱
JRE:java运行环境
JVM:java虚拟机

JDK包括JRE,JRE包括JVM。JVM是不能独立安装的。
JRE和JDK都是可以独立安装的。
有单独的JDK安装包。
也有单独的JRE安装包。
没有单独的JVM安装包。安装JDK的时候:JRE就自动安装了,同时JRE内部的JVM也就自动安装了。
安装JRE的时候:JVM也就自动安装了。问题:假设你在软件公司开发了一个新的软件,现在要去客户那边给客户把项目部署一下,把项目跑起来,你需要安装JDK吗?只需要安装JRE就行了。JRE体积很小,安装非常便捷快速。问题:为什么安装JDK的时候会自带一个JRE?因为java程序员开发完程序之后,要测试这个程序,让这个程序运行起来,需要JRE。所以JDK安装的时候内部自带一个JRE。

3、到目前为止,我们接触过的重点术语,总结一下:

Java体系的技术被划分为三大块:JavaSE:标准版JavaEE:企业版JavaME:微型版安装JDK之后:JDK:java开发工具箱JRE:Java运行环境JVM:Java虚拟机

4、对Java的加载与执行的理解(理论比较重要)
java程序从编写到最终运行经历了哪些过程????

java程序非常重要的两个阶段:编译阶段运行阶段注意:java程序员直接编写的java代码(普通文本)是无法执行被JVM
识别的。java程序员编写的java代码这种普通文本必须经过一个编译,
将这个“普通文本代码”变成“字节码”,JVM能够识别“字节码”。
java代码这种普通文本变成字节码的过程,被称为:编译。java代码这种普通文本被称为:java源代码。(你编写的代码是源代码)
源代码不能直接执行,需要先进行编译,生成源代码对应的“字节码”
JVM可以识别的是字节码。编译阶段和运行阶段可以在不同的操作系统上完成吗?在windows上编译编译之后生成了“字节码”把“字节码”放到linux上运行完全可以,因为Java是跨平台的。可以做到一次编写到处运行。java源代码一旦编译之后,源代码可以删除吗?只留下字节码可以执行吗?完全可以执行,因为源代码不参与程序的执行过程。参与程序执行过程的是字节码。但是最好不要删除源代码。因为有可能执行结果不是你需要的,当执行结果不是你需要的时候,你可以重新打开源代码进行修改,然后重新编译生成新的字节码,再重新执行。这样会有新的执行效果。放源代码的文件扩展名必须是:xxx.java
并且需要注意的是:编译生成的字节码文件扩展名是:xxx.class
没有为什么,死记硬背吧!!!!.java文件就是源文件,这个文件中编写源代码。
.class文件就是字节码文件,这个文件是编译源代码而得到的。另外需要注意的是:1个java源文件是可以编译生成多个class文件的。最终运行的是class文件。问题:字节码文件是二进制文件吗?字节码文件不是二进制文件。如果是二进制的话,就不需要JVM了。因为操作系统可以直接执行二进制。java程序从开发到最终运行经历了什么?编译期:(可以在windows上)第一步:在硬盘的某个位置(随意),新建一个xxx.java文件第二步:使用记事本或者其它文本编辑器例如EditPlus打开xxx.java文件第三步:在xxx.java文件中编写“符合java语法规则的”源代码。第四步:保存(一定要将xxx.java文件保存一下)第五步:使用编译器(javac【JDK安装后自带】)对xxx.java文件进行编译。第六步:如果xxx.java文件中编写的源代码是符合语法规则的,编译会通过,如果xxx.java文件中编写的源代码违背了语法规则,那么编译器会报错,编译器报错之后class文件是不会生成的,只有编译通过了才会生成class字节码文件。并且一个java源文件是可以生成多个class文件的。(编译实质上是检查语法)运行期(JRE在起作用):(可以在windows上,也可以在其他的OS上。)第七步:如果是在Linux上运行,需要将windows上生成的class文件拷贝过去不需要拷贝源代码,真正运行的是字节码。(但是源代码也不要删除,有用)第八步:使用JDK自带的一个命令/工具:java(负责运行的命令/工具)执行字节码第九步:往下的步骤就全部交给JVM了,就不需要程序员干涉了。JVM会将字节码文件装载进去,然后JVM对字节码进行解释(解释器负责将字节码解释为1010101010..等的二进制)第十步:JVM会将生成的二进制码交给OS操作系统,操作系统会执行二进制码和硬件进行交互。注意:在以上的过程中,需要使用两个非常重要的命令?javac 命令,负责编译java 命令,负责运行小插曲:xxx.java源文件经过编译之后生成了A.class、B.class、C.class等文件,那么我们称A是一个类、B是一个类、C是一个类。其中A、B、C是类的名字。没有为什么,死记硬背,SUN公司的java语法就是这么规定的。A/B/C是类的名称。A类、B类、C类。源文件中编写的代码叫做:源代码。以上是一个复杂的过程,那么缩减一下,程序员到底要干啥?新建java文件打开java文件写java源代码保存javac命令编译java命令运行编写、编译、运行

5、编写java中的第一个java程序:HelloWorld(你好世界:问世)
这个程序不需要大家理解,大家照抄就行,因为目前我也不会讲解这个程序为什么这么写。
主要是为了搭建java的开发环境,测试java的环境是否能用。

第一步:安装文本编辑器(EditPlus)第二步:安装JDK(先下载JDK)安装JDK13,直接下一步就行。JDK13安装的时候内置了一个JRE,独立于JDK之外的JRE并没有生成。对于java13来说,如果你希望生成一个独立于JDK之外的JRE的话需要执行特殊的命令。这里先不讲,后期用到的时候再说。注意的是:JDK8安装的时候,不仅JDK内置了一个JRE,而且还会在JDK目录之外独立的生成一个单独的JRE。(以前低版本的时候,JRE实际上是有2个。)一个是JDK内置的,一个是独立于JDK之外的。JDK的bin目录下有:javac.exe 负责编译java.exe 负责运行第三步:写代码写一下第一个程序HelloWorld。这个代码在此强调:文件名照抄文件内容代码严格照抄照抄大小写照抄任何一个环节照抄标点符号不要问为什么。后面会解释。括号:[](){}都要成对写。第四步:编译
第五步:运行

相关文章:

day03java语言特性 JDK、JRE、JVM

1、Java语言的特性 1.1、简单性在Java语言当中真正操作内存的是:JVM(Java虚拟机)所有的java程序都是运行在Java虚拟机当中的。而Java虚拟机执行过程中再去操作内存。对于C或者C来说程序员都是可以直接通过指针操作内存的。C或者C更灵活&…...

HydroD 实用教程(二)有限元模型

目 录一、前言二、模型种类三、单元类型四、FEM文件五、参考文献一、前言 SESAM (Super Element Structure Analysis Module)是由挪威船级社(DNV-GL)开发的一款有限元分析(FEA)系统,它以 GeniE、…...

Java中的Set集合

Set不能存储重复元素,元素无序(指的是不按照添加的顺序,List集合是按照添加顺序存储的)hashSet注:源码底层是hashMap实现的,因为hashMap是双列的,其中键是不能重复的,而hashSet是单列…...

【RabbitMQ五】——RabbitMQ路由模式(Routing)

RabbitMQ路由模式前言RabbitMQ模式的基本概念为什么要使用Rabbitmq 路由模式RabbitMQ路由模式组成元素路由模式完整代码Pom文件引入RabbtiMQ依赖RabbitMQ工具类生产者消费者1消费者2运行结果截图前言 通过本篇博客能够简单使用RabbitMQ的路由模式。 本篇博客主要是博主通过官网…...

【C语言】宏定义 结构体 枚举变量的用法

目录 一、数据类型 二、C语言宏定义 三、C语言typedef重命名 四、 #define与typedef的区别 五、结构体 六、枚举变量 补充学习一点STM32的必备基础知识 一、数据类型 二、C语言宏定义 关键字:#define 用途:用一个字符串代替一个数字,…...

锁升级之Synchronized

Synchronized JVM系统锁一个对象里如果有多个synchronized方法,同一时刻,只要有一个线程去调用其中的一个synchronized方法,其他线程只能等待!锁的是当前对象,对象被锁定后,其他线程都不能访问当前对象的其…...

基于nodejs+vue疫情网课管理系统

疫情网课也都将通过计算机进行整体智能化操作,对于疫情网课管理系统所牵扯的管理及数据保存都是非常多的,例如管理员:首页、个人中心、学生管理、教师管理、班级管理、课程分类管理、课程表管理、课程信息管理、作业信息管理、请假信息管理、上课签到管理、论坛交流…...

Zabbix 构建监控告警平台(三)

Zabbix User parametersZabbix Trigger1.Zabbix User parameters 1.1即自定义KEY 注意:mysql安装在被监测主机 [rootlocalhost ~]# yum -y install mariadb-server mariadb [rootlocalhost ~]# systemctl start mariadb [rootlocalhost ~]# mysqladmin -uroot statu…...

Linux系统之dool命令行工具的基本使用

Linux系统之dool命令行工具的基本使用一、dool命令行工具介绍二、本地系统环境检查1.检查系统版本2.检查系统内核版本三、下载dool软件包1.创建下载目录2.下载dool四、安装dool1.安装python32.安装dool五、dool的命令帮助六、dool的基本使用1.直接使用dool监控系统2.监控cpu和网…...

LeetCode-2335-装满杯子需要的最短总时长

1、堆 我们可以维护一个堆,首先我们将数组中不为0的数全部加入堆中,而后进行循环。当堆不为空时,我们将堆顶元素出堆并减一,而后观察是否还能继续出堆,若能则出堆,否则跳过,最后我们将处理后的…...

npm ERR! code ELIFECYCLE解决方案,npm犯错!myweb@1.0.0构建脚本失败。

1.问题npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! myweb1.0.0 build: webpack --config config/webpack.config.jsnpm ERR! Exit status 1npm ERR!npm ERR! Failed at the myweb1.0.0 build script.npm犯错!代码ELIFECYCLEnpm犯错!errno 1npm犯错!myweb1.0.0 build: we…...

最小二乘支持向量机”在学习偏微分方程 (PDE) 解方面的应用(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 本代码说明了“最小二乘支持向量机”在学习偏微分方程 (PDE) 解方面的应用。提供了一个示例&#xff0c…...

ISYSTEM调试实践8-winIDEA Analyzer功能1

前面几篇介绍了ISYSTEM的基本调试界面和功能,相比我之前用过的IDE,除了几种断点方式和脚本功能以外,应该都是比较简单,稍微操作一下就可以直接上手,后续我将介绍winIDEA的Analyzer 功能。 1 Analyzer简介 iSYSTEM An…...

每日学术速递2.11

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.IR、cs.MM 1.A Comprehensive Survey on Multimodal Recommender Systems: Taxonomy, Evaluation, and Future Directions 标题:关于多模态推荐系统的综合调查:分…...

宝塔搭建实战php开源likeadmin通用管理admin端vue3源码(二)

大家好啊,我是测评君,欢迎来到web测评。 上一期给大家分享了server端的部署方式,今天来给大家分享admin端在本地搭建,与打包发布到宝塔的方法。感兴趣的朋友可以自行下载学习。 技术架构 vscode node16 vue3 elementPlus vit…...

网络基础-虚拟化工具-网桥

系列文章目录 本系列文章主要是回顾和学习工作中常用的网络基础命令,在此记录以便于回顾。 该篇文章主要是讲解虚拟化的工具网桥相关的概念和常用命令 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系…...

剑指 Offer 14- II. 剪绳子 II

剑指 Offer 14- II. 剪绳子 II 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m - 1] 。请问 k[0]k[1]…*k[m - 1] 可能的最大乘积是多少&a…...

English Learning - Day55 作业打卡 2023.2.9 周四

English Learning - Day55 作业打卡 2023.2.9 周四引言1. Jim 在看电视的时候他的老婆正在做饭。2. 他刚睡着电话就响了。3. 我正在想事情,这时忽然有人从后面抓我胳膊。4. 我们总是边吃火锅边唱歌。5. 他一听说出了事故,马上就来了现场。6. He entered …...

pixhawk2.4.8-地面站配置-APM固件

文章目录一、硬件准备二、软件准备1 已实飞测试2 MP地面站 任意版本下载:3 APM固件 任意版本下载:三、飞控校准1 刷固件2 机架选择3 加速度计校准4 指南针校准5 遥控器校准6 飞行模式7 紧急断电&无头模式8 基础参数设置9 电流计校准10 电调校准11 起…...

golang 通道类型

文章目录一、什么是通道类型二、通道产生的原因三、声明channel四、创建channel五、channel相关操作1、发送值2、接收值3、关闭通道3.1 注意3.2 特点四、通道类型1、无缓冲通道2、有缓冲通道五、单向通道一、什么是通道类型 Go 语言中的通道(channel)是一…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...