你好,我来这个问题,我有9年多的IT从业经验,负责过一个大型App的前后端架构设计,以及多个小型App的架构编码工作。
大型App的开发,具体用什么编程语言,这个要分场景来说:
①追求用户体验的C端App:
这类面向普通大众、追求良好体验的App,例如微信、支付宝、今日头条等,则建议使用原生代码来开发。即Android使用Java或Kotlin,iOS使用swift语言。
使用原生语言开发,可以充分发挥出App的所有优势,你可以使用任何API提供的功能,而不像混合开发那样有着种种限制。此外,原生代码开发的App的运行速度也是非常流畅的。对于考虑兼容性广、适配所有机型的App来说,原生开发几乎是唯一的选择。
这类开发的弊端是研发成本较高,因为同样的业务逻辑需要在Android和iOS上分别来实现。
②追求迭代效率的B端App:
一些公司内部使用的大型App,由于使用范围仅限于某一个组织内部,不需要追求极致的用户体验以及广泛的机型适配,而追求的是系统版本的功能开发,问题处理的便捷性,更重要是降低App的研发成本。
对于这类App,适合采用混合开发的模式来做,例如Flutter、Ionic、Cordova等,这类开发的优势是一次开发,处处运行。无需再单独为Android和iOS分别开发代码,可有效降低企业的研发成本,也提高了App的版本迭代速度。此外,之前需要高薪聘请Android和iOS工程师,现在只需要会Web开发的人员即可。
这类App的弊端是流畅性较低,兼容性弱,无法开发大型游戏等对性能要求较高的场景。
以上就是目前App开发的两大分类,均占有一定的市场。所以你这个问题不能一概而论,需要分上述两个情况来决策,希望可以帮助到你!
哈喽,我是七步的天,有着五年多的编程经验,很高兴为你解答。
现在主流的开发app的编程语言可以分为两类。下面分别对这两类分别介绍。
(一)第一类:针对单一app开发的语言,即开发一套代码只能运行在一个平台上。(1) 开发Android的:Java和Kotlin
Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift。Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。运行效率提高很多,并且语法更加简洁好用。
如果是与系统底层进行交互则需要使用JNI技术,通过和C或者C++结合实现相应的业务逻辑,比如美颜或者直播类型的app。直播类型的app采用的ffmpeg技术,其中ffmpeg就是用C语言实现的。
(2)开发IOS的:Swift和Object-C
Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制。
(二)第二类:可以针对多个app端的编程语言,即只需开发出一套代码,就可以在多少平台上运行(1)第一种是Flutter技术,基于Dart语言,比如现在闲鱼app就是基于flutter开发的。并且有着多年经验,而且闲鱼免费开源了框架。
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。
Flutter的热重载可帮助您快速地进行测试、构建UI、添加功能并更快地修复错误。在iOS和Android模拟器或真机上可以在亚秒内重载,并且不会丢失状态。
尤其是在UI上使用Flutter的现代、响应式框架,和一系列基础widget,轻松构建您的用户界面。使用功能强大且灵活的API(针对2D、动画、手势、效果等)解决艰难的UI挑战。
(2)第二种是Uni-app框架,基于Vue.js。俗称一套代码编到8个平台上。
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序:微信/支付宝/百度/头条/QQ/钉钉等多个平台。
小结第二类开发起来更显效率,节约很多时间成本。
我是七步的天,如果觉得对你有帮助,喜欢就关注我吧。
有其他问题和见解的小伙伴,欢迎在评论区留言。辛苦留下你的宝贵意见。
欢迎点赞、关注、收藏。
Hi,我是科技互联网大叔,有多年的开发经验和架构经验,对题主你的问题还是比较了解的,今天我来下这个问题。
一个大型的App包含的内容会很多,比如客户端开发、服务端开发、前端页面开发等等,我会一一道来。
第一、客户端开发
客户端开发,大家应该是感知最明显的,就是你手机里下载的各种App,都是属于客户端开发。那么客户端开发主要用什么编程语言呢,这里又要区分Android和IOS。
Android的常见编程语言是Java,Java语言是一种使用特别广泛的语言,可以用来做很多层面的开发,最早的Android体系大家直接用Java来去开发,Android系统的编译器是可以编译运行的。当然现在越来越流行Kotlin,其实Kotlin是Java语言的一个变种,比Java语法更简练,最终也是运行在JVM上。
IOS常见编程语言是Objective-C,这是早期的编程语言,是基于C语言的一个变种,有很丰富的图形界面开发功能。不过后来苹果公司2014年自己推出了Swift语言,渐渐成为主流。毕竟Swift语言是苹果公司推出的,他们肯定更了解自己的IOS系统内核,所推出的Swift语言对于基于IOS的开发者来说简单易用。
第二、服务端开发
客户端开发主要是做展示,但其实App上有各种各样的数据是从哪里来的呢?比如电商网站的商品介绍,头条App的文章内容等等,这些都是需要服务端提供各种接口,客户端的程序去调用服务端接口,拿到数据后再给用户展示出来,这个做服务接口的就是服务端开发。
服务端开发常见的编程语言也是Java,哈哈,Java确实使用面很广,当然,能用Java的地方就可以用Kotlin。现在服务端开发流行微服务架构,各种各样的支持微服务的Java框架,比如Springboot,Dubbo等等,可以很方便的搭建高并发的服务体系。这些成熟的框架也使得Java进一步的流行起来。
当然现在有一个后起之秀,Go语言。Go语言是Google推出的一个新语言,可以很轻松的兼顾运行性能、开发效率及维护难度,以其独特的设计风格和优势在整个行业有了一席之地。
第三、前端开发
App里面的很多频繁变化的页面不会做成原生页面,而是做成Html5的页面。这种页面方便上下线和做一些修改,特别适合做各种活动的场景。
做前端页面的主要编程语言就是JS了,全称为JavaScript。这种语言是一种脚本语言,具有丰富的控制功能和组件交互功能,不过目前来说用原生JS语言做开发的很少,大部分还是会用比较主流的三大JS框架:VUE,React,Angular。
我是做安卓开发的,就拿安卓来举例吧。现在的大型安卓app主要是已原生语言为主,以其他语言为辅,属于混合开发模式。
安卓原生开发以java/kotlin语言为主,下面拿微信举例说明吧通常大型的APP都会先搭建框架,当然框架并不是搭建好就不用动了,它会随着业务发展不断重构演进。
我们看看微信APP架构,分别使用了组件化和模块化技术,懂APP开发的应该一看就知道。
组件化有什么好处?
组件主要分三层,业务组件,基础业务组件以及基础组件,组件之间只能通过接口耦合,也就是依赖倒置原则,每个组件都提供对外的接口文档以描述该组件提供的功能。
其次,组件化有很多好处:解耦,平台化,职责单一,复用性,编译集成等。
由于技术性较强,就不展开说明了,总之组件化会让APP开发非常灵活,比如将推送服务组件化,现在使用的小米推送,如果需要换成华为推送呢,很简单,写个华为推送组件,替换原来的就可以了,接口定义一致的话,调用方是不用改写任何代码的。
模块化有什么好处?
模块化最大的好处就是多人协同开发,互不影响。
模块化更多的是用在业务层面,分为基础业务模块和业务模块。
基础业务模块就是指一些服务于业务代码开发的功能,抽成一个模块,便于统一开发。比如打log日志,相信很多开发者的方式都不太一样,那么可以将日志功能封装成模块,形成规范便于管理。
业务模块就是每个人开发的具体功能了,比如朋友圈功能开发迭代,直接新建一个模块,独立开发调试,不会与其他人员产生冲突,测试通过后引入到主工程即可。
搭建框架就得用原生语言了,目前安卓第一开发语言是kotlin,而不是java,因为java是甲骨文的,而甲骨文要向谷歌收取java使用费,kotlin的语法糖真的很甜,如果你上手kotlin了,相信你不太想再写java了。
辅助语言也分为两种,C++和JavaScript安卓也支持C或C++语言,已SO库的形式引入项目。
那C++到底能编写什么样的功能呢?
比如音视频编码/解码功能,C语言是可以直接操作硬件的,如果你用java层面封装的功能,效率必然比不上C语言。
其实还要很多功能,比如图片背景高斯模糊,扫码解析等等,像这种大型的APP将使用体验优化提升哪怕只是1秒,也是非常不容易的。
其次是JavaScript或者说是类似JavaScript的解析引擎,比如小程序,H5页面,都是使用JavaScript引擎解析的,随着技术和网络的发展,现在小程序和H5页面的体验快追上原生了。
总结现在业务发展飞快,作为大型APP,必然是需要兼容一些其他有利于业务发展的语言,所以不会只使用原生语言。以上我们拿安卓系统微信APP举例,兼容了C/C++,JavaScript。现在谷歌另一个UI框架flutter也很火,可以跨平台,目前咸鱼团队是用的flutter,感兴趣的可以去体验下咸鱼APP(这里绝不是打广告哈)。
我是非著名攻城狮,希望我的对您有用,感谢您的关注与支持!