蓬勃发展:移动开发——关于软件开发你需要知道些什么

一、前言

        移动开发一直都是软件开发领域中最有趣的领域之一,这是因为:

1、移动开发为“只有一个人”的开发团队提供了一个非常独特的机会,让他可以在相对较短的时间内建立一个实际的、可用的、有意义的应用程序;

2、移动开发也代表着创业的机会,这是大多数程序员梦寐以求的;

3、对那些喜欢单打独斗的软件开发者而言,基于移动设备的应用开发不只是一个构建自己的项目的机遇,它可以说就是软件开发的未来,因为移动设备正在成为我们生活中越来越大的一部分

        本文主要介绍移动开发是什么?概略介绍一些主流的移动平台,并且讨论一下现有的支撑移动开发的技术,这样你就可以对移动开发是否适合你有一个好的判断。

二、什么是移动开发

        移动开发是在任何一种移动设备进行任何形式的开发(包含了开发在手机、平板电脑、智能手表以及其他各种可穿戴设备上运行的应用程序,这些设备上原本已经运行着某种类型的移动操作系统);这也并不意味着一定是纯移动应用程序,因为即使是Web开发者,当前也必须要兼顾到如何从移动设备上使用和访问他们的Web应用程序。

        移动应用程序甚至完全是作为Web应用程序开发的,只是专门应用于移动设备上。这是因为,随着移动设备的功能变得越来越强大,浏览器在未来必然将取代操作系统,发挥更大的主导作用。

三、主流移动开发平台

移动端开发目前有三大主流平台(ios、Andorid、Harmony);

3.1、ios

        iOS是由苹果公司开发的,它只运行在苹果的硬件产品上(目前iOS运行在iPhone、iPod、iPad、Apple Watch和Apple TV上,预计将来会有更多运行iOS的设备)。

        iOS的核心与Unix非常类似,它基于Darwin(BSD);与macOS共享一些重要的框架,它的用户界面基于苹果的Cocoa UI,Cocoa UI同时也用于macOS的应用程序,但已经针对触摸设备进行了优化和重新设计,被称为Cocoa Touch。

        苹果公司为iOS开发者提供了数个用来开发iOS应用程序的原生工具和库,尽管你不一定非要使用苹果公司的开发工具来构建应用程序,但是你必须有一个运行macOS的Mac才能构建应用程序iOS应用程序通常是使用Objective-C编程语言或者现在更为流行的平台开发语言Swift构建的

目前ios在全球移动端的市场占有率大概为20%左右。

3.2、Android

        Android是在市场中占有份额最大、最主要的移动操作系统,达到70%左右,而iOS仅占20%左右(但这个数字有点儿欺骗性,因为Android是一个支离破碎的市场,由不同制造商生产的、运行着不同版本的Android操作系统的许多不同设备组成)。

        Android系统由谷歌公司支持,是全开放的任何人都可以构建一个使用Android系统的设备,它被设计成可以在各种各样不同的硬件平台和设备上运行,具有非常多不同的形式和功能)。苹果公司支持的iOS系统则不开放iOS则被设计用来运行在特定的苹果设备上,而且只能在苹果设备上运行);

        Android是基于Linux内核的,Android的源代码是由谷歌公司作为开源项目发布的。与苹果公司一样,谷歌也提供了一些用于Android开发的原生工具,但你也不必一定要使用它们。

Android操作系统应用程序的原生开发平台使用的是Java。

3.3、HarmonyOS

        截至2024年,运行鸿蒙系统的设备已经超过10亿台,鸿蒙操作系统占全球市场的约4%在中国市场的份额超过了16%,显示出其在中国本土市场的强劲表现和增长潜力‌。

        HarmonyOS是华为公司于2019年8月9日在东莞举行的华为开发者大会(HDC.2019)上正式发布的面向全场景的分布式操作系统(HarmonyOS旨在打破设备间的壁垒,实现无缝的跨设备体验),可以创造一个超级虚拟终端互联的世界,将人、设备、场景有机地联系在一起,将消费者在全场景生活中接触的多种智能终端,实现极速发现、极速连接、硬件互助、资源共享,用合适的设备提供场景体验。

        ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript(简称TS)基本语法风格的基础上,进一步通过规范强化静态检查和分析,使得在程序运行之前的开发期能检测更多错误,提升代码健壮性,并实现更好的运行性能【同时,提供了声明式UI范式、状态管理支持等相应的能力,让开发者可以以更简洁、更自然的方式开发高性能应用】。

        如果你要开发一个移动应用程序,并且有志于成为一名移动应用程序开发者,你的选择就是iOS、Android或HarmonyOS。

