zoukankan      html  css  js  c++  java
  • Java 程序运行机制

    Java 程序运行机制

    运行过程

    1. 源文件 (a.java)
    2. Java 编译器
    3. 字节码文件(a.class)
    4. 进入 JRE ,分别执行 类装载器-->字节码校验器-->解释器
    5. 系统平台,执行.

    注释

    • 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 个变量

    入门小游戏

    1. 概述:整个游戏的代码量很小, 主要使用了两个 Java 图形类中的几个常用方法;
    2. 使用的 Java 库有
      • import java.awt.*
      • import java.swing.*
    3. 插入图片
      • Image image = Toolkit.getDefaultToolkit().getImage("ImagePath")
    4. 加载窗口
      • 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();
        }
      }
    
  • 相关阅读:
    VS2005 DataGridView 和 GirdView 横向大比拼
    表结构信息查询
    在自己的网页中嵌入搜索引擎
    自定义AJAX请求获取地图范围
    oracle远程连接配置
    oracle账户被锁定问题
    JDK环境配置
    PythonWin运行出错解决办法
    HDF库的调试过程
    ajax入门详解
  • 原文地址:https://www.cnblogs.com/rongyupan/p/12670443.html
Copyright © 2011-2022 走看看