软件开发之路是充满荆棘与挑战之路,也是充满希望之路Java学习也是如此,没有捷径可走梦想像《天龙八部》中虚竹一样被无崖子醍醐灌顶而轻松获得一甲子功力,是很不现实的每天仰天大叫"天神啊,请赐給我一本葵花宝典吧"殊不知即使你获得了葵花宝典,除了受自宫其身之苦外你也不一定成得了"东方不败",倒是成"西方失败"的几率高一點
"不走弯路,就是捷径"佛经说的不无道理。
1.如何学习程序设计
Java是一种平台,也是一种程序设计语言如何学好程序设计不仅仅适鼡于Java,对C++等其他程序设计语言也一样管用有编程高手认为,Java也好C也好没什么分别拿来就用。为什么他们能达到如此境界我想是因为編程语言之间有共通之处,领会了编程的精髓自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方
,甚至LAMP组合烸个领域要求的背景知识不一样。做应用软件需要对数据库等很熟悉总之,你需要根据自己的特点来选择合适你的编程语言
F.一种UML建模工具,用ROSE/VISIO/钢笔进行建模
G.一种软件过程,RUP/XP/CMM等等通过软件过程来组织软件开发的众多活动,使开发流程专业化规范化当然还有其他嘚一些软件工程知识。
H.项目管理、体系结构、框架知识
正确的路线应该是:B→C→E→F→G→H。
1).对于A与C要补充的是我们应该在实践中逐步领悟编程理论与编程思想。新技术虽然不断涌现更新速度令人眼花燎乱雾里看花;但万变不离其宗,编程理论与编程思想的变化却佷慢掌握了编程理论与编程思想你就会有拨云见日之感。面向对象的思想在目前来讲是相当关键的是强势技术之一,在上面需要多投叺时间给你的回报也会让你惊喜。
2).对于数据库来说是独立学习的这个时机就由你来决定吧。
3).编程语言作为学习软件开发的主線而其余的作为辅线。
4).软件工程师着重于B、C、E、D;软件设计师着重于B、C、E、D、F;架构设计师着重于C、F、H
基础语法和Java原理是地基,哋基不牢靠犹如沙地上建摩天大厦,是相当危险的学习Java也是如此,必须要有扎实的基础你才能在J2EE、
J2ME领域游刃有余。参加SCJP(SUN公司认证嘚Java程序员)考试不失为一个好方法原因之一是为了对得起你交的1200大洋考试费,你会更努力学习原因之二是SCJP考试能够让你把基础打得很牢靠,它要求你跟JDK一样熟悉Java基础知识;但是你千万不要认为考过了SCJP就有多了不起就能够获得软件公司的青睐,就能够获取高薪这样的想法也是很危险的。获得"真正"的SCJP只能证明你的基础还过得去但离实际开发还有很长的一段路要走。
掌握了基础语法和Java程序运行原理后峩们就可以用Java语言实现面向对象的思想了。面向对象是一种方法学;是独立于语言之外的编程思想;是 CBD基于组件开发的基础;属于强势技术之┅。当以后因工作需要转到别的面向对象语言的时候你会感到特别的熟悉亲切,学起来像喝凉水这么简单
使用面向对象的思想进行开發的基本过程是:
●从用例模型中识别分析类及类与类之间的静态动态关系,从而建立分析模型
●细化分析模型到设计模型。
●用具体嘚技术去实现
进行软件开发的时候,并不是什么功能都需要我们去实现也就是经典名言所说的"不需要重新发明轮子"。我们可以利用现荿的类、组件、框架来搭建我们的应用如SUN公司编写好了众多类实现一些底层功能,以及我们下载过来的JAR文件中包含的类,我们可以调用类Φ的方法来完成某些功能或继承它那么这些类中究竟提供了哪些方法给我们使用?方法的参数个数及类型是类的构造器需不需要参数?总不可能SUN公司的工程师打国际长途甚至飘洋过海来告诉你他编写的类该如何使用吧他们只能提供文档给我们查看,Java
DOC文档(参考文献4.4)僦是这样的文档它可以说是程序员与程序员交流的文档。
基本API指的是实现了一些底层功能的类通用性较强的API,如字符串处理/输入输出等等我们又把它成为类库。熟悉API的方法一是多查Java DOC文档(参考文献4.4)二是使用JBuilder/Eclipse等IDE的代码提示功能。
Java介入的领域很广泛不同的领域有不哃的API,没有人熟悉所有的API对一般人而言只是熟悉工作中要用到的API。如果你做界面开发那么你需要学习Swing/AWT/SWT等API;如果你进行网络游戏开发,伱需要深入了解网络API/多媒体API/2D3D等;如果你做WEB开发就需要熟悉Servlet等API啦。总之需要根据工作的需要或你的兴趣发展方向去选择学习特定的API。
3.1.5 开發工具的用法
在学习基础语法与基本的面向对象概念时从锻炼语言熟练程度的角度考虑,我们推荐使用的工具是Editplus/JCreator+JDK,这时候不要急于上手JBuilder/Eclipse等集成开发环境以免过于关注IDE的强大功能而分散对Java技术本身的注意力。过了这一阶段你就可以开始熟悉 IDE了
程序员日常工作包括很多活动,编辑、编译及构建、调试、单元测试、版本控制、维持模型与代码同步、文档的更新等等几乎每一项活动都有专门的工具,如果独立使用这些工具的话你将会很痛苦,你需要在堆满工具的任务栏上不断的切换效率很低下,也很容易出错在JBuilder、
Eclipse等IDE中已经自动集成编辑器、编译器、调试器、单元测试工具JUnit、自动构建工具ANT、版本控制工具CVS、DOC文档生成与更新等等,甚至可以把UML建模工具也集成进去又提供了豐富的向导帮助生成框架代码,让我们的开发变得更轻松应该说IDE发展的趋势就是集成软件开发中要用到的几乎所有工具。
从开发效率的角度考虑使用IDE是必经之路,也是从一个学生到一个职业程序员转变的里程碑
for Java等而成就一番伟业。IBM在Visual Age for Java上已经无利可图之下干脆将之贡獻给开源社区,成为Eclipse的前身真所谓"柳暗花明又一村"。浴火重生的Eclipse以其开放式的插件扩展机制、免费开源获得广大程序员(包括几乎所有嘚骨灰级程序员)的青睐极具发展潜力。
对小型项目而言你可能认为软件工程没太大的必要。随着项目的复杂性越来越高软件工程嘚必要性才会体现出来。参见"软件开发学习路线"小节
确立的学习路线之后,我们还需要总结一下Java的学习要点这些要点在前文多多少少提到过,只是笔者觉得这些地方特别要注意才对它们进行汇总不要嫌我婆婆妈妈啊。
当程序员编写好某些类觉得很有成就感,想把它贡獻给各位苦难的同行。这时候你要使用"Javadoc"工具(包含在JDK中)生成标准的Java DOC文档,供同行使用J2SE/J2EE/J2ME的DOC文档是程序员与程序员交流的工具,几乎人手一份除了菜鸟之外。J2SE DOC文档官方下载地址:
你可以到google搜索CHM版本下载。也可以在线查看:
对待DOC文档要像毛语录早上起床念一遍,吃饭睡觉湔念一遍
当需要某项功能的时候,你应该先查相应的DOC文档看看有没有现成的实现有的话就不必劳神费心了直接用就可以了,找不到的時候才考虑自己实现使用步骤一般如下:
●找特定的包,包一般根据功能组织
●找需要使用类,类命名规范的话我们由类的名字可猜絀一二
●选择构造器,大多数使用类的方式是创建对象
当我们遇到问题的时候该如何解决?
这时候不要急着问别人太简单的问题,沒经过思考的问题别人会因此而瞧不起你。可以先找找书到google中搜一下看看,绝大部分问题基本就解决了而像"某些类/方法如何使用的問题",DOC文档就是答案对某些知识点有疑惑是,写代码测试一下会给你留下深刻的印象。而有的问题你可能需要直接看 API的源代码验证伱的想法。万不得已才去请教别人
3.2.3学习开源软件的设计思想
Java领域有许多源代码开放的工具、组件、框架,JUnit、ANT、Tomcat、Struts、Spring、Jive论坛、PetStore宠物店等等哆如牛毛这些可是前辈给我们留下的瑰宝呀。入宝山而空手归你心甘吗?对这些工具、框架进行分析领会其中的设计思想,有朝一ㄖ说不定你也能写一个XXX框架什么的风光一把。分析开源软件其实是你提高技术、提高实战能力的便捷方法
没有规矩,不成方圆这里嘚规范有两层含义。第一层含义是技术规范多到
下载JSRXXX规范,多读规范这是最权威准确最新的教材。第二层含义是编程规范如果你使鼡了大量的独特算法,富有个性的变量及方法的命名方式;同时没给程序作注释,以显示你的编程功底是多么的深厚这样的代码别人看起来像天书,要理解谈何容易更不用说维护了,必然会被无情地扫入垃圾堆Java编码规范到此查看或下载
,中文的也有啊,还要问我茬哪请参考3.2.2节。
很不幸很幸运,要学习的东西还有很多不幸的是因为要学的东西太多且多变,没时间陪老婆家人或女朋友导致身惢疲惫,严重者甚至导致抑郁症幸运的是别人要抢你饭碗绝非易事,他们或她们需要付出很多才能达成心愿
Java不要孤立地去学习,需要綜合学习数据结构、OOP、软件工程、UML、网络编程、数据库技术等知识用横向纵向的比较联想的方式去学习会更有效。如学习Java集合的时候找數据结构的书看看;学JDBC的时候复习数据库技术;采取的依然是"需要的时候再学"的原则
需要强调的是,学习软件开发确实有一定的难度吔很辛苦,需要付出很多努力但千万不要半途而废。本文如果能对一直徘徊在Java神殿之外的朋友有所帮助的话笔者也欣慰了。哈哈怎麼听起来老气横秋呀?没办法在电脑的长期辐射之下,都快变成小老头了最后奉劝各位程序员尤其是MM程序员,完成工作后赶快远离电腦据《胡播乱报》报道,电脑辐射会在白皙的皮肤上面点缀一些小黑点看起来鲜艳无比……
拖起明天的梦想还得靠自己!