Java的运行与工作原理
大家好,我是27岁的小学生liu__peng;
—
— 分享笔记第1天
Java运行与工作原理>
—
— 人和人之间的交流是通过相同的语言进行交流,而人和机器的交流是通过各种编程语言实现的,Java就是其中之一。
— 我们通过编程软件输入具有含有一定意义的代码,机器将这些代码存储成.java的文件夹,比如HelloWorld.java,下面就是学习的第一段代码:
/*
* 用来定义一个包:定位类(包名+类名)
* package 用来定义包的关键字
* cn.tedu.hello 包名 全小写+公司域名倒着写
* ; Java 语句的结束符
*/
package cn.tedu.hello;
/*
* 用来定义一个类
* public ----公共的,作为类的修饰符,修饰类的可见范围
* class ----用来定义类的关键字
* HelloWorld ---- 类名,符合驼峰命名法
* {代码.... }
*/
public class HelloWorld {
/*
* 用来定义主方法/主函数:是程序的入口
* public -----公共的,作为方法的修饰符
* static -----静态的,说明方法是静态的
* void ----空/无 说明方法的返回值是空的
* main ----方法名
* ( ) ----是方法的标识符
* String[] args ---方法的参数
* {代码/方法体}
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* 向控制台输出制定数据
* System ---要发出系统指令
* out --- 向外输出的我动作
* println--- 打印后换行
* () ----方法的标识符
* hello java ---方法的参数
* ; Java--- 语句的结束符
*/
System.out.println("hello java");
}
}
— 下一步就是编译的过程,Java源代码(.Java)经过java编译器(javac.exe)编译后,不会直接转换为机器码,而是转化成一种中间格式,成为字节码(.class),字节码再经过java虚拟机(JVM)转化成特定的CPU架构的机器码。也就是这个中间物,java才有了所谓的跨平台。
JDK JRE JVM的区别
— JDK包含JRE JRE包含JVM
JVM(虚拟机):java virtual machine
—&nbdp; Java虚拟机 用来解释执行字节码文件(.class文件)的
— ;JVM是JRE的一部分,它是一个虚拟出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
— ==JVM是java实现跨平台最核心的部分,==所以的java程序会首先被编译为.class的类文件,JVM的主要工作是解释自己的指令集(字节码)并映射到本地的CPU的指令集或OS的系统调用。Java面对不同操作系统使用不同的虚拟机,依次实现了跨平台。JVM对上层的java源文件是不关心的,它关心的只是源文件生成的类文件。
**JRE:java runtime environment **
— Java运行时环境,针对java用户
— 在java平台下,所有的java程序都需要在JRE下才能运行,只有JVM还不能进行class的执行,因为解释class的时候。JVM需要调用解释所需要的类库lib。JRE里面有两个文件夹bin和lib,这里可以认为bin就是JVM,lib就是所需要的类库,而JVM和lib合起来就称为JRE
— JRE包括JVM和JAVA核心类库与支持文件。与JDK不同,它不包含开发工具—编译器,调试器和其他工具。
JDK: java development kit
— java开发工具包,用来开发java程序的,针对java开发者
— JDK是整个java的核心,包括了java的运行环境(Java Runtime Environment)、一堆java工具(javac、java、jdb等)和java基础的类库(java API包括rt.jar)
— Java API 是java的应用程序接口,里面有很多已经写好的java class ,包括一些重要的语言结构以及基本图形,网络和文件I/O等等,可以直接调用。
总结
— 有JVM就可以解释执行字节码文件(.class)
JVM解释执行这些字节码文件的时候需要调用类库,如果没有这些类库JVM就不能正确的执行字节码文件。JVM+类库=JRE
有了JRE就可以正确的执行java程序了,但是光有JRE不能开放java程序,所以JRE+开发工具=JDK。有了JDK就可同时开发,执行JRE
— 在这个地方我还有一个疑问:java虚拟机(JVM)本身是跨平台的吗?
—
—
—
27岁小学生的每日必须,志同道合的你,点个赞,关注一波呗!互相学习,共同进步
—
整理不易,三连击来一波。 2020.12.10版本
如有错误请大家指出,谢谢~
大家好,我是27岁的小学生liu__peng,请大家多多关注!