Java学习的路:不走弯路 就是捷径

0.引言 JAVA中文站社区门户8~4T tJ{ aks5f
ChinaITLAB导师制辅导中笔者发现问得最多问题莫过于"如何学习编程?Java该如何学习?"类似问题回答多了难免会感觉厌烦就萌生了写下本文想法到时候再有人问起类似问题我可以告诉他(她)请你去看看Java学习的路拜读过台湾蔡学镛先生Java夜未眠有些文章如Java学习的道等让我们确实有共鸣本文题目也由此而来
kf[p-e TG
软件Software开发的路是充满荆棘和挑战的路,也是充满希望的路Java学习也是如此没有捷径可走梦想像天龙 8部中虚竹样被无崖子醍醐灌顶而轻松获得甲子功力是很不现实每天仰天大叫"天神啊请赐给我本葵花宝典吧"殊不知即使你获得了葵花宝典除了受自宫其身的苦外你也不定成得了"东方不败"倒是成"西方失败"几率高
5p c,S;N5\ _)S/z"
不走弯路就是捷径"佛经说不无道理
8KF!~;A.Jv0Pp1
.如何学习设计?
\vLDChJava
种平台也是设计语言如何学好设计不仅仅适用于JavaC等其他设计语言也样管用有编程高手认为Java也好C也好没什么分别拿来就用为什么他们能达到如此境界?我想是编程语言的间有共通的处领会了编程精髓自然能够做到通百通如何学习设计理所当然也有许多共通地方 JAVA中文站社区门户EW.?U#H I5K:O2`
1.1
 培养兴趣 JAVA中文站社区门户_+FP0]#F4{
兴趣是能够让你坚持下去动力如果只是把写作为谋生手段你会活很累也太对不起自己了多关心些行业趣事多想想盖茨不是提倡天天做白日梦但人要是没有了梦想你觉得有味道吗?可能像许多深圳本地农民打打麻将喝喝功夫茶拜拜财神爷;每个月就有几万十几万甚至更多进帐凭空多出个"食利阶层"你认为这样有味道吗?有空多到员论坛转转你会发现他们其实很乐观幽默时不时会冒出智慧火花
4D/P$m I8U7q1.2
 慎选设计语言
