1 Java语言介绍
1.1 Java语言历史
1995年5月23日,在SunWorld会议上,Sun公司正式展示Java语言,这一天通常称为Java语言诞生日。
1996年,Java语言发布1.0版本。这时Java语言能够编写的程序称之为Applet。只能在集成了Java环境的浏览器中运行,主要是为浏览器增加各种动态效果,美化页面和增强用户与浏览器的交互。
到了1998年12月,Java1.2版本发布,Sun公司对这个版本做了极大的结构调整,原有的体系几乎推倒重来。Sun公司为了表明这是一个重大更新,Sun公司把Java1.2版本,也称之为Java2Platform。与此同时,Sun公司把Java2Platform进行了细分,对1.0和1.1扩展之后得到的部分称之为“标准版”,即Java 2 Standard Edition,简称J2SE。除了标准版外,Java2还包括企业版(J2EE) 和微型版(J2ME)。其中J2SE是学习其他两个版本的基础,我们的教程所涉及的主要是企业版(J2EE),提供服务器端编程的功能。
Sun公司之后又发布了Java1.3和1.4版本,主要是修正Bug,完善Java类库。这两个版本依然属于Java2平台。此时,Java语言进入真正成熟期,逐渐成为世界排名第一的语言,大量的企业级应用采用了Java语言来开发服务器端软件。
2004年,Sun发布Java5.0版本,这是1.1版本之后,Java第一次对语言的基础类库做出重大改进的版本,刚开始,这个版本称之为1.5,后来,Sun公司为表明这个版本具有非常强大的功能,把这个版本称之为5.0。
2006年底,Java发布了版本6,主要是修正了5.0版本的Bug,改善性能并增强了类库。
1.2 Java语言特性
- 纯面向对象
Java语言是一种非常纯粹的面向对象的语言,只能采用面向对象的方式进行编程。
- 简单VS复杂
Java的简单性,指的是Java语言的这种特点:1 Java语言本身特点非常简单,没有复杂和晦涩的语法细节;2 Java语言让程序员能够清晰简洁的完成任务。同时Java语言也是复杂的,体现在:1 强大而扎实的类库;2 主要阵地是企业级应用,这种应用本身,会涉及多线程、分布式、数据库、网络等各种各样的领域;
- 开放性
Sun公司已经对Java语言开源,任何人都可以读到Java语言的源代码;Sun公司接受任何人提交的JSR,也就是说,任何程序员都可以对Java语言未来的发展提出自己的开发和意见;
现在,有很多Java社区,提供大量开源、免费的东西下载和使用,这在一定程度上也帮助了Java语言的发展和推广。
- 跨平台性
这是融入Java血液的一个机制。这个机制决定了Java可以在各种平台上面运行;这种在不同平台下运行的能力使Java语言在企业级应用中有着深远的影响。
1.3 Java语言的运行机制
Java是计算机高级语言,所谓的计算机高级语言,实际上指的:人为的规定一些语法。然后,在遵循这些语法的前提下,写出一个源文件,最后利用某种方式,把源文件转化为机器指令进行执行。
在现代计算机语言中,主要有两种方式:一种是编译型,一种是解释型。
什么叫编译型语言呢?这指的是,通过一个编译器软件,把源文件转化为可执行文件。可执行文件的内容,就是一些机器指令,以及相关的一些数据。在 Windows 中,可执行文件往往以.exe 作为后缀名。在执行程序的时候,不需要源代码文件,只需要可执行文件即可。示意如下:
源文件 -- 编译器--> 可执行文件 运行可执行文件 --> 机器指令
与编译型语言相对的是解释型语言。解释型语言需要一个解释器软件,这个软件会读源文件,在读文件的过程中, 同时完成将源文件内容翻译成机器指令以及执行的过程。换句话说,解释器将读取源文件、翻译成机器指令、执行指令这三步同时完成。示意如下:
源文件 -- 解释器---> 直接翻译成机器指令
由上可知,编译型语言在将源文件编译成可执行文件之后,运行程序只需要可执行文件,不再需要重复编译的过程。而解释型语言每次运行时必须重复翻译源文件,因此从运行效率上来说,解释型语言远远不如编译型语言。当然,解释型语言也有自己的优势:跨平台性较好。由于编译型语言运行时只需要可执行文件,而可执行文件又与平台紧密相连,这也就意味着,对于不同的平台,必须要有不同的可执行文件才行。而相对而言,解释型语言就没有这么麻烦,对于不同的平台,只需要有不同的解释器就可以了,源代码几乎不用进行修改。
而 Java 语言,则兼具有编译型和解释型两种语言的特点:Java 语言运行时,采用的是先编译、后解释的方式运行。首先,Java 源代码要写在后缀名为.java 的源文件中。然后,通过一个编译器,编译生成.class 文件,这个文件被称为“二进制字节码文件”。 而.class 文件并不能够直接在机器上执行。执行.class 文件,需要一个解释器,这个解释
器会把.class 中的指令翻译成真正机器上的指令。也就是说,需要解释执行.class 文件。
示意如下:
.java 源文件 -- 编译 --> .class 字节码文件 -- 解释执行 --> 真正的机器指令
字节码文件是平台中立的,也就是说,运行在不同平台上的.class 文件内容相同,与所在平台无关。Java 语言这种“先编译,后解释”的运行机制,使得其同时拥有了编译型语言的高效性和解释型语言的跨平台性,Sun 公司给出了最好的注解:“Write once , run anywhere”。
1.4 JRE 与 JDK
如果一个程序员要发布 Java 程序,一般来说,会发布.class 文件。而如果要运行 Java程序,同样指的是运行.class 文件。因此,运行 Java 程序,只需要 Java 虚拟机和解释器就可以运行。即 JRE,也就是 Java Runtime Environment 的缩写,指的是 Java 的运行环境。包括JVM 和 Java 解释器。
但是仅仅有 JRE,只能是完成. 从 class 文件到真正的机器指令这一步,而无法把一个源文件编译成一个.class 文件。在 Sun 公司的网站上,有一个术语叫做 JDK 。所谓的 JDK ,指的是 Java Development Kit,Java 开发工具包。从内容上说,JDK = JRE + 工具(编译器、调试器、其他工具„„) + 类库
我们进行 Java 开发,至少应当有 JDK 。可以到 Sun 公司的网站上进行 JDK 的下载(下载链接为: http://java.sun.com/javase/downloads/index.jsp)。JDK 的安装也可以参考 Sun 公司的网站(链接为: http://java.sun.com/javase/6/webnotes/install/index.html )。对于 Windows 系统而言,下载 JDK 之后,安装起来与其他的软件安装时并没有太大区别。
2 配置Java开发环境
安装完JDk之后,还需要进行一些环境变量的配置。
2.1 配置环境变量
Java 的环境配置,其实主要是对三个环境变量进行配置。这三个变量分别为:JAVA_HOME、PATH 和 CLASSPATH。
- JAVA_HOME 环境变量,表示的是 Java 的安装目录。这个变量是用来告诉操作系统 Java的安装路径的,当其他的程序需要 Java 进行支持的时候(例如一些 Java 的服务器、Java 的数据库客户端等),会通过 JAVA_HOME 来寻找 Java 的安装路径。
- PATH 环境变量,是在命令行上输入 Java 命令时,用来指示操作系统去哪个路径下找Java 的相关程序。往往会把 PATH 变量配成 Java 的安装路径/bin 目录。
- CLASSPATH 是用来指示编译器和 J VM 去哪个目录寻找.class 文件。当我们运行 Java程序时,必然会需要获取.class 文件的信息,而且往往还需要不止一个.class 文件的信息。此时,我们就需要在硬盘中寻找到相应的.class 文件。而硬盘中的文件成千上万,JVM 如何寻找呢?为了能够让 JVM 有的放矢,我们需要设置 CLASSPATH 环境变量,指定一些目录,让 JVM 寻找.class 文件时,只需要寻找这些我们指定的目录即可。
我们分windows和Linux两个平台来介绍如何配置环境变量。
2.1.1 Windows
XP系统用户:
右键点击我的电脑--->属性,选择高级--->环境变量,在系统变量中,点击“新建”,增加 JAVA_HOME 系统变量,这个变量的值设为 Java
的安装目录。假设 Java 安装在 C:\Program Files (x86)\Java\jdk1.7.0_02。
变量名:JAVA_HOME
变量值:C:\Program Files (x86)\Java\jdk1.7.0_02
变量名:path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
比如我们的JDK安装在C:\jdk1.6.0目录下,那么在C:\jdk1.6.0\bin目录下就是我们常用的java应用程序,我们就需要把C:\jdk1.6.0\bin这个目录加到path环境变量里面。
变量名:classpath
变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(注意,CLASSPATH最前面是有个“.”的,表示当前目录,这样当我们运行java Class的时候,系统就会先在当前目录寻找Class文件了。);
Win7,Vista系统用户:
右键点击计算机--->属性,选择高级系统设置,选择环境变量,新建变量和xp一样
当所有的环境变量都配置好了之后,打开 Windows 中的命令行(对于 WindowsXP 来说:
开始菜单 -- 运行 -- cmd),执行 java -version。如果得到正确的版本信息,则说明配置正常。
如下图:
2.1.2 Linux
Linux 下的配置我们简单的描述一下。假设在 Linux 中 Java 安装在/opt/java/jdk6 目录下。在命令行输入: vi /etc/profile
在最末尾增加三行:
export JAVA_HOME=/opt/java/jdk6
export PATH=$JAVA_HOME;$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
要注意的是,Linux 中的环境变量区分大小写,因此要注意大小写不要写错。
3 Hello World 程序
首先我们写出 Hello World 程序的代码。在硬盘上创建一个名为 HelloWorld.java 的文件,并用记
事本打开这个文件,书写如下内容。注意:区分大小写,并注意空格:
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
代码写完之后就可以进行保存。然后,在命令行模式下,进入这个.java 文件所在的文件夹,使用下面的命令来进行编译:
javac HelloWorld.java
编译成功时如下图:
在编译完成之后,会在目录下生成一个相应的 HelloWorld.class 文件,如下图:
在编译完成之后,会在目录下生成一个相应的 HelloWorld.class 文件,如下图:
之后,在命令行上,用下面的命令来执行:
java HelloWorld
执行结果如下:
在屏幕上打印出一个“Hello World”的字符串。
保证在你的机器上看到 Hello World 字符串再继续学习。
4 初学者忠告
至此,我们对 Java 的基本介绍,以及 Java 环境的配置就全部介绍完了。下面是对初学者的一些忠告:
1、 动手敲代码。不论是书本上的例子代码,还是练习中的代码,请每一个都自己敲一遍。
2、 不要使用 IDE。Java 语言的流行,使得有大量的好用的开发工具,比如 eclipse,netbeans 以及 jbuilder 等。这些工具能够极大的提高程序员的开发效率,是程序员的好帮手,但是不适合初学者。初学者需要更多的锻炼和磨砺,才能够打下扎实的基础,才能够更好的掌握这些工具。如果一开始你就使用这些工具的话,很有可能你会一直被这些工具束缚住,对他们产生依赖,而影响你对 Java 的掌握。建议你使用一个文本编辑器 + 命令行的方式,学习 Java 的开发。起码在学习 Java 的前半个月应该这么做。
3、 选择一个有语法高亮的文本编辑器。如 notepad++和 notepad2,你也可以选择更加强大的 UltraEdit。有一个支持 java 语法的编辑器会让你愉快很多。