`
yinyongliang
  • 浏览: 172685 次
社区版块
存档分类
最新评论

JSP能否再掀Web狂潮?

阅读更多
JSP今生

    在二十世纪末,引发了一次Web狂潮。这其中的主角就是JSP。 

    这次狂潮从1997年开始。Sun在1997年6月发布了它的第一个Web服务器:“Java Web Server”,同时公布了“Java Web Server”所使用的Servlet API。其中Servlet API只是Web服务器的一个副产品,但令Sun没想到的是这个副产品正好迎合了厂商的战略需要,HTTP服务是一个非常理想的前端;所以基于Java的Web引擎,也在此时成了企业级Java解决方案的一个必不可少的部分。

    转眼到了1998年。由于Servlet API有着先天的不足,无法在其中嵌入HTML等前端代码,因此,在这一年,Sun又推出了JSP。这项和ASP极为相似的技术迅速成为当时的主流。

    1999年是不寻常的一年。在这一年里,随着JSP的推出,Web世界之间的竞争变得越发激烈。这些竞争主要表现在前端和后端,在前端主要是浏览器之间的竞争。我曾经记得一本叫《Inside Visual C++》的书中给出了一个Web浏览器的例子。作者在这一节的开头说,如果你几年前能开发一个功能强大的Web浏览器,那一定会给你带来上千万的利润,但你现要做这个东西,最多也只能是练习一下C++而已。可见当时浏览器的竞争是多么的激烈,利润是多么的可观。在后端,Web服务器的竞争也异常惨烈。在1999年底,市面上至少存在30种以上“Web服务器”,这其中包括后来的骄骄者WebLogic。可见当时这类软件是网络风险投资的宠儿。

    Sun在1999年初发布JSP1.0后,在1999年11月又发布了JSP1.1。这个JSP版本大约使用了2年多,在2002年4月,Sun又发布了JSP1.2。在1年之后,Sun又对JSP进行了重大升级,发布了JSP2.0。这个版本一直使用到现在。直到最近,Sun发布了JSP2.1的测试版,这标志着JSP又往前进了一步。

    在JSP发展的同时,有另一股强大的势力也在不断地发展,这就是来自微软的ASP。在Web世界群雄并起,军阀割据的年代。JSP和ASP之间的竞争最能引人注目。这两种技术分别代表了两个利益集团:微软和Sun。ASP以它的快速开发和发布方便,以及微软强大的支持赢得了大量的用户。而JSP也不甘示弱,仗着Java的跨平台特性以及Java的强大而丰富的类库,在Windows平台以及类Unix平台上咄咄逼人。它们依靠各自的优势互有胜负地争斗了数年。

    随着JSP的迅猛发展,J2EE中的其它部分,如EJB,也在不断地发展。在2001年9月,Sun推出了强大的EJB2.0。EJB2.0为我们提供了远程对象访问,对象持久化,事务等很多企业级的功能。这也为Web的企业级的应用拉开了序幕。但EJB2.0有一个致命弱点,这就是它的复杂,以至于复杂到难以使用的程度。EJB2.0的这个弱点却给了别人机会。这就是那些基于Java的开发框架。这其中的骄骄者是Struts、Hibernate和Spring。其中最突出的要数几乎和EJB2.0同时诞生的Hibernate。这是个轻量级的框架,它能以非常方便的方式实现EJB的对象持久化,事务等企业级的功能,因此,它一诞生,立刻就引起了轰动。还有就是Struts,这个最典型的实现MVC模式的框架使Web开发变得更有层次感、也更容易维护了。

    总之,JSP一路发展到今天,凝聚了无数人的心血,甚至还有竞争对手的压力。同时伴随着JSP共同成长的还有很多优秀的框架,以及许多新的开发模式。但JSP以后的路还很长,现在Sun正在制定新的JSP规范和JSF规范。希望这将使JSP变得更强大和易用。
  JSP未来之路

    在几年前的Web之争中, ASP和JSP要算其中的主角了,在这场战争,ASP由于不敌JSP而没有成为目前企业级开发的主流。但Web之战还远未结束。现在ASP虽然未完全退出市场,但目前大多数的ASP网站都是以前遗留下来的。如果是新做的网站,大多数人可能都不会选择ASP,有一部分人可能会选择ASP.NET,或是PHP。当然,原来的一部分ASP用户可能会投身于JSP的怀抱。

    我在网上看到有很多人说JSP是Sun的一大败笔。我可并不这么认为。其实任何脚本语言的原理都差不多,如ASP、PHP或是JSP。至于哪种脚本语言可以获得成功,就要看这种脚本语言是否有与之配套的外围服务。如是否提供了相应的开发工具,开发工具是否易用、在处理某些资源(如字符串、编码转换)上是否容易等等。这就象操作系统的成功取决于在这个操作系统上有多少支持它的软件一样。不管JSP最后是成功、还是失败,也许都不能完全归功或归咎于JSP的技术本身,毕竟,技术的成功并不等于商业的成功。就象Delphi现在的处境一样,这并不等于说Delphi是Borland的一大败笔,恰恰相反,Borland是靠Delphi成名的。一种技术产品是否成功,要看设计它的公司是否能抓住战机,以及实施怎样的策略。但愿JSP不要成为下一个Delphi。

    不过,还是有一些好消息的,前一段时间,Sun更新了JSP和Servlet标准,并且发布了JDK5,在不久将会发布JDK6。这些新的JDK版本将对JSP有了更强的支持,再加上近年来不断涌现的优秀的框架(如struts、hibernate、spring等),使JSP变得比它刚诞生时更强大了。

    如果你使用JSP已经很长时间了,你就会发现,JSP虽然功能强大,但是在开发Web图形界面方面却显得力不从心。由于前端的HTML、JavaScript等代码必须要手工或使用其它的网页设计器生成。这将使得JSP在开发界面时非常不方便。因此,Sun为我们提供了新的Web界面标准:JSF(JavaServer Faces)。JSF为我们提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。目前Sun已经在推出J2SE5.0的同时,推出了JSF1.2,试图使J2EE 中不同 Web 层技术之间趋于一致。看来Sun要在Web界面领域和微软的ASP.NET一争高下了,但愿以后能出现象Visual Studio一样的JSP和JSF开发工具。到那时,Web应用之间的竞争也许会进入白热化阶段,让我们拭目以待吧!
分享到:
评论

相关推荐

    tables-3.6.1-cp39-cp39-win_amd64.whl

    tables-3.6.1-cp39-cp39-win_amd64.whl

    基于springboot大学生心理咨询平台源码数据库文档.zip

    基于springboot大学生心理咨询平台源码数据库文档.zip

    Javaweb仓库管理系统项目源码.zip

    基于Java web 实现的仓库管理系统源码,适用于初学者了解Java web的开发过程以及仓库管理系统的实现。

    基于springboot智能推荐旅游平台源码数据库文档.zip

    基于springboot智能推荐旅游平台源码数据库文档.zip

    Ruby语言教程:从基础知识到高级特性的全面指南

    内容概要:本文是一份详尽的Ruby语言教程,首先介绍了Ruby语言的基本信息和发展背景。接着详细讲解了Ruby的基础语法,如变量、数据类型、运算符、控制流等,并深入探讨了面向对象编程的关键概念,包括类、对象、继承、封装和多态。随后介绍了Ruby的一些高级特性,如模块、异常处理、迭代器和文件I/O操作。最后,讨论了Ruby在Web开发中的应用,尤其是与Rails框架的结合。每个部分都配有相应的代码示例,帮助读者更好地理解和实践。 适合人群:适用于初学者和有一定基础的程序员,特别是对Ruby语言感兴趣的人。 使用场景及目标:学习和掌握Ruby语言的各项基础知识和高级特性,为进一步进行Web开发或其他相关编程打下坚实的基础。 其他说明:教程中的每一部分内容都有详细的解释和代码示例,非常适合自学和教学使用。

    L7_NDVI_sd.txt

    GEE训练教程——Landsat5、8和Sentinel-2、DEM和各2哦想指数下载

    基于springboot在线问诊系统源码数据库文档.zip

    基于springboot在线问诊系统源码数据库文档.zip

    基于springboot的流浪猫狗救助系统源码数据库文档.zip

    基于springboot的流浪猫狗救助系统源码数据库文档.zip

    value_at_a_point.ipynb

    GEE训练教程

    毕业设计&课设_利用 WiFi 实现室内定位,含定位 APP 与数据采集 APP.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    SQLite参考手册中文CHM版最新版本

    本教程帮助您了解什么是 SQLite,它与 SQL 之间的不同,为什么需要它,以及它的应用程序数据库处理方式。需要的朋友们可以参考看看! SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。SQLite 源代码不受版权限制。 什么是 SQLite? SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。 为什么要用 SQLite? 不需要一个单独的服务器进程或操作的系统(无服务器的)。 SQLite 不需要配置,这意味着不需要安装或管理。 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。 SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250K

    基于springboot学生选课系统源码数据库文档.zip

    基于springboot学生选课系统源码数据库文档.zip

    【Android UI】SurfaceView中使用 Canvas 绘制可缩放大图

    【Android UI】SurfaceView中使用 Canvas 绘制可缩放大图 ( 拖动和缩放相关的变量 | Canvas 绘图函数 | 手势识别 多点触控流程 | 拖动图片 | 缩放图片 ) 博客链接:https://blog.csdn.net/shulianghan/article/details/143950948 一、需求分析 和 核心要点 说明 1、需求说明 2、核心要点 - 拖动和缩放相关的变量 3、核心要点 - Canvas 绘图函数 4、核心要点 - 手势识别 多点触控流程 5、核心要点 - 拖动图片 6、核心要点 - 缩放图片 二、完整代码示例 1、环境说明 2、SurfaceView 完整代码 3、运行结果

    基于springboot+web的二手闲置交易系统源码数据库文档.zip

    基于springboot+web的二手闲置交易系统源码数据库文档.zip

    band_computations.ipynb

    GEE训练教程

    毕业设计&课设_众筹平台系统,基于基础语言开发,含功能流程与运行步骤,适合新手学习借鉴.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    基于SpringBoot的宠物寄领养网站源码数据库文档.zip

    基于SpringBoot的宠物寄领养网站源码数据库文档.zip

    基于springboot的电影院售票管理系统源码数据库文档.zip

    基于springboot的电影院售票管理系统源码数据库文档.zip

    毕业设计&课设_含构建设置及相关操作,基于特定技术,具体功能未详细说明.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    工具变量上市公司企业银行贷款数据(2019-2024年).txt

    数据存放网盘,txt文件内包含下载链接及提取码,永久有效。失效会第一时间进行补充。样例数据及详细介绍参见文章:https://blog.csdn.net/T0620514/article/details/143956923

Global site tag (gtag.js) - Google Analytics