Java连载3-编译与运行阶段详解JRE,JDK,JVM关系

·一、

1.JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html

二、Java的加载与执行

1.Java程序运行包括:

(1)编译阶段:检查Java源程序是否符合Java语法,符合语法就生成正常的字节码文件(xxxx.class),字节码文件中不是纯粹的二进制,这种文件无法在操作系统中直接执行

i.需要用JDK中自带的javac.exe命令进行java程序编译

ii.用法:doc窗口,规则:javac java源程序路径

iii.javac是一个java编译工具

iv.一个java程序可以编译生成多个.class文件

v.字节码文件是最终要执行的文件,所以说class文件生成之后,java源文件删除并不会影响java程序的执行。

vi.编译结束之后,可以将.class文件拷贝到其他操作系统中执行。

(2)运行阶段:JDK安装之后,除了自带一个javac.exe之外,还有另一个工具/命令,java.exe负责运行阶段

java.exe在dos窗口使用,规则为:

例如:存在一个文件A.class,则命令为:java A

注意:不要写为:java A.class,且不要接文件地址,接的是类名

运行过程:

i.Dos窗口

ii.输入 java A

iii.java.exe命令会启动JVM,JVM会启动类加载器Classloader。

iv.Classloader会在硬盘上搜索A.class文件,找到之后,装载到JVM

v.JVM将A.class字节码解释为二进制文件

vi.操作系统会执行二进制文件与底层的硬件平台交互。

 

三、JDK,JRE,JVM关系

四、第一个Java程序

 public class HelloWorld{public static void main(String[] args){System.ou.printtln("HelloWordl");}}

 

适配环境变量,将javac.exe和java.exe在dos环境中可以运行

方法:我的电脑-右键-属性-高级系统设置-环境变量-path-编辑-新建-添加javac.exe和java.exe的地址。

 

目的:dos命令窗口是按照环境变量来查找可运行的程序的,因此必须添加目标程序的路径。

五、我们编译这个程序

 

编译成功之后Dos窗口不报错,在文件的旁边生成一个.class文件

注意:

(1)选取相对路径的快捷键:(适用于相对路径时快速部署)

打开一个目标文件夹,在地址栏直接输入cmd+回车,则直接Dos命令到这个文件夹下

(2)在Dos窗口下,不在目标程序的目录,我们可以直接输入javac,然后拖动这个文件到dos窗口

五、运行程序

注意:必须先切换到.class文件所在的目录,在使用命令行才能运行,即使我们的环境变量设置好了,也不行。

六、ClassLoder是在哪个位置上搜索HelloWorld.class的字节码文件的?

(1)默认情况下,ClassLoader从当前路径下加载xxx.class字节码文件

(2)配置classpath来指定搜索位置,classpath属于Java语言中的环境变量,不属于windows。

(3)方法:classpath=绝对路径(在windows中配置,名称要用classpath)

(4)一旦指定了classpath,那么类加载器只会去指定的路径下加载.class文件,不过这不是问题,我们在windows下配置多个路径不就行了。

(5)路径中的“.”代表当前目录;路径中的“..”代表上级目录。

七、源码:HelloWorld

地址:https://github.com/ruigege66/Java/blob/master/HelloWorld/

2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,后台回复”礼包“,获取大数据学习资料

 

转载于:https://www.cnblogs.com/ruigege0000/p/11148890.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

求最长回文串-从动态规划到马拉车之路(上)

要解决的问题: 给定一个字符串,要求求出这个字符串中的最长的回文串子串。 例子: cbddba的最长回文子串为 bddb cbdedba的最长回文子串为dbedb 由上面的例子可以看到,在考虑回文子串的问题时需要考虑奇偶性。因为奇回文关于中…

求最长回文串-从动态规划到马拉车之路(下)

预备知识&#xff1a; &#xff08;1&#xff09;在一个数轴上有两点i和j&#xff08;i<j&#xff09;关于点m对称&#xff0c;那么有 i 2m-j&#xff1b; 证明&#xff1a; 因为 i<j 且 i 和 j 关于 m 对称&#xff0c;那么有 &#xff08;i j&#xff09;/ 2 m 所…

Copy: 了解SQL Server锁争用:NOLOCK 和 ROWLOCK 的秘密

From http://blog.csdn.net/Atwind/archive/2007/10/19/1832844.aspx 关系型数据库&#xff0c;如SQL Server&#xff0c;使用锁来避免多用户修改数据时的并发冲突。当一组数据被某个用户锁定时&#xff0c;除非第一个用户结束修改并释放锁&#xff0c;否则其他用户就无法修改…

react-json渲染

在js文件内 //定义react组件 import React from react; import ReactDom from react-dom import ./components/assets/taobao.cssclass TaoBao extends React.Component{state{list:[{title:女装,href:javescript:;,hot:false,child:[{title:衬衫,href:javescript:;,hot:false}…

pageContext对象

这个对象代表页面上下文&#xff0c;该对象主要用于访问JSP之间的共享数据。使用pageContext可以访问page、request、session、application范围的变量。 pageContext是PageContext类的实例&#xff0c;它提供了如下两个方法来访问page、request、session、application范围的变量…

noi.ac #543 商店

我们考虑可并堆维护&#xff0c;从深到浅贪心选取。 用priority_queue启发式合并的话&#xff0c;是60pts: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<ct…

软件设计师--文件索引

问题&#xff08;题目&#xff09;如下图所示&#xff1a;这道题最中要的是理解什么是直接索引、一级间接索引、二级间接索引&#xff1a; 直接索引&#xff1a;地址项直接指向文件块 一级间接索引&#xff1a;地址项&#xff08;一层&#xff09;指向存放地址项&#xff08;二…

Floyd算法及其应用

Part I-Introduction Floyd算法是一种求图上多源最短路径的算法&#xff0c;适用于中小规模的图&#xff0c;思维简单易懂。 Floyd算法的实质是&#xff08;区间&#xff09;动态规划&#xff0c;在这里做一个简单的概述。 对于一个有\(n\)个结点的图&#xff0c; 令\(dis[i][j…

软件设计师--最早开始时间和最晚开始时间

题目如图所示&#xff0c;解法如下&#xff1a; 方法&#xff1a; 先求最早开始时间&#xff1a;A是开始节点&#xff0c;所以A的最早开始时间是0&#xff0c;并且最早开始时间等于最晚开始时间。等得到图中红色的部分。 其他节点的最早开始时间为以该节点作为弧头的所有有向…

软件设计师 --哈夫曼树的一个经典问题

题目如下&#xff1a;有很多人反应&#xff0c;他们怎么做都做不出正确的答案&#xff0c;结果发过他们画的哈夫曼树的图以后&#xff0c;发现图完全是错误的&#xff1b; 如下图所示&#xff1a;为什么错误的&#xff0c;因为在遇到有两个权重为17的树的时候&#xff0c;没有遵…

mini2440烧写nor flash

1. 安装Setup_JLinkARM_V440.exe 2. 打开JLINK ARM 3. File->Open Project&#xff0c;打开 s3c2440a_embedclub.jflash4. Options->Project settings... 选择 Flash&#xff0c;点击 Select flash device&#xff0c;选中开发板对应的 Nor Flash 芯片型号。比 如 S29AL0…

软件设计师--判定覆盖,判定条件覆盖,条件组合覆盖--一个栗子

针对上图的一个判断条件&#xff0c;在这里将分别讨论判定覆盖、判定条件覆盖、条件组合覆盖的情况&#xff1a; 设T1A>3,T2B>3;为该判定节点的两个子条件。 (一&#xff09;判定覆盖&#xff1a; 所谓的判定覆盖就是让判定的真分支和假分支各执行一次&#xff0c;只要…

python3 多继承搜索__init__方法的两种策略

继承情形一&#xff1a;测试代码如下&#xff1a; class A(object):def __init__(self):print(A)class B(object):def __init__(self):print(B)class C(A):def __init__(self):print(C)class D(B): def __init__(self):print(D)class E(C, D):pass执行当前代码 xE()&#xff0c…

Unity Shader 屏幕后效果——Bloom外发光

Bloom的原理很简单&#xff0c;主要是提取渲染图像中的亮部区域&#xff0c;并对亮部区域进行模糊处理&#xff0c;再与原始图像混合而成。 一般对亮部进行模糊处理的部分采用高斯模糊&#xff0c;关于高斯模糊&#xff0c;详见之前的另一篇博客&#xff1a; https://www.cnblo…

不要假装努力,结果不会陪你演戏!

转载于:https://www.cnblogs.com/strive-19970713/p/11171205.html

机器学习基石-作业二-第10题分析

题目如上图所示&#xff0c;答案是&#xff1a;&#xff1b;在网上看到的答案中有一个很好的解释就是说在一个n纬的欧几里德空间里&#xff0c;分别按照参数做一个垂直于每个轴的超平面&#xff0c;这些超平面能够打散这么多个点。首先我承认这个事实&#xff0c;具体的证明还没…

机器学习基石作业二中的DECISION_STUMP实现

概要&#xff1a;在林老的题目描述中&#xff0c;DECISION_STUMP&#xff08;其实就是“决策桩”&#xff0c;也就是只有一层的决策树&#xff09;。题目中提到了的选去是把属性&#xff08;一维的&#xff09;按照从小到大的顺序排列以后取两个挨着的值的平均值&#xff0c;网…

【MM系列】SAP 关于更改物料的价格控制类型

公众号&#xff1a;SAP Technical本文作者&#xff1a;matinal原文出处&#xff1a;http://www.cnblogs.com/SAPmatinal/ 原文链接&#xff1a;【MM系列】SAP 关于更改物料的价格控制类型前言部分 大家可以关注我的公众号&#xff0c;公众号里的排版更好&#xff0c;阅读更舒适…