跨平台开发技术

目录

    • 1.Qt
      • 1.简介
      • 2.优势
      • 3.劣势
    • 2.NET Core+Vue
      • 1.简介
      • 2.优点
    • 3.Flutter
      • 1.简介
      • 2.优点
      • 3.缺点
    • 4.Maui
      • 1.简介
      • 2.优点
      • 3.缺点
    • 5.Avalonia
      • 1.简介
      • 2.优点
      • 3.缺点
    • 6. Cordova
      • 1.简介
      • 2.优点
      • 3.缺点
    • 7.Electron
      • 1.简介
      • 2.优点
      • 3.缺点

在这里插入图片描述

个人搜集资料并总结了一些跨平台开发技术,如有不足欢迎指正。

1.Qt

1.简介

QT是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形所需的所有功能。它是完全面向对象的,容易扩展,并且允许真正的组件编程。

2.优势

  1. 使用Qt开发的程序可以运行在Windows、Linux、MAC、Android、IOS平台上,一套代码即可实现在多个系统平台上运行程序。
  2. Qt支持图像渲染和OpenGL,可以支持软件渲染,也可以支持GPU硬件加速渲染。
  3. QML提供更简单的基于3D渲染引擎高效的写跨平台GUI的方式。也就是说,HTML5支持的各种特性QT几乎全都支持了,如下图:
    在这里插入图片描述
  4. QT提供了一系列丰富的功能库,涵盖了图形界面、网络通信、数据库、多媒体、XML处理等多个领域。
  5. Qt一共提供了两个版本,一个是用于商业化的商业版本,另外一个是为广大学习者和程序员提供的开源版本。这两个版本的功能差异很小,开发人员在遵循GPL协议的前提下完全可以使用开源版本来开发项目。

3.劣势

  1. Qt对Windows、Linux、Mac平台支持很好,但是对于Android、iOS、UWP等平台的支持目前还不是很完美。因为使用Qt来进行手机应用开发,制作出来的成品无论是界面、系统资源调用还是稳定性,肯定不如使用原生开发环境开发的要好。因此实际上还是很少人选择使用QT去开发Android和IOS应用。
  2. Qt的商业版权问题。如果公司用 Qt 开发闭源商业桌面软件,在 Windows/Mac/Linux上,可以使用动态库链接方式,遵循 LGPL 协议,是不用付费的,也不用开源你的代码。只需在你的商业软件的 about 等一些小角落,说明你使用了 Qt,遵循 LGPLV3 协议即可,你公司就可以开发闭源的商业软件。但是,如果使用静态库链接的方式开发 Windows/Mac/Linux上的闭源商业桌面软件,就要付费使用了,付费价格是 一年 3950 美元,三年 8400 美元。

2.NET Core+Vue

1.简介

.NET Core是一个通用的跨平台软件开发框架,它允许开发人员构建各种软件,包括Web,桌面,移动,云,游戏,物联网等。主要特性包括开源、跨平台、现代、灵活、轻量级、快速、友好、可共享。

Vue.js 是一个用于构建用户界面的 JavaScript 框架。

2.优点

1.ASP.NET Core可以灵活搭配各种前端框架,比如可以搭配Vue来实现前后端分离,可以搭配使用k8s,docker容器这些更令人着迷的新技术。
2. 使用.NETCore开发基于Web技术的应用程序,可以在WIndows、Linux、Macos、Android上以网页的方式运行。

3.Flutter

1.简介

Flutter是一种用于构建用户界面的工具包,可以创建高度定制化的、响应式的移动应用。它包括了丰富的UI组件库、强大的渲染引擎和一套先进的开发工具,使开发者能够快速构建现代化的移动应用。

2.优点

1.性能强大、流畅。
2. 支持插件,支持原生系统调用。
3. 开发者可以使用Dart语言只编写一次代码,然后将其编译到多个平台上,包括Windows桌面、Linux桌面、Android和iOS。

3.缺点

1.脱离不开原生,开发人员需要具备原生(Android、iOS)基础开发能力。
2. 原生集成第三方SDK后,兼容性适配很头疼。
3. 非真正跨平台,Flutter对Android和IOS开发友好,对WIndows开发不友好。Windows平台上的Flutter应用实际上只是Win32应用。如果想编写特定于平台的代码,就必须使用C++编写代码。然而,使用C++的NuGet包数量非常少。如果你想使用特定于平台的功能,就需要花费大量时间在Windows上用C++重新实现这些功能。参考链接:Windows版Flutter应用开发体验远达不到Android和iOS的水平

