zoukankan      html  css  js  c++  java
  • JAVA运行机制

    这一篇我们来简单理解一下JAVA的运行机制

    大概可以分为三大部分

    1.编写程序

    2.编译程序

    3.运行程序

    1.编写程序

    编写程序就是我们前面说的源代码

    这些源代码都有特殊的语法

    例如main函数

    他是jdk中一个比较特殊的函数

    他必须要使用特定的语法来编写

    (在前面加上 public  等关键字来修饰)

    源代码就像是程序的灵魂,

    程序的实现是由源代码来就决定的

    就像一块橡皮泥,

    你想把它变成什么样子完成由你来决定

    2.编译程序

    为什么要编译?

    因为 JAVA和大多数语言一样是一种高级语言

    我们编写好的代码都被保存成为一个.java的文件

    然而我们计算机并不认识(不能运行)这些文件

    这就需要把我们编写好的文件(源代码)变成计算机可以运行的机器码(二进制码)

    这个过程就叫做编译

    注意:编译就是我们前面用到的 javac 命令

    它可以将.java文件编译成一个.class文件(字节码)

    并且class文件是一种与平台无关的文件

    3.运行程序

    上面说到把源代码编译成字节码。

    那么就到运行字节码了

    其实我们的JAVA语言有一个非常大的特点就是跨平台

    用他们话说就是:一次编译,到处运行

    前面说过class文件是一种与平台无关的文件

    它也不可直接运行

    那我们怎么运行呢?

    这就要讲到一个东西jvm(JAVA虚拟机)

    它可以将我们的class文件解释成计算机可以运行的二进制

    那我们的jvm是如何运行的呢

    我们都知道所有程序只有在内存中才能运行

    所以我们在运行JAVA文件的时候(java命令)

    首先会在内存中创建一个jvm

    然后把硬盘里的class文件加载进来

    利用jvm去解释这些class文件

    最后运行程序。

    PS:为什么说JAVA跨平台

    1.因为编译后的class文件只能被jvm所解释

    2.任何平台只要有jvm(JAVA运行环境)就可以解释这个class文件

    3.无论什么平台解释同一个class文件最后的结果都是一样的

    也就是说我用Windows系统编译好的class文件,拿来Android(前提要有环境)上运行也是一样的

  • 相关阅读:
    反转链表
    fatal error LNK1104: 无法打开文件“lua51.lib”
    《cocos2d-x游戏开发之旅》问题2016-10-7
    c++中sizeof的用法
    cocos2d-x-3.0beta2创建项目遇到“UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 9: ordinal not in range(128)”的问题
    C++中的explicit关键字的用法
    c++中双冒号的作用
    构造函数与析构函数
    61. Binary Tree Inorder Traversal
    60-Lowest Common Ancestor of a Binary Search Tree
  • 原文地址:https://www.cnblogs.com/menghujava/p/9587844.html
Copyright © 2011-2022 走看看