2004年4月2日,微软和Sun公司突然宣布,微软以19.5亿美元的代价与Sun化干戈为玉帛,以平息Sun公司针对微软的反托拉斯诉讼和专利诉求。同时,还与Sun公司达成一项期限长达10年的协议,相互分享专利技术,并且彼此承诺十年不与对方互讼。
新闻发布会上,Sun CEO斯科特·麦克尼利(Scott McNealy)还赠给微软CEO斯蒂夫·鲍尔默(Steve Ballmer)一件底特律红翼队的运动衣,一个和平的标志。尽管他们摆出优雅的姿势照相,似乎仍然抑制不住复杂的心情。两个积怨已深的对手能够坐下来友好谈话,原因很简单:地平线上出现了更危险的共同威胁——Linux和IBM。
Sun公司是Java的发明人,但IBM却是Java最大的受益者。是IBM抢占了利润丰厚的应用服务器市场的头把交椅;是IBM的WebSphere开发工具最受Java开发者青睐;是IBM把自己的开发工具叫做Eclipse(Eclipse的中文意思是日蚀,Sun不怒才怪);是IBM在Java技术上投入最多的金钱,拥有最大的影响力和最好的开发者社区。Sun早已坐不稳老大的位子了。此外,随着与SCO之间的出色诉讼,IBM重新登上开放源代码运动的领军宝座。而开放源代码的Linux逐步走强,又使得Sun无法阻止用户从Solaris这样有版权的Unix操作系统转向开放源代码的Linux操作系统。微软也一样被IBM和Linux郁闷着。敌人的敌人就是我的朋友,简单的逻辑促使了这两个惯于互相掐架的公司结成联盟。
虽然天下三分群雄割据,对于Java技术,不啻是个契机。按照合约,Sun已经同意延长微软Java虚拟机的授权,最终期限将延迟到2007年12月31日。目前,最终用户的Java虚拟机的安装率是70%~80%,远比Macromedia公司Flash技术98%的安装率低得多,这和微软原先在Java虚拟机的问题上反反复复蹂躏政策不无关系。而这次合作,终于让用户及Java开发者吃了一颗定心丸(笔者个人认为,只要Java还有一口气尚存,Flash想成为丰富客户端技术的标准就决不可能)。其次,微软的.net技术和Java技术之间的对抗变得友好起来,更好的交互性,使得双方都可以从这个联盟中受益。最后,Sun和IBM都是Java技术的强势拥护者,跟着蓝色巨人,没错的。
这出西洋“三国演义”会怎么唱呢?让我们拭目以待。
为了品尝第一杯Java咖啡,仅仅需要:
J2SE SDK,即Java 2平台标准版软件开发包(Java 2 Platform Standard Edition SDK)。
一个文本编辑器,比如Windows“附件”里面的“记事本”即可。
1.J2SE 1.4 SDK
J2SE是Java技术的基石,就像用电脑需要有电才行。撰写Java程序,需要J2SE的SDK。SDK是Software Development Kit的缩写,即软件开发包。你可以从http://java.sun.com/j2se/1.4.2/download.html下载J2SE 1.4.2 SDK。注意,应该下载“J2SE v 1.4.2_04 SDK”(其中“1.4.2_04”是版本号,可能由于时间的变化而改变),而不是“J2SE v 1.4.2_04 JRE ”或其他。JRE是Java Runtime Environment的缩写,即运行时环境,安装JRE才能在Windows、 Linux以及Solaris系统上面运行Java程序,但JRE无法进行Java开发。实际上,SDK包含了JRE,所以只要下载SDK即可。在Java咖啡馆中我们将在Windows上讲述Java的开发技术,所以在接受协议后,下载约49.36MB的“Windows Offline Installation, Multi-language”即可。
下载完毕后双击安装程序,过程与安装普通应用程序没有区别。
J2SE SDK的由来
在安装时,我们可以看到,J2SE安装程序中标志着“1.4.2”的版本字样,明明是Java 1,为什么要叫做Java 2呢?Sun早在1995年便推出了Java技术。最早的开发包叫做JDK,1996年发布了JDK 1.0,1997年发布了JDK 1.1,1998年又发布了JDK 1.2。考虑到市场营销以及对自己技术的自信,Sun在JDK 1.2发布以后便把Java改名为Java 2,JDK改名为Java 2 SDK,版本号是用来标识Java 2技术的,而不是SDK的版本。我们这里使用的是成熟的J2SE 1.4技术,所以使用J2SE 1.4 SDK。其他还有J2EE SDK和J2ME SDK等等,分别针对企业应用和嵌入式系统,它们都以J2SE SDK为基础。今年夏天,Sun还将推出代号为“Tiger”的J2SE 1.5 SDK,增加了许多关键的特性,备受瞩目与期待。
安装程序结束以后,需要我们更新环境变量。虽然可以省去此步,但还是建议设置一下,避免在使用Java命令时不得不加入长长的路径前缀。方法如下:在Windows中,按下Win+Break组合键打开“系统属性”对话框,选择“高级”页面,修改系统变量里面的Path变量,在最后加上J2SE SDK\bin目录的路径,默认的应为“C:\j2sdk1.4.2_04\bin”,注意多个路径间要用分号分隔(见图1)。
完成后保存退出。现在打开“命令提示符”窗口,随便进入某个目录,输入“java -version”命令,如果看到如图2所示的结果,说明已经设置正确了。
2.记事本
品尝第一杯咖啡,用“记事本”就够了。
创建第一个Java应用程序
约定俗成,让我们创建“Hello world!”程序。
为什么编程都会从“Hello world!”开始
“Hello World!”程序是一个只在电脑屏幕上打印出“Hello World!”(“你好,世界!”)字符串的电脑程序。该程序通常是电脑程序设计语言的初学者所要学习编写的第一个程序。它还可以用来确定该语言的编译器、程序开发环境以及运行环境已经安装完成。
将“Hello World!”程序作为第一个编写的程序,现在已经成为一种珍贵的传统。该程序最早出现在由Brian Kernighan和Dennis Ritchie编写的《C编程语言》一书中。《C编程语言》是最权威的C语言教科书,两位作者正是大名鼎鼎的C语言发明人,昵称“K&R”。
当然,开发者中不乏“叛逆者”,喜欢“Hello”其他东西。无论如何,把“Hello world!”作为第一个程序,决不会有离经叛道之嫌^_^。
要创建这样一个程序,具体的过程如下:
(1)创建Java源程序
Java源程序一般用JAVA作为扩展名,是一个文本文件,用Java语言写成,可以用任何文本编辑器创建与编辑。
(2)把源程序编译成Java字节码(bytecode)文件
Java编译器,“javac”,读取你的Java源程序并翻译成Java虚拟机能够明白的指令集合,且以字节码的形式保存在文件中。通常,字节码文件以CLASS作为扩展名。
(3)运行字节码文件
Java解释器将充当Java虚拟机的角色。Java解释器读取字节码,取出指令并且翻译成计算机能执行的代码,完成运行过程。
从图3中很容易看出为什么字节码很酷。你一定听过Java技术“一次编写,随处运行”的口号吧?与VC、Delphi等语言把源程序编译成特定平台的指令集不同,Java编译器把Java源程序编译成与平台无关的字节码,运行时,由Java解释器来翻译成不同平台的目标代码后执行。这好比国家领导人在国际大会上用一种语言发言,由若干同声翻译分别翻译成不同的外语,从而“只说一遍,大家明白”。同理,无论你的系统是Windows、UNIX、MacOS或者是用IE浏览器,只要安装了Java虚拟机,都可运行。
1.创建Java源程序
打开“记事本”,按照图4内容输入6行源程序。
小提示:这个程序定义了一个名为HelloWorldApp的对象,对象有一个名为main的方法,用来打印“Hello World!”字样。习惯上,Java程序采取缩进,即按照模块使用长短不一的空格。这样,很容易看出第二行到第五行代码讲的是同一个东西,描述了main方法。其中,第三、第四行又有缩进,它们是main方法的具体实现。使用缩进,阅读起来一目了然。
进入“资源管理器”,在C盘根目录下面建立一个名为“JavaBar”的文件夹(以后我们都用这个文件夹来讲解),由于这是第二讲,所以在其中再建立一个名为“Cha 02”的子目录。
现在回到“记事本”程序,按下“文件”菜单的“保存”项,进入“C:\JavaBar\Cha 02”,在文件名编辑框中输入“HelloWorldApp.java”,同样必须注意大小写。
2.编译源程序
打开“命令提示符”窗口,进入“C:\JavaBar\Cha 02”,输入“dir”命令,你会看到“HelloWorldApp.java”。
编译Java源程序,使用的是“javac”命令:
javac HelloWorldApp.java
如果没有得到任何提示,说明编译正确通过了。现在查看一下当前目录,就会看到HelloWorldApp.java及HelloWorldApp.class两个文件。其中HelloWorldApp.class就是那个很酷的字节码文件,在Linux或是MacOS上都能够执行。
如果遇到了错误,请仔细对照源代码检查拼写以及大小写,重新保存并编译,相信很快就能自行解决。
3.运行程序
在“命令行提示符”窗口中输入“java HelloWorldApp”(注意大小写),如果运行成功,那么恭喜你,你已经向Java世界打了第一个招呼!
Just Do It
Java能够完美支持多国语言。如何打印中文字符串“你好,电脑爱好者!”呢?想一想,并且动手试一试。
下一讲,让我们使用源自IBM的高级开发工具Eclipse进行Java的开发,体验一下什么才是地地道道的Java开发!