Jspaint.exe – JS Paint as a cross-platform native desktop app
github.com
github.com
This isn’t meant as a criticism against this project though. Just that “native desktop app” means something specific and that’s not what this is.
honest question - what does it mean? Is a Qt app "native"? Or does "native" just mean "any language other than javascript"?
As a rule of thumb: If it is compiled for a specific target architecture, it's native code. If not, it's not and you need some other native code to run/interpret your non-native code.
I think of it like this: What does *my code* target?
For example, if it targets x86_64, it's native (at least on x86_64). If it targets cpython (the python interpreter), then it's not native. The fact that cpython is native is irrelevant. Same with this project - it targets the browser's JS engine, V8.
Hope that
P.S: I don't think downvoting without commenting is constructive.
The build model isn't the whole story as to whether a GUI counts as native. We don't much care whether Electron uses a caching JavaScript JIT, when discussing whether Electron UIs should be called 'native'.
'Native GUI' is one of those imprecise/overloaded terms that can't really be given a single definition. It could be understood to mean written using the language and toolkit preferred by the target OS, or it could just mean uses the GUI toolkit preferred by the OS, or these days it might be understood to mean doesn't use web technologies. Using the latter definition, even a JavaFX program might count as 'native'.
Native, as far as I understand, tends to mean it's designed to run on that specific platform i.e. not cross-platform. Anything that is cross-platform is by default, not native.
You can also have applications that some might describe as native but they don't use the host OS's graphical widgets (for example using GTK+ on Windows). I think that's acceptable if you're using other host APIs eg for sound, multi-threading, file system access, etc. It should be clear that in those instances it's a native application with non-native widgets. The main reason I'm happy to accept that edge case is because of my previous history in game development. But for desktop applications some are stricter.
Web applications are not regarded as "native" because they all run inside a virtual machine (the browser) whereas the browser would be a native application.
What this does is pretty much exactly the same as Electron except instead of bundling Chromium with the website, it starts a webserver and then forks an existing Chrome install to access that local webserver. Either way it's still a web application rather than native application. However the benefit with this model is you arguably get some memory savings by not having to run multiple instances of Chromium.
For comparison, the original Win9x mspaint.exe is 300KB, and if you thought that wasn't a fair comparison because that still needs the OS libraries etc., you can strip down the entire OS that boots and runs it to <5MB:
http://web.archive.org/web/20090209050149/http://www.etek.ch...
> I guess I'm just in shock. Usually creating a new cool thing on the internets takes me days and stress.
Good on you OP. You made something and put it out there. That's already different from the vast majority of us who mostly just consume. Well done, you did pretty good. GraderJS looks interesting too. :)
https://github.com/i5ik/graderjs
It runs server and downloads Chrome (if not available already) and starts it in app mode.
On KDE, Qt is native, but less so on Windows, even though it goes to great lengths to look like it.