大凡国内的Java教材的第1章,总要讲讲Java产生和发展、Java语言的特点和优越性;Java应用程序和小应用程序;Java工具包JDK;Java程序的编辑、编译和运行;Java开发工具介绍和使用。
这是对的,作者的目的是让我们知道,Java是个好咚咚,名门正派,我们要尊敬她,学习Java是严肃的事情。
当然也有异数,有位老兄说,第1章也应该是最后一章,不知道你怎么想。其实,我们把Java的特点和优越性——【Java(作为一种程序设计语言),是一种简单、面向对象 、网络通用、解释型 、 健壮、安全、结构中立 、可移植性强、(高性能、)多线程、动态的语言】——写几张纸给你看,不把你搞晕就怪了。
我们初学者真正想知道的,是Java好不好玩。嗯,Java好玩。
§1 Java是最牛的语言
为什么要学习Java,因为它牛。看看编程语言的排行榜(2005-1),你难道不想学习应用最广的语言吗?你再看:Developer.com公布2005年度产品竞赛优胜者名单,你难道不想学习发展最好的语言吗?
如果有人争辩,世界上所有的语言都有它的应用领域,C++是最好的、VB是最好的……,我们走开。不是说讨论那门语言的好坏没有意义(如果有人这么说,让他看《编程语言——设计与实现 4e》,作者讨论语言的优劣难道疯了?),主要是因为我们还没有真正掌握Java,我们还没有资格讨论那门语言的好坏。对吧?
总之,我说Java牛,没有什么大错。为了避免人民内部矛盾的激化,我们时刻准备说:
我佩服会LISP、ML和Prolog的。(异)
我佩服会Smalltalk和Eiffel的。(纯)
我佩服会PHP和python、perl的。(炫)
我有点佩服会VB和dephi的。(快)
我佩服会Perl and Parrot、Python、Groovy的。(动)
我佩服会C的 (牪)
我佩服会C++的 (牛)
我佩服会机器语言的(犇)
我最后也佩服会Java的。(牛)
关于有人说他“会”7-8种语言,我们也非常佩服,当然有个家伙写书用了Java、C++、C#、Delphi Pascal、Apple Object Pascal、 Python、CLOS、Eiffel、Objective-C、Smalltalk、Ruby、Beta等等哪,我也非常佩服。【参考:Timothy Budd《面向对象编程导论》清华大学出版社】
§2 Java能否短期学会
如果你认为会编写一个Java程序,就叫学会的话,两天就可以学会。
为什么要两天?毕竟我们要下载JDK,要几个小时也可能。下载累了我们要玩玩游戏,这就过了一天;为了表示我们会Java,第二天我们要看看书,背诵HelloWorld(照着书敲代码,显得不够专业),如果能够让程序运行,呵呵,我们会Java了。
当然,如果我们自己要求高一点,可能一辈子都学习不完。我们去看看Java地图,Sun公司野心勃勃,想通吃桌面编程、网络编程、手机编程,他们想说:我给你一个Java,你可以撬动微软。
总之,世界上有数以百万计的Java程序员,大家都在学习和研究Java,我们既不要被Java的博大精深所吓倒,也不要希望自己掌握Java的全部(你把Java全部搞定了,几百万的Java程序员就统统下岗了。)
现实的目标,我们学习Java的第一步,应该把Core Java搞定。在后面我们也围绕这一部分学习。Core Java的范围,大家参考SUN认证的JAVA程序员(SUN Certified Java Programmer)——简称SCJP(SL-275)考试的范围。
有人说,SCJP考试范围是“一英里宽一英寸深”,这是我们要注意的,我们至少要学习到一米深。
这个阶段,最好用一年的时间。如果你感到一年太长,不妨想想我们小学5-6年学习的算术,小学5-6年学的东西,可能在我们现在看来只要一天就搞定。其实很多东西,需要时间的沉淀。
这个话题太大了,我们能够说的只有一句话:每天前进一小步……
§3 找什么Java教程
我查阅了很多Java教材、专著和网上文章,其实也没有找到一条学习Java的“最佳路径”。事实上,我们不可能找到一本Java学习的圣经。只有自己给自己编写的教材,才能满足自己所有要求的。
我为什么学习Java(目标、工作需要),我想怎样学习Java(深度),我想花多少时间学习Java(我是大一还是大四,还是工作中),我的英文水平如何……
有一本《Thinking in Java》,的确不错。但是,它不一定适合某些初学者。同时我告诉你,陈毅曾经玩笑道:在将军面前,我是诗人;在诗人面前,我是将军。
其实,你把Timothy A.Budd..面向对象程序设计(第3版)再加上垃圾堆中顺便一本Java书,捣鼓捣鼓,就可以达到《Thinking in Java》的程度。
慢点,在丢鸡蛋之前,你想想:为什么不自己给自己编写教材呢?如果我们准备用一年的时间学习Java的话。自己给自己编写教材,并不需要1000页,我们仅仅需要一个提纲;所有的Java知识,要能够向这个提纲汇集。
当然,我们必须买一本纸质的Java教材,注意:准备看完就扔的。如果你买了一本Java教材,看完了还准备收藏的话,这本书不适合你。我们高中的教材早扔了,对吗?学习完那本教材,你应该剩下的是一个自己的目录!
值得收藏的,就不是你应该买的。比如JDK文档【Java 2 Platform API Specification】和Java语言说明书【The Java Language Specification】和 The Java Virtual Machine Specification。它们是你必须下载并收藏的。
坦率的说,我看的国内教材比较少,能推荐的教材又是英文版的(都可以找到电子版):
1. Core Java 2, Vol.I--Fundamentals (0-13-089468-0),
2. Core Java 2, Volume II: Advanced
3. Thinking in Java
4. Java 2: A Beginner's Guide, 2nd Ed.
5. Data Structures & Algorithms in Java
6. Sun Certfied Java Programmer Exam (SCJP)相关网站和书籍
够一年看的了。
§4 什么是Java
忘了介绍,什么是Java。当我们提到Java,指的可能是三种意思:
- Java语言:
- Java虚拟机器(JVM):用来执行 Java程序的环境,即Java平台。Java平台是建立在操作系统之上的。因此,JVM有许多的版本,例如Linux和 Windows 版。有了应用于各种操作系统之上的JVM,Java程序就可以在不同的OS平台上执行,这就是著名的“一次编写,到处运行”。
- Java APIs:指的是以类库形式提供的程序设计接口,是一组预先定义好的类。可以在你的程序中直接使用,这些东西是免费的,我们常常要看看其源代码。
所以,当人们提到‘学习 Java’,更通常指的是 Java语言和 API(类库)。
§5 Java的背景知识
这些东西虽然有趣,了解也很有必要,但内容太多,大家自己google搜索吧。
比如说,为什么叫Java?最简单的回答是:Java是其开发者灵机一动想到的,而且最喜欢的名字,因为听起来很酷。
至于是谁第一个建议使用Java的,它是唯一候选的名字吗?至少有几万个英文单词,我以后有时间再贴出来吧。
Java语言的特点?字节码(后面常常称之为类文件或.class文件)。Java实现可移植和安全性的秘密,就是Java的字节码(bytecode)。
什么是JDK(The Java 2 SDK)、JVM(jre)、Java 2 Platform、Java 5、J2SE,J2ME和J2EE?Java能干些什么?Java的缺点有什么?Java与C#的关系?……
呵呵……