自学java可以看些什么java零基础入门自学的书

酷勤网 C 程序员的那点事!
当前位置: >
浏览次数:次
需要有高中毕业的水准 (或者同等学历的也行,比如中专,我本人就是读中专然后再读自考大专的)。
完全可以自学,最好自己有电脑。
偏重软件,而不是计算机硬件。
掌握3000个左右的常用单词,能读就差不多了, 如果不想看英文可以找中文翻译版的,我个人偏向看中文,对于非常好的书我通常中英文都买来看。
以下列出的书是按照循序渐进的方式介绍的,
都是我自学过程中学过的并且觉得不错的书,
计算机基础类的书籍与Java相关书籍的比例是5:2,所以非常强调基础,
核心书籍将近35本,预计需要花两年半时间左右,
别觉得书很少,能平均一个月完成一本算挺不错了,说明你在计算机方面有一些天赋。:)
另外,扩展阅读也有35本,这些可以选读。
(注:这是我12年来的自学生涯中特意挑选出来的书,如果当初就有人告诉我该这么自学我肯定会少走无数的弯路)
计算机基础类的书籍
Java相关书籍
扩展你的眼界
1. 计算机基础类的书籍
1.1 与计算机相关的数学
主要有: 微积分、线性代数、概率论与数理统计、离散数学
相对来说离散数学最有用,其他三门在从事数值计算、计算机图形学、算法复杂度分析等领域会用得多一些,
国内的大学很多都是使用高等教育出版社同济大学写的书,我也读过,
不过,我还是推荐顺便读一读国外出的这4本,学这4门课对自己的要求不必像数学系的学生那么苛刻,能达到70分的水准就够用了。
1.2 计算机科学导论
顾名思义,这是计算机专业的学生第一本要读的专业书,
这本书对整个计算机科学的各个领域做了一个概述,点到为止,
包括最基本的十进制、二进制、十六进制;数据的存储、运算;
计算机组成、网络、操作系统、算法与数据结构、程序设计语言、数据库、人工智能等等。
读完这本书,就知道整个计算机学科都有哪些东西了,这本书适合泛读,若碰到不理解的,可以直接跳过。
1.3 C程序设计语言
程序设计的入门课,&Hello,World&就出自这里,虽然只有160多页,却是永恒的经典。
此书要精读,并且需要在电脑上跑通书上的代码例子,习题也要做一做。
另外,推荐再读『程序设计抽象思想-C语言描述』,这本书即是C语言的应用实践课,又是进一步学习数据结构和算法的入门读物,
书里用了大量的例子介绍了递归、堆栈、链表、树、图等等非常常用的知识,并且还引申到Java的一些基本概念。
1.4 理解计算机系统
这本书主要是介绍计算机整体的软、硬件系统的,包括处理器、存储器层次结构、虚拟存储器、链接、IO、网络等等,
读完它你大概知道你所写的程序是怎么通过计算机的硬件和底层软件系统运行的,
里面时不时提到C语言,所以先学C语言再学这本书比较合理(或者穿插着学也可以)。
另外,可选的,推荐再读『计算要组成及汇编语言原理』,书不厚,240多页,最主要是以Java虚拟机为例来讲的。
我在读自考大专时是用这本:
1.5 算法导论
学算法的都知道这本书吧,非常有名,老实说这书有点难度,需要自己慢慢啃,
去大公司面试时特别用得着,快速排序、二叉树、红黑树、动态规划、最短路径这类算法会常拿出来问的。
1.6 操作系统
进程、线程、CPU调度、同步、死锁、内存管理、虚拟内存、文件系统、I/O系统这些最基本的概念和原理必须掌握和理解透,
对于以后的工作是相当有用的。
1.7 计算机网络
这本书一时没找到,我就不拍照片了,只要大概了解一下即可,除非打算将来做网络管理员之类的工作。
1.8 程序语言理论与编译原理
这是我目前工作和研究的领域。
这类书比较偏理论,会有点难读,不过我还是强烈建议你硬着头皮认真读一读,
只要你能理解透书中的内容,以后你再学习新的程序语言都是件轻而易举的事,
并且也是从事数据库SQL引擎研究的前提。
先读『自动机理论、语言和计算导论』,
里面告诉你什么是自动机、什么是正则语言、什么是上下文无关语言,还有图灵机。
清华大学的『形式语言与自动机理论』也可以同时看。
接着就可以看『编译原理』了,此书也叫&龙书&,当你想从事编译器开发时这本书是必看的,
『编译原理』出了两个版本了,如果有钱的话我还是建议你两个版本都买,
『编译原理』和『自动机理论、语言和计算导论』的内容有一些重叠,
有些人一上来就直接看『编译原理』而不看自动机和形式语言,这会有点难,
『自动机理论、语言和计算导论』算是『编译原理』的前导课程。
最后可以再读读『程序设计语言原理』和『程序设计语言实践之路』
这两本书其实不偏重理论的,有了前面的基础反而更简单,算是各类程序语言的综述,
各种泛式的语言都有涉及,包括: 过程式语言、面向对象、函数式语言,甚至基于逻辑的程序语言都讲了(比如Prolog)。
1.9 数据库
这也是我现在的工作和研究领域。
要说数据库和程序语言是整个计算机学科应用最广泛的领域应该没有人会反对,
关系数据库管理系统(RDBMS)在过去的几十年直到现在都占着绝对的统治地位,
随着互联网、社交网络的发展以及数据量的增长,图数据库、NoSQL都在蓬勃发展,
所以可以预计未来5年内数据库会是一个非常活跃的领域。
数据库的理论书籍不需要读得太多,
只要读完上面的『数据库系统基础教程』『数据库系统实现』基本上够用了,
当然,你需要慢慢的品尝、要精读,至少要读两遍以上。
『事务处理』这本书如果你将来不从事数据库事务领域的研究不需要读,
前面两本书中也会有好几个章节讲事务相关的知识。
至此,如果能学完、学好上面9小节中列出的书籍和相关知识,
那么恭喜你,你的计算机基础已经打得非常牢固了。
2. Java相关书籍
我用的版本比较老, 『Java核心技术』最新已出到第9版了,只有经得起时间考验的书才值得一版再版,
每一个Java程序员都应该持有一本 『Java核心技术』 。
无需多说,除了AWT、Swing、Applet、RMI、CORBA、XML、JNI用得相对较少或过时的技术章节之外,
其他的你应该而且必须好好细读并且一边读一边在电脑上面操作练习。
另外,有关线程、IO、JDBC、网络、安全相关的章节在下面都会有更专业的书来介绍,
这类书归入进阶类。
2.2 Java 线程
这本书讲了有关线程的各种API,还有一些基本概念:死锁、竞态条件、锁、条件变量、屏障等等,
如果你想从事一些类似Tomcat这种Server的开发,理解线程相关的东西是非常必要的。
2.3 Java IO/NIO
我是在原来的公司内部看的英文电子版,跟『Java线程』 的风格类似,完整的介绍相关API和基本概念。
NIO的知识对于实现像Netty这样的高性能网络框架必不可少,同样像Tomcat、Jetty也太量运用了NIO。
2.4 Java 网络编程
又是一本经典好书,如果你想写出好的网络程序,必须读读这本书,
InetAddress、Socket要是你连这些都还不懂,赶紧买这本书来看。
2.5 Java 安全
一本常被&无视&的好书,在国内没多少人听说过...此书作者跟『Java 线程』 的作者是同一个人,
书里介绍了Java的整个安全模型,沙箱、安全管理器、密匙、证书、消息摘要、数字签名、SSL等等,
这本书并不讲高深的理论,非常实用,
在Tomcat、Jetty、Netty、Cassandra、H2这类开源项目需要涉及安全的地方都会用到这书里提到的一些技术。
2.6 Java JDBC
我也是看的电子版,不过没读完,因为之前看过JDBC规范了,所以就没什么必要再细读它,
虽然类似Hibernate和iBatis这类ORM和SQLMapping框架用得比较多,
不过我还是推荐你先把JDBC掌握了,这样不管以后你去看MySQL的JDBC驱动还是iBatis的源代码都会非常有帮助。
2.7 Effective Java
2002年度Jolt大奖,慢慢品味吧,我就不铝恕
2.8 Java与模式
我的书没找到,只给个链接吧,
这本书其实不合我的口味,太厚太拢也⒉幌不独锩娴墓适拢热缁鞴拇ㄊ裁吹模
如果把此书浓缩到300页左右会更理想。
2.9 Servlet与JSP
如果你要做Java web开发,了解Servlet与JSP的基础知识是必须的,如果你要研究Tomcat,也必须精通Servlet与JSP的相关规范。
2.10 J2EE核心模式
J2EE已变成了JavaEE,Spring把J2EE的水搅混了,以致于Java企业级开发包括国内某大型互联网公司的内部都是Spring的天下,
不过,J2EE的一些设计模式你还是可以了解一下的。
2.11 Java虚拟机
国内有关Java虚拟机的书非常少,
『深入理解Java虚拟机』 是国产的,算是国产书里面相对还可以的技术书籍,内容能跟上时代,
注重实用性,当然,还不够深度,更侧重概念的理解而不是如何实现,
另一本『深入Java虚拟机』 是国外的,可能很难买得到了,内容有点陈旧,
不过,如果你能买得到我还是推荐你读一读,还是有实用价值的,
比如我在2007年研究Java语言编译器(javac)时就从这书上学到了非常多的有用知识,
特别是从第5章开始以后的章节都写得不错。
2.12 Java并发编程
把这本书放到最后,主要还是因为这本书还是有点难度的,并发问题都是高级主题,
比如书中举了一些Servlet的例子,要是你没学过Servlet你就会不太明白例子的用意是什么,
当然还有线程的东西你也需要知道,还有前面Java虚拟机的书里也会提到Java内存模型,
这对于你理解Java多线程并发运行时会有哪些问题也是很有帮助的。
2.13 XXX in Action
有大量以&XXX in Action&命名的书,比如Struts in Action,多是介绍具体框架的,
这类书实战性比较强,因为框架更新换代也很快,过时也比较快,所以你可以从图书馆里借阅,
或者让公司出钱买也行,这样你能省点费用。
2.14 直接去研究Java开源项目的代码吧
看书只是为了打基础,并且是件相对容易的事,想要与他人不同,
你应该去研究你感兴趣的Java开源项目的代码,
看源代码是件需要时间和考验耐性的事,如何看?这是门学问,是另一个重大的话题,我就不在这里多谈了。:)
顺便卖个广告,你可以关注里面有大量开源项目的研究。
至此,有关Java你需要掌握的最核心的东西都列在上面了,行动起来吧,不能只看书,实践也很重要。
3. 扩展你的眼界
虽然上面谈到的计算机基础类的书籍与Java相关书籍已够用了,
不过,我想你不会满足于此吧,多读点书没坏处,技多不压身,
最不济的情况下学点别的至少也能吹吹牛不是。:)
以下是我觉得可以读一读的书,至少已被我过滤了一回,你不用担心它们是垃圾书籍(我确实买了很多垃圾书籍),
当然不需要每本都看,比如像TCP/IP这种,如果你不做OS、不做网络层的开发不读也可以,比如TCP/IP三卷本我多半是买来收藏的。
这些书我就不一一介绍了,全列在这了。
& 相关主题:Java语言基本语法第1章
让自己的第一个Java程序跑起来 2 教学视频:19分钟1.1
想要用Java改变这个世界吗? 21.1.1
Java有什么优势? 21.1.2
Java在哪儿? 31.2
准备好开始Java之旅 31.2.1
下载JDK 41.2.2
安装JDK 51.2.3
配置环境变量 61.2.4
测试环境是否安装成功 81.2.5
如果失败了怎么办? 91.3
让自己的第一个程序运行起来 101.3.1
编写自己的Hello World源程序 101.3.2
编译自己的HelloWorld程序 111.3.3
让代码运行起来 131.4
初探Hello World 141.4.1
类(Class):Java世界中一类物体 141.4.2
方法(Method):物体的功能 151.4.3
main()方法:所有Java程序执行的起点 151.5
名词解释 161.5.1
JDK和Java平台 161.5.2
Java编译器(Java Compiler) 171.5.3
Java类库(Java Class Libraries) 171.5.4
Java虚拟机(Java Virtual Machine) 171.5.5
HelloWorld的整个流程 171.6
小结:我们学会了编译和运行一个Java程序! 181.7
习题 19第2章
搭建自己的集成开发环境 20 教...
直属事业部
扫描关注官方微博
扫描关注官方微信
版权所有(C)2014 清华大学出版社有限公司 京ICP备号 京公网安备48号Java学习心得(看到后觉得很好,在博客上分享一下,希望对大家有启发)
Java学习之路:不走弯路,就是捷径
软件开发之路是充满荆棘与挑战之路,也是充满希望之路。Java学习也是如此,没有捷径可走。梦想像《天龙八部》中虚竹一样被无崖子醍醐灌顶而轻松获得一甲子功力,是很不现实的。每天仰天大叫"天神啊,请赐给我一本葵花宝典吧",殊不知即使你获得了葵花宝典,除了受自宫其身之苦外,你也不一定成得了"东方不败",倒是成"西方失败"的几率高一点。
"不走弯路,就是捷径",佛经说的不无道理。
1.如何学习程序设计?
Java是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于Java,对C++等其他程序设计语言也一样管用。有编程高手认为,Java也好C也好没什么分别,拿来就用。为什么他们能达到如此境界?我想是因为编程语言之间有共通之处,领会了编程的精髓,自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。
1.1 培养兴趣
兴趣是能够让你坚持下去的动力。如果只是把写程序作为谋生的手段的话,你会活的很累,也太对不起自己了。多关心一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但人要是没有了梦想,你觉得有味道吗?可能像许多深圳本地农民一样,打打麻将,喝喝功夫茶,拜拜财神爷;每个月就有几万十几万甚至更多的进帐,凭空多出个"食利阶层"。你认为,这样有味道吗?有空多到一些程序员论坛转转,你会发现,他们其实很乐观幽默,时不时会冒出智慧的火花。
1.2 慎选程序设计语言
男怕入错行,女怕嫁错郎。初学者选择程序设计语言需要谨慎对待。软件开发不仅仅是掌握一门编程语言了事,它还需要其他很多方面的背景知识。软件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落。
如果你对硬件比较感兴趣,你可以学习C语言/汇编语言,进入硬件开发领域。如果你对电信的行业知识及网络比较熟悉,你可以在C/C++等之上多花时间,以期进入电信软件开发领域。如果你对操作系统比较熟悉,你可以学习C/Linux等等,为Linux内核开发/驱动程序开发/嵌入式开发打基础。
如果你想介入到应用范围最广泛的应用软件开发(包括电子商务电子政务系统)的话,你可以选择J2EE或.NET,甚至LAMP组合。每个领域要求的背景知识不一样。做应用软件需要对数据库等很熟悉。总之,你需要根据自己的特点来选择合适你的编程语言。
1.3 要脚踏实地,快餐式的学习不可取
先分享一个故事。
有一个小朋友,他很喜欢研究生物学,很想知道那些蝴蝶如何从蛹壳里出来,变成蝴蝶便会飞。有一次,他走到草原上面看见一个蛹,便取了回家,然后看着,过了几天以后,这个蛹出了一条裂痕,看见里面的蝴蝶开始挣扎,想抓破蛹壳飞出来。这个过程达数小时之久,蝴蝶在蛹里面很辛苦地拼命挣扎,怎么也没法子走出来。这个小孩看着看着不忍心,就想不如让我帮帮它吧,便随手拿起剪刀在蛹上剪开,使蝴蝶破蛹而出。但蝴蝶出来以后,因为翅膀不够力,变得很臃肿,飞不起来。
这个故事给我们的启示是:欲速则不达。
浮躁是现代人最普遍的心态,能怪谁?也许是贫穷落后了这么多年的缘故,就像当年的大跃进一样,都想大步跨入***主义社会。现在的软件公司、客户、政府、学校、培训机构等等到处弥漫着浮躁之气。就拿我比较熟悉的大连大工IT职业培训来说吧,居然打广告宣称"20多年的计算机职业教育,辽宁省十佳学校",殊不知中国计算机发展才几年,软件发展才几年,居然去报名的学生不少,简直是藐视天下程序员。培训出来的“程序员”大多不知道OO,OP为何物?社会环境如是,我们不能改变,只能改变自己,闹市中的安宁,弥足珍贵。许多初学者C++/Java没开始学,立马使用VC/JBuilder,会使用VC/JBuilder开发一个Hello
World程序,就忙不迭的向世界宣告,"我会软件开发了",简历上也大言不惭地写上"精通VC/Java"。结果到软件公司面试时要么被三两下打发走了,要么被驳的体无完肤,无地自容。到处碰壁之后才知道捧起《C++编程思想》《Java编程思想》仔细钻研,早知如此何必当初呀。
"你现在讲究简单方便,你以后的路就长了",好象也是佛经中的劝戒。
1.4 多实践,快实践
彭端淑的《为学一首示子侄》中有穷和尚与富和尚的故事。
从前,四川边境有两个和尚,一个贫穷,一个有钱。一天,穷和尚对富和尚说:"我打算去南海朝圣,你看怎么样?"富和尚说:"这里离南海有几千里远,你靠什么去呢?"穷和尚说:"我只要一个水钵,一个饭碗就够了。"富和尚为难地说:"几年前我就打算买条船去南海,可至今没去成,你还是别去吧!"
一年以后,富和尚还在为租赁船只筹钱,穷和尚却已经从南海朝圣回来了。
这个故事可解读为:任何事情,一旦考虑好了,就要马上上路,不要等到准备周全之后,再去干事情。假如事情准备考虑周全了再上路的话,别人恐怕捷足先登了。软件开发是一门工程学科,注重的就是实践,"君子动口不动手"对软件开发人员来讲根本就是错误的,他们提倡"动手至上",但别害怕,他们大多温文尔雅,没有暴力倾向,虽然有时候蓬头垢面的一副"比尔盖茨"样。有前辈高人认为,学习编程的秘诀是:编程、编程、再编程,笔者深表赞同。不仅要多实践,而且要快实践。我们在看书的时候,不要等到你完全理解了才动手敲代码,而是应该在看书的同时敲代码,程序运行的各种情况可以让你更快更牢固的掌握知识点。
1.5 多参考程序代码
程序代码是软件开发最重要的成果之一,其中渗透了程序员的思想与灵魂。许多人被《仙剑奇侠传》中凄美的爱情故事感动,悲剧的结局更有一种缺憾美。为什么要以悲剧结尾?据说是因为写《仙剑奇侠传》的程序员失恋而安排了这样的结局,他把自己的感觉融入到游戏中,却让众多的仙剑迷扼腕叹息。
多多参考代码例子,对Java而言有参考文献[4.3],有API类的源代码(JDK安装目录下的src.zip文件),也可以研究一些开源的软件或框架。
1.6 加强英文阅读能力
对学习编程来说,不要求英语, 但不能一点不会,。最起码像Java
API文档(参考文献[4.4])这些东西还是要能看懂的,连猜带懵都可以;旁边再开启一个"金山词霸"。看多了就会越来越熟练。在学Java的同时学习英文,一箭双雕多好。另外好多软件需要到英文网站下载,你要能够找到它们,这些是最基本的要求。英语好对你学习有很大的帮助。口语好的话更有机会进入管理层,进而可以成为剥削程序员的"周扒皮"。
1.7 万不得已才请教别人
笔者在Martix与Java论坛的在线辅导系统中解决学生问题时发现,大部分的问题学生稍做思考就可以解决。请教别人之前,你应该先回答如下几个问题。
你是否在google中搜索了问题的解决办法?
你是否查看了Java API文档?
你是否查找过相关书籍?
你是否写代码测试过?
如果回答都是"是"的话,而且还没有找到解决办法,再问别人不迟。要知道独立思考的能力对你很重要。要知道程序员的时间是很宝贵的。
1.8 多读好书
书中自有颜如玉。比尔盖茨是一个饱读群书的人。虽然没有读完大学,但九岁的时候比尔盖茨就已经读完了所有的百科全书,所以他精通天文、历史、地理等等各类学科,可以说比尔?茨不仅是当今世界上金钱的首富,而且也可以称得上是知识的巨富。
笔者在给学生上课的时候经常会给他们推荐书籍,到后来学生实在忍无可忍开始抱怨,"天呐,这么多书到什么时候才能看完了","学软件开发,感觉上了贼船"。这时候,我的回答一般是,"别着急,什么时候带你们去看看我的书房,到现在每月花在技术书籍上的钱400元,这在软件开发人员之中还只能够算是中等的",学生当场晕倒。(注:这一部分学生是刚学软件开发的)
1.9 使用合适的工具
工欲善其事必先利其器。软件开发包含各种各样的活动,需求收集分析、建立用例模型、建立分析设计模型、编程实现、调试程序、自动化测试、持续集成等等,没有工具帮忙可以说是寸步难行。工具可以提高开发效率,使软件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤人的境界就很高了,无招胜有招,手中无剑心中有剑这样的境界几乎不可企及。
2.软件开发学习路线
两千多年的儒家思想孔孟之道,中庸的思想透入骨髓,既不冒进也不保守并非中庸之道,而是找寻学习软件开发的正确路线与规律。
从软件开发人员的生涯规划来讲,我们可以大致分为三个阶段,软件工程师→软件设计师→架构设计师或项目管理师。不想当元帅的士兵不是好士兵,不想当架构设计师或项目管理师的程序员也不是好的程序员。我们应该努力往上走。让我们先整理一下开发应用软件需要学习的主要技术。
A.基础理论知识,如操作系统、编译原理、数据结构与算法、计算机原理等,它们并非不重要。如不想成为计算机科学家的话,可以采取"用到的时候再来学"的原则。
B.一门编程语言,现在基本上都是面向对象的语言,Java/C++/C#等等。如果做WEB开发的话还要学习HTML/JavaScript等等。
C.一种方法学或者说思想,现在基本都是面向对象思想(OOA/OOD/设计模式)。由此而衍生的基于组件开发CBD/面向方面编程AOP等等。
D.一种关系型数据库,ORACLE/SqlServer/DB2/MySQL等等
E.一种提高生产率的IDE集成开发环境JBuilder/Eclipse/VS.NET等。
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。
3.如何学习Java?
3.1 Java学习路线
3.1.1 基础语法及Java原理
基础语法和Java原理是地基,地基不牢靠,犹如沙地上建摩天大厦,是相当危险的。学习Java也是如此,必须要有扎实的基础,你才能在J2EE、J2ME领域游刃有余。参加SCJP(SUN公司认证的Java程序员)考试不失为一个好方法,原因之一是为了对得起你交的1200大洋考试费,你会更努力学习,原因之二是SCJP考试能够让你把基础打得很牢靠,它要求你跟JDK一样熟悉Java基础知识;但是你千万不要认为考过了SCJP就有多了不起,就能够获得软件公司的青睐,就能够获取高薪,这样的想法也是很危险的。获得"真正"的SCJP只能证明你的基础还过得去,但离实际开发还有很长的一段路要走。
3.1.2 OO思想的领悟
掌握了基础语法和Java程序运行原理后,我们就可以用Java语言实现面向对象的思想了。面向对象,是一种方法学;是独立于语言之外的编程思想;是CBD基于组件开发的基础;属于强势技术之一。当以后因工作需要转到别的面向对象语言的时候,你会感到特别的熟悉亲切,学起来像喝凉水这么简单。
使用面向对象的思想进行开发的基本过程是:
●调查收集需求。
●建立用例模型。
●从用例模型中识别分析类及类与类之间的静态动态关系,从而建立分析模型。
●细化分析模型到设计模型。
●用具体的技术去实现。
●测试、部署、总结。
3.1.3 基本API的学习
进行软件开发的时候,并不是什么功能都需要我们去实现,也就是经典名言所说的"不需要重新发明轮子"。我们可以利用现成的类、组件、框架来搭建我们的应用,如SUN公司编写好了众多类实现一些底层功能,以及我们下载过来的JAR文件中包含的类,我们可以调用类中的方法来完成某些功能或继承它。那么这些类中究竟提供了哪些方法给我们使用?方法的参数个数及类型是?类的构造器需不需要参数?总不可能SUN公司的工程师打国际长途甚至飘洋过海来告诉你他编写的类该如何使用吧。他们只能提供文档给我们查看,Java
DOC文档(参考文献4.4)就是这样的文档,它可以说是程序员与程序员交流的文档。
基本API指的是实现了一些底层功能的类,通用性较强的API,如字符串处理/输入输出等等。我们又把它成为类库。熟悉API的方法一是多查Java
DOC文档(参考文献4.4),二是使用JBuilder/Eclipse等IDE的代码提示功能。
3.1.4 特定API的学习
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是必经之路,也是从一个学生到一个职业程序员转变的里程碑。
Java开发使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等几种;而Eclipse、JBuilder占有的市场份额是最大的。JBuilder在近几年来一直是Java集成开发环境中的霸主,它是由备受程序员尊敬的Borland公司开发,在硝烟弥漫的Java
IDE大战中,以其快速的版本更新击败IBM的Visual Age for Java等而成就一番伟业。IBM在Visual Age
Java上已经无利可图之下,干脆将之贡献给开源社区,成为Eclipse的前身,真所谓"柳暗花明又一村"。浴火重生的Eclipse以其开放式的插件扩展机制、免费开源获得广大程序员(包括几乎所有的骨灰级程序员)的青睐,极具发展潜力。
3.1.6 学习软件工程
对小型项目而言,你可能认为软件工程没太大的必要。随着项目的复杂性越来越高,软件工程的必要性才会体现出来。参见"软件开发学习路线"小节。
3.2学习要点
确立的学习路线之后,我们还需要总结一下Java的学习要点,这些要点在前文多多少少提到过,只是笔者觉得这些地方特别要注意才对它们进行汇总,不要嫌我婆婆妈妈啊。
3.2.1勤查API文档
当程序员编写好某些类,觉得很有成就感,想把它贡献给各位苦难的同行。这时候你要使用"Javadoc"工具(包含在JDK中)生成标准的Java
DOC文档,供同行使用。J2SE/J2EE/J2ME的DOC文档是程序员与程序员交流的工具,几乎人手一份,除了菜鸟之外。J2SE
DOC文档官方下载地址:/j2se/1.5.0/download.jsp,你可以到google搜索CHM版本下载。也可以在线查看:/j2se/1.5.0/docs/api/index.html。
对待DOC文档要像毛主席语录,早上起床念一遍,吃饭睡觉前念一遍。
当需要某项功能的时候,你应该先查相应的DOC文档看看有没有现成的实现,有的话就不必劳神费心了直接用就可以了,找不到的时候才考虑自己实现。使用步骤一般如下:
●找特定的包,包一般根据功能组织。
●找需要使用类,类命名规范的话我们由类的名字可猜出一二。
●选择构造器,大多数使用类的方式是创建对象。
●选择你需要的方法。
查书/google-&写代码测试-&查看源代码-&请教别人
当我们遇到问题的时候该如何解决?
这时候不要急着问别人,太简单的问题,没经过思考的问题,别人会因此而瞧不起你。可以先找找书,到google中搜一下看看,绝大部分问题基本就解决了。而像"某些类/方法如何使用的问题",DOC文档就是答案。对某些知识点有疑惑是,写代码测试一下,会给你留下深刻的印象。而有的问题,你可能需要直接看API的源代码验证你的想法。万不得已才去请教别人。
3.2.3学习开源软件的设计思想
Java领域有许多源代码开放的工具、组件、框架,JUnit、ANT、Tomcat、Struts、Spring、Jive论坛、PetStore宠物店等等多如牛毛。这些可是前辈给我们留下的瑰宝呀。入宝山而空手归,你心甘吗?对这些工具、框架进行分析,领会其中的设计思想,有朝一日说不定你也能写一个XXX框架什么的,风光一把。分析开源软件其实是你提高技术、提高实战能力的便捷方法。
3.2.4 规范的重要性
没有规矩,不成方圆。这里的规范有两层含义。第一层含义是技术规范,多到http://www.jcp.org下载JSRXXX规范,多读规范,这是最权威准确最新的教材。第二层含义是编程规范,如果你使用了大量的独特算法,富有个性的变量及方法的命名方式;同时,没给程序作注释,以显示你的编程功底是多么的深厚。这样的代码别人看起来像天书,要理解谈何容易,更不用说维护了,必然会被无情地扫入垃圾堆。Java编码规范到此查看或下载/docs/codeconv/,中文的也有,啊,还要问我在哪,请参考3.2.2节。
3.2.5 不局限于Java
很不幸,很幸运,要学习的东西还有很多。不幸的是因为要学的东西太多且多变,没时间陪老婆家人或女朋友,导致身心疲惫,严重者甚至导致抑郁症。幸运的是别人要抢你饭碗绝非易事,他们或她们需要付出很多才能达成心愿。
Java不要孤立地去学习,需要综合学习数据结构、OOP、软件工程、UML、网络编程、数据库技术等知识,用横向纵向的比较联想的方式去学习会更有效。如学习Java集合的时候找数据结构的书看看;学JDBC的时候复习数据库技术;采取的依然是"需要的时候再学"的原则。
需要强调的是,学习软件开发确实有一定的难度,也很辛苦,需要付出很多努力,但千万不要半途而废。本文如果能对一直徘徊在Java神殿之外的朋友有所帮助的话,笔者也欣慰了。哈哈,怎么听起来老气横秋呀?没办法,在电脑的长期辐射之下,都快变成小老头了。最后奉劝各位程序员尤其是MM程序员,完成工作后赶快远离电脑,据《胡播乱报》报道,电脑辐射会在白皙的皮肤上面点缀一些小黑点,看起来鲜艳无比……
(文章提到的大连大工IT培训。本人没有任何攻击的意思)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 自学java入门 的文章

 

随机推荐