随着技术的发展,在当前开发一款APP已经非常的简单和快速。特别是近些年,利用HTML5技术将APP的开发门槛进一步降低。各种开发工具和框架层出不穷,令人眼花缭乱。这么多的工具摆在眼前应该如何进行选择呢?要回答这个问题,我们需要先理一下APP开发的基础知识。

硬件层

顾名思义手机的所有零部件都属于硬件层,中心是CPU处理器,连接和控制着所有的部件工作。当然这里都一套工艺和驱动标准,用来规范各个厂家生产符合要求的配件产品。大家可以和电脑进行对比,工作原理也是差不多的。这里记住一个重要的东西,驱动标准


手机操作系统层

目前最流行的操作系统就是:安卓和ios。普通用户不可能直接对硬件层发出指令,一个重要的原因就在于指令非常复杂不方便。操作系统实际上是一套软件系统,由一系列的驱动程序和逻辑调用程序组成。通过这套软件用户就可以用简单的图形界面完成指令的执行。同时操作系统层提供一套功能API接口


APP

APP调用操作系统提供的API接口就可以执行指定的操作。对于开发人员来讲,直接调用操作系统提供的API进行开发同样是一件非常复杂和艰巨的任务,因为操作系统提供的API非常多,功能非常细。这个时候就该虚拟机登场了。学习过java和c#的同学应该都知道这个概念。虚拟机简单讲,就是一个运行环境,它连接着我们的程序和操作系统。我们的代码执行的过程中被对应的映射成调用操作系统的各个API接口,从而执行了我们的指令。java作为一款跨平台的语言,拥有几乎所有操作系统的虚拟机sdk。所以针对于安卓和ios,java同样有对应于它们的虚拟机。讲到现在,就离今天要讲的重点越来越近了。


1、原生态开发

正是由于java拥有手机操作系统的虚拟机,所以对应的我们可以通过java开发APP。其它语言进行开发也是类似,都是通过这种原理进行开发的。所以通过这种方式进行APP开发应该是最接近原生态,功能最全面的开发方式。

特点:适用于专业的APP开发和底层APP的开发。

缺点:学习成本高

2、HTML5+

我们知道HTML5是网页开发,把APP中的页面当成一个个网页,做一个封装,我们可以把它当成一个APP,这个应该不难理解。+ 加号的引入可以理解成一种扩展,因为在手机端,有很多手机独特的功能,例如定位、陀螺仪、相机等。除了一般的页面数据展示外,这些才是我们经常用的。所以这里的 + 号就是用来引入这些功能的。那么是如何引入的呢?借助上面讲到的java虚拟机sdk,W3C组织把一些常用的功能,大概32个功能封装成了一个plus对象,记住我这里说的是常用,不是所有。做app开发的同学对plus对象肯定不陌生,这就是为什么普通PC浏览器无法使用plus对象的原因,因为本身它就是为app操作系统服务的。所以使用这种方式做app开发的工具,在生成app文件的时候,必须把java虚拟机sdk打包进去,当然这个是工具的底层在做的事情,我们不用去管。例如我们常用的开发工具hbuilder。

特点:适用于简单的快速开发,甚至都不需要了解java语言。

缺点:不常用的功能无法实现

3、Native.js

HTML5+只是封装了常用的功能,还有大量的功能我们无法使用,这个时候Native登场了,Native提供了使用java原生态开发的app中的所有接口功能。但是这里需要提一句的是,这里的native并不是直接执行功能,而是需要交由java的jar包来执行。native提供一个接口的作用,具体的操作和执行还需要手动去写java包的调用,所以你必须对java原生态开发熟练才行,否则只能去copy代码了。

严格来讲,我是不怎么推荐,因为它处于不上不下的地位

4、小程序

微信小程序或者淘宝小程序开发。各个大厂实际是单独做了一个类似java虚拟机的sdk,然后封装成一系列的简单接口,实现了移动端的大部分功能。我们只要利用大厂提供的开发工具就可以快速开发。

特点:接口完善,规则简单,开发迅速

讲到这里,我想大家应该都有自己的选择了吧!

