[size=medium]Webdw0.2版本用户手册
前言
为什么Java Web开发如此复杂?
互联网出现以后,应用程序的架构迅速发生变化,曾经流行一时的C/S模式很快被B/S模式所取代。但B/S的应用架构相对于C/S的应用架构,要复杂很多。这就造成了应用程序开发的效率低下,界面低效,用户体验差,维护升级困难。按照我个人的经验,以PB和Java来同时开发一套系统,Java的开发效率最多是PB的1/5,而生成的代码总量至少是4倍以上,这一估计还不包括Java本身所需要的各种架构在内,仅就代码而言,包括Java代码和JSP代码。
为什么一个如此流行的开发模式,开发效率会如此之低呢?
这一问题我思考了很久,最后终于找到了答案。Java开发的效率之所以低,最核心的原因在于HTML语言本身。这个语言的设计初衷,仅仅是为了显示标准化的文本而设计的,后来才加上了图形,以及插件,后来为了增加交互性,才增加了JavaScript等脚本的支持。但JavaScript本身又是单独一个标准,不包含在HTML之内。
简单来说一句话,HTML语言在设计的时候,根本就没有考虑过未来应用如何用它来开发,它仅仅是一个显示文本的定义语言。后来为了迁就应用开发的需要,人们在试图在这个地基上面加上其他功能,但又要兼顾对现有标准的支持和兼容,又要兼顾到现有各方的利益诉求,于是HTML本身变得越来越复杂,越来越难以理解,学习它的成本也变得很高,而效果并不明显。
刚才说的是Java的开发效率,怎么又扯到HTML了呢?
这是因为,非常不幸,Java在浏览器上的开发,不仅没有成为主流,而且基本已经被抛弃了,Applet本来是一种非常有前途,非常有潜力的技术,但在政治斗争中成为了牺牲品。现在知道的人已经不多了。
在一般的Java B/S架构开发中,可以用下面的图来演示。
上面这个图仅仅描述了在Java Web开发这个混乱的世界里面,开发一个Java系统所需要的一小部分技术的一小部分。
在浏览器上,开发需要用到的是HTML,JavaScript,Ajax,另外需要考虑:浏览器不同类型,不同版本的兼容性
在Web Server端,一般至少会用到Jsp,Servlet,再加上各种各样,千奇百怪的框架,如Structs,Webwork等等
在App Server端,则是各种技术的混合,EJB,Spring,Hibernate,Itabias,如果愿意写下去的话,恐怕这一张纸都列不完。另外还要考虑不同厂家产品的不同特性,不同版本的不同支持,在不同操作系统平台上的微妙差异等等。
数据库服务器相对要简单一些,但如果愿意的话,也可以搞得很复杂。这个就不再多说了。
Java 的Web开发,用到了太多的技术,太多的框架,太多的产品,也许从某个局部来观察,会认为这个不算太复杂,但从整体上宏观的来看,这个系统是在太复杂了。涉及到了多方面的技术,每一种技术都需要你花时间去了解,去学习,但与此同时它本身还在迅速演化,变异。
但是,这些技术,真的都是那么必要的吗?真的不可缺少吗?
如果答案是肯定的,那么我们就面对着在<<人月神话>>中同样的困境,无数的巨兽在泥沼中挣扎,但它们挣扎得越厉害,陷的就越深。软件行业就会变成一个不断制造复杂性,并且依赖这种复杂性进行生存的行业。在我看来,目前的情况似乎就是如此。大家都在拼命提出一个又一个的新概念,把整个系统搞得越来越复杂,很快系统的复杂性把它自己压垮了。怎么办,推倒重来,升级。买更快的机器,因为我们的程序越来越慢。
硬件行业有一个摩尔定律:
每过十八个月,芯片集成度提高一倍。
软件行业有一个逆摩尔定律:
每过十八个月,软件速度降低一半。(开发速度与运行速度)
两者相加的结果就是:如果你不升级硬件,软件就会越来越慢,最后无法使用。而且即使你升级了硬件,系统的速度还是提不上去。[/size]
详细内容见附件
前言
为什么Java Web开发如此复杂?
互联网出现以后,应用程序的架构迅速发生变化,曾经流行一时的C/S模式很快被B/S模式所取代。但B/S的应用架构相对于C/S的应用架构,要复杂很多。这就造成了应用程序开发的效率低下,界面低效,用户体验差,维护升级困难。按照我个人的经验,以PB和Java来同时开发一套系统,Java的开发效率最多是PB的1/5,而生成的代码总量至少是4倍以上,这一估计还不包括Java本身所需要的各种架构在内,仅就代码而言,包括Java代码和JSP代码。
为什么一个如此流行的开发模式,开发效率会如此之低呢?
这一问题我思考了很久,最后终于找到了答案。Java开发的效率之所以低,最核心的原因在于HTML语言本身。这个语言的设计初衷,仅仅是为了显示标准化的文本而设计的,后来才加上了图形,以及插件,后来为了增加交互性,才增加了JavaScript等脚本的支持。但JavaScript本身又是单独一个标准,不包含在HTML之内。
简单来说一句话,HTML语言在设计的时候,根本就没有考虑过未来应用如何用它来开发,它仅仅是一个显示文本的定义语言。后来为了迁就应用开发的需要,人们在试图在这个地基上面加上其他功能,但又要兼顾对现有标准的支持和兼容,又要兼顾到现有各方的利益诉求,于是HTML本身变得越来越复杂,越来越难以理解,学习它的成本也变得很高,而效果并不明显。
刚才说的是Java的开发效率,怎么又扯到HTML了呢?
这是因为,非常不幸,Java在浏览器上的开发,不仅没有成为主流,而且基本已经被抛弃了,Applet本来是一种非常有前途,非常有潜力的技术,但在政治斗争中成为了牺牲品。现在知道的人已经不多了。
在一般的Java B/S架构开发中,可以用下面的图来演示。
上面这个图仅仅描述了在Java Web开发这个混乱的世界里面,开发一个Java系统所需要的一小部分技术的一小部分。
在浏览器上,开发需要用到的是HTML,JavaScript,Ajax,另外需要考虑:浏览器不同类型,不同版本的兼容性
在Web Server端,一般至少会用到Jsp,Servlet,再加上各种各样,千奇百怪的框架,如Structs,Webwork等等
在App Server端,则是各种技术的混合,EJB,Spring,Hibernate,Itabias,如果愿意写下去的话,恐怕这一张纸都列不完。另外还要考虑不同厂家产品的不同特性,不同版本的不同支持,在不同操作系统平台上的微妙差异等等。
数据库服务器相对要简单一些,但如果愿意的话,也可以搞得很复杂。这个就不再多说了。
Java 的Web开发,用到了太多的技术,太多的框架,太多的产品,也许从某个局部来观察,会认为这个不算太复杂,但从整体上宏观的来看,这个系统是在太复杂了。涉及到了多方面的技术,每一种技术都需要你花时间去了解,去学习,但与此同时它本身还在迅速演化,变异。
但是,这些技术,真的都是那么必要的吗?真的不可缺少吗?
如果答案是肯定的,那么我们就面对着在<<人月神话>>中同样的困境,无数的巨兽在泥沼中挣扎,但它们挣扎得越厉害,陷的就越深。软件行业就会变成一个不断制造复杂性,并且依赖这种复杂性进行生存的行业。在我看来,目前的情况似乎就是如此。大家都在拼命提出一个又一个的新概念,把整个系统搞得越来越复杂,很快系统的复杂性把它自己压垮了。怎么办,推倒重来,升级。买更快的机器,因为我们的程序越来越慢。
硬件行业有一个摩尔定律:
每过十八个月,芯片集成度提高一倍。
软件行业有一个逆摩尔定律:
每过十八个月,软件速度降低一半。(开发速度与运行速度)
两者相加的结果就是:如果你不升级硬件,软件就会越来越慢,最后无法使用。而且即使你升级了硬件,系统的速度还是提不上去。[/size]
详细内容见附件