公司新闻

移动互联网技术选型之APPS跨平台开发技术

发布时间::2018-02-03 10:41:29
发布者:手讯科技
浏览次数:
  技术的重要性有时不只在创造多少价值,更重要的是帮你避开了多少大坑。移动互联网造就了很多神奇的公司,不知不觉你用着APP改变了生活习惯,有的靠社交让你一日难离,有的靠交通让你出行想起,有的靠支付让你无现金交易,衣食住行都离不开了APPS。
APPS既然如此重要,今天我就来回顾移动互联网中,APPS开发的跨平台技术。APPS开发Android,IOS各移动平台跨平台技术多种多样,没用过的看不清摸不透,往往被他们的广告所吸引,曾经大家以为在移动终端上可以像PC那样通过 Web 技术来实现跨平台开发,但却大多因为性能或功能问题而中途放弃,公司决策的失误会造成大量资源的浪费, 特别在移动互联网领域时间为最大的成本,错过了风口的创业公司最后可能很难存活。
我们先来了解一些概念,手机研发其实是一种嵌入式开发,移动端APP的研发是基于嵌入式系统的开发,其实不少人都搞不清楚什么是嵌入式开发。嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有Linux, Android,IOS, LJ, Symbian等。另外,用c,c++或汇编开发,用高级处理器,arm9,arm11,powerpc,mips,mipsel等,加上操作系统也属于嵌入式的开发。嵌入式系统(Embedded System)是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统,也就是说每个嵌入式设备其实软硬件都是专门配套的,也就决定了在其上开发的复杂性,面对不同系统版本,不同硬件设备的表现往往不同,做精产品技术需要考虑的问题就更多。
APPS跨平台开发技术,最大的卖点在于号称降低开发成本,谁不想降低开发成本呢,近期出现的 React Native 再次让跨平台移动端开发这个话题火起来了,还出现了许多其他方案,那么近年来这些技术方案靠谱吗?
济南最大的app开发公司 http://www.soxunsoft.com/我将它们分为五大门派:
一,Web 派:例如,H5。例如,IBM的Worklight, Hybrid 技术它基于 Web 相关技术来实现界面功能;
二,代码转换工具派:把一种语言转成 Swift,Objective-C、Java 或 C#,然后使用不同平台下的官方工具来开发;
三,编译派:把一种语言编译为二进制文件,生成so动态库,dll静态库或打包成 apk/ipa/xap 文件;
四,虚拟机派:把一种语言的虚拟机移植到不同移动系统平台上来运行;
五,React Native派: 结合了 Web 应用和 Native 应用的优势,可以使用JavaScript 来开发 iOS 和 Android 原生应用。在 JavaScript 中用 React 抽象操作系统原生的 UI 组件,代替 DOM 元素来渲染等。React Native使你能够使用基于 JavaScript 和 React 一致的开发体验在本地平台上构建世界一流的应用程序体验。
Web 派:

浏览器,比如 Webkit,Safari,Chrome,第三方Browser等;比如著名的 PhoneGap/Cordova方案。浏览器方式很容易理解,HTML5应用就是Web页面,用户通过浏览器打开URL,然后进入浏览器的全屏模式或者App模式操作,也可以通过点击一个事先创建好的快捷方式打开应用。这种方式的性能取决于浏览器本身对HTML5的支持情况,一般来说要优于Webview组件的方式,但是问题在于不同的浏览器有差异,而且通过浏览器运行HTML5较难做到类似原生应用的体验(应用切换/权限管理/系统资源访问/整合等)以及丰富的API支持。由于iOS的限制(iOS不允许应用使用使用除iOS UIWebView之外第三方的JIT--即时编译引擎),目前Crosswalk也没有办法提供直接的支持。Web 派最被吐槽的就是性能慢。排行第一的问题,一直难以解决。特别早期浏览器实现比较差难以优化。CSS 过于复杂计算起来也更耗时。DOM 提供的接口有限。Web 派更严重的问题是功能缺失,例如,苹果 iOS 8 就新增 4000+ API,而 Web 标准需要漫长的过程,增加 4000 API 您这辈子恐怕是等不到了,即便是 Cordova 这样自己封装也忙不过来啊,为了更好地用系统新功能,写 Native 原生代码是必须的。

济南app开发公司