APP开发工具如何选?的更多相关文章

  1. App架构师实践指南二之App开发工具

    App架构师实践指南二之App开发工具     1.Android Studio 2.编译调试---条件断点.右键单击断点,在弹出的窗口中输入Condition条件.---日志断点.右键单击断点,在弹 ...

  2. hybrid app开发工具

    hybrid app开发工具 1.AppCan AppCan是国内Hybrid App混合模式开发的倡导者,AppCan应用引擎支持Hybrid App的开发和运行.并且着重解决了基于HTML5的移动 ...

  3. 最常用App开发工具更新总结

    程序员都知道,App常用开发工具有Sublime Text 3.Webstorm.Eclipse和APICloud Studio等,那么这些开发工具在2016年又有什么重大更新呢? 1.APIClou ...

  4. HTML5来了:5个好用的混合式App开发工具

    在残酷的移动互联网竞争环境下, HTML5技术一直受到各方关注,“HTML5颠覆原生 App”的争论也从未停止过,不管怎样HTML5生态的构建方兴未艾.不过对于移动开发者来说更关心的问题是如何低成本. ...

  5. 10个最佳的网站和App开发工具

    这个世界充满了创新,开发的激情和决心是实现更高目标的关键因素.在网站开发中,毫无疑问,工具和可用的在线网页和 app 设计资源,发挥了重要的作用. 下面我们将带来一些网站和 app 的最佳工具.   ...

  6. Office 365 - SharePoint 2013 Online之添加App开发工具Napa

    1.新建一个网站集,模板选择开发人员模板,如下图: 2.确定以后,需要稍等一会儿; 3.点击网站内容,添加app,如下图: 4.进入SharePoint Store,选择Napa,如下图: 5.选择A ...

  7. App开发工具

    软件下载: 链接:https://pan.baidu.com/s/1yaAko1svHW3v3kdn6mSgxQ提取码:rrcd 参考文档地址: http://dev.dcloud.net.cn/mu ...

  8. Office 365 - SharePoint 2013 Online之加入App开发工具Napa

    1.新建一个站点集,模板选择开发者模板.例如以下图: 2.确定以后,须要稍等一会儿; 3.点击站点内容,加入app,例如以下图: 4.进入SharePoint Store.选择Napa.例如以下图: ...

  9. HTML5 Web app开发工具Kendo UI Web中如何绑定网格到远程数据

    在前面的文章中对于Kendo UI中的Grid控件的一些基础的配置和使用做了一些介绍,本文来看看如何将Kendo UI 中的Grid网格控件绑定到远程数据. 众所周知Grid网格控件是用户界面的一个重 ...

随机推荐

  1. XSY2666

    题意 有\(n\)种颜色的球,第i种有\(a_i\)个.设\(m=\sum a_i\).你要把这\(m\)个小球排成一排.有\(q\)个询问,每次给你一个\(x\),问你有多少种方案使得相邻的小球同色 ...

  2. 数据库MySQL之show processlist

    在实际项目开发中,如果我们对数据库的压力比较大,比如有大批量的查询或者插入等sql,尤其是多线程插入等情况,针对部分执行比较慢的sql,我们可以将其kill掉,常用的一个命令就是show proces ...

  3. Python的入门级试用(简明教程)

    声明:借鉴Python 简明教程 用 Python 编写的传统的 'Hello World' 程序.使用 Python 运行你的程序的方法有两种:使用交互式解释器提示符或者使用源文件.现在我们来看一下 ...

  4. python 3.6 安装 opencv 3.4

    一种说法是,到opencv官网下载相应的版本opencv,解压,把cv2.pyd放到 python安装文件夹下的\Lib\site-packages里即可, 此时import cv2即可成功 我的没有 ...

  5. 电脑和手机上常用apk或Pc软件的重要目录或文件或文件夹路径

    常用apk或Pc软件的重要目录或文件或文件夹路径 01.hosts文件位置在哪里 C:\Windows\System32\drivers\etc 02.Windows7的锁屏壁纸目录在哪 C:\Win ...

  6. C#排序算法的实现---冒泡排序

    一.算法原理 冒泡排序算法的运作如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对 ...

  7. 剑指offer-面试题19-正则表达式匹配-字符串

    /* 题目: 实现一个函数用来匹配包含'.'和'*'的正则表达式. '.'表示比配任意字符,‘*’表示匹配0个或多个字符串. */ /* 思路: 采用递归的方法. 基础条件:当字符串和模式串存在空的情 ...

  8. gulp常用插件之pump使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 pump这是一款小型节点模块,可将流连接在一起并在其中一个关闭时将其全部销毁. 使用标准source.pipe(dest)源时,如果dest发出关 ...

  9. CF1205E Expected Value Again

    题意 题意翻译 对于一个字符串\(s\),我们定义其美丽值\(f(s)\)为满足下列两个条件的正整数\(i\)的个数: \(1\leq i<|s|\) \(s\)长度为\(i\)的前缀与后缀相等 ...

  10. java学习笔记之IO编程—File文件操作类

    1. File类说明 在Java语言里面提供有对于文件操作系统操作的支持,而这个支持就在java.io.File类中进行了定义,也就是说在整个java.io包里面,File类是唯一一个与文件本身操作( ...