使用 Python 和 BeeWare 进行跨平台开发

了解 BeeWare 库和桥接器如何帮助 Python 开发人员跨平台部署代码。
435 位读者喜欢这篇文章。
Avoiding data disasters with Sanoid

Opensource.com

如果你想为 Android 开发,你必须使用 Java。如果你想为 iOS 开发,你必须使用 Objective C。如果你想为 Web 开发,你必须使用 JavaScript。对吗?

这些可能是这些平台的首选语言,但归根结底,手机和 Web 浏览器都是计算平台,稍加努力,你就可以使用任何你想要的语言。使用 BeeWare 库和桥接器套件,你只需使用 Python。而且,你可以使用相同的代码在所有这些平台上进行部署。

本文预览了我们即将到来的 PyCon US 2017 演讲,Snek in the Browser,该演讲深入探讨了 BeeWare 项目如何使用 BataviaToga 将 Python 用于前端开发。

为什么要选择 Python?

因为我们不必必须使用 HTML 和 JavaScript,我们可以开始将浏览器视为一个平台,我们可以在该平台上交付应用程序,而不是必须编写代码以适应的一组特定技术。 一旦我们接受了这种心态,我们就可以自由地寻找构建 Web 应用程序的各种新方法。

Python 是最容易上手的语言之一,它没有 Java 或 Objective C 的学习曲线。 最近,包括天文学和数据科学在内的许多科学界都选择 Python 作为他们的首选语言。 能够使用他们已经知道的语言来创建他们自己的应用程序,例如基于移动设备的数据记录系统,而无需学习全新的语言,这将对所有这些科学家来说是一项巨大的资产。

它是如何工作的?

唯一在浏览器中原生工作的语言是 JavaScript。 当然,可以使用 Flash、Silverlight 等进行变通,但它们同样容易出现安全和开发问题。 然而,Batavia 使用 JavaScript 来运行 Python。 怎么样? 通过在 JavaScript 中实现 Python 虚拟机。 Python 本身只是一种语言规范。 另一方面,CPython 是大多数人使用的 Python 实现,PyPy 是另一种。 CPython 一旦编译,就会生成你可能在文件系统中看到的那些 .pyc 文件。 这些是大约 100 种不同基本级别操作的组合的字节码表示形式。 实现一种让 JavaScript 理解这些操作如何工作的方法,你就有了一个解释器。

鉴于此,如果我们创建一个基于 JavaScript 的应用程序,它可以获取 Python 字节码并返回与 CPython 实现相同的结果,我们就可以在浏览器中运行 Python。 事实上,你可以在不到 500 行代码中做到这一点,正如 Allison Kaptur 在她的文章“500 行或更少,用 Python 编写的 Python 解释器”中所解释的那样。

诸如 ASM.js 和 WebAssembly 之类的新兴技术,鉴于这些项目提供的性能改进,使得浏览器内语言解释器的前景更加光明。

原生渲染

为了能够使用与移动部署相同的代码来渲染网站,我们需要一个通用的包装器,使我们能够定位这些平台。 这就是 Toga(一种 OS 原生图形用户界面 (GUI) 工具包)的用武之地。 Toga 抽象出不同系统的界面选项。 如果你想创建一个退出按钮,它在 macOS 上的位置与在 Windows 或 Linux 上的位置不同。 它不仅仅是原生系统调用的包装器——它是原生层之上的抽象,捕获了高级用户交互用例。

归根结底,网页和移动屏幕只是在屏幕上渲染字体、形状和线条的位图设备。 HTML 引入了一种关于图形用户界面构建块的新思维方式,但通过巩固我们对在屏幕上放置内容的方式的思考,将这一点抽象到所有平台变得更加简单。

正在进行中,但你可以提供帮助!

整个 BeeWare 套件,包括 Batavia 和 Toga,仍然在开发中。 我们向任何想参与该项目的人提供公开指导。 如果你对该项目做出贡献,无论是代码、文档、编写教程还是帮助其他人做出贡献,你都将赢得一个闪亮的 挑战币

我们将参加 PyCon US 2017 的整个活动,从第一个教程日(不幸的是,我们的教程已经售罄)一直到 sprint。 在主会议期间,我们将在展厅的 103 号展位,所以过来打个招呼,看看我们的硬币和代码有多闪亮。

User profile image.
多年来,凯蒂扮演了许多不同的角色。 她之前曾是多种语言的软件开发人员、多种操作系统的系统管理员,以及许多不同主题的演讲者。 当她没有改变世界时,她喜欢烹饪、制作挂毯,并了解各种应用程序堆栈对表情符号的处理程度。

2 条评论

“最近,许多科学界,包括*占星术*和数据科学” - 对不起?

我的错! 我应该在编辑中注意到这一点。 现在已修复(感谢您向我们指出!)

回复 ,作者:MikeRSwain (未验证)

Creative Commons License本作品已根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.