第一个Java程序,HelloWorld
创建文件 HelloWorld.java(文件名需与类名一致)
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
运行
$ javac HelloWorld.java
$ java HelloWorld
Hello World
执行命令解析:
以上我们使用了两个命令 javac 和 java。
javac 后面跟着的是java文件的文件名,例如 HelloWorld.java。 该命令用于将 java 源文件编译为 class 字节码文件,如: javac HelloWorld.java。
运行javac命令后,如果成功编译没有错误的话,会出现一个 HelloWorld.class 的文件。
java 后面跟着的是java文件中的类名,例如 HelloWorld 就是类名,如: java HelloWorld。
注意:java命令后面不要加.class。
Java程序是如何运行的
这里需要提到三个概念:
JVM(Java Virtual Machine),就是我们耳熟能详的 Java 虚拟机。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。所以说,jvm 是 Java 能够跨平台的核心,具体的下文会详细说明。
JRE(Java Runtime Environment),我们叫它:Java 运行时环境。它主要包含两个部分,jvm 的标准实现和 Java 的一些基本类库。它相对于 jvm 来说,多出来的是一部分的 Java 类库。
JDK(Java Development Kit),Java 开发工具包。jdk 是整个 Java 开发的核心,它集成了 jre 和一些好用的小工具。例如:javac.exe,java.exe,jar.exe 等。
三者为嵌套关系:JDK>JRE>JVM。
C和C++是偏底层的语言,是可以直接操作内存的,直接和操作系统交互。而Java不与操作系统直接交互,而是先通过jvm处理Java程序,由jvm和操作系统交互。这样避免了直接操作内存所带来的风险,也实现了内存自动回收。
同时由于C和C++直接和操作系统交互,所以无法实现跨平台,在windows上写的c程序在其他平台是无法运行的。而Java通过在不同的操作系统上使用不同的jvm使得同一段Java程序可以在不同的操作系统上运行。
一个Java源程序比如HelloWorld.java,通过javac命令编译成HelloWorld.class文件,即字节码文件。字节码还不是最终的机器代码,而是通过jvm进行解释并执行的。jvm作为字节码与机器代码之间的桥梁,使得同样的字节码可以在不同的操作系统上运行,字节码是与平台无关的,但是jvm是与平台相关的,也就是说不同的平台上的jvm是不同的。通过这种方式,Java实现了跨平台。
参考:
1.菜鸟教程
2.小白的Java自学课