做后台是选择Java 、Go ,还是 PHP?

技术小能手 2018-09-28

nginx python php java Golang 服务器 函数 性能 c++ 互联网 高并发

0f5af97849833e95964c36b793c4be127210d640

我们都知道,大部分有过4年以上的工作经验的前端最起码接触过后台的,不管是java,php,python或者说.net,很多人就会去扩展第二第三语言,你可以去问问他们,基本都有过了解,但这个了解不是完全会去写,而且了解一个过程。

但是对于所有学前端的小伙伴,我建议的是一定要学习和了解一门后台语言。

可以选择Go

对于一个研发团队来说,项目成败的关键因素是:成本、质量和时间!

1、人力资源的成本人力资源是研发团队最重要的资源,也是唯一的资源。其成本不仅仅是团队要支付的薪资代价。也包括获得资源的难易程度,例如招聘和培训的速度。以及维持资源,也就是保持员工满意度或者说士气的代价,也就是管理成本。(上述成本不仅指钱,时间也是非常昂贵的成本)

Golang有一系列特点,使它既容易上手,又易于维护。Golang可以让初阶和中阶工程师,经过少许培训,就写出相当不错的代码。直接点说,一票1-2年经验少许灵性的年轻工程师转Golang,只要少许指导,很快就可以写出高并发高负载能力生产级别的代码,而且质量相当有保证。而同样的工程,如果用C++或java等语言,则需要至少3-5年经验的工程师来完成,同时质量还是要让人担心。

8bcf5c8d8bd4dc13df40cf71c5e5d943ecb355f3

那么,对于团队特别是成长型的或创业团队来说,现在有Golang这样一种语言,可以让大量初阶和中级工程师承担主要开发工作,还能保证相当优秀的结果,从资金成本和时间成本控制的角度,简直就是美梦成真。

2、项目研发的效率说到高并发高负载,让我不能不想起nginx。nginx在2004年从web server领域横空出世,所向披靡。精巧严谨易于维护和扩展的代码结构,也是教科书级别的。

但是要知道,一个用C写出一个nginx,是需要世界上最优秀的工程师的。这样的工程师,不仅团队里面没有,连遇到一个都很难。可现在,我再告诉你,一个使用Golang的中级工程师,就已经可以写出性能与nginx相近的高并发高负载应用。而且不仅性能相近,而且需要的代码行数和开发时间也短很多。

可以选择Java

Java是元老级别的语言了,Java能做很多事情:写网站后台,写安卓程序,写嵌入式系统。至于做后台有以下优缺点:

优点:性能好,适合大中项目,跨平台,安全性高,稳定可靠,运行效率高(尤其是JIT的出现之后差距更大了),不容易犯错(强类型、预编译、必须拦截异常等等),能有效的提高复用度,提升性能和吞吐能力,能规避安全问题。

200bc14e4383cae8a51204d594612a451c7ec769

缺点:开发复杂,开发和发布的效率相对较低,维护成本高,开发人员费用高

选择Python

因为python很灵活,一定程度上函数也可以传参和注入,所以代码的灵活性要大的多,而Java在Java 8之前是无法做到函数传参的,所以这种情况下,Java开发者只能写大量的匿名类去注入代码块(这点相比,还是ruby块代码注入更牛逼,不是吗)。python自带了函数的curry化以及迟滞运算方式,以及闭包语法更容易实现,所以在一定层面上python还是比java难掌控的。当然python最好的还是duck typing属性,作为动态语言专有的特性,python可以让对象摆脱静态语言范式的约束,随意的给程序打补丁,所以程序扩展性更好。同时,作为解释型语言,服务器热部署这块,python肯定有优势,一旦程序出问题,直接覆盖原有的源文件就行,而Java 的服务器热部署基于classloader的切换,其中像tomcat这种服务器的热部署(也就是reload功能)其实很容易造成JVM heap爆掉,且完全依赖服务器后台线程对各代码文件的时间戳扫描,所以热部署这块python优于java。

1ebeee86632ac4f9071a9eb728ef38c2baf41518

