Java 程序运行机制
Posted rongyupan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 程序运行机制相关的知识,希望对你有一定的参考价值。
Java 程序运行机制
运行过程
- 源文件 (a.java)
- Java 编译器
- 字节码文件(a.class)
- 进入 JRE ,分别执行 类装载器-->字节码校验器-->解释器
- 系统平台,执行.
注释
- JRE 中包含 JVM (JAVA虚拟机); 其中的字节码校验器也是 JAVA 安全性的一种体现.
- 也正是因为有 JVM 的存在, 使得 JAVA 具有挂平台的特性; JVM 是和运行环境 OS 相联系的.
- 计算机高级语言的类型主要有两种--编译型和解释型. JAVA 是两种类型的结合.
JDK, JRE, JVM
- 总体关系: JVM (sqsubseteq) JRE (sqsubseteq) JDK
- JVM: Java Virtual Machine. 用于执行 bytecode 字节码的 "虚拟计算机"; 如: JIT(Just In Time Compiler);
- JRE: Java Runtime Environment. "Java 运行时环境". 包含: JVM, 库函数,运行 Java 应用程序时所必须的文件. 如: java, javaw, libs, rt.jar;
- JDK: Java Development Kit. "Java 运行工具包". 包含: JRE, 程序编译器和调试器等用于程序开发的文件. 如: javac(将 .java 文件编译成 .class 字节码文件), jar, debugging, tools, javap;
第一个 JAVA 程序
- 一个 .java 文件可以包含多个 class, 但是只能对其中一个 class 声明 public. 在编译时,会生成多个 .class 文件.
- main 方法时 java 应用程序的入口, 有固定的书写格式
public static void main(String[] args) {...}
java命名规范
- 所有变量、方法、类名的命名原则:见名知意(也就要求我们区分词性,应该用动词还是名词命名)
- 类名:每个单词的首字母大写;如:Man;
- 方法名:第一个单词小写;从第二个单词开始首字母大写,我们称之为“驼峰原则”。如:eat(), eatFood();
- 类成员变量名:驼峰原则
- 局部变量:驼峰原则
- 常量:大写字母和下划线。如:MAX_VALUE;
- java声明规范: 一行只声明 1 个变量
入门小游戏
- 概述:整个游戏的代码量很小, 主要使用了两个 Java 图形类中的几个常用方法;
- 使用的 Java 库有
import java.awt.*
import java.swing.*
- 插入图片
Image image = Toolkit.getDefaultToolkit().getImage("ImagePath")
- 加载窗口
public class BallGame extends JFrame() {...}
- 很明显可以看出,这是继承了 JFrame 这个父类方法;
- 为了实现动画效果, 采用的方法是: 间隔固定时间, 重画窗口;
public class BallGame extends JFrame {
private Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
private Image desk = Toolkit.getDefaultToolkit().getImage("image/background.png");
private double ball_abscissa = 100;
private double ball_ordinate = 100;
private double degree = 3.14/3;
// Load Window
private void launchFrame() {
setSize(558, 320);
// 以屏幕的左顶点为原点,向右为x正方向,向下为y正方向
setLocation(50,50);
setVisible(true);
// 不断重画窗口
while (true) {
// repaint() 调用的 paint() 方法;
repaint();
// 间隔40ms重画一次窗口;
// 需要加上异常处理机制,不然 sleep 方法会报错;
try {
Thread.sleep(40);
} catch (Exception e) {
e.printStackTrace();
}
}
}
// Paint Window
public void paint(Graphics graphics) {
System.out.println("Once");
graphics.drawImage(desk, 0, 0, null);
graphics.drawImage(ball, (int)ball_abscissa, (int)ball_ordinate, null);
ball_abscissa += 10*Math.cos(degree);
ball_ordinate += 10*Math.sin(degree);
// 5 代表球的半径
// 40 代表窗口上边框的高度
// 检测上下边界
if (ball_ordinate < 5+40 || ball_ordinate > 320-5)
degree = -degree;
// 检测左右边界
if (ball_abscissa < 5 || ball_abscissa > 558-5)
degree = 3.14 - degree;
}
public static void main(String[] args) {
BallGame game = new BallGame();
game.launchFrame();
}
}
以上是关于Java 程序运行机制的主要内容,如果未能解决你的问题,请参考以下文章
如何在片段中使用 GetJsonFromUrlTask.java