Why Android sucks, and what's going to replace it 01-08-2018, 07:52 AM
#1
Android is the most widely used smartphone OS in the world, but that doesn't mean that it is good.
The language of choice in Android, is Java. Using Java instead of a native language such as C++ (Sailfish), Objective C (iOS), or Go (Fuschia) results in lots of overhead, causing large losses in performance. The JVM is poorly designed, along with the language that runs on it. The UI is XML-based, which was also a terrible choice.
When writing an Android app, you'll end up needing to make a GUI. When you start making the GUI, you notice that the UI editor isn't a simple drag-n-drop editor like it looks like. You model the UI in XML, and struggle through the UI editor. If you've ever tried making an app for iOS or MacOS with XCode, this would surprise you, since in XCode, UI design is simple and intuitive. When your app is published, you realize that it doesn't work on a specific phone, and you aren't sure how to fix it.
The Android kernel is based on Linux, and is heavily modified. Google could have, and should have used a microkernel, but they went with Linux instead. In a microkernel, it is easy to swap out drivers, and keep the OS modular; it is not this way with monolithic kernels like Linux. The reason for this, is that in a microkernel, the drivers run separately from the kernel; if a driver crashes, it won't bring down the kernel with it. When you have lots of different hardware running the OS, and you aren't writing the drivers, stick with a microkernel. On top of that, because of the amount of modifications to the kernel, Google hasn't been able to keep up with Linux. They are way behind, and their code is based on an old version of Linux.
Go is a language that was made by developers at Google in 2009. Since then, it has been redesigned internally, and is now much more optimized. Go compiles to machine code, so you don't have the overhead of a JVM-style setup. Go is now a nice language, and is good for all kinds of development, including web development.
Fuschia is a new mobile OS that is being developed by Google. It seems to be what will replace Android. It uses a custom microkernel named Zircon (previously Magenta). It seems like it will support some, or all of the following languages: C, C++, Dart, Go, Rust, Python, Swift.
Note, that Java isn't on that list... That's because the JVM sucks.
Link to the Fuschia repo: https://fuchsia.googlesource.com/
The language of choice in Android, is Java. Using Java instead of a native language such as C++ (Sailfish), Objective C (iOS), or Go (Fuschia) results in lots of overhead, causing large losses in performance. The JVM is poorly designed, along with the language that runs on it. The UI is XML-based, which was also a terrible choice.
When writing an Android app, you'll end up needing to make a GUI. When you start making the GUI, you notice that the UI editor isn't a simple drag-n-drop editor like it looks like. You model the UI in XML, and struggle through the UI editor. If you've ever tried making an app for iOS or MacOS with XCode, this would surprise you, since in XCode, UI design is simple and intuitive. When your app is published, you realize that it doesn't work on a specific phone, and you aren't sure how to fix it.
The Android kernel is based on Linux, and is heavily modified. Google could have, and should have used a microkernel, but they went with Linux instead. In a microkernel, it is easy to swap out drivers, and keep the OS modular; it is not this way with monolithic kernels like Linux. The reason for this, is that in a microkernel, the drivers run separately from the kernel; if a driver crashes, it won't bring down the kernel with it. When you have lots of different hardware running the OS, and you aren't writing the drivers, stick with a microkernel. On top of that, because of the amount of modifications to the kernel, Google hasn't been able to keep up with Linux. They are way behind, and their code is based on an old version of Linux.
Go is a language that was made by developers at Google in 2009. Since then, it has been redesigned internally, and is now much more optimized. Go compiles to machine code, so you don't have the overhead of a JVM-style setup. Go is now a nice language, and is good for all kinds of development, including web development.
Fuschia is a new mobile OS that is being developed by Google. It seems to be what will replace Android. It uses a custom microkernel named Zircon (previously Magenta). It seems like it will support some, or all of the following languages: C, C++, Dart, Go, Rust, Python, Swift.
Note, that Java isn't on that list... That's because the JVM sucks.
Link to the Fuschia repo: https://fuchsia.googlesource.com/









![[+]](https://sinister.ly/images/modern/collapse_collapsed.png)