|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最后就是我对java的几点希望:首先是IDE工具,有人说java已经很好了,有jbuilder,eclipse,netBeans等等,但是我认为如果java想超越.net,那么他首先要解决的就是IDE工具的整合。
robbin
在我做过的良多项目标过程当中,我一向有一个悬而未决的成绩在困扰我,那就是耐久层的开辟。耐久层的开辟一样平常来讲要末用CMP,要末用JDBC+DAO。CMP就不必说了,它对我来讲是一种失利的理论,而JDBC+DAO也存在良多的坚苦,我很难做到把干系表纪录完全的映照到耐久对象的干系下去,这次要表现在多表的干系没法间接映照到对耐久对象的映照下去,多是一个表映照多个耐久对象,有多是多个表映照一个耐久对象,更有大概的是表的某些字段映照到一个耐久对象,可是别的一些字段映照到其余耐久对象上。并且即便这些成绩都处置好了,也不克不及间接依照对象的体例来对耐久对象(PO)编程,由于存在1:N干系的耐久对象的查询实在就是1+n次对数据库的SQL,我已经有一次失利的耐久层计划,了局是某个联系关系良多别的耐久对象的PO一查询就是5n+1次sql,速率慢的不得了,最初不能不全部修正底层计划,最初即是是完整丢弃了对象计划,完整是依照表字段举行操纵。可是如许做十分舒服,由于体系的计划是从需求计划,体系计划如许自顶而下的,了局都到了具体计划阶段了,被耐久层映照成绩限定,不能不自底向上修正计划计划,又回到了依照历程举行编程的老路下去,十分的糟。我对这个成绩思索了好久,最初终究意想到这实际上是一个很典范的成绩:对象和干系的映照成绩。实践上自从OOP编程盛行今后,就存在这个困难了,以是才有人提出干系数据库举行从头计划,改用对象数据库,但实践上干系数据库并没有被减少,因而就只能在下层的使用层找办理计划。这时候候我分明了我必要的实践上是一种ORM产物。我最早想到的ORM就是JDO,因而我下载了两个JDO产物,筹办仔细的进修一下,可是研讨了一段工夫以后,我发明我对JDO十分的扫兴,缘故原由以下:1、JDO没有一个好的开源收费完成,好的产物都是贸易产物,而且在国际没有发卖和手艺撑持。这就形成了JDO只要进修之用,不克不及把它用在实践项目中,不然的话,你把软件卖给客户的时分,还要告知他,你还要别的往买一个外洋的软件产物,而且在国际没有手艺撑持,出了耐久层的成绩,我们也办理不了,请你本人打国际远程往办理成绩,你以为客户能允许吗?2、JDO不是一个轻量级封装,它试图创建一个完全的耐久层框架,可是还很不完美,形成了JDO感到对照粗笨,良多操纵体例使人以为啰嗦和乖僻。这减轻了程序员进修和编程的包袱,并且封装的太多会形成一个严峻的成绩就是一旦呈现报错信息,调试起来十分坚苦,你很难正确的定位毛病事实出在那里,封装的越轻,成绩越简单定位,越简单办理,封装的越重,成绩越庞大,越找不到缘故原由,CMP就是一个很好的例子,出了毛病,调试起来十分坚苦和贫苦。3、JDO的尺度很不完美,存在严重缺点。最次要的成绩表现在PO不克不及离开PM(相称于Hibernate的Session)而存在,这是个十分严峻的成绩,会形成编程的时分举行大批VO的拷贝操纵,啰嗦极了;别的一个严重缺点是静态的POJO的Enhancer,不克不及运转期静态Enhance,没法举行增量编译和调试,编程和调试起来十分啰嗦,每次都要手共运转一个工具对POJO举行Enhance;别的另有一些缺点,比方JDOQL不完美,映照干系的表达不敷壮大等等。4、JDO产物的决裂。这个成绩也对照严峻,因为JDO1.0尺度的缺点,而JDO2.0尺度还指日可待,而各个JDO厂商为了可以在合作中锋芒毕露,那末除在易操纵性和功能上的进步以外,想要吸引客户,就必需有本人的产物特征。那末1.0尺度的缺点恰好给了他们发扬的舞台,每一个厂商城市有本人独到的办理计划来办理尺度的缺点,但是这却形成了JDO产物现实上的决裂。这类决裂严峻到甚么水平?我能够复杂举个例子:你写好的POJO,用一种JDO的Enhancer举行Enhance过今后失掉的PO,在另外一个JDO产物上跑不起来。这很像昔时Unix的决裂,了局就是二进制代码级的不兼容,而只能在C源代码级兼容。如今的JDO也有如许的趋向,就像AppServer的不同一样,一个在Weblogic上开辟好的EJB,移植到Websphere,你必定必要从头举行设置。我心目中的ORM最好有以下的特性:1、开源和收费的License,我能够在必要的时分研讨源代码,改写源代码,举行功效的定制。2、轻量级封装,制止引进过量庞大的成绩,调试简单,也加重程序员的包袱。3、具有可扩大性,API开放,当自己功效不敷用的时分,能够本人遍码举行扩大。4、开辟者活泼,产物有不乱的开展保证。丢弃了JDO今后,我依据下面的准绳,前后扫除了TopLink,CocoBase,Castor等,最初选择了ApacheOJB和Hibernate。OJB的扫除很简单做出,一是由于它的文档太复杂,太少;二是由于OJB企图下一个版本周全撑持JDO,它的API会有严重变化,以是现阶段进修OJB是个毛病,等它的API不乱了今后再进修不迟。Hibernate的发明是很偶尔的事变,只是在他人提到JDO的产物中,附带提了提罢了,但当我入手下手研讨Hibernate以后,我发明终究找到了我朝思暮想的ORM了。Hibernate完整切合我下面提到的尺度以外,也办理失落了JDO的一切缺点,并且体例之文雅使人惊叹。Hibernate的文档也长短常十分有特征的中央,它不单单是Hibernate的功效先容那末复杂,它实践上是一个耐久层计划的最好理论的履历总结,文档内里的例子,文档内里的总结全体都是最好计划的结晶。我仔细的把Hibernate读上去的感到就是,不但单把Hibernate把握住了,并且对耐久层的计划的履历都长了一年夜块,之前可历来没有以为耐久层的计划另有那末多的学问,也由此感到到Gavin相对是一个年夜牛人。固然选择Hibernate最最重用的缘故原由是Hibernate是一个我可以完完整全把握的了的软件。Hibernate的源代码十分少,并且写的十分简便,我总以为挺奇异的,这么少的源代码可以完成这么多的功效,是个事业。Hibernate的源代码树分的很分明复杂,源代码很易读,我一旦碰着文档中没有讲到的成绩,大概文档中提到可是我弄不分明的中央,我就往源代码中找,一切的成绩都名顿开,并且让我对Hibernate的运转道理和细节弄的出格分明,仿佛Hibernate就像本人写的代码一样,很分明的晓得,怎样写程序可让Hibernate运转效力最高,最省内存,程序出了毛病,很分明的晓得是甚么中央的成绩,怎样办理。以是用Hibernate让我出格宁神,
java是一种面向对象的编程语言,优点是可移植性比较高,最初设计时就是本着一次编写到处执行设计的。可以开发各种应用程序和游戏,不过速度没有c++快,所以一般是不用java来编写应用程序和电脑游戏。 |
|