论坛首页 招聘求职论坛

战略上藐视,战术上重视,也说说什么是精通java

浏览 26576 次
该帖已经被评为精华帖
作者 正文
   发表时间:2010-07-29  
yangguanghua 写道
淡定  淡定。。。

0 请登录后投票
   发表时间:2010-07-29  
“估计随便哪个不是太烂软件公司都能重新开发一套”,真的吗?
为什么JPA这么多年了,只有hibernate、toplink和open jpa几个实现而已
用J2EE的公司那么多,连IBM、BEA都没有自己的JPA实现?
倒是struts和spring内核比较小,实现起来比较容易。

“算法、数据库、网络、各种应用程序接口、操作系统”是非常重要的,但是除此之外,最重要的是:聪明

打开hibernate源码,你就会知道,没有足够的聪明,你根本无法掌控hibernate这样的千头怪

大部分人没有gavin king和rod johnson那样聪明,想破头也写不出那么复杂的框架。
成不了大牛,花一些时间学习一下框架,研究一下源码,让自己离牛人近一点,有什么不好啊?
0 请登录后投票
   发表时间:2010-07-29  
beeke 写道
“估计随便哪个不是太烂软件公司都能重新开发一套”,真的吗?
为什么JPA这么多年了,只有hibernate、toplink和open jpa几个实现而已
用J2EE的公司那么多,连IBM、BEA都没有自己的JPA实现?
倒是struts和spring内核比较小,实现起来比较容易。

“算法、数据库、网络、各种应用程序接口、操作系统”是非常重要的,但是除此之外,最重要的是:聪明

打开hibernate源码,你就会知道,没有足够的聪明,你根本无法掌控hibernate这样的千头怪

大部分人没有gavin king和rod johnson那样聪明,想破头也写不出那么复杂的框架。
成不了大牛,花一些时间学习一下框架,研究一下源码,让自己离牛人近一点,有什么不好啊?


开源是个高度自选择的市场,因为没有选择成本,所以特定领域99%的资源和关注都会流向1到2个项目。你看到啥开源软件出现高度同质性的竞争了?
BTW:原本版本的hibernate根本算不上JPA。Bea很早就有自己的JPA(只是他们不叫JPA,而且和toplink一样,它们有GUI),IBM我不知道。而且商业厂商不会做hibernate那样的实现:1,不需要和免费软件竞争。2,hibernate实际上适应的商业面很窄,绝大多数应用hibernate的场景都没有动力使用商业实现(哪怕商业实现更好)---这个是最主要的,其实toplink做的很好,可惜Oracle只拿来卖它的数据库。3,hibernate立足的面其实很窄,就是一个数据库的java OO接口封装(这点它比不上toplink,hibernate一开始立足于减少程序员处理JDBC的代码量,而toplink是为了相对高负载系统设计的)。所以你可以看到hibernate从1-3的发展堪称神速,到3以后就明显停滞了(这个和struts是一样的,struts从1.2以后,基本死了)。
Gavin King和Rob属于很有灵气的人,能够开始这种项目需要想象力(特别是Spring)和行动力。但是也用不着神话他们。纯粹就设计而言,hibernate远远比不上Eclipse这样的平台。Spring的源码写的挺漂亮。hibernate就未必了(特别是3以前的版本,也许这就是你觉得打开以后是千头怪吧),hibernate这种不算特别复杂需求的项目,如果真的源码结构特复杂,其实就是它们有不小改进的地方。
不过我的观点不是上面这儿,而是不管今天SSH的代码究竟是好还是坏,其实犯不着去看,这有几个原因:
A,SSH其实都是对一个底层问题的封装,作为开源项目,这个过程中会出现很多的演化。而你最后看到那个版本,虽然可能是最优的,但是缺少对演化过程的跟踪,很难学到什么。在目前的版本的SSH,设计上、功能上和框架上都相对稳定,你很难通过一个个版本的演化来查看性能和代码的改进(当然你可以回头看旧版本进行比较,但是我觉得很少有人这么BT吧)
B,SSH都是类库型的项目,类库项目在多数情况下的考虑和应用程序的设计有很大的不同。从这点上看,我觉得看SSH的源码,比不上看一些应用程序的源码,比如tomcat或者Eclipse。如果真的要看类库型的,我的建议是直接看JDK好了(特别是concurrent,Lee才是高山仰止)。
C,看牛人的代码--->离牛人近些。这个观点我觉得很无语。不管什么样的代码,关键是对自己技巧的磨砺,一个烂代码,能够让你惊醒自己不要这样犯错,价值要比背牛人代码有价值得多。以为多读了好代码就能提高多数是缘木求鱼(这个比背书还差,背书背了还可以直接抄,你背了代码很可能连设计都抄不了)。我没见哪个作家是学名著学出来的,学古文的人往往选的是文心雕龙而不是苏东坡选集就是这个原因。
0 请登录后投票
   发表时间:2010-07-29   最后修改:2010-07-29

我觉得牛人之所以称之牛人不是因为语言写的多精妙,而是靠想象力;绝不是你对语言和语言之外的技术层面多么熟悉,而是自己是否有创新的东西。

而我学习框架源码的目的仅仅是学习语言上的组织结构和设计模式:)

难怪google的office那么nice,让staff很具有想象空间,这也是国内一直缺少顶尖人才的瓶颈,赞同楼主的观点,过多的效仿会让自己丧失想象力:)

 

0 请登录后投票
   发表时间:2010-07-29  
文无定式,学无定法,见招拆招,楼主思路之开阔清晰,言之有物,思之有理。
0 请登录后投票
   发表时间:2010-07-30  
能够不被面试官难倒,就可以说是精通,这个是相对于这个面试官来说的

SSH流行,有他的道理,团队用它,能够容易维护代码,而且解决了绝大部分企业应用中的问题

企业应用中对于算法的考虑很少,因为那个不是瓶颈,for循环多几次,对于系统的性能来说问题不大,相遇与来说,多创建几个对象,倒是消耗性能的....


0 请登录后投票
   发表时间:2010-07-30  
java的技术,其实都在java以外的地方。算法、数据库、网络、各种应用程序接口、操作系统,不管哪个都比SSH本身对于一个java程序员更重要。

楼主说的是真话。
0 请登录后投票
   发表时间:2010-07-30  
flootball 写道
2年,我就很无力。研究红楼梦可以一辈子,你觉得能成作家吗?)

郭沫若13岁就能背红楼梦了,那可是大作家。


郭沫若那种墙头草,称作家那是侮辱作家
0 请登录后投票
   发表时间:2010-07-30  
引用

BTW 回答某个帖子:被问精通什么,一时无语中……?翻译给你面试官的意思:就是告诉面试官你技术上最NB的地方,好让他接下去往下问(免得随便问了你答不上来不是欺负你嘛)。如果你最NB的地方都so so的话,别的还问个P啊。如果你最长的地方能让人满意,再谈别的技术。


恩,言之有理,当时没有反应过来,面试官估计是要找个提问的突破口,然后一层层的递进。当时,我把精通理解的太狭义了,这个是他给我机会让我引导他到我熟悉的领域来,然后再PK。
0 请登录后投票
   发表时间:2010-07-30  
huangyuanmu 写道
flootball 写道
2年,我就很无力。研究红楼梦可以一辈子,你觉得能成作家吗?)

郭沫若13岁就能背红楼梦了,那可是大作家。


郭沫若那种墙头草,称作家那是侮辱作家

成者为王,败者为寇。
刘邦还是痞子呢,那是否侮辱了历代领导人。
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics