Over the last year I have been hearing a lot about ANDROID. Most of my friends who were planning to go for Apple iPhone were a bit confused by the new option they had and few of them settled for Android phones too over the iPhone dilemma. Suddenly, a question popped out of nowhere in my mind…
What basically Android is ? Is it the name of the phone or name of the software running on it or something else ? I usually get this kind of weird basic questions after thinking about something very deep. So, I thought of writing a post for those with same or similar kind of question. Without much deliberation, lets jump right into it……
ANDROID is a new programming language (not in the strictest sense) as well as the Operating system ( same here ) that is running on your mobile phone much similar to the Windows or Linux running in the desktop / laptop.
What ? Is Android not a new programming language in the strict sense ? I can hear it…. But, Android language is nothing but Java programming language ported to some other form and consumed in a different format.
To understand this, a little bit on how Java works…(stay with me)
Java runs on all computers, mobiles, washing machines, set top boxes and pretty much everything portable. This is achieved by introducing a layer between OS and the application coding called “Java Virtual Machine” , in short JVM. This JVM is different for different OSes like Windows, Linux and Mac..etc. The JVM sits between the OS and the Application and will speak with OS on one side and also speaks and runs the Java code on the other side. JVM is much more like a language translator so that both OS and Application should understand what each other is communicating among them. So, the famous marketing line of “Write once. Run everywhere” for Java is born.
Java coding is processed (compiled ) by a processor (compiler) and converted into some format (.class files or byte codes as it is technically known as) that JVM can understand.
Now, how is this related anyway to Android ?
Now, the Android takes these bytes codes ( .class files ) of Java and changes them into some new format (like a totally different language), which is only understood by a new virtual machine called Dalvik Virtual Machine (DVM) [and here comes the new language translator ;)]. So, this is how the Android programming language works internally. So, Android is something like JAVA++ Just for fun.
So, how does a programming language runs as an OS in mobile device is the next valid question that comes to mind. The Android OS is originally a Linux OS on which certain modules are built on. So, is it a Linux ++ ? You can say that , in a way… :-).
Like Java program coding, Andoid OS is not just a transformation but it is built around a Linux kernel. Take a Linux core and develop new modules around it to make it a complete OS specifically for mobile devices like mobile phones, tablets..etc.
Since Linux is under GPL license, there is perfectly no issue about usage of Linux kernel for the Android OS. But, Sun Microsystems ( now Oracle ) has the rights for certain parts of Java. But, they have not sued Google or Android over this issue possibly due to their belief in Open Source Software (something else might have been the reason, I am not sure).
As a trivia, Google did not develop Android from the scratch as a project. But, it did bought (acquire) the company called Android in 2005 which was developing the current Android OS as a start-up.
So, you can say Android = JAVA + LINUX + some X. The next time when you use a Android phone, know that you are using a Linux kernel as well as the code that the cool Apps were written in Java language.
If you think the article is cool, interesting and informative, please share it in Twitter / Facebook with your friends / fans using the floating vertically to the left of article. If you share, it will motivate me to produce more such content for you here at Android Paycheck.
Thanks for the read and sharing. It means a lot to me personally.
It’s Vickram signing off for now.