一提到web开发,目前在世界上流行性的三个帮派就是php,java和asp.net,这个世界上的百分之99的网站或者类似的应用都是由这三种语言的开发,这里请原谅我忽视某些小众语言如python之类。三种语言经过长达十几甚至二十多年的发展形成自己的生态圈,生态圈里面的世界千姿百态,生态圈外面的世界大漠黄沙、寒风凌厉。所以不管你是准备进入web开发的新人还是准备转型其它生态系统的老鸟,这篇文章都能给你很大的收获。

俗话说,技术是为生活服务的,这句话一点都不假。先人看到鸟就发明了飞机,在计算机领域几乎所有应用都能够在日常生活中得到启发。现在我们就用最通俗易懂的方式---超市来比较这三种语言的生态系统的差别。

如果把web开发比做开一家超市,网站的内容就是超市里面摆放的琳琅满目的商品,数据库就是这个超市的仓库,html5(抱歉,现在都是html5时代了,麻烦你就不要再用以前老掉牙的东西了)就是这个超市的货架,web服务器就是用来让你去选择购物的一条条道路,而和你互动的javascript就是那些穿着卡哇伊短裙的促销小姐或者你们老公吴亦凡。

那么先说php,为什么呢?因为php是最吼的语言。php在web中的优势是数都数不过来,所有web应用中百分之七十都是php做出来的没有理由让你不先说它。如果用php做超市开发,那么php在生活中就如同红旗连锁、舞东风(不好意思,成都就这两个多)或者你家楼下或者拐角任意的一家便利店。php开发有什么优点呢?快捷、高效,你不需要花很多的钱就可以开一家便利店了,仅仅在开始阶段使用LAMP(linux+apache+mysql+php)就可以做网站开店运营。学习成本是最为低廉的,如同只要你有点小钱就能在老家开个便利店一样,任何一个有点基础的程序员都能够在一段时间学习之后就能使用LAMP找个笔记本或者五六年前的台式机去搭建个网站,所以相对沃尔玛那种大型超市或者万达广场,你身边的便利店是最多的一样,php开发的web应用也是最多的。

优点分析:

1.php的生态环境标配就是LAMP(linux+apache+mysql+php)其实这句话是不完整的,完整说起来是html5+javascript+php7+linux(选择centos7或者ubuntu)+apache(或者nginx或者其它)+mysql,现在已经进入云计算时代了,懒得折腾配置的人直接去阿里云租一台最便宜68元包月的云服务器,足够支撑一两万人服务,类似学校、工厂、单位的使用了(如果我这篇文章火了,阿里云童鞋请赞助我广告费),一旦服务器出现问题,阿里巴巴有一群高薪苦逼的程序员随时帮你解决问题,这就直接把服务器维护者的工资省了。

2.这里特别推荐直接上手php7,因为php7比以前的版本性能上直接提高了100%还要多,实现模块化管理,后期便于进行业务拓展,业务拓展的意思就是你开的便利店想要扩大规模把先把隔壁的房子也租了直接打通,可以放更多的货物,模块化的管理让你进行升级时候更容易,比如多加一个服务器之类的。

3.这套方案的除了你需要买一台服务器或者租个阿里云之外,其它的一切都是免费的,如果你是学生党或者刚工作的,用自己笔记本或者台式机在最开始的日子凑合凑合也行,那就是零消费了。

4.nginx能够实现反向代理,这个功能老牛逼了,用apache还是nginx真是幸福的烦恼。

缺点分析:
后期延伸性相对差一点,随着人流量增多,你也有钱了,想要开连锁超市或者大卖场的时候,问题就出现了?因为web开发的后期问题都集中在流量和数据库上面,虽然现在php7已经在优越性提高了很多,但是你还是会发现不能满足你的需要,你的商店人满为患,大家结账需要排好久的队伍,当队伍后面等的人不耐烦就会开车去沃尔玛购物,体验性也会越来越差(很多大公司比如facebook都解决了这个问题,但是人家技术积累不是你开便利店挣得钱能够实现的,如果你真实现了请我吃饭),你不得不选择其它解决方案,比如java。

