Java既是编程语言也是软件平台,作为编程语言的Java有自己的一套机制,实现源程序到处理器可执行程序间的过渡与转换,作为软件平台的Java为程序员提供了编程接口和Java虚拟机(JVM),下面将依次介绍。
Java作为一种高级语言具有许多优良特性,如跨平台、面向对象、分布式、多线程、安全性、健壮性、简单性等。这些优良的特性在读者学习完本书后会有很好的体会。
在Java语言中的所有源代码都可以通过无格式的记事本编写,并保存为.Java文件,因为通过该扩展名,Java编译器会知道该文件是自己可以处理的文件。经过编译后的文件为.class文件,该文件是字节码文件,此时.class文件不能被处理器直接读取执行,必须通过虚拟机转换成二进制文件后,才可以被处理器执行。图1.1是Java程序的开发过程,整个过程说明了上面叙述的内容。
Java是跨平台的高级编程语言,这里的平台是指操作系统平台,如Windows、UNIX、Mac、Linux等。使用Java语言编写的程序一次编译就可以在所有上述平台上运行,就是因为有Java虚拟机的存在。Sun提供了在各种操作系统平台上运行安装的JVM,而该虚拟机都可以执行.class文件。这样也就实现了众所周知的“一次编译,随处运行”的理想。图1.2演示了不同平台上通过JVM执行Java程序的过程,从中可以清楚地理解JVM的作用。
注意 图1.2中的"HelloWorld.class"也代表一个应用程序,应用程序本身就是经过打包的.class文件的集合。并且在不同的平台上安装的JVM是不同的,需要到Sun的网站下载适合自己机器操作系统平台的虚拟机。
Java语言也是一个软件平台。平台可以理解为软件运行所需的软件或硬件环境,如操作系统可以看作是软件平台,它提供了应用程序运行的环境,如在Window XP操作系统上运行Word字处理程序。当然如果从用户的角度看,操作系统其实是软件和硬件相结合的综合平台,因为操作系统对硬件的操作用户是看不见的,但是操作系统又确实管理并运行在硬件平台上。
而Java语言作为软件平台,为Java源程序编写和运行提供了完善的环境。但是该Java提供的软件平台不和硬件发生任何关系,该平台是纯软件平台,运行在操作系统上。Sun为不同的操作系统编写了相应的JVM。作为软件平台的Java由两部分组成:
❑Java虚拟机:Java虚拟机是Java软件平台的基础,基于不同操作系统的平台对应不同的虚拟机。
❑Java应用编程接口(Java API):API是一套编写好的软件组件的集合,这些API按照功能通过包(package)来提供,包就是一系列具有相似功能的类和接口的集合。图1.3是Java虚拟机和应用编程接口与各种操作系统的软件层次关系。
说明 在操作系统上加一层Java虚拟机,使得Java实现了平台的独立性,但是这也使得Java程序比C或C++语言编写的程序要慢一点,但是随着编译器的改进以及虚拟机技术的成熟,二者之间的差距会越来越小。
Java语言作为完善而强大的软件平台,每个版本的Java平台都会提供如下的功能或组件。
1.开发工具
开发工具提供了诸如编译、执行、调试、文档化等功能,使得开发人员可以使用这些工具来编译调试自己的程序。初学者经常使用的Java工具有Javac源程序编译工具、Java程序执行工具和Javadoc源程序的文档化工具等。具体的功能将在本章后面介绍。读者将会了解如何使用Javac和其他Java工具。
说明 Javac编译工具其实就是在DOS下运行的一个命令,而DOS命令不区分大小写,所以本章有时候在DOS窗口中输入的时候,也直接说是javac命令。
2.应用编程接口(API)
Java API提供了Java语言的核心功能,开发人员可以直接调用这些方法或实现其中的接口来满足自己程序设计的需要,如需要对数据进行排序或搜索,Java提供了具体的类来实现,开发人员只要了解这些类的基本功能和类中的方法就可以调用这些工具。读者可以翻阅Java JDK的HTML文档来搜索自己需要的功能。
3.用户接口工具集
其实这个工具集就是提供如何编写用户接口程序(即GUI程序),为应用程序提供一个友好的用户界面,任何复杂的程序界面都可以通过该工具集中的类或接口实现,具体请参看本书的第22章。
4.集成类库
该类库提供了集成工具来完成复杂的行为,如Java为访问数据库提供了JDBC API;为实现远程方法提供的Java RMI,该方法实现了对网络远端的Java程序的调用,是Java实现分布式计算的重要基础。
Java语言与其他语言(如C、C++、Delphi等语言)相比,有自己的优势,无论你学习Java的初衷为何,Java语言确实使得你的程序更友好,并且需要较少的工作。下面将介绍Java语言的优点以证实上述的说法。
1.入门更快
因为Java语言是一门强大的面向对象的语言,所以只要理解面向对象技术(符合人类的处理事情的思维方式),就很容易学习这门语言。如果读者已经学习过C++语言或C语言,将更容易进入Java的世界。
2.代码量少
同C++语言比较,同样的程序使用Java语言编写只需要较少的类和方法。
3.编码更容易
Java语言提供良好的编码规范,使得Java语言编写的程序具有统一的“外表”,并且Java支持垃圾回收机制(GC),所以不会像C++中那样出现内存泄漏的问题,这样开发人员就可以集中精力编写程序所需的类,而不用考虑何时、如何回收这些对象了,只要在需要时创建对象即可,其他都由GC处理。Java的面向对象特性、JavaBeans组件架构和功能强大的API,都使开发人员可以容易地重用经过严格测试的代码,这些API的使用也减少了程序中Bug的数量。
4.程序开发更快
Java语言同C++语言相比更简单,相同的程序使用Java可能比使用C++快些,同时只需要更少的代码行。
5.避免平台依赖
Java语言编写的类库可以在其他平台上的Java应用程序中使用,而不像C++语言必须依赖于Windows平台。
6.程序的平台独立性
Java源程序被编译成字节码,字节码通过运行操作系统平台上的JVM来解释而获得执行,这样使用Java语言编写的程序不依赖于特定的平台,实现一次编写,随处运行。