6 ms·
> If you’re making a native app, your tech stack choices are pretty limited. On the macOS side, you’ll use Xcode, Swift, and AppKit. On Windows, you’ll use Visu
by flukus 9y ago
> If you’re making a native app, your tech stack choices are pretty limited. On the macOS side, you’ll use Xcode, Swift, and AppKit. On Windows, you’ll use Visual Studio, C#, and WPF or UWP.
I'm not sure they know what native means because c# is not native code and WPF is not a native UI.
> To maintain parity across the codebases, we had to implement and design the same features twice. If we ever wanted to add Linux support, we’d have to do it all a third time. All this meant we had twice the work, twice the bugs, and far less time to build new features.
Nothing forced them not to share logic from the start, they could have done that and still had a native UI on each platform. It only doubles the work if 100% of the work is in the UI.
- pjmlp 9y agoC# compiles to native code since Windows 8, when targeting store applications.
- microcolonel 9y agoYeah, I'm genuinely surprised that "four native developers" didn't realize that there is one native language which works great on all three platforms, and has direct bindings to all of the platform UI toolkits...
- glandium 9y agoYou mean several native languages with multiple multi-platform ways to create native UI.
- flukus 9y agoThere isn't one that I know of. A language like c++ though would compile to a native library on each platform and allow them to share logic between 3 front ends in the same or a very similar language.
- microcolonel 9y agoThat's mostly what I meant. I don't particularly think it's a good idea to share UI code between platforms as different as macOS and Windows. I'm sure there will be serious integration regressions with the new version.
- mal34 9y agoThe only env. i know is Lazarus-ide and Freepascal
- paulddraper 9y ago> c# is not native code Correct. C# does not ahead-of-time compile to hardware machine code (e.g. x86). > WPF is not a native UI How do you classify "native" vs "non-native" UI?
- pjmlp 9y agoSure it does. Ever heard of NGEN, Mono-aot, .NET MDIL, .NET Native?
- flukus 9y agoTo what degree are they native? I wouldn't consider something native just because it bundles the VM into the exe.
- pjmlp 9y agoTo the same degree as C is native, there isn't any VM doing JIT compilation. All straight sugar free Assembly instructions. Now if you mixing the notions of VM and runtime, even C has a runtime called crt0 on most UNIX systems.
- flukus 9y ago> Now if you mixing the notions of VM and runtime, even C has a runtime called crt0 on most UNIX systems. I was mixing them up. The line seems be kind of blurry though once you start embedding garbage collectors though, then again the GC could just as easily be in an external library.
- dleslie 9y ago> How do you classify "native" vs "non-native" UI? Not OP, but presumably WPF can be considered non-native because it relies upon the .Net stack.
- flukus 9y agoNot just .net (I think it's all c underneath), I'd consider winforms with c# to be a native UI (but not native code) because it's just a .net wrapper around win32.
- esrauch 9y ago> c# is not native code and WPF is not a native UI "Native" confusingly has two different commonly used meanings. The one you seem to think is the only meaning distinguishes VM from non-VM runtime code (where C# is non-native). This meaning is the N in Android NDK. The other common usage is "the preferred local platform specific language and dev stack", eg "A native Android app" which usually means "written in Java compiled to dalvik/art" distinguishing from a webapp or an app that is just a packaged webview.
- pyrophane 9y agoI always interpret "native" to mean "without the use of an intermediary virtual machine." I assume my definition is overly simplistic, but am I incorrect?
- flukus 9y agoAndroid is a bit weird because the platform is the VM that you're targeting. The same goes for Chromebooks, html and JavaScript are native there.
- niftich 9y agoThe terminology for "native" used in the blog post is inexact (actually, incorrect), but consistent with how the casual usage of the term has drifted due to the competition from the 'web technologies' stack. In this usage, "native" means non-webview; and/or non-HTML5/JS/CSS-bundled-with-the-entire-browser-runtime. Often it's also a byword for the platform-preferred first-party stack, making the argument somewhat tautological: of course there's a limited selection of first-party preferred stacks on every platform. I'm guessing this usage is a contraction of the term "platform-native".
- shakna 9y ago> In this usage, "native" means non-webview I wonder what the authours would think of C++, Qt and webviews?