[zt]怎么才算掌握Java,顺便调查一上大家都掌握到什么程度

[zt]如何才算掌握Java,顺便调查一下大家都掌握到什么程度
时常看到一些人说掌握了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、版本控制、自动测试( 1T6-530  ) 。
7、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
8、思想:必须掌握OOP的主要要求,这样使用Java开发的系统才能是真正的Java系统。
9、规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这样程序的可读性才比较好。
12 楼 joachimz 2007-11-01  
awt/swing没有做过项目,只能算了解皮毛。security也了解不深。其他基本在项目中都有接触,还算比较熟悉。

不过重点还是思路和做事的方法,方法得当,条理清楚。技术与API在一般项目中应该不是障碍。
13 楼 bomb_football 2007-11-02  
楼主的这些标准有点笼统了吧。做开发要么是WEB应用方面的,要么是桌面应用方面的,而这就决定了对Java的学习要求肯定又不同的标准啊。
14 楼 realdah 2007-11-02  
如果从java语法及其编译开发环境而言,一个java specification已经告诉了一切的一切.

至于别的,那又不是java独有的
例如
数据库编程
各种网络协议
http,tcp/ip,ftp,telnet....
文件系统访问
加密解密
编码解码(MEPG)
windows开发
linux/solaris开发
DHTML,XML,XSLT之类的
Direct/OpenGL
嵌入式
等等等等.


所以我觉得,只要你能够过了scjp/scjd/scwcd/scea等java认证,基本上可以说你对java已经算非常之了解了.

15 楼 versa 2007-11-12  
楼主要求对Java技术的掌握程度是谁都不可能实现,
我不认为这算掌握Java技术。
我需要那种能够把脑子的流程映射Java代码,然后能够判断Java组件是否已实现的人。
就是他可以不懂这个技术,但是他可以推断出这种技术是否可行,是否已经有已实现的技术,
可是自己查找,必须时候可以自己深入,这才算是掌握Java技术。

一个人对技术的精通是有限,能够培养其他人,并传播知识更为重要。
16 楼 nowonder 2007-11-12  
timerri 写道
基本功过关+如果能在5分钟内找到任何java方面的资料=掌握了java

编程,我认为学习能力比记忆能力更重要.

学习很重要,但是总不能随便一个问题,还要依靠于baidu或google的,这能算掌握?找东西嘛,谁都会,找不到的跑到xx地方发个 求且力 贴,总还是有点回音的。
但是你做的总是别人做得烂掉的东西,对于问题没有自己想法的人怎么能说掌握java
17 楼 thesecondbull 2007-11-12  
国内it做业务才有前途,至于技术掌握程度,掌握的越深越有益处,但不是必须条件.做出的东西能给人解决实际问题才叫成功的项目.
18 楼 macrochen 2007-11-12  
java语言涉及的范围太广,所以上面列出的要求可能对99%的人是无法达到的,除非他的工作需要涉及到这些知识点.API可能查查文档就可以搞定,关键还是所有编程语言所共通的东西才是重要的,比如OOP思想,设计模式,规范等等
19 楼 javalion 2007-11-12  
Java是一门语言,用来应用,楼主提出了那么多包的要熟悉的百分比,呵呵,个人感觉没有必要,否则还要API干吗,微软整了个那么大的MSDN干吗。关键还是查阅学习的能力吧,不过JAVA语法等这些基本的还是要掌握的,另外就是看设计能力了。就跟以前一个朋友讨论他出的面试题一样:
public void delete(String fileName) throws IOException {
    File f = new File(fileName);
    try{
        f.delete();
    } catch(IOException ex) {}
}类似了,这个程序肯定出错吗?如果用的是java.io.File,肯定错了,但如果不是呢。所以确切说掌握java就应该掌握如何去设计。
20 楼 狂放不羁 2007-11-13  
其实我觉得没有人真正的掌握了某种语言。只要自己掌握的能解决工作中的问题就OK了。
21 楼 supernaturalmagician 2007-11-13  
最近正在学习<<深入JAVA虚拟机>>,不知道是不是本末倒置。因为我在J道上了解道bang主导设计模式很重要,OO思想很重要,所以现在很迷茫。
22 楼 protti 2007-11-13  
遇到问题——解决问题

如此重复,问题始终存在,所以掌握java不代表不遇到问题。而是遇到问题有解决的思路。
23 楼 ray_linn 2007-11-13  
supernaturalmagician 写道
最近正在学习<<深入JAVA虚拟机>>,不知道是不是本末倒置。因为我在J道上了解道bang主导设计模式很重要,OO思想很重要,所以现在很迷茫。


我一直觉得bang很有幽默细胞,很搞笑。
24 楼 mylose 2007-12-12  
高级语言根本不入流,重要的是解决问题的能力
25 楼 yaoyuan123 2008-01-18  
发表一下言论,要掌握那么多东西不是一天两天的,最好是边做边学,在实际应用中掌握一些知识~~
26 楼 shxiao 2008-01-18  
只要会灵活引用字符串加减就可以了
27 楼 koalant 2008-01-20  
忽然明白了 python 程序员老说的一句话:  Life is short, code in Python. Life is short, learn the right things.

掌握 java 仅仅就是为了找工作, 初级 java  程序员飘过.....

"Thank you for wasting the time and making life complicated for me"
28 楼 ddd 2008-01-20  
koalant 写道
忽然明白了 python 程序员老说的一句话:  Life is short, code in Python. Life is short, learn the right things.

掌握 java 仅仅就是为了找工作, 初级 java  程序员飘过.....

"Thank you for wasting the time and making life complicated for me"

以有限之生做无意之事是一种良好的人生态度。
btw:温瑞安电子书地址。
29 楼 Trustno1 2008-01-20  
要说,精通,我觉得实则上就是要会乱拳打死老师傅的本事.
30 楼 rene103 2008-01-20  
单纯从java角度来说,我认为4个方面就ok了;
1,java内存模型
2,Classloader
3,多线程
4,Exception的处理
31 楼 protti 2008-01-21  
具体要看是面向研发还是面相应用的,面相应用也许不需要非常了解java,而需要更了解业务需求。

如果是面向研发的,技术要求实在是太高了。