优点:

  • 1、 Python作为动态语言更适合初学编程者。Python可以让初学者把精力集中在编程对象和思维方法上,而不用去担心语法、类型等等外在因素。而Python清晰简洁的语法也使得它调试起来比Java简单的多。至于哪个更“优雅”纯属个人喜好,但对于初学编程的人Python更直观应该没什么异议。

  • 2、Python有一些Java没有的强大的架构2.1. Advanced Python Constructs,可以表达非常复杂的Logic

  • 3、 Python有非常强大的支持异步的框架如Eventlet Networking Library,而据我所知Java要实现这些功能要麻烦的多。也因此Python适合一些可扩展的后台应用。(但除此以外Python可扩展性是不如Java的)

  • 4、Python作为脚本语言,更适合开发小的应用,而且极其适合在应用发展初期时用来做原型

缺点:

由于Python的优点也无可避免会有牺牲———由于是动态语言,比Java还慢。你可以想象一下编译器对于没有typing的变量,需要一个一个check具体type所耗得时间。而Java相比起C++等等本来就不快,可想而知更慢的效果… 但很多人觉得Python code更短小精悍,所以实际跑起来不见得比Java耗时。

可以选择php

1)、网站开拓是PHP说话最擅长的,没有任何说话可以与其对抗。

PHP的快速,开拓成本低,周期短,前期保护费用低,开源产物丰盛,PHP已经是国际大部门Web项手段首选,以至良多公司从其它说话(如ASP,JAVA)转到了PHP。不只国际的腾讯、百度、淘宝、京东、点评网、糯米网,以至国外的大型网站例如facebook、youtobe、google也需求用PHP来停止开拓。毫无疑问,PHP已成为各IT公司首选的互联网编程说话,被誉为WEB开拓首选手艺,所以此刻若是做网站,毫无疑问企业就用PHP。在“互联网+”的大期间中,企业几近都在用php说话停止WEB开拓!

5da54424798057dc3f5f9ba981f10381ec472923

2)、PHP可以对App停止数据传输,在移动互联网期间照旧有广发的用武之地。

今朝最经常使用的手机APP开拓,主如果用iOS和Andriod两大类。但手机App按照其适用性,需求快速开拓,复杂便利,这与PHP的开拓肉体不谋而合。同时PHP完善支撑RESTFULL法则,更适合手机App接口的挪用标准,故经常使用来作为手机App数据传输对象。这也意味着,PHP在手机互联网期间一样有着遍及用武之地!

3)、Hybrid App的出世,完成PHP法度圭表标准员也可以开拓手机App!

Hybrid App前台采取同化式开拓,其后端采取PHP开拓即可。这类开拓方式可以不用学Object-c,也不用学Android,也就意味着PHP法度圭表标准员只需把握前端常识(Html5、Css3、Javascript)也可以开拓手机APP。该种编制开拓出来的APP客户端,不只其后果与原生安卓和iOS一样,而且还可以兼容安卓手机和iOS手机,大大着落移动端开拓成本,深受企业接待。Hybrid App的出世,为PHP说话在“互联网+”期间注入了壮大性命力。

2357466e350e4a5b1e4172509c0d0c1325a0d533

总结

当然还有很多语言后台开发,如:C、rails、asp.net等。讨论哪个语言更好,就像在争论姚明和刘翔谁是更优秀的运动员。因为各自的坐标象限不同,常常会陷入一个难有结论怪圈。 如果你是前端程序员,想学习后台语言,建议结合自己的项目和公司多去思考一下,前提是学以致用,选择合适的才是重要的。


原文发布时间为:2018-09-28

本文作者:yuer

本文来自云栖社区合作伙伴“终端研发部”,了解相关信息可以关注“终端研发部

登录 后评论
下一篇
我是小助手
32732人浏览
2019-07-31
相关推荐
gRPC vs Thrift
2706人浏览
2017-09-20 11:26:00
GO语言、DOCKER 和新技术
942人浏览
2018-03-04 16:46:28
golang gc 问题(转的)
835人浏览
2016-05-06 09:41:00
0
0
1
5531