Показали в одном чате как умельцы с помощью https://cheerpj.com затащили Minecraft и IntelliJ IDEA в браузер. Указываешь .jar, подключаешь либу и готово. Конечно же работает через #WASM.

И конечно же я попробовал затащить редактор #OpenStreetMap написанный на Java (JOSM). TLDR; Оно работает! [1] Но есть нюансы:

- Заявляется поддержка Java 8 и 11. На практике JOSM, собранный под Java 11 через него не запустить. То из недр Files.сreateTempFile вылетает что-то, то из библиотек. Удалось допатчить до отсутствия исключений, однако интерфейс так и не появился.

- Пришлось брать последнюю версию JOSM для Java 8 и черри-пикать критичные коммиты (слава Open Source за эту возможность).

- CORS. Если это важно, то либо отключать расширениями [2], либо настраивать их проксю. Прокся также нужна будет, если приложение ходит по UDP.

- Cheerpj — продукт коммерческий, но бесплатен для личного использования. Однако у них есть открытые проекты для запуска бинарей [3]

Если у вас завалялись Java-апплеты, то можете их воскресить :)

[1] https://github.com/deevroman/web-josm
[2] https://webextension.org/listing/access-control.html
[3] https://github.com/leaningtech

Run Java in Modern Browsers | Java to HTML5 | CheerpJ

CheerpJ is the only solution to run any large-scale, unmodified Java applications, applets, or libraries in modern browsers.

CheerpJ
GitHub - deevroman/web-josm: JOSM in browser!

JOSM in browser! Contribute to deevroman/web-josm development by creating an account on GitHub.

GitHub
Golang Weekly Issue 552: April 30, 2025

Another take on #wasm debugging, previous one was over-complicated 😅

I wanted a way to embed comments in generated WebAssembly code, to orient myself when stepping thru disasm'd code in the dev tools.

Turns out named globals is a handy trick for that!

1/x

Ok, so I’m now a few months into building a custom (almost from scratch) #Lua implementation for @silverbulletmd dubbed #SpaceLua (for reasons).

A few things that panned out really well, and a few surprises that I did not anticipate:

0. General recommendation: don’t do this. Don’t just implement a full programming language because you think it’s a good idea. I also told this myself. It didn’t work. It was a “I’ve don’t this stuff before, I can do it again” type of deal. I was mostly right. But don’t do this.

1. Initially I opted for a custom interpreter (implemented in TypeScript) because I wanted to expose asynchronous (promise based) JS APIs to Lua, and I didn’t see how to do that nicely with a #Wasm-compiled version of the official Lua interpreter. Also I felt that having full control of the running system would turn out to be valuable down the line (I was right on this one).

2. I got the parser part mostly free. I found an existing Lua grammar for the Lezer parser library that #SilverBullet uses. Had to add a few things and had some struggles. This part was pretty seamless with a few glitches here and there.

3. Implementing the core interpreter runtime was actually quite easy. Lua is a mostly simple and small language. Again, I’ve done this before so that helped. Writing good test suites makes this doable and AI helped a lot generating those test suites (because it knows Lua).

4. What I didn’t anticipate is the pain in implementing the full Lua API, especially the `string.*` one which has its own pattern matching language (similar but distinct from regular expressions), which honestly I could do without. But it’s there, and people want to use it, so I need a full implementation. Issues keep coming up, though.

In exactly one week from today I will be at GoMAD in Madrid, giving the first ever talk in Spanish about
@wasmvision ¡Vamos!

https://www.meetup.com/go-mad/events/307495616/

#golang #tinygo #webassembly #wasm #computerVision #openCV

Go Talk: Ojos que ven - Vision Artificial con WebAssembly, Go, y TinyGo, Wed, May 7, 2025, 7:00 PM | Meetup

Históricamente, crear una aplicación de visión artificial que pueda ejecutarse en diversas máquinas y tipos de hardware ha sido muy difícil. ¡Parece un excelente caso de us

Meetup
@wildflyas #Ai Feature Pack 0.5.0 is out with support for bearer authentication for #MCP server, support for #WASM binaries injection and ability to expose them as MPC tools #chicory https://github.com/wildfly-extras/wildfly-ai-feature-pack/releases/tag/0.5.0
🌖 在 WASM 上運行 Clojure
➤ Clojure 在 WebAssembly 上的初步探索
https://romanliutikov.com/blog/running-clojure-in-wasm
這篇文章探討了在 GraalVM v25 之後,Clojure 程式碼得以編譯並在 WebAssembly (WASM) 上運行的可能性。儘管 WASM 後端尚處早期階段,目前不支援多執行緒和網路功能,但單執行緒的運算程式已經可以順利執行。作者分析了編譯後的二進位檔大小、效能表現,並展示了 Clojure 與 JavaScript 的互通性,證明瞭 Clojure 可以在瀏覽器中運行。然而,文章也指出 WASM 版本的效能相較於原生映像檔(Native Image)和 ClojureScript 略遜一籌。
+ 哇,這太酷了!能在瀏覽器裡直接跑 Clojure,想想就覺得很有趣。
+ 效能方面還有很大的改進空間,但作為一個早期版本,已經令人印象深刻。希望未來能看到更多優化。
#Clojure #WASM #GraalVM #效能分析 #互通性
Running Clojure in WASM | Roman Liutikov | Software Engineer

Giving software away for free | Lobsters

🚀✨ Wow, folks! Now you can #bloat your #browser with #Clojure, thanks to GraalVM's "support" for WASM! Who needs threads or networking anyway? Just bask in the glory of a "Hello, World" that eats RAM for breakfast. 🥴💻
https://romanliutikov.com/blog/running-clojure-in-wasm #GraalVM #WASM #HelloWorld #HackerNews #ngated
Running Clojure in WASM | Roman Liutikov | Software Engineer