2

.NET 6 预览版发布,Python的跨平台地位受到挑战

 3 years ago
source link: https://blog.csdn.net/nokiaguy/article/details/113980229
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

.NET 6 预览版发布,Python的跨平台地位受到挑战

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

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

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

format,png

目前主流的跨平台技术如果从语言上分,可分为如下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是一种技术通吃的。看来广大程序员朋友又要学新东西了!

format,png

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。

format,png

5.  混合UI技术

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

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

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

format,png

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

format,png

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

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

- EOF -

format,png

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

推荐阅读  点击标题可跳转

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

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

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

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

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

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

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

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

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

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

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

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

format,png


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK