JAVA教程之WEB开辟框架JACKER切磋(二)
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。web持续抛出我的概念.WEB层和营业层解耦
WEB层是经由过程挪用营业层来完成一次营业操纵的。以是WEB是依附营业层的完成的。怎样解偶使二者能自力开辟而互不影响?我偏向利用一致的挪用接口:利用一个命令字符串,加一堆DTO参数就可以挪用营业,然后获得DTO前往值。这里一个营业的挪用就是一个命令的实行。Ofbiz的serviceengine就是如许的做法,并且很乐成,这也是一种存眷营业的理念。利用一致的挪用接口,WEB层的开辟便可自力举行了,不必依附营业层就可以举行编译。并且这类做法还带来了更多的优点:权限,日记都能会合办理;未来大概的话,散布式部署营业层也变得便利,由于一切营业都是一个命令接口挪用。
.MVC
MVC是一种计划形式,用在WEB框架中,使我们无效的对WEB层举行再分层:VIEW+ACTION
struts,webwork都是MVC框架,而webwork更是天真文雅,使人惊叹!
熟习MVC和承受MVC的人也愈来愈多。无需多说,Jacker也拥抱MVC;
.xmlhttp
从办理成绩角度讲,xmlhttp很壮大,你能够选择它,完整依附它。
不外我以为富客户真个手艺,已不是真正意义的WEB开辟了,我以为服务器端天生静态页面才是真正意义的WEB开辟。WEB交互的次要体例是form的post和get,而决不是xml流的post和get。何况在服务器端间接会见对象及属性总比做一次xml转化再到客户端剖析出数据来的间接。固然xmlhttp作为加强界面交互才能的手艺增补,仍是必不成少的;
而假如你利用富客户端手艺,那也一定必定要选择xmlhttp,javascript我也打了多年的交道,给我的感到老是弱弱的,出格是调试贫苦,偶然无章可寻。
上面我会说到轻量,完整的基于xmlhttp,无疑必要有个复杂的js库(背景也要有java库)的撑持,感到很重。
.View的再分层
MVC架构中,展现层View的手艺是八门五花,可选择的太多太多,jsp多是用的最多的,模版言语也多种多样,我分为两类:剧本模版和复杂模版。剧本模版如velocity,freemarker,能够在页面用便利的剧本界说变量,运算并发生输入,固然比jsp洁净了良多,剧本的嵌进几仍是影响了页面的整齐;而复杂模版的理念则是将页面逻辑从模版中抽掏出来,模版只是用流动的结构展现数据,包管“所见即所得”的开辟效果;
复杂模版的引进对View层开辟将是厘革性的,模版复杂,页面没有任何代码净化,间接优点就是View开辟的再分层,美工也能间接介入模版的开辟,有助于发生专业质量的界面效果。
对复杂模版的具体先容可见我的blog:http://blog.csdn.net/goldrain/
.轻量和天真
细分了这么多层,每层都是有良多良多的手艺框架能够选择,轻量天真的办理计划天然更受接待。EJB无疑是重的,struts比拟webwork则笨了点,复杂模版对照剧本模版,则也轻巧很多,几近没有语法必要进修。
Jacker能在tomcat上轻松的运转,各层的框架选择是:
view:eastm复杂模板(子项目)
webmvc:webwork
营业解耦及挪用:jservice(子项目)
营业层:spring+hibernate
.对ofbiz一些意见
ofbiz无疑是个乐成的营业框架,算得上是胸无点墨了,我用ofbiz写过一些工具,也只是对其entityengine,serviceengine及mvc框架有所懂得。不外仍是有些分歧的意见,不然也不至于在这里构想本人的框架了:
面向属性仍是面向Map?
我称ofbiz是面向Map的一种办理计划,service利用map传值,entity利用map存字段值,利用key会见值。web层中,request中的参数也是间接转为map就用于传送,而不是先映照到对象的属性字段。map的体例有个优点就是能够少界说良多属性类,出格是DTO,但绝对利用属性承载数据的POJO体例,map显得不敷直不雅松散,并且属性对象开辟中IDE可供应属性办法提醒,map天然做不到。我偏向面向属性为主的编程,map为辅。
组件耦合仍是解耦?
ofbiz的各引擎组件耦合的很紧,很难抽掏出来独自利用。entityengine,serviceengine,webmvc架构,事情流等都互相依附,难以剥离独自利用。
解耦,坚持组件的自力性,也就给了开辟员更多的选择,能够选择利用整套计划,也能够选择部分。
在性能方面,在windows平台下,.net可能是占强项,要是把.net放在sun开发的操作系统上去运行呢?根本就运行不了,.net对其它操作系统的支持也很弱,性能也可能比不上java。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 是一种语言,用以产生「小应用程序(Applet(s)) 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 是一种使用者不需花费很多时间学习的语言 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 是一种语言,用以产生「小应用程序(Applet(s))
页:
[1]
2