java中JDK JRE JVM的关系

2023-10-26

1.1 软件开发介绍

程序是为了模拟现实世界,解决显示问题而使用计算机语言编写的一系列有序的指令集合

软件:即一系列按照特定顺序组织的计算机数据和指令集合。有系统软件和应用软件之分

人机交互方式:

        图形化界面(GUI)

        命令行方式(CLI)

常用的DOS命令:

        dir:列出当前目录下的文件及文件夹

        md:创建目录

        rd:删除目录

        cd:进入指定目录

        cd..:退回到上一级目录

        cd\:退回到根目录

        del:删除文件

        exit:退出到dos命令行

非常经典的一句话:

        算法+数据结构=应用程序

1.2 计算机编程语言的介绍

计算机语言:人与计算机交流的方式

        第一代语言:机器语言。指令以二进制代码形式存在。

        第二代语言:汇编语言。使用助记符表示一天机器指令。(eg:add 2,3)

        第三代语言:高级语言:面向过程 (c语言) 面向对象(c++、java(纯面向对象))

1.3 JAVA语言概述

SUN(斯坦福大学网络公司)推出(1995年)

詹姆斯-高斯林(java之父)

JDK:java development key java开发工具

里程碑式版本:JDK1.5----2004年

2009年oracle收购SUN

14年 Java8.0 oracle发布的,比较成熟,增加了许多新特性

        JAVA SE 标准版 桌面级应用,计算机,记事本,qq

        JAVA EE 企业版 企业级应用,淘宝,京东,拼多多

        JAVA ME 小型版 嵌入式设备游戏开发,已过时,随着Android和iOS智能系统的兴起

JAVA应用领域

        企业级应用

        Android平台应用

        大数据平台开发

JAVA 语言的特点

面向机器---面向过程---面向对象

1.面向对象

两个基本概念:类、对象

三大特性:封装、继承、多态

2.健壮性(简单性):去除了c语言中的指针,有垃圾回收机制。

3.跨平台性

        原理:只需要在运行java应用程序的操作系统上,先安装一个java虚拟机

(JVM java virtual machine)。由JVM来负责java程序在该系统中的运行。

一次编译,到处运行 write once,run anywhere

4.开源

1.4 java语言运行机制及运行过程

java语言的特点:跨平台性

有Win版的JVM 、Linux版的JVM、Windows版的JVM

        编译执行:c、c++ 一次编译,多次运行。执行效率高。不可跨平台

        解释执行:javaScript 将源文件交给不同平台独有的解释器。可以跨平台。执行效率低

java的执行机制:现将源文件(.java)编译成字节码文件(.class),再将字节码文件进行解释执行。

javap命令:字节码查看命令
    -v:查看字节码文件的详细信息

JVM(JVM java virtual machine)是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,

        管理数据,内存,寄存器。

        垃圾回收(自动回收)

问题:JAVA 程序还会出现内存泄漏和内存溢出的问题吗? Yes!

        1、长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露。

        2、当一个对象被存储进HashSet集合中以后,就不能修改这个对象中的那些参与计算哈希值的字段了,否则,对象修改后的哈希值与最初存储进HashSet集合中时的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为的参数去HashSet集合中检索对象,也将返回找不到对象的结果,这也会导致无法从HashSet集合中单独删除当前对象,造成内存泄露
安装JDK

JDK(java development kit):开发工具包 JDK是提供给开发人员使用的,其中包含可java的开发工具,也包括了JRE

其中的开发工具:编译工具(javac.exe)打包工具(jar.exe)

JRE:运行环境 包括java虚拟机和java程序所需的核心类库等,如果想要运行一个开发好的java程序,计算机需要安装JRE即可

JDK安装地址:Oracle | Cloud Applications and Cloud Platform

注意:安装软件的路径中不能包含中文、空格。(现在的jdk无所谓)

卸载软件的方式在控制面板中卸载程序

