1. Java虚拟机
Java虚拟机的“机器码”保存在.class文件中,也称作字节码文件。
Java程序的跨平台是指字节码文件可在任何具有Java虚拟机的计算机或者电子设备上运行。
Java编译器将将源程序编译为.class文件。
2. 无用内存自动回收机制
3. 代码安全性检查机制
4. 全局变量
java不使用全局变量,而类中的公共变量、静态变量相当于类的全局变量。
5. 数据类型的一致性
c语言在不同的平台上,简单数据类型如int等分配的字节数不同,而java对数据类型的位数分配总是固定的。
字节码执行需要3个步骤: a. 类装载器(class loader)负责把类文件(.class)加载到java虚拟机,此过程检查类文件是否符合类文件规范
b. 字节码校验器(bytecodeverifier)检查该类文件是否存在某些非法操作
c. java解释器负责把该类文件解释成为机器码进行执行
java虚拟机采用的是“沙箱”运行模式,即java程序中代码和数据被限制在一定内存空间里执行。applet不允许访问客户端机器的文件系统。
java运行时环境:JRE,包含了完整的类文件包。许多主要浏览器都提供了java解释器和运行时环境。
sun公司把java平台划分为:J2EE、J2SE、J2ME
J2EE:Java2 Enterprise Edition,主要目的是为企业计算提供一个应用服务器的运行和开发平台。
J2SE:Java2 Standard Edition,主要是为台式机和工作站提供一个开发和运行平台。
J2ME:Java2 Micro Edition,主要是面向消费电子产品。
第一个java application
1 import java.util.*;
2
3 public class Property
4 {
5 public static void main(String args[])
6 {
7 // 打印时间
8 System.out.println(new Date());
9 // 打印系统变量命令的值
10 Properties p = System.getProperties();
11 p.list(System.out);
12 System.out.println("---Memory Usage:");
13 Runtime rt = Runtime.getRuntime();
14 System.out.println("Total Memory = " + rt.totalMemory()
15 + "Free Memory = " + rt.freeMemory());
16 }
17 }
javac Property.java
java -classpath .; Property
第一个java applet。
java applet没有main()方法,必须嵌在超文本文件中,在浏览器中运行。
在浏览器中显示“Welcome to Education”
1 // Filename: HelloEducation.java
2 // 进行显示输出时,会用到Graphics的对象
3 import java.awt.Graphics;
4 // Applet类是所有java applet的父类
5 import java.applet.Applet;
6
7 public class HelloEducation extends Applet
8 {
9 // 所有的applet程序都是Applet类的子类
10 public String s;
11 public void init() {
12 s = new String("Welcome to Education");
13 }
14
15 public void paint(Graphics g){
16 g.drawString(s, 25, 25);
17 }
18 }
javac HelloEducation.java
1 <html>
2 <applet code = HelloEducation.class width = 250 height = 250>
3 </applet>
4 </html>
以浏览器方式打开此html: