quarkusio / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
13.43k stars 2.58k forks source link

Quarkus AWT #29396

Closed TheBlindM closed 1 year ago

TheBlindM commented 1 year ago

Description

Support AWT function:

  Desktop.getDesktop().browse(uri);
  Desktop.getDesktop().open(FileUtil.file(path));

Implementation ideas

No response

mkouba commented 1 year ago

Isnt' this covered by the quarkus-awt extension?

CC @zakkak @Karm

zakkak commented 1 year ago

Isnt' this covered by the quarkus-awt extension?

No, see @Karm's answer in https://github.com/quarkusio/quarkus/issues/29360#issuecomment-1321889149

Karm commented 1 year ago

I would have some use for desktop GUI with Quarkus capabilities under the hood, yet neither Swing nor JavaFX would be my choice. We can perhaps go the https://fiji.sc/ way and use good old AWT or better, fully leverage GraalVM's C interoperability and use https://github.com/ocornut/imgui in a much more interesting way than via JNA/JNI Java bindings https://github.com/SpaiR/imgui-java.

We can leave the issue hanging in here for a while and see :man_shrugging:

TheBlindM commented 1 year ago

I would have some use for desktop GUI with Quarkus capabilities under the hood, yet neither Swing nor JavaFX would be my choice. We can perhaps go the https://fiji.sc/ way and use good old AWT or better, fully leverage GraalVM's C interoperability and use https://github.com/ocornut/imgui in a much more interesting way than via JNA/JNI Java bindings https://github.com/SpaiR/imgui-java.

We can leave the issue hanging in here for a while and see 🤷‍♂️ It seems that the Desktop operation in java awt is not seen in imgui-java

Desktop.getDesktop().open(FileUtil.file(savePath));

I often use cmd instead, but it fails in native

Runtimeruntime = Runtime.getRuntime(); Processprocess = runtime.exec(""cmd.exe /c start " + savePath");

image

TheBlindM commented 1 year ago

Can anyone help?😥

gsmet commented 1 year ago

@Karm if you don't plan on working on this anytime soon, I don't think it's worth keeping the issue open. I don't see anyone else from the team investing time in this and if someone comes with an extension or a blog post, fine, but I don't think keeping this issue open will help.

Now, if you think you will have time to dedicate to this, you can leave it open.

Karm commented 1 year ago

@gsmet

Imgui

I am using https://github.com/ocornut/imgui in C to build a web app via WASM these days. When I'm done, I will take a look at its current Java bindings and how difficult would it be to use GraalVM's C API to bring it to Quarkus. My knowledge of that is very dated, coming from Jarda's talk and his examples https://github.com/JaroslavTulach/matrixultimate.

AWT desktop

I have no plan to spend any of my upstream time on that unless imgui above proves to be an impossible mayhem to do. Both approaches need to bring additional native libraries, so AWT is not magically easier.

Swing

I won't spend any time on Swing and I think it is ill advised anyway unless we throw away almost all AOT benefits.

JavaFX

I won't spend any time on JavaFX, besides it's being covered by Gluon folks...

Sooo....I don't know. The title of this issue is AWT, so I'll close it. I will open another one for Imgui when I have POC.

Karm commented 1 year ago

Can anyone help?disappointed_relieved

Hello @TheBlindM, I am somewhat rusty on my polyglot skills, but I guess the issue is unrelated to Quarkus. It might be the space in "Program Files" being treated erroneously. It is possible to launch a system process from your Java app.

I will close this issue now and kindly ask you to redirect your questions to either our Zulip https://quarkusio.zulipchat.com/# or to the user discussions https://github.com/quarkusio/quarkus/discussions