深爱那片海 发表于 2015-1-18 11:47:09

JAVA网页编程之切合oo常规的体现层把持 [曹晓钢]

学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解把持
Hibernate的reference的副题目叫做:切合java常规的O/R耐久化,这展现了今朝三层布局的严重成绩,就是三层的不一致。到今朝为止,仍旧难于在web界面上完成C/S形式中"master-detail","lookup"的快速的用户交互。

今朝罕见的webapplication的布局,包括webbrowser/applicationserver/database。database占有支流的仍旧是典范的E/R模子,这个模子是基于行集的,因而在vb/delphi/powerbuilder的理论中,datasource/tableset都是基于行集的,odbc/jdbcdriver也都是基于行集的。view层的DbGrid也是基于行集的,和Entity模子对应得十分好,开辟浅易直不雅,信任这是C/S形式失掉敏捷推行的重点缘故原由之一。“master-detail”,"lookup"都是C/S形式下极其罕见和直不雅的联系关系形式。

但实质上,Objectpascal/java都是面向对象的。在此,就呈现了一次严重的不一致:OOvsE-R。呈现的办理体例就是EJB和O/Rmapping工具。EJB的entitybean是初期的entity封装情势。可是和如今以hibernate为代表的先辈工具(对POJO实行耐久化)对照起来,在OO与ER的对应上显得粗笨而难于利用。在这些工具中,代表OO与E-R交融的最实质的功效则是承继树与表布局的对应干系。hibernate2撑持整棵承继树与一个表对应、承继树中每一个类与一个表对应两种基础的对应干系,而hibernate3引进的join标志则更能够将两者交融,完成每一个类可选与基类在统一个表中耐久大概在新表中保留部分耐久数据,能够说hibernate3把这个对应的义务完成得十分杰出。"master-detail","lookup"则对应hbm.xml如许的映照文件中的"one-many","many-one"联系关系。

database与java的交融完成以后,下一步,不成制止的就是现有的webclient与服务器端代码之间的交融。从外表上看,webclient年夜多接纳html/javascript完成,而服务器端接纳java输入,两者是复杂的命令/反应的模子,这个模子从model1开展到MVC的模子后,编写代码变得明晰,可是开辟职员仍旧发明,编写webapp仍旧不是一件复杂的事变。struts/webwork仍旧只长短常底层的基本,对编写客户端营业对象没有甚么匡助。好比说,在服务器端java程序建模时,人人已习气用pojo剖析定单/客户/产物,可是在编写webclient时,struts/webwork都只能匡助你完成页面提交/反应的流程,却不克不及匡助你剖析客户端营业:新建定单时,选择了客户以后,判别此客户是不是有充足的预收款,如许一个复杂用例在程序员心目中的反应仍旧是每一个字段的inputtag,每一个页面post下去的model,和怎样用action的处置再次衬着下一个页面。

最年夜的成绩,就是作为体现层的webclient端代码与服务器端代码包含的语义摆脱。详细体现在:在接纳struts/webwork如许的MVC布局的时分,一般不会思索在客户端举行营业把持,好比由javascipt判别预收款是不是充足。因而必要不休的屡次页面革新才干完成全部逻辑。

要办理此成绩,一般能够接纳把营业逻辑部分转移到客户端,以javascript+xmlhttp或javascript+webservice,javaapplet/application,乃至接纳office平台(嵌进代码到excel)完成全部营业逻辑。也有良多成绩:

1,若要在客户端完成营业逻辑,大概客户端代码没有对应Pojo如许的基本object举措措施。javascript缺少如interface如许的基本布局。excel计划在这点加倍难于举行,由于全部开辟触及到的言语太多,形成开辟难度加年夜,项目把持坚苦。间接成果就是,难于在客户端代码中界说"master-detail","lookup"等联系关系。就算在项目计划中在javascript中界说pojo(plainoldjavascriptobject)及其联系关系,也难于使用hbm.xml如许的现成联系关系形貌。

2,客户端基本举措措施难于举行界面元素绑定。在处置大批数据时,excel计划在此表现出出色的上风,客户对内置程序的excel的承受水平十分高,但弱点是这类excel程序难于做到xmlhttp能够轻松做到的静态查询等特征。

3,客户端基本举措措施难于与服务器端举行交互。xmlhttp和webservice可选,可是在企业使用中其低下效力大概会带来服务器的压力隐患,下降功能和吞吐量。若excel计划,则一样面对着与服务器数据交互的困难。不论是xmlhttp计划仍是application计划,都面对着丢弃struts/webwork从头完成request/responsedispatch的请求。

4,客户端基本举措措施难于举行单位测试。有junit4js,port了junit3.8.1,但没有成熟的stub/mock工具。excel计划在此几近不成测试。

5,客户端基本举措措施难于调试。javascript缺少相似log4j如许的log工具(log4jshttp://www.petrusrex.com/Programmes/jslib.htm如许的工具还远没有成熟),也难于举行断点跟踪。excel计划却是有完全的vba情况。

6,客户端基本举措措施运转效力低。javascipt/vba都是注释言语,难于完成庞大逻辑,其功能决意只能用它们举行细粒度的界面把持。

7,因为扫瞄器的决裂,形成言语的不尺度,使用程序难以跨平台利用。在IE平台上可使用behavior和expression这类类AOP的操纵,却没法在mozilla中完成。

jsf计划无望成为备选计划,可是依照myfaces今朝的情形,要完成更多的体现层控件,才干完成更庞大天真的把持。

上面一次软件开辟体例的冲破,向前看,大概呈现计划体例的冲破,MDA是偏向;另外一个偏向就是向后对详细完成的冲破,在相似webapp如许的详细手艺(除webapp,application一样面对相似成绩)上,关于是不是可以把model的界说间接带进到体现层,JSF和.NET大概会有新一轮合作。

最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的

第二个灵魂 发表于 2015-1-21 14:50:14

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

分手快乐 发表于 2015-1-21 14:50:14

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

谁可相欹 发表于 2015-1-21 20:52:17

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

若天明 发表于 2015-1-26 12:53:13

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

莫相离 发表于 2015-2-1 10:50:01

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

兰色精灵 发表于 2015-2-7 03:59:26

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

小妖女 发表于 2015-2-20 11:40:38

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

活着的死人 发表于 2015-3-4 10:01:55

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

乐观 发表于 2015-3-11 16:13:24

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

冷月葬花魂 发表于 2015-3-17 08:10:42

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

因胸联盟 发表于 2015-3-25 15:44:15

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

透明 发表于 2015-4-1 01:50:43

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

精灵巫婆 发表于 2015-4-8 18:06:48

是一种为 Internet发展的计算机语言

小女巫 发表于 2015-4-9 09:08:38

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

不帅 发表于 2015-4-14 23:21:15

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

飘飘悠悠 发表于 2015-4-15 01:14:21

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

海妖 发表于 2015-4-16 10:20:56

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

金色的骷髅 发表于 2015-4-17 05:29:34

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
页: [1]
查看完整版本: JAVA网页编程之切合oo常规的体现层把持 [曹晓钢]