所有人都说java与生俱来的模块化编程就是为大型软件开发服务的,因此黑java的人说java最大的本事就是把一个小的项目开发成一个大型项目,这也从一个侧面体现出了java是团队开发的不二之选。那java是什么呢?java就是沃尔玛、家乐福、永辉那种大型卖场,java有足够多的框架和开源项目让你解决目前你能够解决的一切卖场问题,一个仓库的东西不够,没关系我们采用分布式数据库来解决,一个收银台不够,没问题我们先采用多个web服务器来增加收银台数量再采用负载均衡服务器把人流平均分到多个收银台中,这样人们就可以很快的付钱回家。如果采用刷支付宝或者微信支付,那服务器是不是要经常调用用户的信息?没问题,采用缓存服务器就行了,把用户的信息直接放到缓存的服务器中,这样每次就不用去数据库调用了,数据库的负担大大减少。如果你要问这些技术去哪里学,阿里巴巴已经把很多类似的技术开源了,去网上找呗。因此用java进行web开发是只有你想不到没有你做不到,想想天猫双十一那么大流量人家都搞定了,何况你现在遇到的这些毛毛雨。

优点分析:

1.javaweb开发的标配是html5+javascript+java+apache(或者nginx或者其它)+mysql(或者oracle或者nosql)+linux(rehat或者centos或者ubuntu或者其它)+......(无穷无尽的拓展)

2.技术上没有上限和瓶颈,越往后积累越多,水平也越高,未来二十年都不用担心饭碗问题

3.模块化的开发,不用担心以后的扩展问题,生意好的时候想开几家店开几家店,遇到金融危机时候想关几家关几家,同时用户体验不会下降
4.最主要的核心技术掌握在自己手里面,哪怕万一其中一门语言不行了,迁移其它语言也是很容易的
缺点分析:

1.亲爹是oracle,导致java不是php那种纯粹的开源技术,只是部分开源,万一哪天你赚钱了,要当心oracle要来收保护费(参考android案件oralce和google之间的撕逼)
2.oralce是一个比微软更没有下限的公司,一切所作所为都让人担心java的未来

3.需要团队开发,因此你需要招人,当然这也增加了很多就业岗位,也算是一个优点了

4.到了一定规模资金上花销比php大,但是比.net小

最后到了我们.net的web开发,也就是asp.net,首先请各位同学记住asp.net和asp是完全不同的东西。这里所说的都是asp.net,asp.net就是最上面所说的万达广场,只不过这个万达广场的老板不是王健林而是微软,微软已经把大厦建好(框架、技术搭建好),这时候你仅仅需要对你租的那个门店稍微装修一下,然后拎包入住就行了。只要你按时付房租,微软就会把你这个大爷伺候好,会给你提供各种羞羞服务(捂脸)。比如你彻底告别了命令行,包括数据库的等等操作都会有图形界面的软件来让你轻松操作,如果你技术够厉害,一个人就可以解决所以余下的问题,因此.net技术大受各种外包公司或者技术相对较差的企业以及个人开发者欢迎。现在微软的云服务更是为你想的周到,让你从开一家便利店到开沃尔玛那种大卖场所需要的一切问题都给你解决,当然你只需要付钱。当然你也可以趁万达广场人流量多自己推个小车卖烤肠(使用盗版的服务器或者软件),但是微软会派会派保安在你把生意做大后来强行收费的,专门养大了宰是微软最擅长的。

优点分析:

1.只要给钱,从便利店到大卖场微软会给你提供一站式服务,你仅仅做一些边边角角的工作就行。

2.由于需要工作少,团队人员少,节省请人的工资钱,更适合单干。
3.比oracle靠谱点

