技术开发 频道

我们还需要JSP吗?



    【IT168 专稿】看到这个题目,也许很多人会不理解。现在JSP不是活的很好吗?为什么会这么说。然而经常使用JSP的人可能会发现,JSP虽然动态地利用Java程序来生成Web前端,但JSP在调试、可视化方面都不尽人意。而且JSP提供了大量另人难以理解的标签。这些也会大大增加JSP的使用难度。在当前Sun之所以在推出Java三年后又弄出个JSP,可能主要是为了对付微软的ASP。事实上,Sun提供了JSP也是无奈之举。当明Servlet规范诞生后不久, Sun发现Servlet并不适合于开发Web程序,因为它并不能象ASP一样将HTML和Java混合在一起(只能用Response.write向客户端输出代码),因此,Sun就想了一个折衷的解决方案,用类似ASP的语法提供一个纯文本的代码页,然后再将其转换成Servlet源代码,最后将其编译成Java二进制代码。从这一点看,JSP就是Sun最初为了迎合Web设计者的需要以及为了和ASP竞争而提供的一个超级补丁,从现在来看,这个补丁已经有点陈旧了。也许Sun应该为Java全新定做一个Web解决方案了。

    有很多Java程序员都认为Java是面向对象的最好体现。然而以Java作为主要程序语言的JSP在程序复用性上却和Java大相径庭。在整个J2EE规范中并没有提供一种机制来重用JSP。当然,你也许会说可以使用<jsp:include>来实现复用,但用这个标签其他的组件或程序就无法实现对JSP的复用。
 
    MVC模式是现在非常流行的设计模式,然而在JSP中却没有对它直接地支持,在最近发布的JSP2.1规范中也未描述。而要想在JSP中使用MVC模式,就必须要使用第三方的框架,如Struts。在这一点上就不如现在非常流行的Ruby on Rails。RoR的基本原理是约定优于配置。因此,在ROR中使用MVC模式是非常简单的。而在JSP中就需要配置大量的xml文件,并且现在还没有一个非常好的IDE可以支持这些操作。如果你想在自己的Web程序中使用MVC模式,建议可以考虑一下ROR。因为它会使你的工作事半功倍。
 
    现在之所以支持JSP的IDE非常少,除了Java阵营的固有模式,只注重技术本身,而并不注意用户体验外,还有一个重要的原因,就是JSP本身在设计时并未考虑支持IDE。因此,它并不能象ASP.NET一样提供可视化的接口(当然,如果想提供这样的可视接口也不是没办法,只是实现难度要明显大于ASP.NET)。也许这在某种程序上将会影响JSP的发展,毕竟,任何人都希望自己所使用的产品更容易使用。
 
    JSP不仅在服务端的使用不尽如人意,而且对前端技术的支持也不好。如现在非常流行的AJAX技术。要想在JSP中使用这种技术,必须得手工编写大量的代码。这对于规模很大的工程的开发周期会很长。而Sun却一直对这些视而不见。在新推出的JSP规范中迟迟不肯加入对这些新技术的支持。而Rails这一点做的就很好。它不仅全面支持MVC模式,而且提供了很多功能可以直接使用AJAX,而且无需了解任何JavaScript的知识。最近Borland又推出了Delphi for Rails。我想这将大大加速ROR的发展。也许现在很多人更希望Sun也能象这些开源技术学习,更快地在JSP中加入新东西。或者设计出更另人振奋的Web解决方案。但另人遗憾的是Sun只顾按着自己的路线发展,而无视Java社区的呼声。如果Sun仍然这样一意孤行,很可能最后Sun的软件技术只会剩下Java一种了。但愿Sun能趁早醒悟。

0
相关文章