自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于WebAssembly的10個熱門語言項目

譯文
開發(fā)
從反應快的 Web 應用程序到Python 數(shù)據(jù)科學,這些編程語言和編譯器項目為 WebAssembly 的前景提供了 10 個不同的方向。

 [[404713]]

【51CTO.com快譯】今天的 Web 應用程序遠沒有原生桌面應用程序響應快,但就是WebAssembly的承諾可以做到。 

WebAssembly 是一種低級、類匯于匯編語言,具有緊湊的二進制格式,在 Web 瀏覽器中以接近本機的性能運行。與此同時,WebAssembly 為 C/C++、C#、Rust、Go、Kotlin、Swift 等編程語言提供了一個可移植的編譯目標。

WebAssembly 被譽為提高 Web 應用程序性能并允許在瀏覽器應用程序開發(fā)中使用 JavaScript 以外的語言的一種方式,它到了 Google、Mozilla、蘋果和微軟
的支持,這些公司都在瀏覽器引擎中使用這項技術(shù)。

WebAssembly 開發(fā)了一系列新技術(shù),包括利用其強大功能的全新編程語言。以下是在 WebAssembly 基礎(chǔ)上開發(fā)的 10 個語言項目。

Binaryen 

Binaryen是用于WebAssembly的編譯器工具鏈基礎(chǔ)結(jié)構(gòu)庫。Binaryen 用 C++ 編寫,旨在使匯編語言易于編寫、高效、快速。它在頭文件中有一個 C API,并且可以從 JavaScript 中使用。輸入可以采用類似 WebAssembly 的形式,但是對于喜歡它的編譯器的開發(fā)者來說,通用控制圖也是可以接受的。

Binaryen 的內(nèi)部 IR(中間表示)使用緊湊的數(shù)據(jù)結(jié)構(gòu),并利用所有 CPU 內(nèi)核進行并行編碼和優(yōu)化。IR 也可以很容易地編譯成 WebAssembly,因為它本質(zhì)上是 WebAssembly 的一個子集。特定于 WebAssembly 的優(yōu)化是,提高了代碼數(shù)量和效率,使得 Binaryen 本身可以作為編譯器后端使用。

Blazor WebAssembly

Blazor WebAssembly 是一個框架,用于使用.NET構(gòu)建交互式、客戶端、單頁web應用程序,并將這些應用程序托管在基于 WebAssembly 的 .NET 運行時上的瀏覽器(包括移動瀏覽器)中。不需要插件或?qū)⒋a重新編譯成其他語言。運行時允許 .NET 代碼通過 WebAssembly 的 JavaScript API 訪問瀏覽器功能。

當 Blazor WebAssembly 應用程序在瀏覽器中運行時,C# 代碼文件和 Razor 文件將被編譯成 .NET 程序集,這些程序集與 .NET 運行時一起下載到瀏覽器。由于 .NET 代碼是在瀏覽器的 JavaScript 沙盒中的 WebAssembly 上執(zhí)行的,所以它會受到保護,以防客戶端計算機上的惡意操作。Blazor WebAssembly 應用程序可以獨立部署,也可以在服務器端支持下進行部署。

Cheep

Leaning Technologies 的Cheerp被定位為用于 Web 的企業(yè)級 C/C++ 編譯器,將 C 和 C++ 編譯為 C++ 17,并將其集成到 WebAssembly、JavaScript 或兩者的組合中。Cheerp 集成到LLVM/Clang 基礎(chǔ)結(jié)構(gòu)中,通過定制優(yōu)化來提高性能并最小化編譯輸出的大小。Cheerp 主要用于將現(xiàn)有的 C/C++ 庫和應用程序移植到 HTML5,Cheerp也可以用來編寫 Web 應用程序和 WebSasMeLabess組件。Cheerp 是在開源和商業(yè)許可下提供的。

CheerpJ

CheerpJ是基于被譽為“Web 的 Java 編譯器”的 LLVM 編譯器上運行的,它可將任何 Java 客戶端應用程序轉(zhuǎn)換為 WebAssembly、JavaScript 和 HTML,從而使 Java 客戶端應用程序能夠在瀏覽器中運行。CheerpJ 使用三個組件:AOT編譯器、WebAssembly 和 JavaScript 中的運行時以及 JavaScript DOM 互操作性 API,從 Java 訪問 DOM。使用 CheerpJ,可以使用 AOT 編譯器編譯 JAR 檔案文件。CheerpJ 不需要任何服務器端支持。

Emscripten

這個開源編譯器工具鏈將 C 和 C++ 或任何其他語言使用 LLVM 編譯器技術(shù)編入WebBaseMalk中,用于部署在Web、NoDE.JS或WASM運行中。Emscripten 編譯器 emcc 還可以具有JavaScript的功能,為編譯后的代碼提供 API 支持。Emscripten 已經(jīng)被用來將代碼庫列表轉(zhuǎn)換為 WebAssembly,包括商業(yè)代碼庫,如 Unreal Engine 4 游戲引擎和 Unity 3D 平臺。Emscripten 支持C 和C++ 標準庫、C++ 異常和OpenGL/WebGL 圖形命令。用于安裝Emscripten 工具鏈(emcc、LLVM 等)的Emscripten SDK可以在Linux、MacOS 和Windows 上使用。

Forest 

