JSP的诞生犹如软件业的一个重型炸弹,迅速的在业界引起了轰动,JSP的平台无关性以及一次编译处处运行等特点,让很多网络宠儿,暗然失色,就连身出门的Asp也只有超架之功,毫无还手之力,可是转眼几年的风光过后,JSP从一个软件业的宠儿,变成今天的流浪者,是什么原因造成如此大的反差,让我们随着JSP的发展足迹看它能否重现往日辉煌? ASP和JSP之间的竞争最能引人注目,JSP能否再掀Web狂潮?
JSP的前世
在上个世纪的最后十年,是Web由诞生到兴起的最关键的十年。这期间发生了很多决定未来互联网命运的大事,如1990年11月,世界上第一个Web服务器nxoc01.cern.ch诞生。1990年12月,世界上第一个Web浏览器诞生,1991年,CERN(European Particle Physics Laboratory)正式发布了Web技术标准。
最初的Web程序在前端只能显示静态的HTML页,而Web程序一般是使用C/C++、Pascal等语言编写的CGI程序。这种程序的主要优点是快速,但它的缺点也很显然,由于CGI为每个请求单独建立一个进程,这也就意味着如果有大量的请求的话,在服务端将占用大量的资源。因此,也就注定了CGI不能为海量的用户提供服务。当然,CGI的诞生也符合当时的背景。因为当时的计算机配置还不是很高,而且网络速度不快。并且使用Web的人也不多,因此,CGI 的快速(由于当时的CPU的主频不高,使用解释型语言太慢,只能使用编译型语言)和只传送静态的HTML成为当时的主流。
但随着计算机和网络的不断发展,动态的网页逐渐取代的死板的静态网页。在后端也逐渐从最初的CGI转向了解释型的语言。
在看到Web应用的不可阻挡之势后,微软在1996年推出了ASP1.0,ASP一推出,就立刻受到了Web开发人员的欢迎,使用量也猛增。
没有人会看着一个大蛋糕被瓜分而无动于衷。至从Java在1995年问世以来,Sun一直在寻找新的突破点。虽然最初Java靠着Applet抢占了前端的一些市场,但这个自许为救世主的公司怎能满足这一点蝇头小利。终于,在1998年,也就是在第一个ASP版本发布的2年后,Sun终于推出了自己的第一个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进行了重大升级,发布了JSP版本一直使用到现在。直到最近,Sun发布了JSP2.1的测试版,这标志着JSP又往前进了一步。
在JSP发展的同时,有另一股强大的势力也在不断地发展,这就是来自微软的ASP。在Web世界群雄并起,军阀割据的年代。ASP和JSP之间的竞争最能引人注目。这两种技术分别代表了两个利益集团:微软和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应用之间的竞争也许会进入白热化阶段,让我们拭目以待吧!