JAVA运行机制
这一篇我们来简单理解一下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运行机制的更多相关文章
- Java运行机制及相关术语
JVM java虚拟机(Java Virtual Machine)JVM可以实现java程序的夸平台运行,即运行的操作平台各不相同 JVM基本原理 java运行机制 编译型语言(如C.C++) 源文件 ...
- Java入土---Java运行机制及IDEA的安装使用
Java运行机制及IDEA的安装使用 java程序运行机制 计算机高级语言分为编译型语言跟解释型语言,而java同时具有两者的特点. 可能对于新手来说,什么是编译,什么是解释; 简单来说,编译就是将代 ...
- 关于Java运行机制
目录 编译型语言与解释型语言的区别 编译型语言 解释型语言 细数两者之差别 Java的奇怪之处 Java的编译 Java的解释 具体机制 Java既是编译型语言,也是解释型语言. 首先先查找关于两种语 ...
- HelloWorld与java运行机制
HelloWorld 新建文件夹存放代码 新建一个java文件 文件后缀为.java Hello.java 注意文件拓展名改为java文件 编写代码 public class Hello{ #类名 p ...
- java运行机制、Jdk版本及Java环境变量
一.语言特性 计算机高级语言按程序的执行方式可分为:编译型和解释型两种.编译型的语言是指使用专门的编译器,针对特定的平台(操作系统)一次性翻译成被该平台硬件执行的机器码,并包装成该平台可执行性程序文件 ...
- 基础知识《零》---Java程序运行机制及运行过程
Java运行机制 Java虚拟机(Java Virtual Machine):Java虚拟机可以理解成一个以字节码为机器指令的CPU:对于不同的运行平台,有不同的虚拟机:Java虚拟机机制屏蔽了底层运 ...
- Java基础介绍运行机制笔记
1. 基础知识点图解 编程语言核心结构:变量.基本语法.分支.循环.数组.…… Java面向对象的核心逻辑:OOP.封装.继承.多态.接口…… 开发Java SE高级应用程序:异常.集合.I/O.多线 ...
- java运行环境和运行机制
先来介绍三个概念: JVM----JAVA virtual machine java虚拟机:对字节码提供相同的接口,对操作系统提供不同的接口,以适应各个OS JRE----JAVA runt ...
- 《疯狂Java讲义》(二)---- Java程序的运行机制和JVM
1. 运行机制 Java源文件(*.java)-----使用javac编译----编译成*.class文件----使用java解释执行----特定平台的机器码 2. 原理 负责解释执行字节码文件的就是 ...
随机推荐
- 关于修改test9ui布局的一些小笔记
今早,上IT修真园里,看到师兄大娃很负责任的将我任务里的项目的排版,3,6,7的列了出来. 谢谢师兄,那么负责任的照看师弟. 言归正传,我一开始,直接按照师兄的指示,选择性的优先修改底部.效果也达到了 ...
- memcached 的配置及 spymemcached 客户端简单使用
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.同时也可以用作不同系统之间的数据共享.应用比较广泛.下面介绍一下环境的memcached环境的搭建及简单实 ...
- Spark job执行流程消息图
Spark job执行流程消息图 1.介绍
- ansible安装php
环境:Centos 7.x 独立php-fpm.conf配置文件 [root@master playbook]# tree php php ├── php-fpm.conf └── php.yml p ...
- 前端高质量知识(二)-JS执行上下文(执行环境)详细图解Script
先随便放张图 我们在JS学习初期或者面试的时候常常会遇到考核变量提升的思考题.比如先来一个简单一点的. console.log(a); // 这里会打印出什么? var a = 20; PS: 变量提 ...
- DP上课覆盖知识点,POJ(1513)
题目链接:http://poj.org/problem?id=1513 解题报告: 思路: 知识点从第二个开始扫,递推表达式是:minlec[i]=min(minlec[k])+1,并且要保证,tim ...
- AJAX(二):HTTP头部信息
每个http请求和响应都会带有相应都头部信息,其中有的对开发人员有用,有的页没有什么用默认情况下,发送xhr请求的同时,还有发送下列头部信息 Accept:浏览器能够处理的内容类型 Accept-Ch ...
- 大数据(1)初始hadoop
1.hadoop模型如下: (上图为Hadoop1.x的布局) (Hadoop2.x较Hadoop1.x,多了YARN) Hadoop框架,是一个庞大的生态系统. 或者我们可以这样理解: 可以把整个体 ...
- Getting aCC Error :name followed by "::" must be a class or namespace name"
Getting aCC Error :name followed by "::" must be a class or namespace name" 原始是这样子的: ...
- Fluent经典问题答疑
原文链接1 原文链接28 什么叫边界条件?有何物理意义?它与初始条件有什么关系? 边界条件与初始条件是控制方程有确定解的前提. 边界条件是在求解区域的边界上所求解的变量或其导数随时间和地点的变化规律. ...