java、php、.net关于web开发的区别_张嘉楠2046的博客-程序员宅基地

技术标签: github  java  php  .net  web开发  

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sanjing_shou/article/details/63682768

智能推荐

C陷进与缺陷(一)_c陷进和缺陷_xingyuan1hao的博客-程序员宅基地

(1)、=不同于==因此编程规范建议将常量值放左边,变量值放右边,这样编译器能帮助检测出来。(2)、&和 | 不同于 && 和 ||位运算符: & 、 | 。 &:按位与运算符; | :按位或运算符;逻辑运算符:&& 、 || 。 &&:逻辑与运算符,条件判断,两边要同时成立; || : 逻辑或运算符,条件判断,其一成立即可;(3)、运算符编写一_c陷进和缺陷

Django项目使用七牛云存储图片_django使用models.imagefield把图片上传到七牛云_亲了你的小脸的博客-程序员宅基地

最近,写了一个django项目,需要上传图片,于是我用到了Fdfs在用这个Fdfs时,需要先进行一系列的配置,在进行这个配置的时候,本人自闭了一上午,主要原因是在拉取文件的时候总是卡住不动,最终通过同事传过来的压缩包,docker load -i一下就解决了,对于如何配置的,我这里就不说了,令人头疼,自己在网上查一下资料就OK。然后使用Fdfs,在后端进行如下操作:配置文件setting.p..._django使用models.imagefield把图片上传到七牛云

vue 中监听窗口发生变化,切换页面触发监听事件window.addEventListener(‘resize‘,fn)报错-程序员宅基地

在首页使用echart监听窗口变化window.addEventListener(‘resize’,fn)重画echart,切换页面的时候没有销毁全局监听,导致其他页面无法获取echart的属性而报错。报错信息:Uncaught TypeError: Cannot read property ‘getAttribute’ of null。在离开页面的时候销毁,不然会一直存在,容易造成内存泄漏。

python人脸识别毕业设计-毕业论文:基于树莓派的人脸识别门禁系统本科毕业设计文章...-程序员宅基地

玩转树莓派2017-07-17 18:59毕业论文基于微型计算机的人脸识别门禁系统设计1. 课题意义及目标随科技的不断发展,安全性的要求也不断提高,IC卡等传统身份识别工具已不能满足社会需求。所以从通用性、安全性、成熟性和造价性等多方面综合考虑,研究新的识别工具是一个必然的趋势。基于人脸识别的门禁系统的设计,能够提高传统安保行业的安全性、方便性、直观性等,最为有效的杜绝了门禁管理中的人为因素,充分..._用python实现人脸识别系统论文

还在为线上服务 Docker 容器权限问题所烦恼吗,或许这款神器能助你彻底解决它!..._运维之美的博客-程序员宅基地

GoTTY 是一个简单的基于 Go 语言的命令行工具,它可以将你的终端(TTY)作为 Web 程序共享。GoTTY 的架构是基于 Hterm + Web Socket 的..._gotty访问限制

SpringBoot中配置Swagger_Wanidde的博客-程序员宅基地

撒子是Swagger?使用swagger可以帮助我们更简单的API接口的开发 API文档与API定义同步更新,可以在线测试API接口(API接口就是controller的requestmapping)Swagger其实就是我们前后端分离时来实现前后端开发的信息及时更新Api的一个框架,是前后端的唯一联系。比如我们后端写了一些controller接口,前端就能通过访问swagger-u...

随便推点

Android布局之横竖屏切换_android 竖着的table切换页面_muyu114的博客-程序员宅基地

在默认情况下当屏幕从竖评变到横屏时会触发 onConfigurationChanged 事件 在默认情况下会重新加载画面并显示和横屏一样的画面,这样会有2个问题, * 布局问题,在竖屏 显示的布局 到横屏中由于宽和高发生了变化所有多少都会影响到布局(除非你定制2套画面在然后加个判断在横屏时怎么显示,在竖屏时怎么显示),当然最简单的办法就是在 项目的 AndroidManifest.xml中找到你所指定的activity 中加上 o 只竖屏显示的话(andr_android 竖着的table切换页面

pandas-sql不同时间段汇总小技巧_用python求每个员工在不同时段交易额的总和_振裕的博客-程序员宅基地

pandas-sql小技巧问题描述统计不同产品在不同时间段的销量,即,A产品统计1-5号,B产品统计3-7号的销量….分析对于这种简单问题,首先想到的是,用SQL去做,只要提取对应的时间区间就好了。 SQL语法如下:先取出指定日期区间的数据-- 先取出指定日期区间的数据select a.id as 产品ID, a.saledate as 销售日期, a.sa..._用python求每个员工在不同时段交易额的总和

win10安装LLVM_win10下下载llvm的release_GIS从业者的博客-程序员宅基地

win10下安装llvm和clang 前提条件:Windows 10环境下VS2015已安装,Windows SDK已安装,cmake已安装cmake下载地址:[https://cmake.org/download/](https://cmake.org/download/)我这直接下载安装版的,安装之后添加环境变量安装步骤:下载llvm和clang源码包:http://releases.llvm.o_win10下下载llvm的release

python链接mysql报错2003_连接到数据库时出现“接口错误:2003”_誓死追随苏子敬的博客-程序员宅基地

我正在尝试使用MySQL Connection/Python连接到我的数据库。这是我得到的结果:Traceback (most recent call last):File "bh2000.py", line 33, in cnx = mysql.connector.connect(**config)File "/Library/Python/2.7/site-packages/mysql/con...

关于使用num.divide()报java.lang.ArithmeticException: Non-terminating decimal expansion; no exact represen_千羽公子的博客-程序员宅基地

在项目中使用BigDecimal的属性divide()计算数据,报出了java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result异常,在网上搜索了一下,是因为小数点除不尽的原因,保留相应的位数就可以了。BigDecimal num = num1.d..._no exact repre