Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?

Java 语言源于 1991 年 4 月,Sun 公司 James Gosling博士 领导的绿色计划(Green Project) 开始启动,此计划最初的目标是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个就是Java的前身: Oak (得名与Java创始人James Gosling办公室外的一棵橡树),但由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1995年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布,并提出“Write once, Run anywhere" 的口号

Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第1张图片
那么java是如何实现“Write once, Run anywhere" 的呢?

在java中,xxx.java文件通过javac编译器生成.class字节码文件,.class文件是由字节码组成的平台无关、面向JVM的文件。在不同的操作系统中有不同的JVM虚拟机,不同的JVM虚拟机需要遵循相同的JVM虚拟机规范(java虚拟机规范生成的字节码文件只有JVM可以识别),最后启动java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够理解的形式来运行。

同样,由于生成的文件都需要经过JVM虚拟机运行后再交给CPU去执行,导致java的运行效率较低。因此,在近些年来JVM也在不断的优化,比如:JIT(即时编译器),热点代码探测,让Java程序的执行效率大幅提高。

javac将源文件编译成字节码文件,而JIT即时编译器是将字节码指令编译成机器指令。
注意:在运行Java程序前,必须先安装好JDK(Java Development Kit即Java开发工具包), JDK里面就包含了javac和java工具,Java程序最终是在JVM(Java虚拟机)中运行的。

在介绍如何通过命令语句运行程序前,我们先来了解一个面试题目:

【面试题】JDK、JRE、JVM之间的关系?

JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。

JRE(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程序运行的所需环境。

JVM:Java虚拟机,运行Java代码。

Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第2张图片
JDK=JRE+开发工具集(javac等)
JRE=JVM+JavaSE标准类库

接下来介绍如何通过命令语句运行java中的第一个程序-Hello World!

第一步:创建一个xxx.java文件。新建一个文本文档,命名为HelloWorld(大驼峰),修改文件扩展名为.java(.txt->.java)。

Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第3张图片
Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第4张图片

第二步:在Notepad++中编写程序。java中所有的代码都要放在一个类中,且public修饰的类名必须与文件名一致,否则无法进行编译。最后点击ctrl+s保存。

Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第5张图片

第三步:通过命令运行程序。

首先,

打开命令行窗口(三种方式)

  1. 在搜索栏直接输入cmd,回车进入

  1. 长按win+R键,输入cmd,回车进入

Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第6张图片
  1. 在java文件所在位置处,长按shift键同时鼠标右键点击空白处,在弹出的窗口中选择“打开PowerShell”

Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第7张图片

接下来,在命令行窗口输入javac java源文件的路径及名字

Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第8张图片

直接输入文件名是找不到文件的,需要输入路径+文件名。javac默认是在cmd所处的目录下找对应的.java源文件,因此,java源文件如果在其他位置就需要输入完整的文件路径。

输入完整的文件路径有以下两种方式

  1. 直接复制文件路径

Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第9张图片
  1. 通过命令输入文件路径

输入f:进入F盘(不区分大小写)

Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第10张图片

输入dir列出当前目录中的所有文件

Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第11张图片

输入cd+文件名进入文件夹中(输入文件名点击tab键自动填充,在命令行窗口按向上键可以翻出历史命令

Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第12张图片

输入javac 文件名.java生成字节码文件

javac:将.java的源文件编译成.class的字节码文件,读取.java的源文件->词法分析->语法分析->语法分析及优化->按照字节码文件的规范->生成字节码文件。

输入java 文件名运行程序

Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第13张图片

运行时常见问题分析以及解决

Java是如何实现“Write once, Run anywhere“ 的呢?又如何使用命令语句来运行程序呢(附面试题)?_第14张图片
为什么会出现以上错误信息呢?

因为在源文件中出现了汉字,编译器无法识别。此时将命令语句输入为

javac -encoding UTF-8 文件名.java

Notepad++下载链接:Notepad++下载-2023最新版-代码编辑软件 (yesky.com)

你可能感兴趣的:(java基础,java,开发语言,jvm)