缺点分析:

1.所有技术都是微软提供的,缺少核心技术积累,到后期如果你有幸成为淘宝那种大型企业的话,你会发现现在市场上所有的技术都不能来解决你的问题,痛苦万分。

2.找不到靠谱的.net大牛,除了北京的微软亚洲研究院,你想找个牛逼的程序员团队比让柳岩做你女友都难。

3.微软的所有服务都要钱,这对于创业团队来说是最难的,你接的头几笔项目资金很可能连微软的服务器都买不起,现在前期可以使用云服务来节省开支,好了很多。

4.生态系统封闭,.net技术开源很晚,所以用的人比其它两个来说很少,技术成长先易后难,前期拖拉控件很爽,一段时间后很容易遇到市场现有方案解决不了的瓶颈问题,那才是试炼的开始。

5.时代的变迁,现在是移动互联网时代,而微软在移动互联网的作为让大家比较失望,大家普遍担心微软很可能成为向柯达、诺基亚那样曾经伟大的公司,让很多人对它热情减少。

6.亘古不变的IIS+C#+sqlserver套餐,当然你也偶尔尝试下mysql或者oralce甜点

7.也是最重要的,微软的技术经常是在一定阶段采用自杀的更新,从vb,com,vfp,j++到现在半死不活的vc,不好就扔了,失业一大批靠这种吃饭的程序员,微软总是打脸般的进行技术换代,让它生态系统下的程序员过几年就要推倒重来学习不比学习一门新的语言简单多少的新框架新内容,拜托人家三四十岁了难道还要和二十多岁的小伙一样去熬夜学你的新技术吗?

好了,这次把世界上最流行的web开发语言及其生态系统讲的比较清楚了,该如何选择取决于你。再次强调您要选择任何的语言最好深入进去去了解其中的框架,不断进行高质量的代码优化才是最重要的。请记住代码的质量比其它一切一切都重要。你要是说.net不好,世界上最大的程序员技术问答网站stackoverflow就是.net开发架构,人家仅仅用了24台服务器就搞定了几千万人的访问,你说.net比你java开发的学校选课网站遇到哪怕一千来号人就卡成狗的差?你说.net技术好,那京东那个翔一般购物体验能够和java的天猫比?你说php只能做小型网站,马克同学的facebook可是除个别国家外几乎垄断世界的虚拟网站,流畅性以及优越性可甩某鹅场几条街。

您说哪个才是最好的web开发语言?