四、移动开发是如何完成的

        在iOS和Android刚问世时,如果你想学习如何为这两个平台开发移动应用程序,你就需要学会如何使用iOS或者Android提供的原生工具(如ios原生工具就是XCode和Objective-C;Android原生工具就是在Eclipse、NetBeans或者Java上的Android SDK插件)。

        今天,选择就很多了;围绕着移动应用程序有无数框架、工具、平台等一整套生态系统几乎每一门编程语言都以这种或那种方式支持移动开发,移动应用程序甚至可以被构建成只在移动浏览器中运行。

4.1、原生开发

        我们可以天然地使用移动操作系统供应商为我们提供的工具来开发移动应用程序(对iOS来说,最初的工具包括是XCode和Objective-C,但随后苹果公司发明了一种名叫Swift的新语言,它现在是开发iOS应用程序的首选语言;在Android的世界里,除谷歌公司自己推出的Android Development Studio IDE之外,其他的都没有什么变化。Java仍然是首选的开发语言)。

        原生的移动开发的最大问题是:不管是开发iOS应用程序还是Android应用程序,你必须针对iOS和Android完全重写应用程序的代码(如果你想支持Windows Phone或其他小众的平台,你也必须在该平台上进行同样的操作。)这并不是什么大问题,但应用程序通常需要得到平台的支持,因此,尝试在两个或更多完全不同的平台上支持不同版本的应用程序,无疑有点儿像是在痴人说梦。

        Android开发和iOS开发几乎完全不同。工具不同,语言不同,框架不同,甚至开发模式都不同。如果你想要为某个应用程序创建一个iOS版本和一个Android版本,你必须准备好要学会这两个截然不同的而又都在不断演变的平台

        原生开发最大的优势就是速度;可直接调用硬件,获得硬件级的性能。

4.2、跨平台框架与工具

        有一些框架实际上也是生成原生代码并封装成真正的原生的库,因此它们只是对原生语言和工具的抽象,所以仍然需要你了解和使用原生的库和框架。

        另外一些解决方案可以构建出混合应用程序,包含有一些原生组件、一些基于Web或HTML的组件,并且依赖于内置的移动浏览器来创建应用程序中的大多数用户界面与功能。

选择跨平台的框架解决方案的考虑事项:

1、编程语言

        你可能不希望同时陷入即要学习全新框架,又要学习移动开发,还要学习新编程语言的泥潭之中,因此你可能想要选择一个支持你已经熟悉的语言的跨平台解决方案。

2、原生还是混合

        有好几种跨平台解决方案,它们最终将代码编译成移动操作系统的原生格式,然后直接连接到原生库和API上。我最喜欢的就是Xamarin,它允许用C#编写应用程序,但是原生构建的应用程序的所有优点和特性你都可以继续享用。

        另外一些跨平台解决方案,如Cordova,采用的是一种混合方法,其中应用程序并非原生的应用程序,但它看起来像原生的应用程序。

        在通常情况下,原生模式创建的应用程序运行速度会更快,看起来更像是移动平台直接运行应用程序,但是一些跨平台混合解决方案正变得如此接近原生模式,以至于很难分辨出两者之间真正的区别

3、平台支持

        几乎所有的跨平台解决方案都支持iOS和Android,但有一些跨平台解决方案也支持macOS或者Windows等桌面操作系统,还有一些支持较小的手机操作系统,甚至包括Raspberry Pi。如果除了iOS和Android系统,你对支持的平台没有特殊的需求,那我就不担心除这两个“大佬”之外的跨平台支持了。

        开发移动游戏就是另一回事了。如果你正在做游戏开发,你可能想要选择一个可以支持尽可能多的平台的工具。像Unity 3D这样的工具允许你创建可以在你能想到的每一个平台上运行的游戏,就算是同时开发出Web版本也不在话下

4、代码复用

        即使一个框架是跨平台的,那也并不意味着你可以为应用程序只编写一个版本的代码就能让它在所有被支持的平台上运行

        通常,支持原生开发的跨平台解决方案代码的可复用性都较差,因为它们与原生框架及其库、用户界面元素和范型的绑定更为紧密;你可能需要在下面两者之间做出取舍(1、更为原生化的操作系统,拥有已经被打上深深烙印的界面外观、用户体验和设计模式;2、共享更多的代码)。

        近来,像Xamarin这样的跨平台解决方案已经推出了新版本,以便于让你能够将上述两种选择的优点兼而得之。例如,Xamarin使用了一个名为Xamarin Forms的通用UI库,它允许你通过在原生UI和底层操作系统的框架之上创建另一个抽象层,在平台之间实现更大比例的代码复用。

        代码复用取决于你正在构建的应用程序的类型,以及你希望在多大程度上让你创建的应用程序与你针对的平台上完全原生构建的应用程序相互融合

