前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET 6 预览版发布,Python的跨平台地位受到挑战

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

作者头像
蒙娜丽宁
发布2021-03-11 15:41:53
2.9K0
发布2021-03-11 15:41:53
举报
文章被收录于专栏:极客起源极客起源

跨平台是最近几年非常火的主题,因为现在的各种平台简直太多了。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或其他跨平台技术,哪一种或哪几种是你的菜呢?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客起源 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档