I bet it's because when Android was a small startup company (2005, 2006) people thought there would be all these processors that natively spoke Java.
On Friday, September 14, 2012 8:11:04 PM UTC-5, jamb wrote: > > Hello Android devs! > > I recently bought a Motorola Razr Maxx, and then shortly after an Asus > Transformer Infinity TF700T.... I suppose it goes without saying that I > like the idea behind Android as an OS. But I'm a little curious about the > architecture decisions, and thought this would be the best place to ask.... > As far as I know this is the only "official" Google forum for Android OS. > > As someone who has always built my own PCs from scratch, I have a pretty > decent idea about hardware architecture. While I run Windows as my main OS, > I've experimented with Linux and BSD on occasion (with mixed and often > disappointing results, due to the hardware I choose). I'm no stranger to > digging into the OS and tweaking as I see fit. So after grabbing the > Android SDK and digging more into the architecture, one huge question is > baffling me.... > > Why Java? > > If my understanding of Apple products is accurate, iOS is based on FreeBSD > with Apple specific hardware drivers and Cocoa. It's my understanding that > Cocoa is a native set of classes that function in a similar way as GTK+ or > QT, but developed "in-house" at Apple. > > So why did Google choose to implement Android as a barebones Linux Kernel, > with phone/tablet specific drivers and a Java VM? Linux already has a > fantastic security model, which (in my opinion) reduces the benefit of a > sandboxed (virtual machine) environment. And a virtual machine, by > definition cannot possibly perform as well as native code - even if it IS a > hand optimized version. > > In deciding to use Java as it's primary application architecture, it > appears to me that Google crippled Android from the get go. The fact that > the NDK exists at all is a good indication that Java was not the ideal > solution. > > C/C++ has always been a relatively robust language to design > cross-platform applications - with some effort and preprocessor directives. > Java is definitely _more_ portable, but who uses Android apps, but Android > users? I just don't see that Java was the best way to implement an OS. > Embedded developers design software for 2 platforms: iOS and Android. Using > Java as the primary architecture forces developers to do far more than > include different preprocessor directives and libraries - apps have to be > redesigned from the start, even using NDK. In fact NDK is kind of a joke - > using a VM to execute native code within it's context - of course there's > no performance increase, though there's a huge increase in complexity! > > So why didn't Google choose a similar route as Apple? Creating a framework > like Cocoa based on a Linux kernel (and using native c/c++ code)? > > If I'm off in left left or simply missing some major point, I'm more than > happy to learn! > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

