一提到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开发语言?

转载于:https://www.cnblogs.com/SofuBlue/p/10654664.html

java、php、.net关于web开发的区别相关推荐

  1. 微信小程序开发和网页Web开发的区别

    小程序和web开发的区别主要在前端.小程序的主要操作平台在微信上.微信服务器的前端代码和从用户数据库后台传过来的数据,通过微信内置的解释器进行拼接,解释为我们平时看到的页面.Web 开发仍然具有相同的 ...

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

    .NET.JAVA和PHP在Web开发的优缺点 现在做Web开发,用哪个平台哪种语言其实本质上没有太大的区别,因为Web开发框架已经非常成熟,只要符合需求,能按时交付产品就ok了. 要选择哪个平台,是 ...

  3. WebGIS开发和Web开发的区别

    很多对GIS开发有一定了解的朋友应该知道,WebGIS开发是GIS开发岗位招聘中需求最高的. 学习GIS开发,第一步都是先学习Web开发基础(HTML5/CSS/JS),那WebGIS开发和Web开发 ...

  4. java session原理_java web开发—session的工作原理总结

    session的工作原理总结 一.什么是session session是一次浏览器和服务器交互的会话,在jsp中,作为一个内置对象存在.我的理解,就是当用户打开网页时,程序会在浏览器中开辟一段空间来存 ...

  5. java css路径_java web开发中CSS路径有问题吗,运行jsp文件为什么找不到css文件?...

    ---------------------------------------------------------------------------------------------------- ...

  6. java 高性能web_高性能WEB开发 - BearRui(AK-47) 的Blog - BlogJava

    高性能WEB开发 摘要: 用了这么多年的CSS,现在才明白CSS的真正匹配原理,不知道你是否也跟我一样?看1个简单的CSS:DIV#divBox p span.red{color:red;},按习惯我 ...

  7. clojure java.jdbc_Clojure驱动的Web开发

    Clojure是运行在JVM之上的Lisp方言,提供了强大的函数式编程的支持.由于Java语言进化的缓慢,用Java编写大型应用程序时,代码往往十分臃肿,许多语言如Groovy.Scala等都把自身设 ...

  8. web开发的java语言步骤_java web开发入门一(servlet和jsp)基于eclispe

    servlet 用java语言开发动态资源网站的技术,在doGet方法中拼接显示html,在doPost方法中提交数据.类似于.net的ashx技术. servlet生成的class文件存放在tomc ...

  9. java中文乱码decode_Java WEB开发中的中文乱码问题解决

    在项目中总是遇到乱码问题,有时候在网上查找到了解决方案,但是没有记录下来为什么出现的乱码.因为出现乱码的方式有好几种,我简单总结一下吧,为以后留着用,也算总结学习一下. 一般来讲,为了处理乱码问题,在 ...

最新文章

  1. 自然语言推理:使用注意力机制
  2. linux c 获取网络接口信息 ioct l函数 ifreq ifconf 结构体 简介
  3. C++操作Redis的简单例子
  4. 数据中台建设常见的几大误区,如何规避,你需要知道这几点
  5. sql报表按月统计_如何通过INTOUCH组态软件做EXCEL报表(含代码)
  6. UVA10838 The Pawn Chess
  7. Android SDK环境变量配置-Windows10
  8. 谷歌地图网页版_安卓版谷歌地图新增专用的街景图层
  9. gis 数据框裁剪_【更新89篇】地理数据科学技术文章合集,欢迎大家点赞、在看、转发三连!...
  10. 完整的连接器设计手册_特斯拉的高压连接器
  11. 10分钟搞定图形图像识别
  12. matlab 画温度分布,matlab画温度分布图
  13. python读取海康视频流(rtsp格式)
  14. 《老路用得上的商学课21—25》消费心理学(二)
  15. 全国职业院校技能大赛——物联网赛项比赛感想
  16. python实现kindle每天推送博客2----python实现爬取博客内容
  17. 大唐之路(4)一号店入驻要求
  18. [Swift]LeetCode334. 递增的三元子序列 | Increasing Triplet Subsequence
  19. python Matplotlib 可视化总结归纳(二) 绘制多个图像单独显示多个函数绘制于一张图
  20. 支付宝对账查询+文件下载+解压+遍历文件+读文件

热门文章

  1. 【戴嘉乐】(进阶)基于IPFS和Ngrok构建自维护资源网关
  2. web测试常用的用例及知识
  3. HTTP请求过滤器FreeBSD accf_http)
  4. 一直误解的memset函数
  5. 64位linux系统安装32位应用程序
  6. 进程在linux系统中原理,Linux系统原理知识 进程切换的概念介绍
  7. c语言中汉字属于什么类型_练字应该练什么之:汉字基本结构的类型
  8. python复制文件的代码_python调用cmd复制文件代码分享
  9. matlab 过度曝光,MATLAB:补偿图像处理中的过度曝光/过饱和度
  10. java set中取数据_Java中取数据库用的ResultSet问题