学Java一年有余,每每总结时,常常遗憾于学习过程的迂回曲折。好比站在高处俯视蚂蚁搬家,总觉得存在有诸多可疑之处,倘若有人能分享学习过程,那么设想我就不会走那么多弯路,浪费那么多时间。
言归正传,James Gosling 博士亲手设计Java语言,让我们回顾一下吧那个经典瞬间吧。1994年底,James Gosling参加了在硅谷召开的“技术、教育和设计大会”。他报着试一试的心情向与会者演示了Java的功能。他点击了网页上的一个静止的分子结构图标,一条命令通过互联网送到了几百英里外的网站,下载了一段Java小程序,在本地工作站上开始执行。在几秒钟时间里,原本静止的网页上,一个分子图像以三维动画的方式转了起来。
“哇!”James Gosling听到了全场观众的赞叹声。言之于此,联想在JDK中demo包中的例子了吗?如此Java就成为网络最炙手可热的编程语言之一。
在此我不想再赘述Java在网络安全、可移植性等诸多方面带给我们的惊喜,一切都显得多余。无论如何很多程序员都成她的忠实fans,包括我。当然我写下学习历程的原来不是炫耀自己已经达到某种水平,只想经后来的Java fans分享我的学习历程,并且企望给他们些许的启示吧。
那我们就开始吧。
1、入门教材。
刚开始学习Java的时候一定不要错过两本书,Thinking In Java(<<Java编程思想>>)和Core Java 2(Java核心技术)。Thinking In Java是Bruce Eckel的经典之作,你可以登陆http://www.bruceeckel.com下载免费版本,另外假如英语水平不是太差的话,推荐看英语原版的。我得承认,看完这本种的时候最大的想法是书的作者是我就好了,因为太经典了,经典的让人想占为己有。本书不仅讲解Java面向对象的基本知道,在很多内容解入Java深层的东西。
Core Java 2的原出版社是Sun Microsystems,或许大家已经想到了,假如Thinking In Java 更注重“思想”的话,那么Core Java2注重的是应用,你可以在书到找到许许多多的例子来帮助你学习Java。
2、不得不提的建议。
学习伊始,智能的IDE对学习Java是不利的,比较如些智能的Eclipse几乎不用自己写代码,就可以完成学习任何一门语言都不能错过的HelloWord。诚然,几乎没有人现在用提示符下的,javac 、java 命令编译运行代码。对于初期学习的程序员来说,手写代码的过程会使你更快了解Java的结构,加快学习的进度。
3、继续前进。这时候你已经对Java语言有了一定的了解,也可能在做J2EE方面的开发,并接解不少优秀的开源框架,如struts、spring等。你对java.lang包、javax.swing包已经有了相当深入的了解。假如你这时,还经常为“用继承还是用组合”诸如此类问题而因惑的时候,我建议你去看看这个本,Effective Java。这本书提出了实用的57条建议,假如你是一个C++程序员,并且看过Effective C++的话,那么,这本书的Java版本就是它了。Effective Java的作者是Joshua Bloch,又一位大师,JDK的collection框架的主要设计者。
这本书我觉得和编程思想有一些共同的东西,另外给我们提供了实用的建议,不要忘记这本书可是Jolt Award大奖的得主噢。
2005年,Joshua Blosh又出版另一本书Java Puzzlers,假如你不知道下面这段程序的输出结果并且对些充满好奇的话,请你看看这本书,。
public class Foo {
private Foo(Object o) {
System.out.println("object");
}
private Foo(String s) {
System.out.println("string");
}
public static void main(String[] args) {
new Foo(null);
}
}
4、设计模式与重构
也许你对Thinking In Java第十六章 Analysis and Design提出一的问题想进行深入了解的话。看看这本书吧,Design Patterns:elements of reusable object oriented software,大师 Erich Gamma等人的经典之作,或者你已经听说过创建模式,结构模式和行为模式,但如何对一个问题找不到解决方面的时候,这本书将是你的最佳选择。虽然书中代码全是用C++写的,但我想语言只是一种工具,并不妨碍你对设计模式的学习,读完这本书,你就可去用singlton,decorator,command模式去编程了,你将发现它非常有用。
有你做过一些项目,特别看过别人的代码的时候,你是否会提出这样的疑问,我的代码为什么没有别人写的漂亮呢?我的代码修改起来为什么这么麻烦?为什么别人看不懂我的代码?如果你有这样的疑问,你可以去看这本书了Refactoring:Improving Design of Existing Code,作者又是一位*大师Martin Fowler,他的主页http://www.martinfowler.com。
5、关于JUnit框架
还有一个不得不介绍的开源框架就是JUnit,这个框架其实在学习Java不久就要了解的,并且和重构有极大的联系。JUnit为我们测试一个类提供方以简单能便的框架,你可通过继承TestCase就可以实现测试类,而方便的Eclipse的JUnit插件使用
非常方便。感谢Erich Gamma (Design Patterns:elements of reusable object oriented software的作者之一)and Kent Beck编写这个框架,网址http://www.junit.org。介绍JUnit的不错的一本书,JUnit In Action。
举个简单例子
public class Calulator
{
public int add(int number1,int number2){
return number + number2}
}
下面测试用例,很简单吧。
import junit.framework.TestCase;
public class TestCalculator extends TestCase {
public void testAdd()
{
Calculator calculator = new Calculator();
int result = calculator.add(10, 50);
assertEquals(60, result);
}
}
就写到这些,未曾想到如此罗嗦的写下这些文字。希望对未来的Java fans有些帮助吧,哪怕只是一点,我已经欢心雀跃了。
末了,提几个忠告:
1、不要买“几天就学有通Java”的书,除非,你有很多钱可以浪费并且不在乎你宝贵的时间。
2、不要怕向别人请教,除非得到别人花了很长时间才明白的问题,并不令你感觉兴奋与快乐。
3、不要吝啬你的经验,一定要与大家分享,除非你忘记了别人是怎么帮助你的。