Forest 是一種可編譯為 WebAssembly 的函數(shù)式編程語言。開發(fā)人員Nick Johnstone說,F(xiàn)orest 背后的目標是提供一種語言,使創(chuàng)建復雜、交互式和功能性的web應用程序變得更加容易。

目前,F(xiàn)orest被描述為“pre-alpha、實驗性、概念研究軟件”,F(xiàn)orest 具有靜態(tài)類型、模式匹配、不可變的數(shù)據(jù)結(jié)構(gòu)、多種語法和自動代碼格式。開發(fā)中的第一個語法受到 Elm 和 Haskell 的啟發(fā)。

Forest 語言的設(shè)計原則包括易于協(xié)作、盡可能簡單的測試以及在結(jié)構(gòu)和語義上達成一致,同時在語法上達成一致。Johnstone 努力使 Forest 反應足夠快,以構(gòu)建復雜的游戲,使普通的web應用程序變得“非???rdquo;。

Binaryen

該項目網(wǎng)站稱,Grain語言為21世紀帶來了學術(shù)語言和功能語言的特點。通過Binaryen工具鏈和編譯器基礎(chǔ)設(shè)施編譯到 WebAssembly上 ,Grain 可以在瀏覽器、服務器甚至任何地方運行。沒有運行時類型錯誤,也不需要類型注釋。Grain 工具鏈具有 CLI、編譯器、運行時間和標準庫,作為單個二進制文件提供。開發(fā)人員只需要從Node.js 和 Yarn的源代碼上構(gòu)建 Grain,Linux、MacOS和Windows都可以使用二進制文件。

JWebAssembly

JWebAssembly 是一種Java字節(jié)碼到WebAssembly編譯器,它以 Java 類文件為輸入,并生成 WebAssembly 二進制格式(.wasm 文件)或文本格式(.wat 文件)作為輸出。目標是使用 WebAssembly 在瀏覽器中本地運行。理論上,JWebAssembly 可以編譯任何可以編譯為 Java 字節(jié)碼的語言,例如 Clojure、Groovy、JRuby、Kotlin 和 Scala,有待測試。

JWebAssembly 尚未準備好生產(chǎn)。盡管 JWebAssembly 1.0 版本所需的所有內(nèi)容都已實現(xiàn),但測試仍有待完成。版本1.0 路線圖要求提供諸如 Java 字節(jié)碼解析器、測試框架和 Gradle 插件等功能。I-Net Software 預計今年將發(fā)布 JWebAssembly 1.0。

Pyodide

Pyodide 項目最近從Mozilla 變成了到一個獨立項目,它將 Python 和 Python Scientific堆棧編譯到 WebAssembly,將 Python 3.8 運行時間、NumPy、SciPy、Matplotlib、Scikit-learn 以及其他幾十個包架構(gòu)到瀏覽器中。Pyodide 提供了JavaScript 和 Python 之間對象的透明轉(zhuǎn)換,并允許 Python 訪問 Web API。Pyodide 始于 2018 年,是 Iodide 項目的一部分,用于在瀏覽器中進行數(shù)據(jù)科學研究。Pyodide可以從瀏覽器中的REPL試用。

虛擬機(TeaVM) 

TeaVM是Java字節(jié)碼的一個提前編譯器,它可以使出WebAssembly和JavaScript在瀏覽器中運行。但是,請注意 ,WebAssembly 支持目前還處于試驗階段。與GWT(Google Web Toolkit)一樣,TeaVM 允許開發(fā)人員用 Java 編寫應用程序并將它們部署為 JavaScript。與 GWT 不同,TeaVM 使用編譯后的類文件,而不是源代碼。此外,TeaVM依賴于javac、kotlinc和scalac等現(xiàn)有的編譯器,因此可以像編譯 Java一樣編譯Kotlin和Scala代碼。TeaVM 主要是一個 Web 開發(fā)工具;它不是為了在 Java 或 Kotlin 中獲取大型代碼基并生成JavaScript而設(shè)計的。TeaVM 子項目 Flavour可以作為編寫單頁web應用程序的框架。

【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

 

責任編輯:梁菲 來源: InfoWorld
相關(guān)推薦

2021-06-11 09:00:00

語言WebWebAssembly

2022-06-22 10:04:29

JavaScriptRust語言

2019-11-11 08:26:13

PythonGithub開源項目

2019-11-05 09:54:50

Github開源項目編程

2020-11-04 10:35:05

Github開源項目編程

2020-11-05 13:58:31

JavaScript開源項目Github

2020-11-02 11:28:09

開源項目GitHubPython

2015-08-21 10:18:17

熱門編程語言Java

2015-09-10 10:59:34

大數(shù)據(jù)趨勢

2019-11-17 23:12:01

JavaScript開源項目Github

2021-04-19 10:00:04

Web開發(fā)項目

2021-08-30 08:00:00

編程語言WebAssembly安全

2019-11-07 22:59:10

Java開源項目Github

2020-11-09 10:15:57

Python開源項目GitHub

2021-01-12 11:11:16

IT技術(shù)IT技術(shù)職位技能

2020-03-17 08:50:41

Java 開發(fā)者工具

2024-02-19 00:00:00

前端開源項目

2018-11-21 14:30:52

GitHubJavaScript開源項目

2019-11-12 16:44:50

Go語言泛函編程設(shè)計

2022-11-27 21:54:34

TypeScrip開發(fā)Github
點贊
收藏

51CTO技術(shù)棧公眾號