为什么要学 Java?
如果你常玩计算机,你可能知道 Java 是一个运算平台,而非咖啡或印尼的一个岛。在 Java 技术诞生后的这五年,Java 变成了大家朗朗上口的名词,种种的说法中,有些是事实,有也一些夸大不实。你可能会想知道:你该不该去学 Java,我给你的答案是肯定的,请听听我的说法。
Java 是什么?
你必须先了解 Java 究竟是什么?当人们提到「Java」,他们指的可能是:
- Java 程序语言:一个类似 C++ 或 Smalltalk 的对象导向程序语言。学习 Java 程序语言类似学人类语言,都有一套规则和文法。
- Java 虚拟机器(JVM):用来执行 Java 程序。JVM 有许多平台的版本,比方说 Linux 和 Windows 版。有了 JVM,Java 程序就可以在不同的平台上执行,也就是所谓的「写一次,到处都可执行」。
- Java APIs(指的是函式库的程序设计接口):是一组预先定义好的类别,可以在你的程序中直接使用。这些东西是免费的,功能包含了像是档案存取,网络读写,图形接口等等。
当人们提到「学习 Java」,通常他们指的是 Java 语言和 API。大家可能对 JVM 所知不多,虽然对 JVM 有基本的认识对 Java 的学习是很有帮助的。
|
学习 Java 的理由中,有些是技术性的,有些则是非技术性的。我先描述两个程序的特色(垃圾搜集和例外处理),然后我告诉你:为什么在程序设计的领域中,Java 几乎是必备的技能。我也会告诉你 Java 开发工具的信息和它们吸引人的售价。
感谢老天,有「垃圾收集」真好!
使用 C++,你可能一不小心就写出会当机的程序;如果使用 Java,情况就大不相同了。C++ 程序的头号 bug 是内存配置的失误。C++ 的程序员很辛苦,必须直接配置一块内存,这块内存不用时还必须主动归还。这听起来简单,做起来可不容易,所以 C++ 的程序常常会耗尽内存。
Java 就不同了。虽然你仍需要主动配置内存,但此内存一旦不再使用时就会自动释放,这就称为「垃圾收集(garbage collection)」。垃圾收集机制使得写程序时轻松许多,虽然因此执行时效率稍微变差,但影响可能轻微得你根本感觉不到。
例外处理机制让程序更稳固
不管是什么程序语言,都可以轻易地写出很糟糕的程序,但是使用 Java 想写出很糟糕的程序就不容易了。原因之一是垃圾收集,原因之二是「例外处理机制」。良好的程序员写出来的程序应该在一些意外状况发生时程序依然正常。档案无法开启,怎么办?万一读档读到一半时出问题,怎么办?如果你是用 C++ 或其它语言,你可能会疏于考虑而没进行这些意外状况的处理。你可能会辩白:「我只是在试试看这样写能否行得通,我稍后会回过头来把程序改得更周延」。但结果通常是:程序执行正常后,你又会忙着写新的程序,这么一拖后来就忘了回头处理还不完整的部分。问题终究还是会爆发出来,你终究还是要面对烂摊子。
Java 强迫你在一遇到有可能出问题的地方就要准备好因应之道。Java 的 method 可以丢出例外,用来通知呼叫者程序出状况了,这是相当好的机制。即使你的程序要开启档案,你都必须在程序中写好例外处理方式。
到处都是 Java
到处都可见到 Java,这是一大好处。如果你靠写程序为生,你可能迟早都会接触到 Java。Java 已经渐渐地渗透到各领域,你可以写出 Java servlet,将其挂在 Apache 或其它网页服务器上,你可以写出 Java applet,在网页浏览器上执行。你甚至可以用 Java 写出数据库的 stored procedure,然后安装到 Oracle 8i 上。
我打赌,你身边使用 Java 的同事也会渐渐多起来。1997 年开始,许多大学已经用 Java 取代 C 当作程序设计教学的语言。如此一来,Java 变成了程序员共通的语言。如果学习 Java 所为你带来的唯一好处是方便和同事沟通,那么也值得。
最后,我要提的是:「写一次,到处都可执行」。Java 早期版本(1.0 和 1.1)比较无法完全跨平台,但现在就好多了。如果你想散布一个程序到多个平台,又不想改写大部分的程序,那么 Java 是绝佳的选择。Java 2 现在已经可以在 Linux、许多 Unix、和 Windows 上执行了。
MacOS 9 的 Java 仍在 1.1 时代。然而,Apple 的下一代操作系统 OS X 是以 Unix 为核心,这使得移植软件的过程大大简化了。我不知道 Apple 官方的说法为何,但是在今年三月的时候,我就已经看到 OS X developer release 3 上面执行着 Java 2。我很有自信 Java 2 将可以在 Linux、OS X、和 Windows 上执行,这样已经涵盖了大部分的计算机世界。
Java 免费
Sun 提供 Java 相关的工具,让你可以开发与执行 Java 程序。你无须支付授权费,你也不用花钱买 Java 开发工具。当然,Sun 这么做自有他们的如意算盘,Scott McNealy(Sun 的老板)恨不得能征服世界,但是不管怎样,我们的的确确是不用付钱给任何人就可以享受 Java。
而且,Java 的 API 是珍贵的宝藏,让我们可以轻易地写出功能强大的程序。想写网络程序?已经有 API 了!想连接数据库?已经有 API 了!想写 GUI 程序?已经有 API 了!或者是想做数字影像处理、音乐文件处理、字符串剖析、数字签章?通通有 API 了!身为一个程序员,有这么多好用的 API 真的是再高兴不过的事了,这些 Java API 让我们不用「重新发明轮子」,省却不少功夫。Java 有这么广泛、标准、先进的 API,简直是让 C++ 程序员忌妒死了。C++ 程序员常要花时间学一些 C++ 类别库(比方说 MFC),然后到 Linux 上又得归零学另一套(因为 Linux 上没有 MFC)。一旦你学会了某 Java API,到哪儿都一样不会变动,不用重学。
最后,Java 的信息文件都可从网站上免费取得。如果你有网络而且有空,你可以直接透过网络学习对象导向、Java 语言、以及 Java API。Sun 在网站上放了一大堆很棒的线上教材。如果你习惯看书来学习,市面上有一堆 Java 的书可以参考(比方说,我写的 Learning Java)。
日光浴
Java 比其它语言来得有趣许多。Java 程序语言有许多「防呆装置」让你不会在程序中犯下大错,所以你可以很快地把程序写完,而如果使用其它语言必须要花更多时间。一份有趣的资料显示:用 Java 写程序比用其它语言快了四到十倍。我知道这听起来很不可思议,不过你可以问问周遭懂 Java 的人看看。不用花很多时间找 bug,意味着你可以在海滩上休息更久,意味着你可以接受阳光的日光浴而非「屏幕的日光浴」。用 Java 为你赚进的银两为自己买一副太阳眼镜吧!
本文作者:Jonathan Knudsen(着有「Learning Java」、「Java 2D Graphics」等书)
本文译者:蔡学镛