|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
windows系统样,他们做了什么事或者留了一些后门程序,谁都不知道,二,java开发是跨平台,任何系统上都可以运行,对于保密型系统和大型系统开发这是必要的js|servlet|毛病|计谋|支流原文
很多人以为JSP是JAVA向微软ASP应战的乐成产物,到明天,环绕着JSP计划开展出了TAG/EL等手艺,JSP作为JAVA的BS前台界面计划看来已是没法逆转。但在我看来,JAVA选择JSP这类表达情势,恰好是它最失利的中央,是对ASP的一种低劣的仿照,它原本能够做得更好的,乃至大概据此让微软完全加入服务器范畴,但终极,却大概成为足以令JAVA终极失利的严重计谋偏向性毛病。
JAVA到明天仍具有微软一切言语所不具有的长处,就以C#而言,只不外是形似而神不似。java最基本的中央不在于它的OOP,不在于它是C++的语法优化,这些都不主要,而在于它的假造机机制,使它成为最好的跨平台的服务器言语;而C#不管何等语法类似,都没法改动如许一个实际:它只是微软CLI中的言语中的一种,它再乐成,也充其量是代替了在windows运转的JAVA;某种水平上,C#是一种必定没有需要存在的言语,在CLI中,只必要一种就够了,象VB.net。
JAVA到软件天下带来的最年夜的影响是令软件真正呈现了分层开辟,呈现真实的三层布局。只管有些家伙吹捧他们的软件是N层布局(真不要脸!),实在究实在则,都只不外是传统的CS式的两层布局的变种,不克不及把函数每加一个就称为一层噢!JAVA呈现表现了软件的制造性头脑,但JAVA犯的毛病最年夜的中央就在于他毫无制造性地仿照了ASP,而且,居然把JSP作为两头件的次要会见手腕加以开展。这是一个严重的掉误,大概,假如有一天JAVA逝世失落的话,就逝世在这个掉误下面。
ASP的是仿照最早的livewire式的jsp和cofusion,livewire也是自己最早在项目中打仗的jsp,与厥后的javajsp毫无不异的地方。这类netscape公司的"jsp"与asp有配合的特性,就是完整没有面向对象的特征,是地道的剖析性剧本言语,厥后的PHP也是如许的产物,PHP实质上能够看做是Cscript。这些言语的呈现原意是要满意那些不懂盘算机言语,从HTML美工转行的半吊子程序员的才能必要,美其名为让美工能够写静态网页水平。不外,这个开辟设想成了互联网呈现以来最年夜的笑话之一,美工式的程序员一直不克不及写真实的静态网页,反而让真实的程序员往做了美工的活了,最典范的产物就是struts。
java与此完整纷歧样,它是一种必要编译的言语,具有完整的面向对象的才能;以是,它假如可以发扬这类特性,打败其他的几种剧本是毫无坚苦的。了局,SUN的天赋的笨伯们(我以为这类称号最客不雅,既是天赋,也是笨伯),选择了用装甲车往和捷达争取出租车市场,做起了JSP。而我以为,servlet才应当是它最好的开展偏向。明天,我已健忘了现在是甚么缘故原由令我保持了jsp而利用servlet作为项目办理计划的;只记得厥后完整保持jsp是因为分身两种情势在传送变量和地点时十分庞大,还不如光用一种。明天当我觉得我现在错了,而标签/EL等手艺的呈现会令JSP分歧往昔而再次在严重项目当选用JSP时,(个中一个缘故原由也是谁人笑话的持续,但愿不懂JAVA的保护职员能够在交货后自已保护体系前台),跟着项目标进进,我记起了现在保持JSP的缘故原由:一个是事先的代码办理十分坚苦,JSP体系基础上与其他PPP类程序一样是不成保护的;另外一个缘故原由就是JSP没法基于模板举行保护。前者因为tag等的呈现而减缓了,(夙昔也能够利用includesevlet的举措到达靠近的效果),后者仍旧一样,关头就在于不克不及复盖已有的代码。而在servlet中,重载一个办法是很简单的。
很多人觉得servlet难写,在doget/dopost/init/等中必要塞进那末多的办法;实在,这是一种曲解,这类曲解是没有熟悉到servlet实质上是一种javaclass,能够容易私有公有的办法,也能够承继,能够重载等等。因而,在servlet中很简单就能够构成一个全体系跟随的模板,一改一同改。相反,觉得写servlet就是在doget顶用out.println输入的,是把写JSP的了解带进了servlet;JSP编译成servlet后,也恰是这个模样的。以是它不存在承继的代价。
那末关于庞大的html界面怎样到达与jsp一样的简便嵌进呢?实在很复杂。我事先的办理计划是利用${xxx}标志预置默许的体例,然后把这些带有大批html代码的标志的文件存在某个目次;在sverlt初始化时经由过程文件字撙节读进,利用一个字符串剖析的组件(明天还在用呢)把标志转化为响应的实践静态变量。这恰好就是明天的号称开始进的EL表达式言语的办理办法。真的,我一点都不以为有写servlet比一样平常的网页程序难在甚么中央。某种水平上,我以为自已做了一个jsp注释引擎出来了。
那末这类本地货的jsp和真实的jsp有甚么区分呢?最年夜的区分就在于它是把jspp仅仅当作是为servlet服务的html代码库,而不是serlvet为jsp服务。换言之,这里的jsp是相似于明天的tile/Jspfragment的工具。一个小小的不同,带来的效果完整纷歧样,由于它能够完全的发扬出java面向对象和承继的特性;乃至能够象PB那样将全部项今朝台作为一个类"承继"出来,再扩大和重整必要修正的中央。而这类才能,是那些"P"言语永久不成能做到的。可是,SUN恰恰跟在微软屁股前面往低劣地仿照JSP。
无妨回忆一下在BS前台最多见到的架构是甚么?是一个年夜的网站上年夜部分版面具有相似的框架结构,每一个分栏中只要个中某处纷歧样。JSP能够很简单地共用个中一样的部分;但关于个中纷歧样的部分就力所不及。因为JSP不克不及构成顶级模板,而每个年夜分栏中部内容纷歧样,以是独一的举措就是每个年夜分栏拷贝出一个jsp文件来取得一个顶级框架模板;明显,这意味着对每个文件的不异框架部分举行保护;项目越年夜,如许往后变动的事情量越年夜。这时候侯真的有点吊唁servlet的功效了,对这类需求,只必要写好一个servlet,其他的servlet承继它,然后重载它的中心内容办法,就弄惦了。以后要到达相似请求的独一举措,仿佛只能是在顶级页面中利用if-else/equal-notequal判别里include分歧的内容文件。舍此,另有甚么好举措吗?
JAVA的BS前台的准确的思绪应当是以一个能够订制承继办法的servlet为中心,然后能够分化一些象jsp如许的文件,相似明天的jsp中手艺都能够用到这些JSP文件中。也就是说,中心应当是一个能够定制的servlet,而不是供应一个工具,把jsp编译成不成变的servlet。顶级文件应当是servlet,而不该该是JSP,这就是我所说的。
我一团体是不成能与全部JSP社区尴尬刁难的,不成能一团体完成SUN几千个开辟工程师的事情,既然SUN的某个天赋年夜笨伯选择了JSP作为JAVA在BS的表达支流,到明天,假如我仍利用JAVA作为前台界面程序的话,最好就是随年夜流尺度,而在几年前,JSP完整不是尺度,情形是纷歧样了。不外,从明天实践的体验来讲,我仍旧激烈地以为,SUN犯了一个严峻的办法性毛病。更加遗憾的是,SUN没有做到的事变,让微软在ASP.net中有所表现了,所幸微软的工具历来不盘算跨平台移植的,以是SUN另有一点时机。
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包...... |
|