跨平台是最近几年非常火的主题,因为现在的各种平台简直太多了。Windows、macOS、Linux、Android、iOS、Web、小程序、IoT等等。以后还可能会不断增加。没人希望挨个为每个平台开发应用,所以就希望开发一次,就同时适应各种平台。目前支持跨平台开发的技术非常多。这里先对这些主要的跨平台技术做一个总结,然后再详细谈谈.NET 6 Preview1。

目前Python被认为是最牛叉的全栈开发语言,可以用一种语言开发桌面、移动和Web应用,不过随着.NET 6的发布,以及其他跨平台技术的发展,Python也将迎来更大的挑战。下面就看看本文说了些什么。

1.  跨平台领域的六大高手齐聚,来一场华山论剑如何

目前主流的跨平台技术如果从语言上分,可分为如下6种编程语言,另外,这里的跨平台,主要是指三大平台:桌面、移动和Web。

(1)Java

(2)Dart

(3)Python

(4)JavaScript

(5)C++

(6)C#

这6个编程语言背后所涉及到的技术相当复杂,这里就不详细介绍了,只列出开发相关平台的技术。

(1)Java(包括运行在JVM上的其他编程语言)

桌面:Swing、SWT、JavaFX

移动:Android(Java、Kotlin)、iOS(RoboVM、XMLVM等)

Web:Java EE

Apple官方并不支持Java开发iOS App,但通过一些框架,可以进行曲线救国。例如,RoboVM可以将Java Bytecode转换为iOS的LLVM字节码,也提供一个Java到Objective-C的桥,可像其他Java对象一样来使用 Objective-C对象。且支持大多数UI Kit。

XMLVM可以将Java代码编译为Objective-C,在iOS平台上运行。

至于Web应用,前端肯定是JavaScript,这里跨平台主要指的后端,也就是Web框架和相关技术(JSP、Servlet等)。

(2)Dart(Google的亲儿子)

桌面、移动、Web:Flutter

Google为了掌控开发入口,设计了Dart语言。由于Dart语言与JS的编程方式类似,例如,不支持多线程,使用Future、wait等处理异步和等待。所以从Dart转换到JS是非常容易的,这也是为什么基于Dart的Flutter可以三大类型应用通吃的原因,Google的野心啊!

(3)Python

桌面:PyQt5(第三方)、PySide6(QT的亲儿子)

移动:kivy(Android)、pybee(iOS)

Web:Flask、Django

(4)JavaScript

桌面:Electron、NW.js

移动:各种基于H5的框架、RN、uni-app等

Web:Node.js

(5)C++

桌面:QT、wxWidgets等

移动:QT也能开发Android和iOS App哦,另外,Android可以通过NDK嵌入C++、iOS也可以与C++混合编程

Web:尽管C++不是做Web的最佳选择,但Go语言都可以做Web应用,凭啥我大C++不能呢!有很多基于C++的Web框架,大家可以自己查。

(6)C#

桌面、移动、Web:.NET 6、7、8、9、....、N、N  + 1

从这6种语言对应的跨平台技术来看,只有基于Dart的Flutter和基于C#的.NET是一种技术通吃的。看来广大程序员朋友又要学新东西了!

2  .NET 6继续在统一的道路上越走越远

我们知道,.NET 5是第一次真正的跨平台大统一,取消了原来的.NET Core的命名规则,以后将会用.NET 5、.NET 6、.NET 7等形式命名,类似于Java8、Java9等方式。所以以后如果提到.NETX,不要再认为只能运行在Windows下了,macOS和Linux都可以运行。这也标志着.NET正式进入跨平台时代。

   .NET 6 在 .NET 5 的统一的基础之上,继续借助 Xamarin 扩展到 Android、iOS 和 macOS。此外,.NET 6 还扩展了 Blazor 的适用范围,开发者可以通过 Blazor Hybrid 开发混合的跨平台客户端应用。

       可能很多同学没听过Blazor,这是一个使用.NET生成交互式客户端Web UI的框架,说白了,就是可以用C#代替JavaScript设计页面。

3. .NET 6支持的平台

.NET 6 LTS 将在 2021 年 11 月正式发布,除了目前支持的平台之外,还将支持以下平台:

(1)Android

(2)iOS

(3)Mac 和 Mac Catalyst(x64 和 M1)

(4)Windows Desktop 的 ARM64

4. 跨平台GUI框架MAUI

.NET MAUI (Multi-platform App UI) 是一组现代 UI 框架,在 Xamarin.Forms 的基础上扩展并集成到 .NET 6 中,利用 MAUI 将能够面向 Android、iOS、macOS 和 Windows 等构建应用。

在统一的过程中,将会把 Xamarin.Essentials 库集成到 MAUI 当中,除此之外你将还能容易地利用设备机能,例如传感器、照片库、联系人和存储等等。

.NET 6 Preview 1 中首先包含了 Android 和 iOS 两个平台的 MAUI,可以在此处查看示例项目和安装说明:https://github.com/dotnet/net6-mobile-samples。

未来还将添加 macOS 和 Windows 桌面支持,以及除了 XAML 热重载之外,还将支持 C# 代码的热重载。

对于今天已经在使用 Xamarin 构建应用的开发者,将会提供转换工具和迁移指导帮助迁移到 .NET 6。

5.  混合UI技术

Blazor Desktop 将允许开发者利用 Blazor 技术开发混合客户端程序,将原生 UI 和 Web 技术混合起来构建原生的客户端应用,这有点像Electron和NW.js。

例如你可以直接将 Blazor 作为组件集成到现有的 WPF 应用当中,下面是几个例子:

在 macOS 运行的 Blazor 桌面客户端应用:

在 WPF 中集成 Blazor 的混合应用:

其他技术还包括快速迭代技术,允许在应用运行时修改代码,持续改进的ARM64支持,以及ARM64性能改进。WPF 支持 Windows ARM64 ,macOS ARM64支持、新的指令,以及对Apple新芯片(Apple Silicon)的原生支持。

Python、.NET6或其他跨平台技术,哪一种或哪几种是你的菜呢?

- EOF -

想深入学习Python的同学,可以识别上面二维码进入课程页面

推荐阅读  点击标题可跳转

别找了,这可能是全网最全的鸿蒙(HarmonyOS)刷机指南!

别再争论鸿蒙是不是套壳了,先在鸿蒙真机上运行个App再说

惊喜不断,鸿蒙IDE全新升级,4大功能助力App开发!

这样合并Python字典,可以让程序的运行效率提高4倍

Python字典不是不可以排序,是你方法没用对!

文件侠告诉你,Python复制文件的N种姿势!

Python代码可以加密吗?Python字节码告诉你!

使出Python的六脉神剑,让Python拥有无限扩展性

看我用元类(metaclass)花式创建Python类

你不知道__name__变量是什么意思吗?

Python生成器(Generator)最完美解释

关注「极客起源」公众号,加星标,不错过精彩技术干货

Logo

更多推荐