`
dianziermu
  • 浏览: 137489 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何才算掌握Java(J2SE篇)

    博客分类:
  • J2SE
阅读更多

时常看到一些人说掌握了Java,但是让他们用Java做一个实际的项目可能又困难重重,在这里,笔者根据自己的一点理解斗胆提出自己的一些对掌握 Java这个说法的标准,当然对于新手,也可以提供一个需要学习哪些内容的参考。另外这个标准仅限于J2SE部分,J2EE部分的内容有时间再另说。
1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。
2、 命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、HtmlConverter、jar、java、 javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对java 实际上还很不了解。
3、工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。
4、API:Java的核心API是非常庞大的,但是有一些内容笔者认为是必须熟悉的,否则不可能熟练的运用Java,包括:
    1)、java.lang包下的80%以上的类的功能的灵活运用。
    2)、java.util包下的80%以上的类的灵活运用,特别是集合类体系、规则表达式、zip、以及时间、随机数、属性、资源和Timer。
    3)、java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。
    4)、java.math包下的100%的内容。
    5)、java.net包下的60%以上的内容,对各个类的功能比较熟悉。
    6)、java.text包下的60%以上的内容,特别是各种格式化类。
    7)、熟练运用JDBC。
    8)、java.security包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java。
    9)、AWT的基本内容,包括各种组件事件、监听器、布局管理器、常用组件、打印。
    10)、Swing的基本内容,和AWT的要求类似。
    11)、XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
5、测试:必须熟悉使用junit编写测试用例完成代码的自动测试。
6、管理:必须熟悉使用ant完成工程管理的常用任务,例如工程编译、生成javadoc、生成jar、版本控制、自动测试。
7、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
8、思想:必须掌握OOP的主要要求,这样使用Java开发的系统才能是真正的Java系统。
9、规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这样程序的可读性才比较好。

看来还差得远呢!  继续努力吧!

=============================

以上文章简称标准篇,提出了标准。以下文字将告诉新手如何才能达到那个标准。

首先需要说的是达到这个标准是比较困难的,没有三年的时间一般是不可能的,没有实际的项目的经验的熏陶也是不可能的,下文会说明为什么。
然后给出两个宝典:一个就是TIJ(Thinking in Java),另外一个就是chm格式的JDK的API。
TIJ可以看看Java编程思想(完整的中文简体第二版),如果英文可以的话强烈要求看英文原版,
而chm格式的JDK的API的下载地址可以看看Cherami站长的推荐。
虽 然我没有把TIJ看完(我开始用Java做项目的时候TIJ还没有出来),但是我浏览过目录和看过一些章节的内容,感觉作者对Java非常的熟悉,实际经 验也非常的丰富,很多内容一看就是经验之谈。需要说明的是,我说的看包括内容和领会作者的意思,如果用Java做过一些项目以后你再回头看看TIJ你会发 现如果你刚开始就记得并掌握了TIJ所讲的内容后会对的项目有多大的帮助。掌握TIJ的内容至少可以达到标准篇中所讲的语法、思想以及规范的标准,对于 API的掌握也有很大的助益。
之所以需要chm格式的JDK的API是因为JDK的API实在是很大,个人认为不大可能记得那么多,而站长推荐的 那个API可以非常方便的根据类名或者方法名查到对应的说明,有时候我们就是大致记得应该用哪个类或者某个方法,但是忘记了具体的细节,这个时候就可以查 那个东东了,我现在已经养成先把那个chm打开再开始做事情的习惯了。需要提醒的是你不能完全依赖它,有些东西还是需要自己记的,如果你都不知道要用什么 你怎么去查呢?你至少要记得一个索引,哪个类或者方法可以完成什么样的功能的索引。
接下来就是实际项目的熏陶了。
如果你不做 applet,你就不会去用appletviewer和HtmlConverter,如果你不打包你就不会用jar,如果你不做类库你可能就不会用 javadoc,如果你对系统的运行性能不关心你可能根本不会考虑使用javap,如果你不做独立运行的程序你可能根本就不会注意到我们有时候是多么的讨 厌那个多于的dos窗口而用javaw代替java来运行你的程序,如果你没有做过国际化,你怎么可能去使用native2ascii进行转换编码呢,如 果你没有做序列化并且升级你的类你是不会知道你为什么需要serialver的。
而离开了这些命令或者说工具,你可能不知道java到底都能做哪些内容。
这些命令都是基于命令行的,对于习惯的图形界面的新时代来说可能会很不习惯,但是你必须知道在命令行下如何使用他们,因为很可能你真正项目中需要运行的环境就是一个命令行(UNIX/Linux服务器)。
在 开发一个实际的系统的时候,你不可能使用editplus或者notepad或者vi或者emcs写代码,因此你必须有一个你熟悉的IDE工具,这样你才 能管理庞大的工程,而这些IDE工具不可能仅仅用来做编辑器,你可能更需要的是使用他们的调试功能追踪疑难杂症(如何设置各种断点,特别是在循环里面设置 条件断点),另外就是他们的代码提示功能以及集成的版本控制功能。
实际项目对API的掌握也是一个莫大的考验,真正的项目的工期都会比较紧凑,因此要完成什么功能需要使用什么那些类以及如何完成都是对你对API掌握情况的真正考验。
如 果你没有做过需求频繁变更的项目,那你很幸运,但是实际情况往往不是这样。你修改代码以后以为没有问题了,你往往只是测试了你眼前的部分,但是其他的部分 怎么办?难道都要我测试一下,天哪!是的,情况往往就是这样的,因为需求变更导致的回归错误可能是我们最大的噩梦!如果你的代码结构良好,那么你可以使用 JUnit编写单元测试用例来保证你的修改对各个部分的接口没有造成不良的影响。一个符合OO的系统应该也是一个易于测试或者易于编写单元测试用例的系 统!
如果你没有完整的参与过一个项目,你不会知道拷贝文件、发布版本、打包、生成javadoc、运行测试用例、版本维护、建立里程碑、建立基准 版本、增量更新版本是多么痛苦的事情,但是如果你使用Ant编写一个脚本帮你完成这些项目必须而又琐碎的事情,你会觉得其实开发项目有时候也是很轻松的。
一旦你经历了这些项目的真正的磨难的时候,你看到错误信息的时候就不会手忙脚乱了,你可以很清楚的知道是哪个地方出问题了,可能的原因以及解决方法是什么。
没有遇到问题,你就不会学会解决问题,你也就不可能提高!

最后总结一下:
掌 握TIJ,你对Java的语法、API、思想和规范会有一个比较好的基础,而通过实际项目的锻炼,你对API会更熟悉、你也会掌握那些基本的命令在命令行 下怎么用,怎么选用一个IDE以及最重要的:如何排错、调试程序、测试程序以及使用工具让电脑完成那些琐碎的例行工作。

以上只是个人的一点看法,希望对于那些迫切的想掌握Java的新手有所启迪和帮助。
不满意的人可以丢西红柿,不要丢臭鸡蛋了。^_^

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics