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 只有好处,并没有坏处。


目录
相关文章
|
5月前
|
Arthas 存储 监控
Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)
Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)
331 8
|
6月前
|
监控 数据可视化 Java
调试技巧 - 用Linux命令排查Java问题
总的来说,使用Linux命令来排查Java问题,需要一定的实践经验和理论知识。然而,只要我们愿意花时间深入了解这些工具,我们就能够熟练地使用它们来分析和解决问题。此外,这些工具只是帮助我们定位问题,真正解决问题需要我们对Java和JVM有深入的理解,并能够读懂和分析代码。
392 13
|
8月前
|
Java
Java中执行命令并使用指定配置文件的最佳实践
通过本文的介绍,您可以了解如何在Java中使用 `ProcessBuilder`执行系统命令,并通过指定配置文件、设置环境变量和重定向输入输出流来控制命令的行为。通过这些最佳实践,可以确保您的Java应用程序在执行系统命令时更加健壮和灵活。
200 7
|
8月前
|
消息中间件 存储 NoSQL
java连接redis和基础操作命令
通过以上内容,您可以掌握在Java中连接Redis以及进行基础操作的基本方法,进而在实际项目中灵活应用。
439 30
|
11月前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
221 1
|
Java Windows
JAVA 常用的 DOS 命令
【10月更文挑战第15天】DOS 命令是 Java 开发中不可或缺的工具,掌握这些命令可以提高开发效率和操作便利性。
213 63
|
运维 监控 Java
使用jps命令查看Java进程
`jps`是Java开发者和系统管理员的得力助手,它简化了Java进程监控的过程,使得快速检查应用运行状态变得轻而易举。通过合理利用其提供的参数,可以高效地进行故障排查、性能监控及日常管理任务,确保Java应用稳定运行。
847 2
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
354 6
|
Java Windows
【Azure Developer】Windows中通过pslist命令查看到Java进程和线程信息,但为什么和代码中打印出来的进程号不一致呢?
【Azure Developer】Windows中通过pslist命令查看到Java进程和线程信息,但为什么和代码中打印出来的进程号不一致呢?
189 1
|
监控 JavaScript 前端开发
JAVA常用的DOS命令
JAVA常用的DOS命令