五、移动Web应用

        开发移动应用程序的最后一个选择是构建一个完全基于Web的应用程序(随着移动浏览器功能的日益强大,以及自适应Web技术的逐步改进,这一选择正变得越来越可行。选择这种开发模式,你可以像在Web上构建任何其他Web应用程序一样构建一个Web应用程序,但是它又被有针对性地设计成可以在移动设备上运行)。

        许多移动操作系统浏览器甚至有hook程序,支持从Web浏览器内部调用原生功能,因此你可以执行诸如获取位置数据、访问设备上的摄像头之类的操作。甚至有很多框架可以帮你创建移动Web应用程序,这些应用程序在特定的移动操作系统上运行时看起来就像原生应用程序一样。

未来是属于移动Web应用的,只是现阶段还没有实现而已。

六、移动开发的注意事项

        鼓励那些把进入软件开发行业视作畏途的初学者去构建一些移动应用程序,并将它们部署到一个移动应用商店中。这样做可以帮助你获得领先于他人的优势,证明你实际上可以编写代码并生成完整的可工作的应用程序。

        个人认为,对进入软件开发行业而言,移动开发是极好的选择,因为它的进入门槛很低,而且它是一个必将持续增长的软件开发领域(几乎所有人都可以成为移动应用的开发者,甚至可以发布自己的移动应用程序,也许还能因此而赚到钱;开发移动应用程序,团队的规模不需要非常大。也就是说,哪怕是只有一名开发者的团队也可以在相对较短的时间内创建出重要的移动应用程序,这可以作为一条优质的渠道以便于在未来获得工作机会,甚或是合同)。

        移动开发在未来几年内一定会持续增长,因此移动应用开发者的未来一定是一片大好。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/908876.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

性能测试 —— MySQL性能测试方案设计!