4.Maui

1.简介

MAUI是微软最近2年新推出的一种跨平台应用程序的开源开发框架。

2.优点

  1. MAUI构建在.NET生态系统的基础上,可以利用.NET的丰富工具和库来加速开发过程。
  2. 开发人员可以编写一次UI代码,并在不同平台上复用,加快了开发速度并降低了代码复杂性。

3.缺点

  1. 用vs搞MAUI工程,经常出现编译报错、清理工程后再次编译才成功的现象。另外,编译速度也很慢。
  2. 使用Maui编写的代码可以再WIndows、Macos、Linux、IOS上运行,但无法在Linux上运行,无法做到真正跨平台。
  3. 文档不完整,平台刚出来,文档还不够完整,特别是中文资料。
  4. 社区支持不足:MAUI是一个相对较新的框架,开源的解决方案、案例比较少。

5.Avalonia

1.简介

Avalonia是.NET的一个跨平台UI框架,提供了一个灵活的样式系统,支持广泛的操作系统,如Windows、Linux、macOS、Android、iOS。

2.优点

  1. Avalonia的语法是比较适合WPF开发者的,前台是xaml界面,后台是C#代码,熟悉WPF的开发人员可以很快上手Avalonia开发。
  2. 跨平台效果比较好。

3.缺点

  1. dll比较多,资源占用比较大,简简单单的应用就要占用100多M的内存。
  2. 商用要收费。
  3. 国内使用人数较少,中文资料较少。

6. Cordova

1.简介

Cordova 是一个基于 Apache 的开源框架,可以使用 HTML、CSS 和 JavaScript 创建移动应用程序,支持多个平台,包括 Android、iOS、Windows 和其他移动操作系统。

2.优点

  1. 使用前端技术(例如 HTML、CSS 和 JavaScript)进行开发,易于学习。
  2. 可以在多个平台上构建应用程序,并且可以通过插件扩展功能。

3.缺点

  1. 应用程序性能可能不如其他跨平台框架。
  2. 用户界面无法与原生应用程序媲美。

7.Electron

1.简介

Electron 是一个用于构建跨平台桌面应用程序的开源框架,允许开发者使用 JavaScript、HTML 和 CSS来构建应用程序,支持 Windows、MacOS 和 Linux。

2.优点

  1. 具有强大的支持和社区。
  2. 可以使用前端技术进行开发,易于学习。
  3. 可以构建跨平台桌面应用程序。

3.缺点

  1. 应用程序大小可能较大。
  2. 性能可能不如原生桌面应用程序。

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

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

相关文章

分享一下怎么做一个房间预定链接

在旅游行业中,房间预定是非常重要的一环。随着互联网的普及和旅游业的发展,越来越多的人选择在网上预订房间。本文将介绍如何制作一个房间预定链接,以及推广该链接的方法和策略,帮助读者更好地了解房间预定的需求和实现方式。 一、…

隧道代理 vs 普通代理:哪种更适合您的爬虫应用?

前言 随着互联网的普及,爬虫技术在多个领域得到广泛应用。在进行爬虫开发时,代理服务器是不可或缺的工具之一。代理服务器可以隐藏客户端的真实 IP 地址和位置,从而保护客户端的隐私,同时通过代理可以绕过一些网络限制和安全机制…

什么是React中的高阶组件(Higher Order Component,HOC)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

迅为itop-3568开发板qt学习手册上新

基于RK3568的QT教程他来了~从C基础到QT编程实例再到项目实战,《iTOP-3568开发板QT学习手册》带你打通QT的任督二脉。 界面布局 3.5.1 水平布局 l Horizontal Layout:水平方向布局,组件自动在水平方向上分布 使用时先选中组件&#xff0…

设计模式中的黄金原则:引领你的代码风格,提升可维护性与扩展性

中国的先贤说过: 有道无术,术可求.有术无道,止于术. 术指的是技能、技术或方法,而道指的是原则、道德、智慧和理念。 西方古代的哲人也说过同样的话: 智慧之路从感性开始,却终极于理性.为什么要说设计原则呢, 因为设计模式通常需要遵循一些设计原则&…

Ant-Design-Pro-V5 :QueryFilter高级筛选组件、Table以及Pagination组件结合实现查询。

