‘壹’ 当使用 java 命令运行 .class 文件的时候,就相当于启动了一个 JVM 进程,如何理解
进程是操作系统资源管理的基本单位,运行.class文件和打开一个应用软件(当然有些软件可能对于多个进程)是类似的,都会创建一个操作系统进程。
你提到的"运行.class启动的JVM进程",实际上这个就是操作系统创建的进程;这个进程需要一定的资源(CPU、内存、磁盘等)来完成一定的事情,进程之间不会相互干扰,所以每个软件都需要操作系统分配进程。
至于你说的"JVM中有哪些进程",我理解应该是"JVM中有哪些"线程;建议去了解一下进程和线程之间的区别。我个人理解进程和线程的核心区别是:进程是资源管理、分配的基本单位,这个类比于公司;而线程是操作系统调度的基本单位,类比于公司员工。上级部门在分配资源的时候肯定是分配名额到企业,但是分配资源具体怎么使用,则需要由企业的员工来完成。
一般JVM中的线程由用户创建,但是JVM也会默认创建一些线程,比如垃圾回收线程。
‘贰’ java 命令行如何不进入文件目录编译 *.java 和运行 *.class
首先我觉得应该分析下楼主的提问。以下讨论都在windows系统下进行,因为如果是Linux系统实际上是没有后缀名的概念的(Linux下的后缀只是方便人看,系统是不认的,所以可以随便改的),也就没有楼主说的.java和 .class这种说法了。
那么我们一般的windows系统都会有多个分区(A/B/C/D....盘),在不同的目录下自然可以创建同名的文件,比如每个盘下面都创建一个Test.java,那么如果此时在任意目录下执行javac Test.java命令,很显然系统不可能知道你想要编译的到底是哪一个Test.java文件,所以肯定是不行的。于是windows命令行默认你需要操作的文件在当前目录下。也就是楼主说的进入到文件所在目录中,然后执行javac Test.java命令。
但是要想进入文件所在目录是比较麻烦的,因为cmd打开默认路径在C盘下,而我们的文件一般不会放在C盘下,所以我们一般至少需要两步操作才能将路径修改为我们想要的路径,比如我在H盘的Test文件夹下创建了Test.java文件,现在我想编译它:
综上,想要操作文件必须要指定路径,这是不能省略的,原因也说了。所不同的只是指定的方式简单还是复杂而已。
‘叁’ 如何在命令提示符窗口,利用java命令运行class文件
这是正常的,安装完JDK后,在DOS界面中输入“JAVAC”或“java”命令后如果会显示你上面截图中的内容,这就表明你的环境变量已经成功地配置完成了,而上面截图中的内容就是javac和java命令的使用方法,JDK常用的命令行工具如下:
javac:Java编译器,Java程序的编译工具,用来将Java程序的源文件编译成字节码文件,也就是.class文件。
java:Java解释器,解释和执行已经转换成字节码的Java应用程序。
jdb:Java调试器,可以设置断点调试Java程序,还可以检查变量,逐行执行程序。
javap:Java反汇编器,显示编译类文件中的方法和变量,还可以显示字节代码的含义。
javadoc:API文档生成器,可以生成HTML文档。
appletviewer:Applet小应用程序浏览器,用来解释并执行已经转换成字节码的小应用程序。
jar:JAR文件管理器,可以将类文件打包成一个文件。
编写并运行Java应用程序的三个步骤:
1 编写Java应用程序代码
2 进入MS-DOS界面进行代码的编译。编译的时候首先使用DOS中的cd命令,进入到代码所在的目录下。比如编写好的代码Hello.java放到了C:\MyJava目录下,就可以使用下面命令了完成了:
cd C:\MyJava
javac Hello.java
3 最后就是执行 java Hello 了。