01、慢查询 查看是否开启慢查询 mysql> show variables like %slow%’; 如图所示: 系统变量log_slow_admin_statements 表示是否将慢管理语句例如ANALYZE TABLE和ALTER TABLE等记入慢查询日志 启用log_slow_extra系统变量 (从MySQL 8.0.14开始提…

每日OJ题_牛客_爱吃素_数学_C++_Java

目录 牛客_爱吃素_数学 题目解析 C代码 Java代码 牛客_爱吃素_数学 爱吃素 (nowcoder.com) 描述: 牛妹是一个爱吃素的小女孩,所以很多素数都害怕被她吃掉。 一天,两个数字aaa和bbb为了防止被吃掉,决定和彼此相乘在一…

Vue 自定义icon组件封装SVG图标

通过自定义子组件CustomIcon.vue使用SVG图标&#xff0c;相比iconfont下载文件、重新替换更节省时间。 子组件包括&#xff1a; 1. Icons.vue 存放所有SVG图标的path 2. CustomIcon.vue 通过icon的id索引对应的图标 使用的时候需要将 <Icons></Icons> 引到使用的…

MySQL-如果你在添加外键时忘加约束名,如何找到系统默认的约束名

问题 在你添加约束的时候&#xff0c;一般都会为其取名以方便后期的修改&#xff0c;但是如果你忘记了呢&#xff0c;如何找到系统默认的约束名 解决方法 -- 查找约束名 SELECTCONSTRAINT_NAME FROMINFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERETABLE_NAME emp ANDREFERENCED_T…

KP8530X系列KP85301SGA 650V耐压 集成自举二极管的半桥栅极驱动器 北欧双线灯调色解决方案

KP8530X同系列选型参考&#xff1a; KP85301SGA兼容IR2103 KP85302SGA兼容IR2106、IR2001、IR2005、IR2186 KP85303SGA兼容IR2104 KP85304SGA兼容IR2304 KP85305SGA兼容IR21857 KP8530X系列KP85301SGA是一款 650V 耐压&#xff0c;集成自举二极管的半桥栅极驱…

IPC-A-610J-中文版 CHINESE-中文版 2024 电子组件的可接受性

IPC-A-610J-中文版 CHINESE-中文版 2024 电子组件的可接受性.pdf 链接: https://pan.baidu.com/s/1UreAzlB_P7tGH_WoFL2Ybg?pwd1234 提取码: 1234 https://share.weiyun.com/eQCyAPYh 通过网盘分享的文件&#xff1a;IPC-A-610J-中文版 CHINESE-中文版 2024 电子组件的可接受性…

JAVA设计模式之【建造者模式】

1 定义 建造者模式&#xff08;Builder Pattern&#xff09;使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 2 类图 产品类&#xff08;Product&#xff09;&#xff1a;表示被创建的复杂…

SQL server 列转行

在 SQL Server 中&#xff0c;将列转换为行的操作通常被称为“透视”&#xff08;Pivot&#xff09;的逆操作&#xff0c;即“反透视”&#xff08;Unpivot&#xff09;。SQL Server 提供了 UNPIVOT 关键字来实现这一功能。假设你有一个表 EmployeeDetails&#xff0c;其中包含…

分类算法——决策树 详解

决策树的底层原理 决策树是一种常用的分类和回归算法&#xff0c;其基本原理是通过一系列的简单决策&#xff0c;将数据集划分为多个子集&#xff0c;从而实现分类。决策树的核心思想是通过树形结构表示决策过程&#xff0c;节点代表特征&#xff0c;边代表决策&#xff0c;叶子…

【小白学机器学习31】 大数定律,中心极限定理,标准正态分布与概率的使用

目录 1 正态分布相关的2个相关定理 1.1 大数定律&#xff1a;(证明了)分布的稳定性 1.2 中心极限定理&#xff1a;(证明了)分布的收敛性 2 使用标准差和概率的2种思路 2.1 标准正态分布的曲线 2.2 两种使用方式 2.3 第1种&#xff1a;按整数倍标准差δ 作为标准使用 2.…

Sourcetree 启动问题(完美解决)

概述 sourcetree 之所以打开就闪退&#xff0c;是因为没有关闭 sourcetree 关机或者系统自动更新等没有关闭sourcetree就直接关机的行为导致缓存信息不匹配&#xff0c;删除的目的是为了重新加载缓存。 下方直接上图&#xff0c;按顺序操作&#xff1a; 1.找到 sourceTree 安…

Sigrity Power SI VR noise Metrics check模式如何进行电源噪声耦合分析操作指导

SSigrity Power SI VR noise Metrics check模式如何进行电源噪声耦合分析操作指导 Sigrity Power SI的VR noise Metrics check模式本质上是用来评估和观测器件的电源网络的耦合对于信号的影响,输出S参数以及列出具体的贡献值。 以下图为例

安科瑞Acrel-2000ES储能柜能量管理系统的详细介绍-安科瑞 蒋静

Acrel-2000ES储能柜能量管理系统具备全面的储能监控和管理功能。它包括了储能系统设备&#xff08;如PCS、BMS、电表、消防、空调等&#xff09;的详细信息&#xff0c;并实现了数据采集、处理、存储、数据查询与分析、可视化监控、报警管理和统计报表等功能。此外&#xff0c;…

细腻的链接:C++ list 之美的解读

细腻的链接&#xff1a;C list 之美的解读 前言&#xff1a; 小编在前几日刚写过关于vector容器的内容&#xff0c;现在小编list容器也学了一大部分了&#xff0c;小编先提前说一下学这部分的感悟&#xff0c;这个部分是我学C以来第一次感到有难度的地方&#xff0c;特别是在…

百度集度嵌入式面试题及参考答案

linux 系统之间通信机制有哪些&#xff1f; Linux 系统之间存在多种通信机制&#xff0c;以下是一些常见的通信机制及其详细介绍。 管道&#xff08;Pipe&#xff09; 原理&#xff1a;管道是一种半双工的通信方式&#xff0c;数据只能单向流动。它基于文件描述符&#xff0c;在…

使用vite+react+ts+Ant Design开发后台管理项目(五)

前言 本文将引导开发者从零基础开始&#xff0c;运用vite、react、react-router、react-redux、Ant Design、less、tailwindcss、axios等前沿技术栈&#xff0c;构建一个高效、响应式的后台管理系统。通过详细的步骤和实践指导&#xff0c;文章旨在为开发者揭示如何利用这些技术…

MATLAB计算朗格朗日函数

1. 朗格朗日函数介绍 朗格朗日函数&#xff08;Lagrange function&#xff09;通常用于优化问题&#xff0c;尤其是带有约束的优化问题。其一般形式为&#xff1a; 其中&#xff1a; f(x) 是目标函数。 是约束条件。 是拉格朗日乘子。 为了编写一个MATLAB代码来计算和绘制…

微信全新体验来袭,让你的微信再升级

在这个信息爆炸的时代&#xff0c;微信作为我们日常生活中不可或缺的社交工具&#xff0c;每一次的更新都牵动着亿万用户的心。 最近&#xff0c;微信再次发力&#xff0c;为安卓、iOS、鸿蒙以及PC端的用户带来了全新的功能体验。今天&#xff0c;就让我们一起走进这些新功能&…

ES + SkyWalking + Spring Boot:日志分析与服务监控(三)

目录 一、搭建SkyWalking 1.1 版本选择 1.2 下载安装 1.3 配置启动 1.4 SkyWalking UI介绍 二、Springboot项目使用 2.1 Agent下载 2.2 Agent配置skywalking oap地址 2.3 IDEA配置Agent地址 2.4 生成的ES索引介绍 三、在kibana上查看日志 四、问题和解决 3.1 日志…

算法笔记:Day-09(初始动态规划)

509. 斐波那契数 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 …