这几年,B/S结构被炒的很火热,所以随之而出的问题就来了,既然B/S这么火,那么我们应该选择什么语言来从事B/S结构系统的开发呢?
由于这个问题的存在,并且在当前状况下会一直存在,这就导致了N的口水战。对于这些,我想大家都早已看腻了,在我看来,真正的牛人不会去花时间去讨论这个。
前几天看了七月十五在javaeye上发表了一篇 《论PHP的倒掉》的文章,由于我是一名PHPer,看到之后我跟朋友戏说,回头我起草一篇《论PHP的崛起》。
当然,这只是我的一个玩笑。但是我犹豫之后,还是决定写下自己的一点拙见。
我要表明的观点很简单,任何一种语言不应该和另外一种语言相比,如果非要拿PHP和Java相比,那么结论非常简单,PHP是用来做网站的,而Java不是。
我们需要引入一个观点,B/S != 网站。
B/S结构是一种架构。由于C/S这种结构对系统依赖非常大,并且有个非常严重缺陷就是如果我要在Server端修改了代码,那么对应的Client的也必须做相应的改变。一个典型的例子就是网络游戏。这样的代价是惨重的,因为对于我们一般的系统来说,每次更新都要为客户去部署或者调试,是非常麻烦的事情。
后来,浏览器功能越来越强悍,以至于发展到现在,足可以满足一般系统的要求。人都不是傻子,有更好的东西为什么不用呢?所以发展成为B/S繁荣的今天。
那么好,我问大家一个问题,浏览器是用来干什么的?你肯定不假思索的会回答:浏览网站啊。对!没错。那么我们推理一下,B/S结构的程序是浏览器触发执行的,那么B/S结构的系统也理所当然称之为“网站”了,不是嘛?
我们较真一下,暂且不去管“网站”在wiki的定义,我们从用户的角度去切入分析一下。
我们可以说sina是一个网站,Google是一个网站。对,在sina上获取我需要的新闻资讯,在Google上搜索我需要的内容。这些都属于网站。请大家注意:这些网站有个共同特点就是受众可以是这个地球上任何一个人,其实外星人也可以,只要他们可以上Internet!
我们现在再来看一下XXXXX系统。举个例子,某个公司用Java给某个电力部门做了一套电力统计的系统。我们现在可以区别一下:首先,这套系统不是说谁想用就可以用的,得有一定的身份或者权限才可以;另外,这套系统一般来说是内网运行的,不提供外网接口。
那有的人问,那我就非要看电力的统计信息呢?为了弥补这个缺陷,这个公司又用PHP给这个电力部门开发了一套网站,用于用户登录并查看他们想要的资讯。
现在来说,一般的网站结构都比较简单,由于是面向所有人的,所以PHP的一些特性就非常容易被操作了。我可以非常自由方便的POST一个数组,用一个htmlspecialchars函数来防止XSS攻击,我只需要简单调用一下md5函数就可以获取这个字符串的MD5值等等。这样说,PHP对于网站操作非常自由,方便。最重要的是快捷。一个Java新手搭建一个SSH的平台就需要折腾好长时间!PHP可以非常方便的把动态的数据库信息放到页面上,而如果Struts2的标签,我不得不把数据库读出来的信息放到一个POJO中。而且网站的访问量大也不必担心,PHP有足够快的速度去执行脚本,Facebook就是一个很好的例子。
但是对于系统,一般都比较复杂,都比较庞大。从设计上来说,系统的设计显得非常重要。各种UML甚至可以生成Java代码。各种强大的报表组件,也使得Java在做系统报表的时候得心应手。(我最近就在做报表,可视化处理,Java直接一调用即可,可以生成XLS,PDF等各种格式的报表)
但是有的人问,为什么有那么多网站是用JSP做的呢?
我来打个比方。
我有一辆B级车,你有一辆D级豪华车。我们同在中国的高速公路上行驶,那么我们的速度都不能超过120。如果从A地到B地,我们所用的时间应该相差不多,但是由于我的排量小,所以我耗油比你少,也比你省钱。但是如果在美国的高速公路上,我的车就要比你慢一大截,并且有些力不从心了。
上个例子中,PHP就像是B级车,Java也就像D级车。一个健全完整的市场,肯定有B级车,也会有满足富人的D级车。我想,B级车在很长的一个时间内都不会倒掉。你们说呢?