javac 和 java 命令

简介: javac 和 java 命令

Java 程序



我们创建一个 " .java " 文件。

并在文件中写入下面的代码,一个 Student 类,一个 Hello 类。


如何创建一个 " .java " 文件 ?

很简单,先创建一个 " .txt " 的文本文档,然后往里面写入代码,再将后缀改为 " .java " 即可。这里应该注意:文件名需要与代码中的 public class 类的类名要相同。


d663dbeab66a4a419c625bdd8db0be52.png


javac 命令



命令格式:


javac  ".java 文件 "


在 " Hello.java " 文件存在的目录中,通过 Powershell 或 cmd 打开。

先说 Powershell,打开方式:【Shift】+ 鼠标右键。

如下图所示:


b19fc3ac9bbf4f61959a5a0fabade484.png


如下图所示,通过 javac 命令后,可以看到,刚刚的 " .java " 文件下的目录,出现了两个 " .class " 文件。而这个由 " .java " 到 " .class " 的过程,我们称之为 " 编译 ".


可以看到 javac 命令,编译是通过按类来的,代码中有几个类,编译出来的文件就有几个 " .class ".


f568c910786643fb8c30caffaedba62c.png


cmd 窗口我就不演示了,其实是一样的。打开方式:【Win】+ 【R】,输入 CMD.

只不过 cmd 窗口需要通过 cd 命令来切换 " 当前目录 ".


如下图所示:


15d561a3176e4855a1552a00123e361e.png


java 命令



命令格式:


java 类名


java 命令就是用来运行刚刚生成的 " .class " 文件的,我们需要运行哪个类,就 java 哪个类,可以看到,运行后的结果和我们平时在 " IDEA 终端 " 效果差不多。


84501f6376e640d8bc9732970bb55e4b.png


流程



Java 程序就是我们平时写的 Java 代码,计算机将我们的 Java 代码以 " .java " 文件的格式保存至磁盘上。


Java 字节码文件实际上就是一个经编译后的 " .class " 文件,里面的数据都是二进制,当我们通过记事本打开的时候,可以发现是乱码。


JVM 拿到 " .class " 文件,就可以进行执行其中的字节码。这一步骤称为 " 运行 ",通过 java 命令 来操作。


6426241c8b694f96a045d982085fa80b.png


注意



JDK:Java 开发工具包( Java Developer’s Kit )

JRE:Java 运行环境( Java Runtime Environment )

JVM:Java 虚拟机( Java Virtual Machine )


因为我们编写的 Java 代码最终是在 JVM 上运行的,所以才屏蔽了 " 操作系统的差异性 "。 然而,光有 JVM 自己,什么也干不了,你需要给它提供生产原料 " .class文件 "。仅仅是 JVM,是无法完成一次编译,处处运行的。它需要一个基本的类库,比如怎么操作文件、怎么连接网络等等。JVM 标准加上一大堆基础类库,就组成了 Java 的运行时环境,也就是我们常说的 JRE. 然而,JDK 就更为庞大了,它还提供了一些非常好用的小工具,比如 " javac、java、jar " 等等…


我们必须必须明确,javac 和 java 这两个命令是 JDK 提供的,此外,上述的这一系列的过程,同样需要依赖 JDK、JRE、JVM.


而 JDK 是包含 JRE 和 JVM 的,所以,我们可以通过 Oracle 官网下载 JDK 即可。下载的过程我就不展示了,B 站有很多教程。JVM 其实就是一个软件,它底层是由 C / C++ 编写的。


9be91475a69a43f780d9a05ce787c720.png


总结



通过本篇博客,我们就能够明白 Java 的 " 跨平台 " 特性了,因为我们编写的 Java 代码最终是在 JVM 上运行的,所以才屏蔽了 " 操作系统的差异性 "。此外,更能理解一个 Java 程序是怎么从编译到最终的运行结果的。


然而,我们平时使用的都是 IDEA,它有效地解决了上述的很多麻烦事,但 IDEA 依旧需要基于 JDK 才能进行开发。IDEA 将我们平时写的代码,最终其实都是会编译成 " .class " 文件,然后放在了【target】目录下,所以,JVM 依然只认识 " .class " 文件,才能运行。只是我们平时点击 " 运行 " 按钮的时候,感知不到而已。


我认为,理解编译和运行的原理,理解 javac 和 java 命令,对我们认识 Java 只有好处,并没有坏处。


目录
相关文章
|
1月前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
41 1
|
2月前
|
Java Windows
JAVA 常用的 DOS 命令
【10月更文挑战第15天】DOS 命令是 Java 开发中不可或缺的工具,掌握这些命令可以提高开发效率和操作便利性。
42 3
|
2月前
|
运维 监控 Java
使用jps命令查看Java进程
`jps`是Java开发者和系统管理员的得力助手,它简化了Java进程监控的过程,使得快速检查应用运行状态变得轻而易举。通过合理利用其提供的参数,可以高效地进行故障排查、性能监控及日常管理任务,确保Java应用稳定运行。
100 2
|
3月前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
142 5
|
4月前
|
监控 JavaScript 前端开发
JAVA常用的DOS命令
JAVA常用的DOS命令
|
4月前
|
Java Windows
【Azure Developer】Windows中通过pslist命令查看到Java进程和线程信息,但为什么和代码中打印出来的进程号不一致呢?
【Azure Developer】Windows中通过pslist命令查看到Java进程和线程信息,但为什么和代码中打印出来的进程号不一致呢?
|
5月前
|
Java 运维
开发与运维命令问题之使用jstack命令查看Java进程的线程栈如何解决
开发与运维命令问题之使用jstack命令查看Java进程的线程栈如何解决
70 2
|
6月前
|
Java 编译器
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
59 1
|
5月前
|
NoSQL Java 数据库
数据库问题之使用jmap命令获取Java堆信息如何解决
数据库问题之使用jmap命令获取Java堆信息如何解决
36 0
|
5月前
|
存储 Java
Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
下一篇
DataWorks