首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 虚拟主机评测对比
选择jsp而不是servlet作为BS前台主流方案是JAVA的战略性方向错误-JSP教程,Java技巧及代码
作者:网友供稿 点击:10
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
 原文
许多人认为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,与后来的java jsp毫无相同之处。这种netscape公司的"jsp"与asp有共同的特点,就是完全没有面向对象的特性,是纯粹的解析性脚本语言,后来的php也是这样的产品,php本质上可以看作是cscript。这些语言的出现原意是要满足那些不懂计算机语言,从html美工转行的半吊子程序员的能力需要,美其名为让美工可以写动态网页程度。不过,这个开发假想成了互联网出现以来最大的笑话之一,美工式的程序员始终不能写真正的动态网页,反而让真正的程序员去做了美工的活了,最典型的产品就是struts。

java与此完全不一样,它是一种需要编译的语言,具有完全的面向对象的能力;所以,它如果能够发挥这种特点,打败其他的几种脚本是毫无困难的。结果,sun的天才的笨蛋们(我觉得这种称呼最客观,既是天才,也是笨蛋),选择了用坦克车去和捷达争夺出租车市场,做起了jsp。而我认为, servlet才应该是它最佳的发展方向。今天,我已经忘记了当初是什么原因令我放弃了jsp而使用servlet作为项目解决方案的;只记得后来完全放弃jsp是由于兼顾两种形式在传递变量和地址时非常复杂,还不如光用一种。今天当我以为我当初错了,而标签/el等技术的出现会令jsp不同往昔而再次在重大项目中选用jsp时,(其中一个原因也是那个笑话的延续,希望不懂java的维护人员可以在交货后自已维护系统前台),随着项目的进入,我记起了当初放弃jsp的原因:一个是当时的代码管理非常困难,jsp系统基本上与其他ppp类程序一样是不可维护的;另一个原因就是jsp无法基于模板进行维护。前者由于tag等的出现而缓解了,(从前也可以使用include sevlet的办法达到接近的效果),后者仍然一样,关键就在于不能复盖已有的代码。而在servlet中,重载一个方法是很容易的。

许多人以为servlet难写,在doget/dopost/init/等中需要塞进那么多的方法;其实,这是一种误解,这种误解是没有认识到 servlet本质上是一种java class,可以轻易公有私有的方法,也可以继承,可以重载等等。因此,在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还有一点机会。
文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·Asp.Net下导出/导入规则的Excel(.xls)文件-ASP教程,ASP应用
·中国万网,万网
·中资源
·上海火速
·加拿大中文网
·华夏名网
·世纪东方
·商务中国
·中国E动网
·神话网络
最新文章
·photoshop抠图合成特效:飞出照片相框_photoshop教程
·将升级的windows vista驱动还原到原来的版本_windows vista
·photoshop漫画笔刷绘制非主流照片漫画_photoshop教程
·看域名注册信息判断网赚公司真假_网赚技巧
·找坐标:对网站进行坐标定位_站长心得
·如何增加网站pv_站长心得
·google性格一:对活跃度高的网页收录很快_google推广
·googleadsense容易被k的可能性列表_google推广
·价值数万的googlepr作弊方_google推广
·如何抢占人家的“首要意念”_google推广
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