环境变量配置

为什么要配置path环境变量:

希望在任何文件路径下都可以执行java的这些开发工具

JAVA_HOME=jdk的存放路径bin的上一层目录

path=%JAVA_HOME%\bin

1.6 开发体验-HelloWorld

javap -v HelloWorld.class 查看helloworld的字节码文件

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("HelloWorld");
    }
}

若想在命令行执行:在该代码的所在目录输入cmd打开命令行

在命令行编译

javac HelloWorld.java

运行

java HelloWorld

1.7 单行注释注释

单行注释 //

多行注释 /* */

文档注释(java特有) /** */

单行注释和多行注释的特点(单、多行注释不参与编译)

编译以后生成.class结尾的字节码文件中不包含注释掉的信息

1.对所写的程序进行解释说明,增强可读性。方便自己,方便别人

2.调试所写代码

文档注释的特点

注释内容可以被JDK提供的javadoc所解析,生成一套以网页文件形式体现的该程序的文档说明

1.8 javaAPI文档

API JAVA提供的一系列接口

API文档:针对于提供的类库如何使用给的一个说明书

对第一个程序进行总结

一.

1.编写:我们将编写java代码保存在以“.java”结尾的源文件中

2.编译:使用javac.exe命令编译的java源文件。格式:javac 源文件名.java

3.运行:使用java.exe命令解释运行文门的字节码文件。格式:java 类名

二.在一个java源文件中可以声明多个class。编译后,每个类都会生成独立的.class文件。但是,只能最多有一个类声明为public的

而且要求声明为public的类的类名必须与源文件名相同

三.程序的入口是main方法。且格式是固定的

四。输出语句

System.out.println(): 先输出数据,然后换行

System.out.print(): 值输出数据

printf():格式化输出

        %.2f 格式说明符:表示四舍五入保留小数点后2位

        %s格式说明符:表示以字符串的形式输出

        每一行执行语句以“;”结束。

六。编译以后会生成一个或多个字节码文件,字节码文件的文件名与java源文件中的类名相同

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中JDK JRE JVM的关系 的相关文章