代码转换工具派
Android上开发语言以Java和C++为主,IOS上可用OC/C,Swift,,不同移动平台上的官方语言不一样,这会导致同样的逻辑要写两次以上,于是就有人想到了通过代码转换的方式来减少工作量。这种方式虽然听起来很离奇,但它却是风险和成本最小的,因为代码转换后就可以用官方提供的各种工具了,和普通开发区别不大,因此不用担心遇到各种诡异的问题。但实际上很多APP 来说共享不了多少代码,因为移动应用大多数围绕 UI 来开发的,所以公共部分不多而且一般都是通用类和框架,有经验的直接复制粘贴就可以了,这种方式还涉及到可读性的问题。几乎各种组合各种平台语言转换工具都有尝试。
编译派:
编译派比前面的代码转换派更进一步,它直接将某个语言编译为普通平台下的二进制文件,这种做法有明显的优缺点:优点:可以重用一些实现很复杂的代码,比如之前用 C++ 实现的游戏引擎,重写一遍成本太高;编译后的代码反编译困难;缺点:如果这个工具本身有任何 Bug 问题,修改成本会很高,苦逼的说基本很难完成。编译后体积很大,尤其要支持 ARMv8 和 x86 的情况。
C++ 是最常见的选择,因为目前 Android、iOS 等都提供了 C++ 开发的支持;apportable 可以直接将 Swift/Objective-C 编译为机器码,但它的成功案例全部都是游戏,所以APP就别指望了。Go 从 1.4 版本开始支持开发 Android 应用(并将在 1.5 版本支持 iOS),不过前只能调用很少 的 API,比如 OpenGL 等,所以只能用来开发游戏,但明显不靠谱,现在还有谁直接基于 OpenGL 开发游戏?
虚拟机派:
除了编译为不同平台下的二进制文件,还有另一种常见做法是通过虚拟机来支持跨平台运行,JavaScript , Lua 都是天生的内嵌语言,所以在这个流派中很多方案都使用他们。不过虚拟机派会遇到两个问题:一个是性能损耗,另一个是虚拟机本身挺占地的。Java虚拟机,前段时间推出的 NativeScript,它的方法说白了就是用工具来自动生成 wrapper API,和系统 API 保持一致。
Titanium 应该不少人听过,它和 PhoneGap 几乎是同时期的著名跨平台方案,和 PhoneGap 最大的区别是:它的界面没有使用 HTML/CSS,而是自己设计了一套基于 XML 的 UI 框架 Alloy。
React Native派:
React Native 思路简单来说就是在不同平台下使用平台自带的 UI 组件。
React使用许可协议的官方声明,称任何人不能将React用于Facebook及其合作公司有直接或间接竞争关系的项目中,否则 Facebook 公司自动取消其使用许可。对于使用了React的公司来说,存在将专利拱手让人,将所有项目框架迁移重构的风险。这不但开发量大成本高,而且在迁移完毕后,不论是用户体验还是稳定性,都很可能达不到迁移前水平。
WordPress是一种使用PHP语言开发的平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站,也可以济南app开发公司 WordPress当作一个内容管理系统(CMS)来使用。近年来WordPress几乎所有项目都基于React开发,然而WordPress创始人Matt在其博客上发文,称决定停止使用React,原因则是专利问题。他表示WordPress最近几年对React满意,不过还是决定放弃React,并已经和开发者进行交流,开始进行新的技术选型。
百度也已经要求外部产品线停止使用React / React Native等Facebook下涉及特定专利条款的开源产品,给半年时间来转型。内部产品如果是新产品,则不能使用React。百度内部也在自研React Native的替代方案。
结论:
APPS跨平台开发技术有那么多方案,五大门派中的武功各有长短。如果你只会 JavaScript,那目前可以用 React Native。如果你只会 Java,那可以尝试 RoboVM 或 j2objc,j2objc 虽然目前更稳定靠谱,但它不能像 RoboVM 那样完全用 Java 开发,所以你还得学 Objective-C 来写界面,而 RoboVM 的缺点就是太稳定,除了游戏以外还没见到比较知名的应用使用,而它这种方案注定会比 j2objc 更容易出问题,所以你得做好掉坑里的准备。如果你只会 C#,那唯一的选择就是 Xamarin 了。如果你只会 C++,可以做做游戏或非 UI 的公共部分,还是学学 Native 开发吧。如果你只会 Go,还别指望用它开发移动端,因为目前的实现很低效,而且这和 Go 底层的实现机制密切相关,导致很难优化,所以预计很长一段时间内也不会有改观。如果你会 Rust,说明你很喜欢折腾,多半也会前面所有语言。如果你不懂OC(swift), JAVA,我建议你还是学一种吧,面向对象的语言相通,学习很快而用处很多,技多不压身。如果你想做一个专业的移动开发者,我建议一定要学会原生开发,不要排斥,他的魅力和强大绝对能让你满意。
当然,上面都是针对个人的,对于公司和团队来说,目前原生开发仍为最佳选择。功能强大开发方便,性能更好体验更佳。然后可考虑尝试混用内嵌的方案,及一些完全理解的新技术。技术远比想象的深奥,这两年青涩的技术过两年可能随着技术发展而成熟。现在大多数移动开发者还只是在手机APP层内的技术应用,更熟悉这一层的API,而不熟悉更深层的引擎和系统平台特性,所以在技术选型的时候要格外慎重,规避后面问题的产生。防患于未然,选择最佳技术方案,给组织发展提供有力保障。
相关推荐:
网站开发的特点有哪些
线下门店开发小程序后要如何做营销?
推广不等于营销,企业运营要知道!
你真的了解小程序吗?济南微信小程序开发多少钱
网站定制开发和模板建设的本质区别
婴幼儿APP开发的新方式
微信小程序都能做什么?
网站建设是如何提升企业网站价值的?
移动互联网技术选型之APPS跨平台开发技术
网站建设中这些细节完全不要忽略
您的姓名:
您的电话:
公司名称:
友情提醒
为了更好的为您服务,请务必将资料填写完全与正确,以方便我们在第一时间与您联系