Java实用教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1部分 Java实用教程

第1章 Java和Eclipse集成开发环境

1.1 Java语言简介

Java是由Sun公司于1991年开发的新一代编程语言,初衷是为家用消费类电子产品开发一个分布式代码系统。为了使整个系统与平台无关,采用了虚拟机器码(Virtual Machine Code)方式,虚拟机运行在一个解释器上,每一个操作系统均有一个解释器。这样,Java就成了平台无关的语言。

Java的发展速度是惊人的。1995 年3 月Sun公司发布了Java的Alpha1.0a2版本,1996年1月发布了Java的第一个开发包JDK v1.0,1997年2月发布了Java语言的开发包JDK v1.1,从此奠定了Java在计算机语言中的地位。1998年12月Sun公司发布Java 2平台JDK v1.2,这是Java发展史上的里程碑。1999年6月,Sun公司重新组织Java平台的集成方法,并将企业级应用平台作为Java发展方向,主要有三个成员:

● J2ME—Java 2 Micro Edition,用于嵌入式应用的Java2平台。

● J2SE—Java 2 Standard Edition,用于工作站、PC的Java2标准平台。

● J2EE—Java 2 Enterprise Edition,可扩展的企业级应用的Java2平台

2004年,J2SE1.5发布,为了表示这个版本的重要性,J2SE1.5更名为J2SE5.0。2005年,JavaOne大会召开,Sun公司公开JavaSE6,此时,Java的各种版本被更名,取消其中的数字“2”,J2SE更名为Java SE,J2EE更名为Java EE,J2ME更名为Java ME。

1.1.1 Java语言特点

Java是一个广泛使用的网络编程语言,它简单、面向对象,不依赖于机器的结构,不受CPU和环境的限制,具有可移植性、安全性,并且提供了并发的机制,具有很高的性能。此外,Java还提供了丰富的类库,使程序设计人员可以方便地建立自己的系统。

(1)简单性。Java语言是一种面向对象的语言,语法规则和C类似,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。Java略去了指针、运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集机制大大简化了程序设计者的内存管理工作。另外,Java对环境要求非常低,它的基本解释器及类的支持只有几十千字节,加上标准类库和线程的支持也大约200KB。

(2)面向对象。Java语言的设计集中于对象及其接口,它提供了简单的类机制及动态的接口模型。对象中封装了它的状态变量及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法实现代码的复用。

(3)分布性。Java是面向网络的语言,通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便地访问其他对象。

(4)安全性。用于网络、分布环境下的Java必须要防止病毒的入侵。Java不支持指针一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用“特洛伊”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。

(5)可移植性。与平台无关的特性使Java程序可以方便地被移植到网络上的不同机器。同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。

(6)高性能。和其他解释执行的语言不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。

(7)多线程。多线程机制使应用程序能够并发执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。

1.1.2 Java运行机制

Java有两种核心机制:一种是Java虚拟机(Java Virtual Machine);另一种是垃圾收集机制(Garbage Collection)。

1.Java虚拟机

Java程序是如何做到“一次编译,到处运行”呢?这正是通过Java虚拟机来实现的。JVM可以理解成一个以字节码为机器指令的CPU。首先,Java编译程序将后缀名为.java的Java源程序编译为JVM可执行的代码,即后缀名为.class的Java字节码文件,如图1-1所示。运行JVM字节码的工作是由解释器来完成的。解释执行过程分代码的装入、代码的校验和代码的执行三步进行。装入代码的工作由“类装载器”完成,类装载器负责装入一个程序运行需要的所有代码。字节码校验器负责代码的校验。每种类型的操作系统都有一种对应的Java虚拟机,Java虚拟机屏蔽了底层操作系统的差异。所以Java程序能够做到“一次编译,到处运行”。

图1-1 Java程序执行流程

2.垃圾收集机制

垃圾回收器能够自动回收垃圾,即无用的对象所占据的内存空间被回收。在C/C++语言中,这些工作由程序员负责,无疑增加了程序员的负担。而Java语言消除了程序员回收垃圾的责任:它提供一种系统级线程来跟踪存储空间的分配情况,并在JVM的空闲时,检查并释放那些可被释放的存储空间。在Java中,对象被创建后,就会在堆区中分配一块内存。当对象不再被程序引用时,它就变成一个垃圾,所占用的堆空间可以被回收,以便空间被后续的新对象所使用。Java的垃圾回收器能断定哪些对象不再被引用,并且能够把它们所占据的堆空间释放出来。