java的加载与运行
jdk中有一个javac.exe(java编译器)
*Java程序的运行包括两非常重要的阶段
-编译阶段
-运行阶段
*编译阶段
-主要任务是检查Java源程序是否符合Java语法
符合Java语法则能够生成正常的字节码文件(xx.class)
不符合Java语法规则则无法生成字节码文件
-字节码文件中不是纯粹的二进制,这种文件无法在操作系统当中直接执行。
-编译阶段的过程:
*程序员需要在硬盘的某个位置随意新建一个.java扩展名的文件,
该文件被称为Java源文件,源文件当中编写的是Java源代码/源程序。
而这个源程序是不能随意编写,必须符合Java语法规则<Java语法规则是需要记忆的>
*Java程序员需要使用JDK当中自带的javac.exe命令进行Java程序的编译。
javac怎么用呢?在哪用呢?
-在DOS命令窗口中使用
-javac的使用规则:
【javac java源文件的路径】
javac是一个java编译器工具/命令。
*一个java源文件可以编译生成多个.class文件
*字节码文件/class文件是最终要执行的文件,所以说class文件生成之后,java源文件删除并不会影响java程序的执行。
但是一般java源程序不要删除,因为class文件最终执行效果可能不是我们想要的,那么这个时候需要回头重新修改java源程序,
然后将java源程序重新编译生成新的class文件,然后在运行这个class程序,生成新的效果。
*编译结束之后,可以将class文件拷贝到其他操作系统当中运行。【跨平台】
*运行阶段
-JDK安装之后。除了自带一个javac.exe之外,还有另一个工具/命令,叫做java.exe,java.exe命令主要负责运行阶段
-java.exe在哪里用?怎么用?
-在DOS窗口使用
-java.exe怎么用呢?
【java 类名】
例如:
磁盘上有一个A.class ,那么就这么用:java A
磁盘上有一个B.class ,那么就这么用:java B
千万要注意:不要写成这样:java A.class【这种方式是错误的,大家记住】
-运行阶段的过程是:
*打开DOS命令窗口
*输入:java A
*java.exe命令会启动Java虚拟机(JVM),JVM会启动类加载器ClassLoader
*ClassLoader会去硬盘上搜索A.class文件,找到该文件则将该字节码文件装载到JVM当中。
*JVM将A.class字节码文件解释成二进制1010101010这样的数据。
*然后操作系统执行二进制和底层硬件平台进行交互。
java的加载与运行的更多相关文章
- java热加载和热部署
JAVA热部署和热加载 联系与区别 Java热部署与热加载的联系 1.不重启服务器编译/部署项目 2.基于Java的类加载器实现 区别 部署方式 热部署在服务器运行时重新部署项目 热加载在运行时重新加 ...
- Java ClassLoader加载机制理解
今天看到了一篇介绍Java ClassLoader加载机器的文章, 才发觉一直来自己的肤浅, 好好地给补了一课, 不得不存档! 原文地址: http://www.blogjava.net/lhulcn ...
- 【设计模式】C++单例模式的几种写法——Java自动加载内部类对象,C++怎么破?
单例模式是最简单的设计模式,就让我像玩简单的游戏一样写下去吧. v1: 简单模式 和这个版本有过一面之缘,但不敢苟同. class Singleton { private: Singleton() { ...
- 原来热加载如此简单,手动写一个 Java 热加载吧
1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环 ...
- java的加载与执行原理剖析
到目前为止,我们接触过的重点术语,总结一下: Java体系的技术被划分为三大块: JavaSE:标准版 JavaEE:企业版 JavaME:微型版 安装JDK之后: JDK:java开发工具箱 JRE ...
- C#如何加载程序运行目录外的程序集
我们的应用程序部署的时候,目录结构一般不会只有运行程序的目录这一个,我们可能在运行目录下建子目录,也可能使用System32目录,也可能使用其它第三方的程序集..Net程序集 首先会在GAC中搜索相应 ...
- java class加载机制及对象生成机制
java class加载机制及对象生成机制 当使用到某个类,但该类还未初始化,未加载到内存中时会经历类加载.链接.初始化三个步骤完成类的初始化.需要注意的是类的初始化和链接的顺序有可能是互换的. Cl ...
- java用户界面——加载图片 jpg GIF
java用户界面--加载图片 jpg GIF 代码如下: package day08; import java.awt.GridLayout; import javax.swing.Icon;impo ...
- 未能加载文件或程序集“BLL”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。
今天使用VS2012创建项目的时候,考虑到项目中代码的重用性以及清晰简洁性,搭建了一个三层架构,但是在项目运行的时候,总是报错: “未能加载文件或程序集“BLL”或它的某一个依赖项.生成此程序集的运行 ...
随机推荐
- Linux:Apache服务器的搭建
下载安装并启动apache服务 安装apache服务 yum install -y httpd 启动apache服务 systemctl start httpd.service apache服务器的目 ...
- Vue中的导航守卫(路由守卫)
当做Vue-cli项目的时候感觉在路由跳转前做一些验证,比如登录验证,是网站中的普遍需求. 对此,vue-router 提供的 beforeEach可以方便地实现全局导航守卫(navigation-g ...
- linux 软件包的组成部分
软件包的组成部分 1. 二进制文件 比如:/bin, /sbin & /usr/bin, /usr/sbin & /usr/local/bin, /usr/local/sbin 2.库 ...
- txt换行追加写入
with open(negative_txt, 'a') as f: patch_name1 = patch_name + '\n' f.write(patch_name1)
- R语言-laohuji
项目三-tiger机 说明:每玩一次老ji游戏需要花费一元钱.钻石符号(DD)可以百搭,并且能够将最终的金额加倍. 任务分解: 任务分解的步骤: 将复杂的任务分解为一些简单的子任务: 使用实例: 用通 ...
- vim 下修改tab键为四个空格
最近在运行python的时候,发现tab键在在运行过程中无法使用,报错:IndentationError: unindent does not match any outer indentation ...
- 【linux运维】linux系统上忘记密码如何操作
目录 红帽系统忘记密码操作 红帽系统设置ip,主机名 centos系统忘记密码操作 一.红帽系统忘记密码操作 1)再出现以下界面后按键盘e键 2)进入以下界面后,再次按e键 3)使用上下键选择第2项或 ...
- mysql中的ifnull()函数判断空值
我们知道,在不同的数据库引擎中,内置函数的实现.命名都是存在差异的,如果经常切换使用这几个数据库引擎的话,很容易会将这些函数弄混淆. 比如说判断空值的函数,在Oracle中是NVL()函数.NVL2( ...
- 人生苦短?试试Groovy进行单元测试
如果您今天正在编程,那么您很可能听说过单元测试或测试驱动的开发过程.我还没有遇到一个既没有听说过又没有听说过单元测试并不重要的程序员.在随意的讨论中,大多数程序员似乎认为单元测试非常重要. 但是,当我 ...
- 数据库——SQL-SERVER练习(4) 建表及数据完整性
1. 输入下图的语句, 建立学生表STU. CREATE TABLE STU ( SNO NUMERIC() PRIMARY KEY, SNANE CHAR() NOT NULL, SSEX CHAR ...