谁掌握了带事务处理的Web,谁就掌握了Web。
这几年来,一直盲从的跟随着周围人的技术趋势,从没有认真去研究过这个世界究竟发生了怎样的变化。结合自己的经历和网上所了解的一些信息来帮助自己认清楚Web这个世界的变化和对我个人的影响。
做Web技术工作多年,Web的发展一直影响着我们的技术趋势。谈Web的发展就不可能不提到Web1.0和Web2.0,这不是技术性的概念,而是web发展历史断代的成果。回忆初识网络及从事网络技术工作,生活中的一些细节和琐碎片段一直间接的反映着Web发展所带来的技术趋势变化。
Web1.0时代,任何一个会上网的人都不可能不知道Html(Hypertext Markup Language:超文本标记语言),而那时候网络提供的是一种信息浏览和简单信息交互的平台,讲求的是门户,内容,商业模式等。ASP,PHP,CGI等技术已经能基本上满足中小企业电子商务及信息发布平台建设的需要。而ASP,CGI等技术由于其自身的局限性已经不能满足各行各业各种深层次的需求而被迫走向灭亡。从互联网的发展和从事网络技术被看好以来,有着各种汇编语言背景的程序员就根据自身的语言背景去选择与他们所掌握语言相近的脚本语言,如C语言或Perl语言的程序员可能会去选择学习PHP等。而ASP作为一种服务器端脚本由于其可以包含HTML标记、普通文本、脚本命令以及微软强大的COM组件支持功能而成为很多网页爱好者学习的主流。
但是无论当初你是多么喜欢和欣赏ASP,它即将走向灭亡的趋势都是不可逆转的。除非你将自己的技能排在网络开发的技术之外,或者你比较守旧,喜欢死守过时的技能不放。否则你必须根据技术的发展趋势去选择一种在未来世界更加畅通的WEB开发技术。在J2EE和.NET两种平台即将成为主流的环境下,选择JSP还是C#又成为了Web开发的一次选择。
虽然偶当时基本掌握的ASP和使用ODBC通过ADO连接数据库的技术全部继承微软但偶还真没对微软有多么深厚的感情。当所有同事们都包含热情去学习.NET的并怂恿我也去了解一些C#知识的时候,我却更看好JSP。JSP超越ASP和PHP以及有着强大的JAVA语言做后盾使我更热衷学习。
几种语言的比较:
ASP:<% ="Hello,world"%>
PHP:<? ECHO "Hello,World!"; ?>
JSP:<% out.print("Hello,World!"); %>
JAVA:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello,World!");
}
PHP:<? ECHO "Hello,World!"; ?>
JSP:<% out.print("Hello,World!"); %>
JAVA:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello,World!");
}
}
C#:
public class HelloWorld{
public static void Main(){
System.Console.WriteLine("Hello, World!");
}
}
public class HelloWorld{
public static void Main(){
System.Console.WriteLine("Hello, World!");
}
}
先扔掉支持ASP的IIS服务器改用支持JAVA应用程序的Tomcat,使用JDBC-ODBC桥来实现ACCESS数据库连接,最后干脆将微软全部弃用直接使用JDBC连接MYSQL或其他数据库。
从最简单的JSP+JavaBean到JSP+Servlet+JavaBean开始,也就是所谓的JSP的Model1和Model2模式。JSP有JAVA语言做背景使它自身的发展也逐渐走向规范。采用Model1模式执行一个往数据库里插入数值的动作,你可以有多种方式去实现,如果你是JAVA程序员擅长写JAVA代码,你可以写2个BEAN文件和2个JSP文件,第1个BEAN用来封装数据,第2个BEAN用来执行插入数据的业务,第1个JSP用来设置表单,第2个JSP用来调用JAVABEAN来执行操作。当然你也可以使用隐藏表单为数据赋值的方式通过JSP页面将数据提交给负责调用由BEAN写的连接池的页面来做出相同的动作。实际上就是用JSP做视图,用BEAN去处理数据。但是无论你使用哪种方法去大量使用这种模式时都会带来一个副作用,那就是会导致在页面里嵌入大量的JAVA控制代码或大量的JSP语句,JSP页面的源码会变得非常臃肿。当要处理的业务逻辑复杂时,采用这种模式就会变得异常困难。所以三层数据结构表现的构想将会成为实现解决JSP数据逻辑和业务逻辑分离的一种机制。这样就有了JSPModel2模型,在JSP的Model2模式中增加了使用Servlet处理业务逻辑,JSP做视图,JAVABEAN连接两者而并只负责连接数据库和对数据业务进行处理的模型机制使M-V-C框架逐渐变得更合理更科学。这样的框架也就成为了J2EE Web框架的发展趋势。在各种基于表现M-V-C的开源框架中,Struts框架最先占领整个市场,Struts是在JSP Model2 基础上发展出来的一个“新物种”!这就好象生物界里诞生了不同于猫的猫科动物老虎比猫还强大。Struts比JSP Model2更为先进的理念就是它不仅更好的实现了M-V-C的分离,而且将每一模块的任务更加明晰化,并且使用控制器建立映射机制来连接URL,Struts在自身发展的过程中逐渐脱离了JSP语句和JSP标签。
任何网络技术的发展都脱离不了互联网的发展,Web 2.0时代带来的不仅是它的“六度分隔”理论,更多的是对XML,TAG,AJAX等技术的发展和支持。这样JSP,STRUTS以及各种J2EE组件在自身发展的同时也引入了XML,TAG等元素来完善和扩展自身。JSP在发展到1.1版本的时候已经将使用自定义标签纳入到规范中,当它发展到2.0版本的时候增加了JSTL(标准标签库)标签库和表达式的运用。
时代是在发展的,各种对复杂的数据逻辑和业务对象的处理需求都在不断的加深,这就对框架提出了更高的要求,三层的表现形式是根本不能满足对大量数据逻辑和业务对象处理需要的,持久化开发成为必然趋势,为了使业务对象持久化,就必须引入关系数据库的概念并将业务对象映射到关系数据库中。而在对底层数据访问操作与高层业务逻辑的分离中又引入了DAO模式,DAO模式提供的是关系型数据库所需要访问的所有业务对象的接口,采用XML文件来配置业务对象和关系型数据库数据之间的关系。在各种开源的OJB模型中,Hibernate成为Struts框架最理想的用来拓展底层数据交换的组件。而晚于Struts半年后推入市场的Spring框架也被人们逐渐的认识到它的价值。Spring是一种以反向控制设计原理为基础的开源框架,核心概念是“反向控制”(IoC)和“面向方面编程”(AOP),它对业务逻辑层各类事务处理的应用程序资源非常丰富,并能简化使用接口开发的复杂性,具有JDBC DAO层的数据驱动的应用程序。用Struts做表现,Spring做MVC前端业务逻辑层事务处理,Hibernate做底层数据处理,基本上能够满足目前各类复杂的数据业务处理。
但任何一种框架的扩展都是有局限性的,J2EE的各类组件都在发展自身的基础上不断完善,Struts也在不断的升级,未来将会有一种扩展性更强的框架诞生。现在一些未来技术已经展露头脚,Tapestry框架是一个基于java servlet容器和Tapestry应用程序之间的层。基于servlet的一种完全页面组件化的开发框架,而且现在发展的非常成熟,它能运行于servlet容器,对各类文本标签有良好的支持,并能整合现有的各种J2EE容器。而基于JSP发展起来的JSF也包含了Struts和类似于swing编程的UI组件,和Swing一样是面向对象编程,并有强大的标签库支持。Tapestry和JSF都属于事件驱动型组件模型,所不同的是前者是servlet延续,后者是JSP的构架,从J2EE的发展上来看,不难看出JAVA工程师如果想用JSF做框架必须补充JSP基础,要熟悉JSP.2规范的组件,并对处理用户界面的图形包Swing也要了解,Tapestry也已经迅速被更多的人所掌握和了解。