java、php、.net关于web开发的区别的更多相关文章

  1. .NET、JAVA和PHP在Web开发的优缺点

    现在做Web开发,用哪个平台哪种语言其实本质上没有太大的区别,因为Web开发框架已经非常成熟,只要符合需求,能按时交付产品就ok了. 要选择哪个平台,是个商业问题,不是技术问题. 选择任何的语言最好深 ...

  2. J1001.Java原生桌面及Web开发浅谈

    自从Java问世以来,在服务端开发方面取得了巨大的发展.但是在桌面/Web开发方面,一直没有得到大的发展.从最初的AWT,到Swing,再到JavaFX,Java从来没有在桌面/Web解决方案中取得重 ...

  3. Ajax与传统Web开发的区别

    基本概念 1.1,Ajax AJAX:即“Asynchronous Javascript And XML”(异步的JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,尤其是在一种 ...

  4. 【Ajax 1】Ajax与传统Web开发的区别

    导读:从用户体验度的角度来说,利用Ajax进行开发的网站,其体验度高于利用传统Web开发技术,那么,是什么因素导致了这一现象呢?难道说Ajax开发,就一定优于传统Web技术吗?本篇文章,将主要介绍Aj ...

  5. APP开发和web开发的区别

    1.web开发: 1.浏览器直接访问,协议是http,基本都是PC访问,也就是在家和办公场合,网络比较好. 2.web如果多个服务集成的话使用的是ESB来统一集成 2.APP开发 1.手机app客户端 ...

  6. java web 开发入门

    Java web,是java技术用来解决web互联网领域的技术总和.Java web技术主要包括客户端和服务端,java在客户端的服务有java applet,不过用的非常少,大部分应用在服务端,比如 ...

  7. Java Web开发和Python Web开发之间的区别

    今天的文章讨论了Java Web开发和Python Web开发之间的区别.我不鼓励我们在这里从Java Web迁移到Python Web开发.我只是想谈谈我的感受.它不一定适合所有情况,仅供我们参考. ...

  8. Java Web开发之详解JSP

    JSP作为Java Web开发中比较重要的技术,一般当作视图(View)的技术所使用,即用来展现页面.Servlet由于其本身不适合作为表现层技术,所以一般被当作控制器(Controller)所使用, ...

  9. java中dynamic web project与web project 的区别 [转]

    原帖地址:http://blog.sina.com.cn/s/blog_46726d2401013jlk.html 文章框架: 1.Dynamic  Web Project 概念 2.eclipse ...

随机推荐

  1. Spark启动报错|java.io.FileNotFoundException: File does not exist: hdfs://hadoop101:9000/directory

    at org.apache.spark.deploy.history.FsHistoryProvider.<init>(FsHistoryProvider.scala:) at org.a ...

  2. Linux查看密码

    Linux的账号是记录在/etc/passwd文件里面,密码则是保存在/etc/shadow 1.在如下图输入head -3 /etc/passwd可以看查前三密码,回车这后就可以看到前三行的密码保存 ...

  3. (7/24) 插件配置之html文件的打包发布

    从前面几节到现在,其实我们的项目结构是有问题的,因为我们直接把index.html文件放到了dist文件夹目录下.这肯定是不正确的,应该放到我们src目录下,然后打包到dist目录下,前面为了学习,才 ...

  4. SQLALchemy中关于复杂关系表模型的映射处理

    映射在第五步,我们还是一步一步来哈 一. 关系介绍 举一个比较经典的关系,部门与员工(以下是我的需求情况,算是把该有的关系都涉及到了) 1.每个部门会有很多成员(这里排除一个成员属于多个部门的情况) ...

  5. java面试题复习(二)

    //我又回来了 11.数组有没有length()方法?String有没有length()方法? 数组只有length属性,String有length()方法.注意:JavaScript获取字符串长度使 ...

  6. Shell 批量修改主机 用户密码

    问题:132.121.114 和 132.121.118 网段共 48 台主机未添加基础监控,但是 wh 账户不能登录 需进行批量修改密码操作. 目前情况:op1对上述48台机器设备均能免密登录. 操 ...

  7. jsfl 删除库指定内容

    var bitMap=fl.getDocumentDOM().getTimeline().layers [layLen_num-1].frames[0].elements[0]; fl.trace(b ...

  8. UI设计篇·入门篇·简单动画的实现,透明动画/旋转动画/移动动画/缩放动画,混合动画效果的实现,为动画设置监听事件,自定义动画的方法

    基本的动画构成共有四种:透明动画/旋转动画/移动动画/缩放动画. 配置动画的方式有两种,一种是直接使用代码来配置动画效果,另一种是使用xml文档配置动画效果 相比而言,用xml文档写出来的动画效果,写 ...

  9. 【STM32】临界区进入退出宏 OS_ENTER_CRITICAL() 和 OS_EXIT_CRITICAL()

    宏函数展开为: #define OS_CRITICAL_METHOD 3 #if OS_CRITICAL_METHOD == 3 #define OS_ENTER_CRITICAL() {cpu_sr ...

  10. 【399】jupyter 修改主题

    参考:Jupyter 主题更换 参考:Restoring default theme #86 修改主题的方法: 首先在 cmd 上输入 jt -l 选择自己需要的主题,如 jt -t monokai ...