随机推荐

  • Linux中查看socket状态

    Linux中查看socket状态 cat proc net sockstat 这个是ipv4的 sockets used 137 TCP inuse 49 orphan 0 tw 3272 alloc 52 mem 46UDP inuse
  • 响应式布局(媒体查询+%)

    总结 核心思想 每一个最外层盒子给一个max width 盒子中的内容width全部使用 表示 使用 元素全部写在盒子里 当媒体查询满足情况是display block 注意 精确的是需要一样的 媒体查询相当于if 过渡的动画写在默认样式里
  • 读书笔记-看见未来:改变互联网世界的人们

    作者 余晨 推荐序二 未来从来不会自动地发生 世界正在重新 造物 它既是虚拟意义上的 又同时是实物意义上的 宙斯在假眠 而诸神则各逞其能 时代 曾经刊登过的一篇文章认为 今天的个人计算机革命和互联网之所以成为这样 乃是继承了20世纪60年代
  • LLVM汇编语言指导手册之指令手册

    下面是我对llvm汇编中一些不常用的指令的总结 shl 指令 语法
  • wazuh日志审计--定制规则

    日志审计 定制规则 目录布局 规则集文件夹结构如下所示 在接收到agent传来的日志后 manager会根据 var ossec ruleset decoders里面的各种规则对日志进行处理 提取到了指定字段的值之后再根据 var osse
  • 物理这一块真不好搞,

    研究了一段PHYSX 发现真是寸步难行 英文文档也不是很详细 哎 没人带着的话 还是不搞为好 继续封装软引擎吧 没法干了 心里泼凉泼凉的 哎 咋弄呢 看来只能当个兴趣爱好了 或许用下游戏引擎 看看有没有集成好的
  • TensorFlow 深度学习笔记 Stochastic Optimization

    Stochastic Optimization 转载请注明作者 梦里风林 Github工程地址 https github com ahangchen GDLnotes 欢迎star 有问题可以到Issue区讨论 官方教程地址视频 字幕下载
  • adb移植到Android平台使用

    adb移植到Android平台使用 1 工具源码 所需源码 openssl git clone https github com openssl openssl git zlib 1 2 8 git clone https github c
  • JSOUP爬取4K高清壁纸

    jsoup jar包 1 11 2 链接 https pan baidu com s 1pe3 r5 YB pGEsosfRLbsA pwd 41w5 提取码 41w5 效果 代码 import org jsoup Jsoup import
  • Java.nio.file.NoSuchFileException] - 文件未找到异常处理及解决方法

    Java nio file NoSuchFileException 文件未找到异常处理及解决方法 在日常的Java开发中 我们经常会遇到各种异常情况 其中之一就是 Java nio file NoSuchFileException 即文件未
  • 求帮助安装mysql 出现红色感叹号

  • 【python】【django】cursor.fetchall()的结果是元组

    今天做测试 用django db 的connection来执行一个非常简单的查询语句 sql str select col 1 from table 1 where criteria 1 cursor connection cursor c
  • 混乱的代码是技术债吗

    翻译自 Uncle Bob 的 Blog A Mess is not a Technical Debt 主要是鲍勃大叔的观点 混乱的代码实现不是技术债 原文地址见超链接 The term Technical Debt was created
  • 成功解决安装tensorflow,安装进度1/4,爆红一大片且有很多File出现timed out

    之前安装几次 CPU tensorflow总是出现一大片红 自己发现其中一个原因是python版本和tensorflow不对应 tensorflow 2 0 0 得和python3 5 3 7对应 我之前的版本是3 8 5 会出现不兼容情况
  • 银行定期存款产品目标客户的确定——基于逻辑回归

    本篇文章将会介绍用Python分析银行定期存款产品目标客户的确定详细建模细节 业务框架分析以及模型的选择与评估分析参见上一篇文章 银行定期存款产品目标客户的确定 基于逻辑回归 建模前分析 1 导入各种模块并读取数据 2 数据预处理 维规约
  • STM32 keil中__IO得意思

    IO解释 STM32得库函数中 HAL和LL库都有 存在一个 IO得宏定义 define I volatile const lt defines read only permissions define O volatile lt defi
  • STM32配置时钟系统流程(固件库/外设标准库)

    前提 STM32F10x系列固件库 标准外设库 前言 固件库帮我们写好了 时钟系统 时钟树 的配置函数 该函数也不需要我们去调用 只要正确包含了STM32的启动文件 s文件 就行 s启动文件调用执行了时钟配置函数 先于main函数执行 s启
  • “钢铁侠”大战“机器人”!马斯克称「笼中格斗」将在 X 上直播,小扎应战:8 月 26 日如何?...

    由马斯克和扎克伯格领衔 随后引爆全网讨论的 约架 已过去快两个月 先是约定在拉斯维加斯来一场 笼中格斗 接着网友看热闹不嫌事大的做起了预告海报 最后由马斯克母亲出面叫停 当大家以为格斗一事要不了了之时 马斯克再次发声 要打 准备在 X 上直
  • 【Android】拾物App期末作业

    一 期末作业题目 校园失物 拾物APP 二 实施目的 通过本实训 使受训者可以深入理解Android相关技术 并将所学知识应用到实际的中等规模的程序设计中 同时 通过本实训 受训者可以拓展Android相关的知识 提升受训者的能力 三 实施
  • java中JDK JRE JVM的关系

    1 1 软件开发介绍 程序是为了模拟现实世界 解决显示问题而使用计算机语言编写的一系列有序的指令集合 软件 即一系列按照特定顺序组织的计算机数据和指令集合 有系统软件和应用软件之分 人机交互方式 图形化界面 GUI 命令行方式 CLI 常用