当前位置:首页 » 编程软件 » java编译器会加载哪些东西

java编译器会加载哪些东西

发布时间: 2023-06-02 06:26:47

‘壹’ 简述java程序的编辑编译和运行过程

第一步(编译): 创建完源文件之后,程序会先被编译为.class文件。Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用,这个有点象make。

如果java编译器在指定目录下找不到该类所其依赖的类的.class文件或者.java源文件的话,编译器话报“cant find symbol”的错误。

第二步(运行):java类运行的过程大概可分为两个过程:1、类的加载 2、类的执行。需要说明的是:JVM主要在程序第一次主动使用类的时候,才会去加载该类。也就是说,JVM并不是在一开始就把一个程序就所有的类都加载到内存中,而是到不得不用的时候才把它加载进来,而且只加载一次。

特别说明:java类中所有public和protected的实例方法都采用动态绑定机制,所有私有方法、静态方法、构造器及初始化方法<clinit>都是采用静态绑定机制。而使用动态绑定机制的时候会用到方法表,静态绑定时并不会用到。

(1)java编译器会加载哪些东西扩展阅读:

Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程。

Java代码编译:是由Java源码编译器来完成;

Java字节码的执行:是由JVM执行引擎来完成

Java程序从源文件创建到程序运行要经过两大步骤:

1、源文件由编译器编译成字节码(ByteCode)

2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言( "semi-interpreted" language)。

‘贰’ Java中的类是什么时候被加载到虚拟机

这个问题java的比较核心的一个难题,我就针对问题做简要回答,不做深入讨论了:
1、编译和运行概念要搞清:编译即javac的过程,负责将.java文件compile成.class文件,主要是类型、格式检查与编译成字节码文件,而加载是指java *的过程,将.class文件加载到内存中去解释执行,即运行的时候才会有加载一说。

2、类的加载时机,肯定是在运行时,但并不是一次性全部加载,而是按需动态,依靠反射来实现动态加载,一般来说一个class只会被加载一次,之后就会从jvm的class实例的缓存中获取,谁用谁取就可以了,不会再去文件系统中加载.class文件了。

明白1,2点就够了,再深入要等一段才能明白了。

‘叁’ Java 编译做哪些工作

我认为是这样的:
1.首先java有反射机制,执行编译时会尝试找到JRE安装所在目录,然后找到jvm.dll,接着启动JVM进行初始化动作,产生3个类加载器,用来将所用到的类文件加载到内存中
2.会自动导入java.lang下的类文件和你想导入的类文件
3.会查看你的代码中是否有未处理的可控式异常
4.JVM会查看你写的代码是否符合语法
5.JVM会将你所写的java文件编译为与系统平台无关的字节码文件,也就是.class文件
总之就是一些初始化的动作

‘肆’ java编译器的功能是什么编译过程中主要完成哪些操作

主要是把.java文件编译成.class文件,在编译的过程中,初始化static成员,

‘伍’ 请问java程序在编译和运行时有什么区别,系统分别都会做什么

Java程序的编译
使用命令: javac *.java
编译时,会将写的.java文件(高级语言),生成相应的字节码文件.class文件(二进制代码)
Java程序的执行
使用命令:java *
流程: 加载到 -- 连接 ---- 初始化 ...
运行时,首先会由将相应的.class文件,加载到内存中,并验证.class文件的有效性,将相应类的Class加载到内存中,并对类中的静态变量进行初始化操作,然后就由 主 类开始执行
具体的可以看一下 JVM 类加载过程,以及jVM的内存分配机制

‘陆’ java程序经编译后会产生什么

产生:byte codex0dx0ax0dx0aJava字节码是Java源文件编译产生的中间文件x0dx0ajava虚拟机是可运行java字节码的假想计悔昌蔽算机 java的碧州跨平台性也是相对与其他编程语言而言的x0dx0a先介绍一下c语言的编译过程吧先是C语言源程序 也就是c的文件经过C编译程序编译后,生成windows可执行文件exe文件,然后在windows中执行。再介绍java的编译过程先是java源程序扩展名为java的文件,由java编译程序将java字节码文件,就是class文件然后在java虚拟机中执行。机器码是由CPU来执行的。Java编译后是字节码, 电脑只能运行机器码。Java在运行的时候把字节码变成机器码。C/迅袜C++在编译的时候直接编译成机器码。

热点内容
股票走势预测算法 发布:2025-02-12 21:45:06 浏览:769
游戏lua脚本 发布:2025-02-12 21:45:01 浏览:918
怎么下载安卓版的光子助手 发布:2025-02-12 21:43:45 浏览:454
oppor7s怎么取消锁屏密码 发布:2025-02-12 21:43:31 浏览:595
我的世界服务器甜蜜小镇 发布:2025-02-12 21:41:08 浏览:75
ftp影响数据交换 发布:2025-02-12 21:27:18 浏览:387
编译原理与实现pdf 发布:2025-02-12 21:27:14 浏览:42
比格云服务器好用不 发布:2025-02-12 21:23:00 浏览:220
砍价php 发布:2025-02-12 21:21:17 浏览:755
c语言函数返回值是数组 发布:2025-02-12 21:21:16 浏览:699