大型的app都是用什么编程语言编写的
app分为hybrid和native两种,即混合式和原生app。Android原生app用Java开发,苹果用Swift或者Objective C开发。目前苹果推出了更加强大的Swift UI,在view方面可以说是极大提升了效率。混合式app在原生框架之下大量嵌入了HTML,前后端分离是最基本的标准。至于App的后台,完全取决于APP的用户体量和定位。架构上可以引入消息队列来解耦,削峰,异构,基于业务需求选取数据库如mysql,mongoDB,应用服务器大到tomcat,小到node.js。反向代理服务器Nginx,第三方消息推送服务等
我是做安卓开发的,就拿安卓来举例吧。现在的大型安卓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(这里绝不是打广告哈)。
我是非著名攻城狮,希望我的回答对您有用,感谢您的关注与支持!
APP是Application software的缩写,可以翻译为应用软件,主要是给最终用户使用的。例如,Office全家桶,PS,浏览器,播放器这些都是APP,甚至Linux下的一些没有图形界面的APP。
WEB APP
这些软APP通常使用C#,C++,Java,Python,shell,Perl这些语言编写。当然,最近也有使用Electron这样的平台开发的软件,如著名的VSCode,它使用的是Web语言,也就是HTML,CSS,JavaScript。
移动APP
为移动平台创建的APP,被称为mobile APP(移动APP)。我认为是想问的是这种类型的APP。这种类型现在的开发类型主要分为原生开发和混合开发。
原生开发就是移动平台(iOS和Android)各自推荐的语言。
iOS平台主要是Swift和Objective-C。
Android平台主要是Java和Kotlin,当然还有用C++写的。
- 混合开发的话,就是想实现使用同样的代码运行在不同的平台。主要就是有那么几个混合开发平台,如Cordova,React Native,微信小程序,这些平台主要使用web语言,即HTML,CSS,JavaScript。当然还有最近比较火的Flutter,使用的是自家的Dart语言。
APP开发的类型,默认你说的是手机APP。我们将APP的组成可以分为:
1、原生应用,如Android应用、IOS原生应用
Android 原生应用一般使用java或者kotlin语言开发。
IOS原生应用使用object-c 或者swift语言开发。
2、混合应用
一般公司为了节省成本(做原生应用需要找android、ios两个平台的程序员且开发周期长),选择使用混合跨端开发,而这种方式开发的框架就比较多了:
- uniapp
- React Native
- Weex
- Hybrid
- flutter
框架很多,但是语言都是使用JS语言开发的。
3、小程序
小程序属于微前端应用,各家都有自己的小程序开发框架,开发语言格式,但本质上基本都是通过vue进行改写的,所以其本质还是通过js实现开发的。
总结下来,目前APP开发语言:
- andorid原生部分开发:Kotlin、Java
- IOS原生部分开发:Object-C、Swift
- 混合和小程序:JS
安卓 app 是java
苹果 app是object C 或swift
当然也有些能同时运行在安卓和苹果上的语言 比如flutter。
上面那些语言对app来说都是前端,前端需要跟服务器交互,用到后端,后端语言有PHP java 等
你好,我来回答这个问题,我有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开发的两大分类,均占有一定的市场。所以你这个问题不能一概而论,需要分上述两个情况来决策,希望可以帮助到你!
后端老牌语言:Java,C,C++,C#,其中很明显Java的地位无法撼动。
脚本式语言:Python,Perl,PHP,Ruby,他们比较轻量级,语法灵活,易读性和维护性比较差。其中Python在大数据方面的应用优势明显,所以排名靠前,而PHP下滑严重。
后端新锐:Go,虽然现在受众面比较小,但是以后前途是不错的。
前端语言:JavaScript。实际上js的影响力比排行榜上的位置要靠前,统治了前端的语言。
移动端语言:Swift以及没上榜的ObjectC。没啥好说的,iOS专用。
你好,我从事开发也已经有10多年的经验了,从最开始android开发,到后面的iOS开发,后端开发架构部署都有非常多的经验,对于一款app 的开发没有绝对的语言限制。
也就是说需要根据公司的业务需求来决定使用哪套方案合适,目的就是为了给公司节省成本创造更多的效益。无外乎以下几种情况:
跨平台开发,需要同时开发多个平台,比如 h5, android, iOS, 各种平台小程序等,并且是初创公司或者是外包项目。
- uniapp
uni-app官网
这种开发模式优点和缺点都非常突出。
优点: 极大节省开发成本,只需要 1 ~ 2 名前端就能开发一个比较大型项目,尤其跟一些ui库的结合比如 uviewUI(使用之前需要调研下,ui库是否能同时支持原生和小程序等,有些ui库无法进行原生渲染), 而且官网还有各种模板,对于学习和开发能提高很大的效率。
一般情况下只要对体验不是非常高那种,就算要一点体验或者uniapp 没有实现的功能也可以使用原生开发作为sdk 嵌入进uniapp中,对于外包项目可以节约非常可观的支出,小公司也能快速开发投放市场用来试错,就算市场对这种app不感兴趣也能有调整的机会,毕竟成本比原生开发少的太多了。
缺点:同样缺点也极为明显,那就是说一千道一万的体验,使用也许没问题,但要是对体验非常挑剔的话还是算了,毕竟是js 渲染,跟原生还是没有可比性。最重要一点就是iOS的审核比较严格,原生代码必须占有一定比例才能通过审核,机审还是比较牛逼的,目前来说uniapp 仍然可以上架,但苹果要是认为js代码过高,或者有热更新嫌疑的话会不会禁用这种框架的app就不好说了。
- React Native 也是一种跨平台的方案。
这种方案其实跟uniapp 差不多,但只能编写android和iOS两个平台,优缺点又差不多,国外项目用到的挺多,但国内项目怎么说呢感觉不太适合,国内毕竟平台非常多,如果在现在或者未来一段时间内确认只有android和iOS 版本,那么这也是一个不错的选择,而且在苹果审核的时候也会少一些顾虑。
- flutter
是google 开源的一套跨平台方案,这个方案个人推荐还是不要使用了,现在大厂基本都没在用这个,就算以前用过也改回去了,目前也就闲鱼 app 在某些场景下使用,我以前也推广过 但收效甚微,学习成本比较高,同样只有android和iOS平台,感觉跟国内市场水土不服
原生开发,这种比较适合业务比较稳定,能投入一定成本,就算是外包也是那种比较稳定合作的项目,也是现在比较主流的选择方式,纯原生的很少见,基本就是混合开发。
这种优缺点同样的突出。
优点:可以使用原生的所有api, 能够将体验做得最好。苹果审核也不会出现任何问题。
缺点:缺点就是需要投入很高的开发成本,一个大型项目光是原生android,iOS各最少投入两个人,还要加上h5相关的开发,不是大公司还真没办法承受这种支出,几乎是跨平台的 3 ~ 4倍的前端投入,这仅是金钱还需要时间的投入,其开发周期会大于跨平台开发。
如今社会发展的极快,技术也是不断的进步,现在讲究大前端的世界,这就要求我们不能局限自己眼下的技术,如果只知道android,iOS不懂js,html 或者反过来都是不能成为一个优秀的前端的,因为无论采用什么样的技术 自己都无法独立完成开发,吾辈加油吧~
技术方式千千万,只有一个才是最优解,根据公司的实际情况采取最优的方案。
目前运行在手机端的应用(APP)主要有三个平台,安卓,iOS,WP。
安卓系统APP的开发语言:JAVA php,jsp等;
IOS系统APP的开发语言:使用Objective-C或Swift语言;
WP平台APP的开发语言:使用C#语言开发;
一般分为两种,一种是原生开发,一种是混合开发。
原生开发,苹果手机使用的是Apple公司提供的Objective-C或者Swift,原生开发。安卓手机是Java和Kotlin,原生开发呢,拥有很多优点,比如流畅啊,容易适配,动画精美。缺点也比较明显,就是如果代码有问题需要程序员修改上架,用户重新下载才可以达到修复问题的目的。
还有一种是混合开发,混合开发也分为两种,一种是原生开发结合H5开发,这个是市场上目前大多数App的特点。比如我们常见的淘宝,支付宝,微信,京东。他们在活动页多数才用H5的方式,这也是为什么平时我们使用的app,没有更新却能经常参加不同的活动,便于商家搞活动,修改一些经常会变化的东西。在商品,账户等不常变化的页面使用原生开发,这样又可以让用户有完美的原生体验。而且由于iOS和Android的代码不同,需要两套代码。而经常变化的活动只需要H5一端代码,即可两端共同使用,节约人力物力。所以这种混合开发的模式,是众多互联网公司采用的。一般来说如果加载页面顶部有加载条,这一般是H5页面。如果加载页面有loading动画和布局轮廓,一般就是原生页面。
那么还有一种混合开发,是Facebook提供的React Native和谷歌提供的Flutter。那么它们和H5的混合开发有什么不同呢,就是它们是用一种语言,生成两端原生代码。即它们虽然是混合开发,但是常常可以带来一些接近原生的体验,让用户根本察觉不到区别。例如,Android端的QQ是使用React Native开发的,闲鱼的大部分代码是Flutter开发的,而且由于Android也是谷歌主导维护的,Flutter生成的Android app已经在适配,动画和帧率上不亚于原生的app了。
前端的技术千变万化,所以你平时使用app有注意到原生和混合开发的app体验区别了吗?