4 ms·
I don't code desktop software at this time, but as a user of desktop software I will always look for native programs first, i.e. for software written in the sam
by old-gregg 17y ago
I don't code desktop software at this time, but as a user of desktop software I will always look for native programs first, i.e. for software written in the same ecosystem as the operating system. And only if its not available, I will accept Mono/JVM-based implementation.
The reason is simple: shared libraries. This is why Safari starts up so freakishly fast - because most of the runtime it uses has already been pre-loaded by other OSX apps written in Objectve-C. Even before I launch Safari most of it is already in memory.
This is also why Microsoft Office launches nearly instantly, which is really impressive, considering its size and complexity (compare that to JVM-based Eclipse).
.NET and especially JVM-based software share nothing. When they start, they need to load their own private copies of memory manager, JPEG decoding, ZIP compressing, console printing, file/network I/O and many other megabytes of stuff I already have in RAM, provided by the OS.
The solution IS NOT to keep coding in C family forever. The solution is to integrate a VM into an operating system (Symbolics). There is no reason to have more than one threading manager, garbage collector and JIT compiler loaded in a computer memory at any given time. Not only it will provide tremendous increase in programmers productivity, but it will also drastically simplify interprocess communication, increase availability and accessibility of libraries and save on RAM big time. Google's Android (seems like) is exactly that: custom JVM promoted to an OS status.