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

news2024/11/25 14:46:46

一、前言

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

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应用的,只是现阶段还没有实现而已。

六、移动开发的注意事项

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

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

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gitmakegdb

git git reset 命令 | 菜鸟教程 (runoob.com) 像嫁接一样 make Makefile | 爱编程的大丙 (subingwen.cn) # 举例: 有源文件 a.c b.c c.c head.h, 需要生成可执行程序 app ################# 例1 ################# app:a.c b.c c.cgcc a.c b.c c.c -o app################# 例…

网络安全认证的证书有哪些?

在网络安全领域,专业认证不仅是个人技术能力的象征,也是职业发展的重要推动力。随着网络安全威胁的日益严峻,对网络安全专业人才的需求也在不断增长。本文将介绍一些网络安全认证的证书,帮助有志于从事网络安全行业的人士了解并选…

初阶数据结构的各种排序方法——冒泡,直接插入,希尔,快排,选择,归并(C语言)

1.交换排序 交换排序基本思想: 所谓交换,就是根据序列中两个记录键值的⽐较结果来对换这两个记录在序列中的位置 交换排序的特点是:将键值较⼤的记录向序列的尾部移动,键值较⼩的记录向序列的前部移动。 1.1冒泡排序 例子&…

qt QFileInfo详解

1、概述 QFileInfo是Qt框架中用于获取文件信息的工具类。它提供了与操作系统无关的文件属性,如文件的名称、位置(路径)、访问权限、类型(是否为目录或符号链接)等。此外,QFileInfo还可以获取文件的大小、创…

Charles抓包_Android

1.下载地址 2.破解方法 3.安卓调试办法 查看官方文档,Android N之后抓包要声明App可用User目录下的CA证书 3.1.在Proxy下进行以下设置(路径Proxy->Proxy Settings) 3.1.1.不抓包Windows,即不勾选此项,免得打输出不…

软件压力测试有多重要?北京软件测试公司有哪些?

软件压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试是给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷。 在数字化时代,用户对软件性能的要求越…

【Python】【数据可视化】【商务智能方法与应用】课程 作业一 飞桨AI Studio

作业说明 程序运行和题目图形相同可得90分,图形显示有所变化,美观清晰可适当加分。 import matplotlib.pyplot as plt import numpy as npx np.linspace(0, 1, 100) y1 x**2 y2 x**4plt.figure(figsize(8, 6))# yx^2 plt.plot(x, y1, -., labelyx^2,…

进程的调度(超详细解读)

在特别老的操作系统中,进程的调度是根据FIFO调度算法进行调度,先进先出式的调度,其实就是队列,但是不能很好的体现进程的优先级,在上节讲解的进程优先级,知道nice值范围是[-20,19],然…

【初阶数据结构篇】链式结构二叉树(续)

文章目录 须知 💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍 点赞、收藏与分享:觉得这篇文章对你有帮助吗&#xff1…

【拥抱AI】如何让软件开发在保证数据安全的同时更加智能与高效?

第一、推动软件开发向更加智能化、高效化和创新化方向发展的策略 随着AI技术的不断进步,软件开发正朝着更加智能化、高效化和创新化的方向发展。要实现这一目标,企业需要采取一系列综合性的策略,从技术、管理、文化等多个层面入手。以下是一…

elementUI 点击弹出时间 date-picker

elementUI的日期组件,有完整的UI样式及弹窗,但是我的页面不要它的UI样式,点击的时候却要弹出类似的日期选择器,那怎么办呢? 以下是elementUI自带的UI风格,一定要一个输入框来触发。 这是我的项目中要用到的…

柯桥topik考级韩语培训【韩语干货】表存在的에和에게有什么区别?

相同点 都可以接在体词后,表示存在的地点、场所,以及所有者。 例如: 1)여동생이 집에 있어요. 妹妹在家。 2) 식당이 도서관 뒤에 있다. 食堂在图书馆后面。 3) 언니에게 고급 화장품이 있다. 姐姐有高级…

使用 ABAP GIT 发生 IF_APACK_MANIFEST dump

错误重现 使用经典的 ABAP 系统运行 ZABAPGIT 或者 ZABAPGIT_STANDALONE然后添加在线或者离线项目点击 PullShort dump SYNTAX_ERROR Dump 界面: 解决方案 它发生在 CREATE OBJECT lo_manifest_provider TYPE (ls_manifest_implementation-clsname) 语句中。 该语…

多商户电商平台开发指南:基于直播带货系统源码的搭建方案详解

本篇文章,小编将详细解析如何利用直播带货系统源码,快速搭建一套多商户电商平台的解决方案。 一、直播带货系统在多商户电商平台中的应用价值 在多商户电商平台中,直播带货系统可以帮助商家: 1.增加用户互动 2.提升转化率 3.…

【TextIn:开源免费的AI智能文字识别产品(通用文档智能解析识别、OCR识别、文档格式转换、篡改检测、证件识别等)】

TextIn:开源免费的AI智能文字识别产品(通用文档智能解析识别、OCR识别、文档格式转换、篡改检测、证件识别等) 产品的官网:TextIn官网 希望感兴趣以及有需求的小伙伴们多多了解,因为这篇文章也是源于管网介绍才产出的…

(C++回溯算法)微信小程序“开局托儿所”游戏

问题描述 给定一个矩阵 A ( a i j ) m n \bm A(a_{ij})_{m\times n} A(aij​)mn​,其中 a i j ∈ { 1 , 2 , ⋯ , 9 } a_{ij}\in\{1,2,\cdots,9\} aij​∈{1,2,⋯,9},且满足 ∑ i 1 m ∑ j 1 n a i j \sum\limits_{i1}^m\sum\limits_{j1}^na_{ij} i…

Java学习Day57:碧水金睛兽!(Spring Cloud微服务1.0)

1.微服务入门 (1).单体架构与分布式架构 单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包部署优点: 架构简单、部署成本低 ; 缺点: 耦合度高项目打包部署到Tomcat,用户直接访问。用户量增加后…

Golang | Leetcode Golang题解之第541题反转字符串II

题目&#xff1a; 题解&#xff1a; func reverseStr(s string, k int) string {t : []byte(s)for i : 0; i < len(s); i 2 * k {sub : t[i:min(ik, len(s))]for j, n : 0, len(sub); j < n/2; j {sub[j], sub[n-1-j] sub[n-1-j], sub[j]}}return string(t) }func min…

★ C++进阶篇 ★ C++11(上)

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将和大家一起学习C11 ~ ​❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️ 澄岚主页&#xff1a;椎名澄嵐-CSDN博客 C基础篇专栏&#xff1a;★ C基础篇 ★_椎名澄嵐的博客-CSDN博客 C进阶篇专栏&#xff…

【Linux 28】应用层协议 - HTTPS

文章目录 &#x1f308; 一、HTTPS 相关概念⭐ 1. 什么是 HTTPS⭐ 2. 加密 & 解密 & 密钥⭐ 3. 常见的加密方式⭐ 4. 数据摘要 & 数据指纹⭐ 5. 初识数字签名 &#x1f308; 二、HTTPS 的加密方案探究⭐ 1. 方案一&#xff1a;只使用对称加密⭐ 2. 方案二&#xff…