javac命令用于将Java源代码编译成Java字节码文件(.class文件),以便在Java虚拟机(JVM)上运行。
javac [options] source_file(s)
javac HelloWorld.java
options:javac命令提供了多个选项来控制编译过程和生成的字节码文件的行为。可以使用javac -help查看所有选项及其说明。
source_file(s):指定要编译的源代码文件的路径。可以使用通配符(*)来编译整个文件夹中的所有Java文件。例如,javac *.java会同时编译当前目录中的所有Java文件。
-d directory:指定编译生成的.class文件的输出目录。
-classpath path:指定可供编译器使用的类路径。
-source version:指定要编译的Java源代码的版本(例如,-source 8表示使用Java 8的语言功能进行编译)。
-target version:指定要生成的字节码文件的Java版本(例如,-target 1.8表示要生成适用于Java 8的字节码文件)。
-Xlint:启用编译器警告消息。
-verbose:显示编译器的详细输出信息。
javac命令是编写和编译Java代码的必备工具之一。掌握其用法可以帮助开发人员更好地进行Java开发和调试。
java命令用于启动Java虚拟机并执行Java程序。使用java命令可以在命令行中直接运行编译后的Java程序。
java [options] class [args...]
java HelloWorld
options:Java命令提供了多个选项来控制Java虚拟机和应用程序的行为。可以使用java -help查看所有选项及其说明。
class:要运行的Java类名。
args…:传递给主方法的参数。这些参数将作为字符串数组传递给main()方法。
-classpath path:指定Java虚拟机应该搜索类文件的路径。与javac编译器选项-cp相同。
-Xmx size:指定堆大小的最大值,以字节为单位。例如,-Xmx1024m表示堆大小的最大值为1024 MB。
-Xms size:指定初始堆大小,以字节为单位。
-version:查看Java版本信息。
-jar file:执行指定的JAR文件。
-Dproperty=value:设置系统属性。例如,-Djava.awt.headless=true表示启用无头模式。
java命令是Java开发和调试的重要工具之一。熟练掌握其用法可以帮助开发人员更好地编写和运行Java程序。
javap命令用于查看编译后的Java类文件的信息。它可以解析字节码文件,并显示有关类及其成员的信息。
javap [options] class
javap HelloWorld
options:javap命令提供了多个选项来控制输出的内容和格式。可以使用javap -help查看所有选项及其说明。
class:要查看的类名。该类必须已经编译成.class文件,否则javap将无法解析它。
-c:以指令列表的形式打印代码。这对于特定的“bytecode hacking”任务非常有用。
-l:以行号和本地变量表的形式打印代码。
-s:输出内部类型签名。
-verbose:以更详细的方式输出类信息。
-classpath path:指定类路径和搜索位置。
-J:向Java虚拟机传递选项。例如,-J-Xms1024m会设置最小堆大小为1024 MB。
-constants:只显示常量池中的常量,而不显示方法体的内容。
使用javap命令可以查看Java类的字节码信息,包括类名、父类、接口、构造函数、字段、方法名称和描述符等。熟练掌握javap命令可以帮助开发人员更好地理解Java应用程序的工作原理,并进一步了解Java虚拟机的内部结构。
jar命令用于创建和管理JAR格式的归档文件,也可以用于解压缩包和对JAR文件进行签名等操作。
jar [options] archive_file file(s)
jar cf myJar.jar *.class
options:jar命令提供了多个选项来控制生成的JAR文件的内容和行为。可以使用jar -help查看所有选项及其说明。
archive_file:生成的JAR文件的名称。
file(s):需要添加到JAR文件中的文件或目录列表。
c:表示新建一个JAR文件。
f:指定JAR文件的文件名以及可选路径
v:输出生成过程中处理的文件列表。
m:表示需要保留manifest文件。
x:从JAR文件中提取指定的文件。
t:列出JAR文件中存储的文件。
u: 更新现有的JAR文件中的文件。
i:为已有的JAR文件创建索引文件
使用jar命令还可以对JAR文件进行签名,以提高应用程序的安全性,防止被篡改。此外,在发布Java程序时,将代码打包成一个JAR文件也是很常见的做法,以便简化部署和分发过程。
jar命令是Java开发和部署的重要工具之一。熟练掌握其用法可以帮助开发人员更好地管理JAR文件和Java程序的部署。
javadoc命令用于生成Java文档。它可以分析源代码中的注释,并以HTML格式输出API文档。
javadoc [options] source_file(s)
javadoc HelloWorld.java
options:javadoc命令提供了多个选项来控制生成的文档内容和格式。可以使用javadoc -help查看所有选项及其说明。
source_file(s):指定要生成文档的源代码文件的路径。可以使用通配符(*)来生成整个文件夹中的所有源文件文档。
-d directory:指定生成文档的输出目录。如果没有指定,则默认在当前目录中创建一个名为“doc”的文件夹。
-classpath path:指定可供javadoc使用的类路径。
-subpackages pkg1:pkg2:…:指定需要包括的子包。
-private:生成私有成员文档。
-sourcepath path:指定源文件的搜索路径。这对于在不同的目录中使用源文件非常有用。
-author:在生成的文档中包含作者信息。
-version:在生成的文档中包含版本信息。
使用javadoc命令可以快速生成Java API文档,方便阅读和使用。编写清晰明了的注释并生成API文档是Java开发中的一个关键过程,因为它可以提高代码的可读性和可维护性,方便团队协作。
jps命令用于列出当前系统中正在运行的Java进程。它可以显示正在运行的Java虚拟机(JVM)以及它们的进程ID。
jps [options]
jps -v
-q:只显示进程ID,而不显示JVM名称。
-m:显示启动时传递给主类的参数。
-l:显示主类的完全限定名以及传递给主类的参数。
-v:显示JVM启动时的命令行信息。
-V:显示jps版本信息。
使用jps命令可以快速查看当前系统中正在运行的Java进程,并获取它们的进程ID,用于在需要时管理或诊断Java应用程序。jps命令非常简单实用,但对于几乎所有的Java应用都会起到帮助作用。
jstat命令用于监视Java应用程序的性能。它可以使用不同的选项打印出Java虚拟机(JVM)中各个内部组件的性能统计数据。
jstat [options] pid [interval [count]]
jstat -gcutil 1234
options:jstat命令提供了多个选项来控制输出的内容和格式。可以使用jstat -options查看所有选项及其说明。
pid:正在运行的Java进程ID(可以使用jps命令获取)。
interval:可选参数,指定两次采样之间的时间间隔(以毫秒为单位)。如果省略,则默认为1秒。
count:可选参数,指定采样次数。如果省略,则默认为无限次。
-class:显示类加载、卸载情况以及持有类加载器的内存池的容量。
-compiler:显示JIT编译器编译代码的方法以及编译时间。
-gc:显示各个内存池的使用情况、申请内存、释放内存情况等信息。
-gccapacity:显示整个堆(包括新生代和老年代)和各个内存池的容量信息。
-gcutil:显示整个堆(包括新生代和老年代)和各个内存池的使用情况。
使用jstat命令可以实时查看Java应用程序的性能状况,例如堆内存的使用情况、类加载器的状态、JIT编译器运行时间等重要信息,有助于开发人员及时发现性能问题并进行优化。jstat命令非常灵活,可以根据不同的选项进行配置,方便获取需要的数据。
jconsole命令是Java开发环境(JDK)自带的图形化监视工具,它提供了一个友好的用户界面,用于可视化地监控和管理Java应用程序。它可以实时显示Java应用程序的性能指标、内存使用情况、线程状态等信息,还可以进行远程监控。
jconsole [optionally, hostname:port or service:jmx:rmi:///…]
jconsole
使用jconsole命令可以启动Java虚拟机(JVM),并以图形化的方式监视JVM的运行状况。图形界面中提供了各种监视面板,展示当前JVM的CPU使用率、内存使用情况、GC状态等,同时可以查看线程、类、MBean等信息。
除此之外,jconsole还提供了常规操作管理Java应用程序的功能,例如观察垃圾回收、查看堆内存使用情况、分析线程的执行情况等。此外,如要添加可扩展性,则可使用MBeans控制进一步管理应用程序。
jconsole是一种功能齐全、简单易用的监控工具,能够帮助开发团队及时发现并解决Java应用程序中的性能问题。
jstack命令用于查看Java应用程序的线程信息和调用栈信息。它通常用于分析Java进程出现卡死、死锁等问题时定位问题原因。
jstack [ option ] pid
查看Java进程的线程堆栈信息:
jstack 1234
将线程堆栈信息输出到指定的文件:
jstack -F -l 1234 > java_thread_dump.txt
需要注意的是,jstack命令只能获取Java进程当前的线程信息和调用栈信息,并不能记录历史数据,如果需要跟踪Java进程的历史性能指标,建议使用其他性能分析工具。