名词
JVM:Java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可 以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解 释给本地系统执行。
JRE:Java Runtime Enviroment,指Java的运行环境,是面向Java程序的使用者,而不是开发者。光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 在JDK的安装目 录里你可以找到jre目录,里面有两个文件夹bin和lib,在 这里可以认为bin里的就是jvm,lib中则是jvm工 作所需要的类库,而jvm和 lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件 和jre一起打包发给朋友,这样你的朋友就 可以运行你写程序了。(jre里有运行.class的java.exe)
JDK: Java Development Kit,提供了Java的开发环境和运行环境(显然,JDK包含了JRE)。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等,面向开发人员。
javac: java语言编程编译器。javac工具读由java语言编写的类和接口的定义,并将它们编译成字节代码的class文件。javac 可以隐式编译一些没有在命令行中提及的源文件。用 -verbose 选项可跟踪自动编译。当编译源文件时,编译器常常需要它还没有识别出的类型的有关信息。对于源文件中使用、扩展或实现的每个类或接口,编译器都需要其类型信息。这包括在源文件中没有明确提及、但通过继承提供信息的类和接口。
java编译和执行
单个文件
单个文件肯定要含有main函数,
public class Test1 {
public static void main(String[] args) {
System.out.print("从现在开始学Java");
}
}
将这个文件保存,注意文件名和类名相同,后缀为.java。
进入文件目录,命令行执行编译语句。($代表在命令行中输入,不需要敲出来)
$ javac Test1.java
如果没有错误,可以看到目录下面多了一个Test1.class文件,运行这个文件,
$ java Test1
可以看到结果。
多个文件
假设自己又定义了一个类
public class MyClass {
public void sayHello {
System.out.println("hello!");
}
}
文件保存为MyClass.java,和Test1放置在同一个目录下。
在Test1中使用MyClass,一个目录下面,无需使用import。
public class Test1 {
public static void main(String[] agrs) {
MyClass my = new MyClass();
my.printHelloWorld();
System.out.print("从现在开始学习Java");
}
}
编译多个文件,最简单的是使用通配符。
$ javac *.java
$ java Test1