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

大概可以分为三大部分

1.编写程序

2.编译程序

3.运行程序

1.编写程序

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

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

例如main函数

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

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

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

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

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

就像一块橡皮泥,

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

.编译程序

为什么要编译?

因为 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(前提要有环境)上运行也是一样的

JAVA运行机制的更多相关文章

  1. Java运行机制及相关术语

    JVM java虚拟机(Java Virtual Machine)JVM可以实现java程序的夸平台运行,即运行的操作平台各不相同 JVM基本原理 java运行机制 编译型语言(如C.C++) 源文件 ...

  2. Java入土---Java运行机制及IDEA的安装使用

    Java运行机制及IDEA的安装使用 java程序运行机制 计算机高级语言分为编译型语言跟解释型语言,而java同时具有两者的特点. 可能对于新手来说,什么是编译,什么是解释; 简单来说,编译就是将代 ...

  3. 关于Java运行机制

    目录 编译型语言与解释型语言的区别 编译型语言 解释型语言 细数两者之差别 Java的奇怪之处 Java的编译 Java的解释 具体机制 Java既是编译型语言,也是解释型语言. 首先先查找关于两种语 ...

  4. HelloWorld与java运行机制

    HelloWorld 新建文件夹存放代码 新建一个java文件 文件后缀为.java Hello.java 注意文件拓展名改为java文件 编写代码 public class Hello{ #类名 p ...

  5. java运行机制、Jdk版本及Java环境变量

    一.语言特性 计算机高级语言按程序的执行方式可分为:编译型和解释型两种.编译型的语言是指使用专门的编译器,针对特定的平台(操作系统)一次性翻译成被该平台硬件执行的机器码,并包装成该平台可执行性程序文件 ...

  6. 基础知识《零》---Java程序运行机制及运行过程

    Java运行机制 Java虚拟机(Java Virtual Machine):Java虚拟机可以理解成一个以字节码为机器指令的CPU:对于不同的运行平台,有不同的虚拟机:Java虚拟机机制屏蔽了底层运 ...

  7. Java基础介绍运行机制笔记

    1. 基础知识点图解 编程语言核心结构:变量.基本语法.分支.循环.数组.…… Java面向对象的核心逻辑:OOP.封装.继承.多态.接口…… 开发Java SE高级应用程序:异常.集合.I/O.多线 ...

  8. java运行环境和运行机制

    先来介绍三个概念: JVM----JAVA virtual machine      java虚拟机:对字节码提供相同的接口,对操作系统提供不同的接口,以适应各个OS JRE----JAVA runt ...

  9. 《疯狂Java讲义》(二)---- Java程序的运行机制和JVM

    1. 运行机制 Java源文件(*.java)-----使用javac编译----编译成*.class文件----使用java解释执行----特定平台的机器码 2. 原理 负责解释执行字节码文件的就是 ...

随机推荐

  1. poi3.8随记

    System.out.println(sheet.getFirstRowNum());//结果是0 System.out.println(sheet.getLastRowNum());//如果一共有3 ...

  2. Android 监听APP进入后台或切换到前台方案对比

    在我们开发的过程中,经常会遇到需要我们判断app进入后台,或者切换到前台的情况.比如我们想判断app切换到前台时,显示一个解锁界面,要求用户输入解锁密码才能继续进行操作:我们想判断app切换到后台,记 ...

  3. 厌烦了写findViewById 试试ButterKnife吧

    先上官网 http://jakewharton.github.io/butterknife/  和 https://github.com/JakeWharton/butterknife 配置开发环境 ...

  4. Struts2_用DomainModel接收参数

    用域模型接收参数 User类 package com.bjsxt.struts2.user.model; public class User { private String name; privat ...

  5. Azure进阶攻略丨如何驾驭罢工的Linux虚机网卡?

    很多人的生活中,流传着一个屡试不爽,据说可以解决任何问题的百宝锦囊: 所以经常可以听到类似这样的对话: -我的电脑咋上不去网了? -重启一下电脑. -还是不行呢! -重启一下路由器. -怎么还不行-_ ...

  6. Extjs4如何构造store基类

    目标:重写一个BaseStore的基类,它继承自Ext.data.Store基类. autoLoad:true/false 是否自动加载,true时创建store即自动加载,一般适合get方式:fal ...

  7. linux挂载和卸载NAS操作

    1.建立准备挂载NFS的目录,例如:cd /home/test,mkdir my_NFS_Catalog 2.挂接NFS至 /home/test/my_NFS_Catalog目录下(nas有两种格式: ...

  8. python绘图 matplotlib教程

    mark一个很好的python绘图教程 https://liam0205.me/2014/09/11/matplotlib-tutorial-zh-cn/

  9. Altium_Designer-怎么将“原理图的更改”更新到“pcb图”?

    打开原理图,直击菜单栏>>Design,选择第一项,>>Update PCB Document...在弹出的对话框里面选择执行更改即可将原理图更新到工程下面对应的PCB.也可以 ...

  10. QT Creater 配色方案及下载

    打开QT Creater的工具--选项--文本编辑器--字体和颜色,复制一份配色方案:Vim (dark) ->Vim (dark) (copy) 更改想更改的任何内容的配色.其中,修改后的文件 ...