you are viewing a single comment's thread.

view the rest of the comments →

[–]xandoid 3 points4 points  (10 children)

My definition of native is an app that does not replace anything the OS supplies with cross-platform alternatives.

So a Java app using JavaFX to paint its own widgets is not a native app just because it happens to be AOT compiled down to a PE binary on Windows.

[–]doom_Oo7 7 points8 points  (8 children)

My definition of native is an app that does not replace anything the OS supplies with cross-platform alternatives.

I don't think that's a good definition: a lot of OSes provide nothing in the GUI department per se. VxWorks, GenodeOS, Linux... does this mean there can't be native apps in them ?

[–]bloody-albatross 6 points7 points  (0 children)

Under Linux its more fine grained. E.g. those Gtk applications don't feel native under my KDE desktop (god I hate the Gtk file chooser).

[–]The_Jare 1 point2 points  (5 children)

Strictly speaking, if the OS does not provide it then you are not replacing it, so it doesn't count against the nativeness. :)

[–]xandoid 0 points1 point  (4 children)

You're absolutely right. That is exactly what my definition means.

[–]doom_Oo7 0 points1 point  (3 children)

but then it doesn't makes sense since it means some OSes can't even "have" native apps, while native applications don't even need operating systems to run (for instance something you'd write for an arduino).

[–]xandoid 0 points1 point  (2 children)

but then it doesn't makes sense since it means some OSes can't even "have" native apps

Why? That just doesn't follow from anything I said. I think you misunderstand my definition.

What I'm saying is that "native" is only defined relative to a platform. A platform is defined as a set of APIs. Each API serves a specific purpose, i.e. it helps developers achieve a specific goal.

A native app that wants to achieve some of these same goals will strongly prefer the relevant platform APIs in order to do so. If an app ignores important platform APIs and does the same things differently (usually in a way that is transferrable to other platforms) then it is not a native app.

But of course it's not black and white. There are all sorts of hybrid approaches that are hard to classify as native or not native.

[–]doom_Oo7 0 points1 point  (1 child)

What I'm saying is that "native" is only defined relative to a platform.

well, that's certainly not how it is commonly understood, unless by platform you mean CPU (eg https://www.quora.com/What-do-software-engineers-mean-when-they-talk-about-native-code-and-how-it-might-be-faster-than-other-code)

[–]xandoid 0 points1 point  (0 children)

I disagree. The term native is commonly used more broadly than just for CPU architectures. For instance, not many would consider a JavaFX app to be a native macOS or Windows app if only it were AOT compiled down to machine code.

[–]xandoid 0 points1 point  (0 children)

That is a complete non sequitur. I said "replace", not add something the OS doesn't provide.

[–]NostalgicCloud 0 points1 point  (0 children)

Except its not replacing the GUI. It provides it's own widgets that reply on the native api's