关于云端应用开发语言选择
在云端应用场景下,80%的企业(默认情况)会选择云产品,只有 20%的企业会考虑自行搭建对应服务。云产品相比较自建服务有如下优势:
无须自己动手安装配置,不用关心环境;
无须对性能参数进行优化;
无须考虑冷备、热备问题;
无须担心高可用方面问题;
无须关心软件安全性、软件补丁、漏洞等问题;
云产品出现问题时,对应损失由云厂商负责;
综合费用相比较会降低。
在云端实践中,几乎 80%的 Java 应用都跑在 Tomcat 中。我们在云端很少看见 Jboss、Weblogic 等重量级中间件(相比于 Weblogic,在云端还能偶尔看到有用户用 Jboss 部署相关业务),因为这些重量级中间件对服务器的性能要求较高,所以一般适用于传统 IOE 那套老架构。
而云的优势在于分布式,所以在一台 4 核 8GB 的 ECS 上面跑一台轻量级的 Tomcat,效果十分完美。另外,结合当前最热门的微服务架构,Spring Cloud 是一套完整的微服务解决方案。在云端结合 Docker 的实践,也是当前在云时代最流行、最火热的做法。
C 语言最主要的使用领域应该是 Unix 系统开发以及某些 Unix 系统软件的相关开发,所以常见的开源技术的源码,如 Nginx,大多数都是用 C 语言编写的。因此在云端实践中,更多的是下载常见开源的源码包,使用 Make 编译及“Make Install”进行安装,这也是云端实践中做得最多的事情。
C++跟 Windows 系统底层结合得特别紧密,C++在游戏领域特别火。我们看到热门游戏的客户端,十之八九是用 C++编写的。或者 Windows 下的一些软件/工具,十之八九也是用 C++编写的。
C#与 C/C++不是同一层次的编程语言,C/C++更多偏向底层。C#与 Java 是同一层次的编程语言,都是基于运行库支持的,分别是.NET 与 Java 虚拟机两大平台的代表性开发语言。C#在一些 Windows 工具中应用很广,比如黑客的 SQL 注入、DDoS 攻击类软件方面的广泛应用。
Python 开发的程序工具可以很方便地嵌套到 Java、C、PHP、C#等开发语言中进行使用。Python 是完全面向对象的,函数、模块、数字、字符串都是对象,不像 Java 中还有基本类型。Python 的主要优势还是在于代码量小、维护成本低、编程效率高。语言的特性决定了语言的应用场景,即同样一个需求,用不同语言来实现,代码量相差很大。一般情况下,Python 代码量是 Java 的 1/5。在云端,主要的使用场景有 DevOps、网络爬虫、人工智能。
在云端实践中,LAMP(Linux+Apache+MySQL+PHP)、LNMP(Linux+Nginx+MySQL+PHP)依然是成熟的热门架构。我们可以看到,PHP 和 Java 在云端仍是出场频率最高的两种语言。在云端实践中,PHP 相比于 Java,在 Web 应用方面有以下 3 个优点:性能好、无须相关的编译操作、集成简单。
Go 语言特别适合编写一些有性能瓶颈的业务,内存占用也非常少。其近 C 语言的执行性能、近解析型语言的开发效率以及近乎完美的编译速度,使其风靡全球。特别是在云项目中,大部分都使用了 Golang 进行开发。
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。简单地说,Node.js 就是运行在服务端的 JavaScript,它让 JavaScript 既是前端语言又是后端语言。
汇编语言的传统应用场景主要有两个:
在单片机编程里面,使用汇编语言,直接操作硬件。
在高级语言编程中,专门针对某些额外影响性能的关键函数使用汇编语言改写,进行代码优化。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/d1b3f9cbfc5398ccc0a115450】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论