Web 应用(管理系统, 站,小程序等)
现在流行的说法叫前后端分离。也就是前端使用html、vue或react等框架调用后台服务。如 站、管理系统和小程序等,目前技术也比较成熟也是目前最流行的开发模式。编写Web服务,需要 HTTP 和 HTTPS 的服务体系,那么在这种情况下,使用 nginx、Apache 作为静态页面路由,Java、Tomcat、Python、Ruby 等脚本语言就有了用武之地。因为页面只需要使用 JSON 交互即可。
所以,编写 Web 服务,我们可以选择 Java、Python、Ruby。但是如果公司财力物力有限,再考虑到招人成本的问题,次选也可以是 Java 语言,第一是写 Java 的人够多,第二是 Java 成熟的类库够多,因此,一旦出问题,有解决经验的人也比较多。
Socket 服务
传统 TCP/IP 和 UDP 服务,或者最近的 WebSocket 等,都需要快速响应和并发操作,在这种情况下,系统级编程语言和 络编程语言就可以派上用场了。
如果公司的项目需要更快更高效,并且财力也允许,那么选择 C、C++、Go、Erlang 等编程语言未尝不是一种选择。当然 Java 也能很好地提供服务,但是从业务上来讲,既然选择了 Socket 服务模式,那么就必然是对并发量有一定的要求,所以选择上述这些语言更合适。
混合模式
这类业务,既有 HTTP/HTTPS 的服务,也有 Socket 服务,那么如何平衡两者之间的语言成本?如何平衡程序员之间技术栈的问题呢?
如果要做一款短期内必须上线的产品,我建议选择成熟的、有大量解决方案的,开发人员不短缺的语言,比如 Java;或者能快速做出原型的语言,比如服务器专有语言 Go。如果是长期发展的产品,并不那么着急成型,那么选择稳定成熟的,人员素质高的语言,比如 Python、Java 等。
至于平衡技术栈的问题,首先要选择 上有众多解决方案的语言,其次是找成熟的语言,比如 Python、Java、Ruby。如果针对某种特殊的产品,比如并发要求特别高的,那么只有选择系统语言或者专门的语言,比如 Go、C++ 等。
看到这里,你是不是觉得 Java 语言是一种万能药,或者是银弹?错了,这个世界上没有银弹。Java 虽然有其独特的优势,但是其被人诟病的地方,也是有不少的。
第一点莫过于速度。就算拥有 JIT 编译,总体速度仍然比不上 C/C++,但是事实上这些因素综合考虑并不算特别大的弊病,因为硬件资源提升后,速度这些问题已经可以“得过且过”了。
那么从语言本身来看,如果说 C/C++ 语言本身的弊病是因为系统平台导致的,那么 Java 语言的弊病就是因为继承自 C++,却没有做更彻底的改革而导致的。
我随便举一个例子,比如说 switch case 判断语句,硬生生地从 C/C++ 处直接继承了下来,因为 C/C++ 只允许使用 int、enum(其实是 int)、char(提升为 int)作为判断类型,而 Java 也是直接将这套规范继承了下来。
那如果选择了 Python 或者 Ruby 等脚本语言进行开发,却需要大量高并发的操作该怎么办呢?我们可以选择多进程(不是多线程)编程的方式进行开发,代码尽量简洁、高效,一个进程兼顾一个任务,进程之间的通信方式要尽量高效、简洁,比如可以使用自定义的队列等方式。
想快点研发完毕呢,建议大家就是Java+H5去研发,小程序开发、APP开发啊,这些封装都挺快的,价格相对是比较低的;想让软件稳定性高一点呢?建议大家就是JAVA+VUE/H5去研发,小程序开发、APP开发啊,这些封装都挺快的,而且JAVA的并发能力确实比PHP强,哪怕后期发展壮大,也一样可以维持住,价格适中;要是对流畅度啊、手机适配啊要求度比较高的话,这才会建议原生开发的,因为原生开发的价格基本可以说是混合开发的三倍!一般都会建议去做混合,因为大家都不容易,能省两个钱去做推广,万一就火了呢?还有平台选择我建议去键盘客(www.boxiaoyun.com)找研发团队,键盘客毕竟是第三方管理团队,相对管理也比较严格些,而且如果对研发人员不满意可以找键盘客进行更换设计和研发人员。当然也可以选择专业软件开发公司,相对费用也会更高一些。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!