7o0m/Im){
男怕入错行女怕嫁错郎初学者选择设计语言需要谨慎对待软件Software开发不仅仅是掌握门编程语言了事它还需要其他很多方面背景知识软件Software开发也不仅仅局限于某几个领域而是已经渗透到了各行各业几乎每个角落 JAVA中文站社区门户P C9P!qU&Fe,_*k
如果你对硬件比较感兴趣你可以学习C语言/汇编语言进入硬件开发领域如果你对电信行业知识及网络比较熟悉你可以在C/C等的上多花时间以期进入电信软件Software开发领域如果你对操作系统比较熟悉你可以学习C/Linux等等,Linux内核开发/驱动开发/嵌入式开发打基础 JAVA中文站社区门户(Uu%SZdZ1rK!g3v
如果你想介入到应用范围最广泛应用软件Software开发(包括电子商务电子政务系统)你可以选择J2EE.NET甚至LAMP组合每个领域要求背景知识不做应用软件Software需要对数据库等很熟悉总的你需要根据自己特点来选择合适你编程语言
5j4g&q^!W"C;P}1.3
 要脚踏实地,快餐式学习不可取
ag3K3fxA9oZ
先分享个故事
krX~,p'g1V1@\
个小朋友他很喜欢研究生物学很想知道那些蝴蝶如何从蛹壳里出来变成蝴蝶便会飞他走到草原上面看见个蛹便取了回家然后看着过了几天以后这个蛹出了条裂痕看见里面蝴蝶开始挣扎想抓破蛹壳飞出来 这个过程达数小时的久蝴蝶在蛹里面很辛苦地拼命挣扎如何也没法子走出来这个小孩看着看着不忍心就想不如让我帮帮它吧便随手拿起剪刀在蛹上剪开使蝴蝶破蛹而出 但蝴蝶出来以后翅膀不够力变得很臃肿飞不起来
2l3Ts(}/nG
这个故事给我们启示是:欲速则不达 JAVA中文站社区门户3_U%~O)Kl2p
浮躁是现代人最普遍心态能怪谁?也许是贫穷落后了这么多年缘故就像当年大跃进都想大步跨入共产主义社会现在软件Software公司、客户、政府、学校、培训机构等等到处弥漫着浮躁的气就拿笔者比较熟悉深圳IT培训行业来说吧居然有打广告宣称"参加培训100%就业"居然报名学生不少简直是藐视天下社会环境如是我们不能改变只能改变自己,闹市中安宁弥足珍贵许多初学者C/Java没开始学立马使用VC/JBuilder,会使用VC/JBuilder开发Hello World就忙不迭向世界宣告"我会软件Software开发了"简历上也大言不惭地写上"精通VC/Java"结果到软件Software公司面试时要么被 3两下打发走了要么被驳体无完肤无地自容到处碰壁的后才知道捧起C编程思想Java编程思想仔细钻研早知如此何必当初呀
R6[3D(R@"
你现在讲究简单方便你以后路就长了"好象也是佛经中劝戒
,X0a dBa?1.4
 多实战,快实战
?g%M-r6i_{4|4X4C*J
彭端淑为学首示子侄中有穷和尚和富和尚故事
r _v%Ds.IS3X
从前 4川边境有两个和尚个贫穷个有钱穷和尚对富和尚说:"我打算去南海朝圣你看如何样?"富和尚说:"这里离南海有几千里远你靠什么去呢?"穷和尚说:"我只要个水钵个饭碗就够了"富和尚为难地说:"几年前我就打算买条船去南海可至今没去成你还是别去吧!" 年以后富和尚还在为租赁船只筹钱穷和尚却已经从南海朝圣回来了
Kd@OdW
这个故事可解读为:任何事情旦考虑好了就要马上上路不要等到准备周全的后再去干事情假如事情准备考虑周全了再上路别人恐怕捷足先登了软件Software开发是门工程学科注重就是实战"君子动口不动手"对软件Software开发人员来讲根本就是他们提倡"动手至上"但别害怕他们大多温文尔雅没有暴力倾向虽然有时候蓬头垢面"比尔盖茨"有前辈高人认为学习编程秘诀是:编程、编程、再编程笔者深表赞同不仅要多实战而且要快实战我们在看书时候不要等到你完全理解了才动手敲代码而是应该在看书同时敲代码运行各种情况可以让你更快更牢固掌握知识点
TTJ|[/y1.5
 多参考代码
&[ }:R)s2o0~{Ay
代码是软件Software开发最重要成果的其中渗透了思想和灵魂许多人被仙剑奇侠传中凄美爱情故事感动,悲剧结局更有种缺憾美为什么要以悲剧结尾?据说是仙剑奇侠传员失恋而安排了这样结局他把自己感觉融入到游戏中却让众多仙剑迷扼腕叹息 JAVA中文站社区门户8p+J'l%t c4C
多多参考代码例子Java而言有参考文献[4.3],API源代码(JDK安装目录下src.zip文件)也可以研究些开源软件Software或框架 JAVA中文站社区门户}0L#U k+y1z
1.6
 加强英文阅读能力 JAVA中文站社区门户2B8n Jw-z
对学习编程来说不要求英语, 但不能点不会,最起码像Java API文档(参考文献[4.4])这些东西还是要能看懂,连猜带懵都可以;旁边再开启"金山词霸"看多了就会越来越熟练在学Java同时学习英文箭双雕多好另外好多软件Software需要到英文网站WebSite下载你要能够找到它们这些是最基本要求英语好对你学习有很大帮助口语好话更有机会进入管理层进而可以成为剥削"周扒皮" JAVA中文站社区门户o+BK']v&Hk
1.7
 万不得已才请教别人
)n%?/R;L8q5Bb
笔者在ChinaITLab网校在线辅导系统中解决学生问题时发现大部分问题学生稍做研究就可以解决请教别人的前你应该先回答如下几个问题 JAVA中文站社区门户K,b$r2m4k \M@
你是否在google中搜索了问题解决办法? JAVA中文站社区门户&g-l P1|$E9d'zyL
你是否查看了Java API文档? JAVA中文站社区门户9A`%H*}| @
你是否查找过相关书籍?
?E nE/ko2Un
你是否写代码测试过? JAVA中文站社区门户,@DK?8P9x-D2o
如果回答都是""而且还没有找到解决办法再问别人不迟要知道独立研究能力对你很重要要知道时间是很宝贵 JAVA中文站社区门户Go;n M5I`q
1.8
 多读好书
9sY+V9Gim
书中自有颜如玉比尔?盖茨是个饱读群书虽然没有读完大学但 9岁时候比尔?盖茨就已经读完了所有百科全书所以他精通天文、历史、地理等等各类学科可以说比尔?盖茨不仅是当今世界上金钱首富而且也可以称得上是知识巨富
fV}wb'`K@
笔者在给学生上课时候经常会给他们推荐书籍到后来学生实在忍无可忍开始抱怨"天呐这么多书到什么时候才能看完了""学软件Software开发感觉上了贼船"这时候回答般是"别着急什么时候带你们去看看我书房到现在每月花在技术书籍上400这在软件Software开发人员的中还只能够算是中等"学生当场晕倒(注:这部分学生是刚学软件Software开发)
J"g MOWz;N
对于在Java开发领域好书在笔者另外篇文章中会专门点评该文章可作为本文姊妹篇 JAVA中文站社区门户`E1p:g F`
1.9
 使用合适工具
I#C%?}\;]
工欲善其事必先利其器软件Software开发包含各种各样活动需求收集分析、建立用例模型、建立分析设计模型、编程实现、调试、自动化测试、持续集成等等没有工具帮忙可以说是寸步难行工具可以提高开发效率使软件Software质量更高BUG更少组合称手武器到飞花摘叶皆可伤人境界就很高了无招胜有招手中无剑心中有剑这样境界几乎不可企及在笔者另外篇文章中会专门阐述如何选择合适工具(该文章也可作为本文姊妹篇) JAVA中文站社区门户4EN3W9K"\%D
2
.软件Software开发学习路线
(W%}L m`
两千多年儒家思想孔孟的道中庸思想透入骨髓既不冒进也不保守并非中庸的道而是找寻学习软件Software开发正确路线和规律
n#o$n)lx%P
从软件Software开发人员生涯规划来讲我们可以大致分为 3个阶段软件Software工程师软件Software设计师架构设计师或项目管理(project management)师不想当元帅士兵不是好士兵不想当架构设计师或项目管理(project management)师员也不是好我们应该努力往上走让我们先整理下开发应用软件Software需要学习主要技术 JAVA中文站社区门户#e4QCtxo
A
.基础理论知识如操作系统、编译原理、数据结构和算法、计算机原理等它们并非不重要如不想成为计算机科学家可以采取"用到时候再来学"原则
;v+i4NRD1M9P] x/HF7sEB
门编程语言现在基本上都是面向对象语言Java/C/C#等等如果做WEB开发话还要学习HTML/JavaScript等等
#t/P3e&b;]H_)WC
种思路方法学或者说思想现在基本都是面向对象思想(OOA/OOD/设计模式)由此而衍生基于组件开发CBD/面向方面编程AOP等等
8Y0X9Lrz ]*dD
种关系型数据库ORACLE/SqlServer/DB2/MySQL等等
:k-kXBC"hn9V9`?E
种提高生产率IDE集成开发环境JBuilder/Eclipse/VS.NET JAVA中文站社区门户0B{C!ALz |1Ys(Z
F
UML建模工具ROSE/VISIO/钢笔进行建模
9zp&T ]4mBF)hGG
种软件Software过程RUP/XP/CMM等等通过软件Software过程来组织软件Software开发众多活动使开发流程专业化规范标准化当然还有其他些软件Software工程知识
)@G,M^ nBdH
.项目管理(project management)、体系结构、框架知识 JAVA中文站社区门户 l+VR7nwTzA1{4?1sj
正确路线应该是:B→C→E→F→G→H JAVA中文站社区门户3jMS+WV.kC
还需要补充几点: JAVA中文站社区门户.Tf3P BK7Rw
1
).对于AC要补充我们应该在实战中逐步领悟编程理论和编程思想新技术虽然不断涌现更新速度令人眼花燎乱雾里看花;但万变不离其宗编程理论和编程思想变化却很慢掌握了编程理论和编程思想你就会有拨云见日的感面向对象思想在目前来讲是相当关键是强势技术的在上面需要多投入时间给你回报也会让你惊喜
n$P uTe[h#B2
).对于数据库来说是独立学习这个时机就由你来决定吧 JAVA中文站社区门户M ZF)FjR?;T
3
).编程语言作为学习软件Software开发主线而其余作为辅线
LOTeVg&hP+n4
).软件Software工程师着重于BCED;软件Software设计师着重于BCEDF;架构设计师着重于CFH JAVA中文站社区门户(a)d$|.d)E7xun
3
.如何学习Java?
kQS @l$G:g7w0x3.1 Java
学习路线
OyN+^2r prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />3.1.1
基础语法及Java原理 JAVA中文站社区门户;z4]8|b1{0N&? \w/s
基础语法和Java原理是地基地基不牢靠犹如沙地上建摩天大厦是相当危险学习Java也是如此必须要有扎实基础你才能在J2EEJ2ME领域游刃有余参加SCJP(SUN公司认证Java员)考试不失为个好思路方法原因的是为了对得起你交1200大洋考试费你会更努力学习原因的 2是SCJP考试能够让你把基础打得很牢靠它要求你跟JDK样熟悉Java基础知识;但是你千万不要认为考过了SCJP就有多了不起就能够获得软件Software公司青睐就能够获取高薪这样想法也是很危险获得"真正"SCJP只能证明你基础还过得去但离实际开发还有很长段路要走
'j F(~ {2uq z }|3.1.2 OO
思想领悟 JAVA中文站社区门户-n)Q$R K!T2V4m/J
掌握了基础语法和Java运行原理后我们就可以用Java语言实现面向对象思想了面向对象种思路方法学;是独立于语言的外编程思想;CBD基于组件开发基础;属于强势技术的当以后因工作需要转到别面向对象语言时候你会感到特别熟悉亲切学起来像喝凉水这么简单
vP3AP$Y7pH3`
使用面向对象思想进行开发基本过程是:
$Iop Geu
调查收集需求
0B{ [O!]sZ1@-JW
建立用例模型 JAVA中文站社区门户3Z~%_aoq/j$_
从用例模型中识别分析类及类和类的间静态动态关系从而建立分析模型
^n"~'Y dYQ
细化分析模型到设计模型
"Wnpw q~
用具体技术去实现 JAVA中文站社区门户E;l-b"W:G9{*x c
测试、部署、整理总结
-t/^ySN V]4e3.1.3
基本API学习 JAVA中文站社区门户(r!giD6d,|0|
进行软件Software开发时候并不是什么功能都需要我们去实现也就是经典名言所说"不需要重新发明轮子"我们可以利用现成类、组件、框架来搭建我们应用SUN公司编写好了众多类实现些底层功能以及我们下载过来JAR文件中包含,我们可以类中思路方法来完成某些功能或继承它那么这些类中究竟提供了哪些思路方法给我们使用?思路方法参数个数及类型是?类构造器需不需要参数?总不可能SUN公司工程师打国际长途甚至飘洋过海来告诉你他编写类该如何使用吧他们只能提供文档给我们查看Java DOC文档(参考文献4.4)就是这样文档它可以说是员和员交流文档 JAVA中文站社区门户Xo!c7zXf.P k
基本API是实现了些底层功能通用性较强API串处理/输入输出等等我们又把它成为类库熟悉API思路方法是多查Java DOC文档(参考文献4.4) 2是使用JBuilder/EclipseIDE代码提示功能 JAVA中文站社区门户F^NAXt*E
3.1.4
特定API学习
'C4Dr"N~2lwqXJava
介入领域很广泛区别领域有区别API没有人熟悉所有API般人而言只是熟悉工作中要用到API如果你做界面开发那么你需要学习Swing/AWT/SWTAPI;如果你进行网络游戏开发你需要深入了解网络API/多媒体API/2D3D等;如果你做WEB开发就需要熟悉ServletAPI总的需要根据工作需要或你兴趣发展方向去选择学习特定API JAVA中文站社区门户FD:F H4e~1g^
3.1.5
开发工具使用方法 JAVA中文站社区门户-^!RG.vbYC cC
在学习基础语法和基本面向对象概念时从锻炼语言熟练程度角度考虑我们推荐使用工具是Editplus/JCreator+JDK,这时候不要急于上手JBuilder/Eclipse等集成开发环境以免过于关注IDE强大功能而分散对Java技术本身注意力过了这阶段你就可以开始熟悉IDE JAVA中文站社区门户n-r7?;]|)E_
员日常工作包括很多活动编辑、编译及构建、调试、单元测试、版本控制、维持模型和代码同步、文档更新等等几乎每项活动都有专门工具如果独立使用这些工具你将会很痛苦你需要在堆满工具任务栏上不断切换效率很低下也很容易出错JBuilderEclipseIDE中已经自动集成编辑器、编译器、调试器、单元测试工具JUnit、自动构建工具ANT、版本控制工具CVSDOC文档生成和更新等等甚至可以把UML建模工具也集成进去又提供了丰富向导帮助生成框架代码让我们开发变得更轻松应该说IDE发展趋势就是集成软件Software开发中要用到几乎所有工具 JAVA中文站社区门户7q{HR{/HC
从开发效率角度考虑使用IDE是必经的路也是从个学生到个职业员转变里程碑 JAVA中文站社区门户-UyAkf j6m%O5Z;c
Java
开发使用IDE主要有EclipseJBuilderJDeveloperNetBeans等几种;而EclipseJBuilder占有市场份额是最大JBuilder在近几年来直是Java集成开发环境中霸主它是由备受员尊敬Borland公司开发在硝烟弥漫Java IDE大战中,以其快速版本更新击败IBMVisual Age for Java等而成就番伟业IBMVisual Age for Java上已经无利可图的下干脆将的贡献给开源社区成为Eclipse前身真所谓"柳暗花明又"浴火重生Eclipse以其开放式插件扩展机制、免费开源获得广大员(包括几乎所有骨灰级员)青睐极具发展潜力
(ZR+TXS m1WD'U!O3n)f3.1.6
学习软件Software工程 JAVA中文站社区门户M!m [3Q V F~-Q
对小型项目而言你可能认为软件Software工程没太大必要随着项目复杂性越来越高软件Software工程必要性才会体现出来参见"软件Software开发学习路线"小节 JAVA中文站社区门户1v Y*zXnq@7H
3.2
学习要点
k+C9K&yv Vg(v
确立学习路线的后我们还需要整理总结Java学习要点这些要点在前文多多少少提到过只是笔者觉得这些地方特别要注意才对它们进行汇总不要嫌我婆婆妈妈啊 JAVA中文站社区门户7SMA9D2P1_([
3.2.1
勤查API文档
.?0Xd8o7i*r9rJ+pJL
员编写好某些类觉得很有成就感,想把它贡献给各位苦难同行这时候你要使用"Javadoc"工具(包含在JDK中)生成标准Java DOC文档,供同行使用J2SE/J2EE/J2MEDOC文档是员和员交流工具几乎人手除了菜鸟的外J2SE DOC文档官方下载地址:http://Java.sun.com/j2se/1.5.0/download.jsp你可以到google搜索CHM版本下载也可以在线查看:http://Java.sun.com/j2se/1.5.0/docs/api/index.html
t{G%F}+u
对待DOC文档要像毛主席语录早上起床念吃饭睡觉前念 JAVA中文站社区门户&p~f$rlU b l
当需要某项功能时候你应该先查相应DOC文档看看有没有现成实现话就不必劳神费心了直接用就可以了找不到时候才考虑自己实现使用步骤般如下:
Rb+Xc^S)~'b
找特定般根据功能组织 JAVA中文站社区门户eh,qrj)X jftbo i
找需要使用类类命名规范标准话我们由类名字可猜出 2
H!w"Qv o7Be U8rG
选择构造器大多数使用类方式是创建对象
#t!Y[lZj$x3E
选择你需要思路方法 JAVA中文站社区门户/rGfV'[0aE v
3.2.2
查书/google->写代码测试->查看源代码->请教别人 JAVA中文站社区门户-Q1QY,x4|5Y&x
当我们遇到问题时候该如何解决?
Cw)H?1?eF g$I
这时候不要急着问别人太简单问题没经过研究问题别人会因此而瞧不起你可以先找找书google中搜下看看绝大部分问题基本就解决了而像"某些类/思路方法如何使用问题"DOC文档就是答案对某些知识点有疑惑是写代码测试会给你留下深刻印象而有问题你可能需要直接看API源代码验证你想法万不得已才去请教别人 JAVA中文站社区门户0e0IN9DOK Z
3.2.3
学习开源软件Software设计思想 JAVA中文站社区门户-p?r[r3I6BrA
Java
领域有许多源代码开放工具、组件、框架JUnitANTTomcatStrutsSpringJive论坛、PetStore宠物店等等多如牛毛这些可是前辈给我们留下瑰宝呀入宝山而空手归你心甘吗?对这些工具、框架进行分析领会其中设计思想有朝日说不定你也能写XXX框架什么风光分析开源软件Software其实是你提高技术、提高实战能力便捷思路方法 JAVA中文站社区门户 m I} A\RO.r&rs
3.2.4
规范标准重要性
6zZ _9w5s p)f
没有规矩不成方圆这里规范标准有两层含义层含义是技术规范标准多到http://www.jcp.org下载JSRXXX规范标准多读规范标准这是最权威准确最新教材第 2层含义是编程规范标准如果你使用了大量独特算法富有个性变量及思路方法命名方式;同时没给作注释以显示你编程功底是多么深厚这样代码别人看起来像天书要理解谈何容易更不用说维护了必然会被无情地扫入垃圾堆Java编码规范标准到此查看或下载http://Java.sun.com/docs/codeconv/中文也有还要问我在哪请参考3.2.2 JAVA中文站社区门户9rkK%mm C l
3.2.5
不局限于Java JAVA中文站社区门户C$^`/_C;j K
很不幸很幸运要学习东西还有很多不幸要学东西太多且多变没时间陪老婆家人或女朋友导致身心疲惫严重者甚至导致抑郁症幸运是别人要抢你饭碗绝非易事他们或她们需要付出很多才能达成心愿
*mT1z&[N5J5_Java
不要孤立地去学习需要综合学习数据结构、OOP、软件Software工程、UML、网络编程、数据库技术等知识用横向纵向比较联想方式去学习会更有效如学习Java集合时候找数据结构书看看;学JDBC时候复习数据库技术;采取依然是"需要时候再学"原则
LJ1lqI.B/\4
.结束语
@ M%KnT,A1j
需要强调学习软件Software开发确实有难度也很辛苦需要付出很多努力但千万不要半途而废本文如果能对直徘徊在Java神殿的外朋友有所帮助笔者也欣慰了哈哈如何听起来老气横秋呀?没办法在电脑长期辐射的下都快变成小老头了最后奉劝各位员尤其是MM完成工作后赶快远离电脑胡播乱报报道电脑辐射会在白皙皮肤上面点缀些小黑点看起来鲜艳无比……

8~(Cm6S5_ku Q JAVA中文站社区门户+R _ r[ B Mv 

S0w r.N5W)v

TAG: Java JAVA java 捷径 学习 走弯路
Tags: 

延伸阅读

最新评论

发表评论