需求:根据 分类条件选择不同类型, table表格调取不同接口,展示不同数据。 代码: import React, { useRef, useState, Fragment, useEffect } from react; import { getNoticeInfo, getBannerList, delNotice } from ./service; …

windows系统ntp服务器一键开启

脚本 echo off REM 自动判断权限问题,主动获取管理员权限 echo off >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if %errorlevel% NEQ 0 ( goto UACPrompt ) else ( goto gotAdmin ) …

探索随机森林: 机器学习中的集成学习神器

机器学习 第七课 随机森林 概述机器学习机器学习的主要分类监督学习无监督学习强化学习 集成学习提高准确性增强稳定性提升泛化能力 集成学习的主要方法BaggingBoostingStacking 随机森林的理论基础决策树的基本原理随机森林的生成过程随机森林的优势与局限性 随机森林的实际应…

vue2.0项目中组件和iframe之间如何传值

vue2.0项目中组件和iframe之间如何传值 一、vue组件二、iframe组件 一、vue组件 mounted() {// 注册 message 事件监听器,只注册一次window.addEventListener(message, this.handleFromIframeMessage) }, beforeDestroy() {// 移除事件监听器window.removeEventList…

C#实现数据导出任一Word图表的通用呈现方法及一些体会

疲惫的修改 应人才测评产品的需求,导出测评报告是其中一个重要的环节,报告的文件类型也多种多样,其中WORD输出也扮演了一个重要的角色。 实现方法比较简单,结合分析结果数据,通过WORD模板文件进行替换输出。在实现的…

关于报错java.util.ConcurrentModificationException: null的源码分析和解决

一般有这种问题,方法中至少会有List或者Map下的至少两个子类,有可能参数类型相同,也有可能不同都有可能触发这个问题!其主要原因是使用了ArrayList进行删除操作或者使用iterator遍历集合的同时对集合进行修改都有可能会出现这个问题 ArrayList属于List下的子类 需要区分的是Li…

qt的一些自绘控件

https://download.csdn.net/download/venice0708/88469835

嵌入式Linux_学习路线+基础知识

嵌入式Linux_学习路线基础知识 一、学习路线 说明:u-boot是一大块学起来需要三到六个月比较耗时,也属于比较落后的知识点,所以暂时不学习,内核也是如此暂时不学习,从应用层入手,先入门再深入 二、Shell指令…

MongoDB 的集群架构与设计

一、前言 MongoDB 有三种集群架构模式,分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。 Master-Slaver 是一种主从复制的模式,目前已经不推荐使用。Re…

ARM | 传感器必要总线IIC

IIC总线介绍 1.谈谈你对IIC总线理解? 1)IIC总线是串行半双工同步总线,主要用于连接整体电路 2)SCL/SDA作用:IIC是两线制,一根是时钟线SCK,用于控制什么时候进行进行数据传输,时钟信号由主机发出; 另一根是数据线SDA,用于进行数据传输,可以从…

C# Winform编程(9)网络编程

网络编程 HTTP网络编程IPAddress IP地址类WebClient类WebRequest类和WebResponse类 WebBrowser网页浏览器控件TCP网络编程TcpClient类TcpListener类NetworkStream类Socket类 HTTP网络编程 IPAddress IP地址类 IPAddress类代表IP地址,可在十进制表示法和实际的整数…

N——>BatchSize 数据维度理解和处理(chun, cat, squeeze, unsqueeze)

数据处理之N——>BatchSize N——>batch_size train_data TensorDataset(torch.Tensor(x_train).double(), torch.Tensor(y_train).double()) train_loader DataLoader(train_data, batch_sizeargs.bs, shuffleTrue, drop_lastTrue) for batch_idx, (inputs, results…

代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。

用JAVA代码编写 704. 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12]…

Haproxy 服务

Haproxy:他也是常用的负载均衡软件 nginx 支持四层转发,七层转发 haproxy 也是四层和七层转发 LVS的DR和NAT都是基于四层转发 都是基于流量的转发。 tun:四层和七层都有。 基于四层的转发: 1,lvs 2,nginx 3&…

JAVA代码审计-纵向越权漏洞分析

查看这个cms系统后台管理员 添加用户的页面 点击添加管理员 这个模块只有管理员拥有,普通用户没有这个模块。 打开源码分析是否存在越权漏洞。 ------------------------------------------------------------------------------------------------------------ …