The kernel is a very small part of the entire operating system. According to Google's R & D strength, it is not that difficult to develop a kernel? Is it really difficult to develop the kernel, or is Google making Android use the Linux kernel based on some considerations? The kernel is a very small part of the entire operating system. According to Google's R & D strength, it is not that difficult to develop a kernel? Is it really difficult to develop the kernel, or is Google making Android use the Linux kernel based on some considerations? Reply: not Google chose Linux, but Andy Lubin started his business and chose Linux for Android. At that time, dozens of small teams could make the application framework and make phone calls, how can we develop the OS? Choose a mature and open-source kernel that everyone will use. Only Linux is available.
...... First of all, it is not difficult to write a kernel. If it is from nothing to android, framwork is not an order of magnitude more complex than the linux kernel. You think that kernel is simple because linux kernel does it. great. You cannot feel it.
Android, however, is still stable in the beta version of the Linux kernel for years.
Why did the android team choose linux? Maybe because the development board they bought at the time only supports linux.
...... The following is a joke:
1. linux has been widely used and has gradually matured in the embedded market since ARM9.
2. Open Source
3. There are many non-gpl open-source libraries, and open-source license is very troublesome.
Open-source license is a critical task for commercialization ...... Why didn't anyone mention ......
It is not difficult to develop a kernel, but it is difficult to make thousands of devices drive it. It is a huge task that is almost impossible.
Apple can develop its own kernel, because Apple only needs a limited number of devices to drive. Persuade a few device manufacturers to develop the apple driver, or even develop the driver on their own.
Windows can develop its own kernel, because it is probably the most driver on the planet.
In addition to Windows, Which of the following is the most energy-driven hardware device? The answer is Linux.
Therefore, android must select Linux as the kernel without any other options.
The answer is because @ pansz, which has the most likes, is the answer.
On the contrary, the most difficult part of linux is its kernel. as a person who has written m-type device drivers in n open-source or non-open-source embedded systems, I would like to say that the difficulty of writing the device drivers is absolutely wire-level.
Second, embedded devices do not need to be equipped with thousands of devices at the same time. If they are not computers, you can change the sound card and reinstall the driver. You can change the screen of your mobile phone to another model. The hardware interfaces are different. Does the software need support?
Again, the number of peripheral devices required by the mobile phone is not as exaggerated as the number of thousands ~.
Answer the question of the subject. Why does google use linux.
1. Do not compare google with apple. They are not the same company.
Google is an Internet company, and google makes money by service. Apple is a device vendor. Apple wants to make money from devices that apple thinks are the most user-friendly. apple's software serves apple's devices.
2. smart devices require a multi-task operating system with excellent management capabilities. No one has spent money on developing such a system from scratch. This is very difficult.
3. Not google chose linux. Google chose android, while anroid chose linux. Of course, android is not an open-source system. Google may not necessarily choose it.
4. A stable and open-source system with many engineers around the world who help you upgrade and maintain the system for free. Isn't it the best choice for an Internet company?
5. linux has powerful functions. Many of its feature features can meet the needs of android. Free and maintenance-free. I think this is why android initially chose linux. Or before android is called android, the reason why I chose linux is true. See 6th.
6. Finally, I will tell a story. Once a sun bull jumped to moto (or it may have been dug up ). Since sun came out, we established such a project in moto. The bottom layer is c (I don't remember whether it is linux). The top layer is a java System for mobile phones. In that age, moto was the leader in the industry. All mobile phone systems (including interfaces) are written in c, with c ++ and java. In those years, the cpu frequency of mobile phones was relatively high. Imagine how it would feel like running a c system, a virtual machine, and java again with such processing capabilities? The bug of that project is everywhere ~~~ Finally, the project finally fell down in moto, and Daniel naturally left. At the end of the day, this guy arrived at google. In my opinion, the short answer is three words:
No.
In the following three aspects:
From a technical perspectiveAt the operating system level, Google is clear about what the Linux operating system cannot do or what it cannot do. There are also appropriate countermeasures, so technically speaking, there is no such motivation;
From the perspective of business cooperationGoogle, as a pure software provider, has to consider the problem from the hardware vendor's perspective in order to unite hardware vendors around it as much as possible to form a solid ecosystem, as a tested by practice and time, Linux has been recognized for its stability and performance, and various hardware manufacturers have already had a certain technical reserve, obviously, hardware manufacturers are more willing to develop on a platform that has been well-prepared before, so that their technical risks can be controlled. At the same time, the Linux system project is not directly controlled by Google, and it is easier for vendors to be less vigilant (third-party vendors are not stupid, although they may trust Google's technical capabilities, but 100% will consider this question: if I do well, will you directly compete for the fruits of Google?), so that the surrounding vendors can invest more energy on this platform.
From Google's perspectiveGoogle must think that it is better at searching and making a platform (Google search is also a platform), so from the perspective of "advantages and circumvent weaknesses, google wants to have a higher say in the mobile field, and certainly won't participate in the hardware competition "doubling the number of transistors in 18 months" like Intel and Qualcomm, instead, we want to control it from the perspective of the software entry (that is, the operating system, or applications. From a technical point of view,
Google uses the Adapter mode in the design mode to process the relationship between Android and Linux systems.(In fact, you can find that Google has the same technical approach to solve this problem from the perspectives of Chrome OS, Linux, Chrome browser, and webkit core ),
This greatly reduces the importance of Linux on mobile platforms.At the same time, Google's even more deadly Google App method makes it difficult for heavy users of Google services to leave. In this way, Google will be able to easily replicate its previous successful ways of making money (making money from advertisers)
P.S:
@ Chen mentioned that Apple's kernel was developed by himself. This is not true, at least not completely. Aside from the early MacOS, the kernel code of Mac OS X is directly derived from BSD. Of course Apple has made some targeted modifications, but it is incorrect to say that it was developed by Apple. For the correct description, refer to FreeBSD's statement on wikipedia:
Mac OS X Server provided des the latest valid ical advances from the open source BSD community. originally developed at the University of California, Berkeley, the BSD distribution is the foundation of most UNIX implementations today. mac OS X Server is based largely on the FreeBSD distribution and has des the latest advances from this development community.
-"Apple Mac OS X Server Snow Leopard-UNIX: Open source foundation"
In addition, the relationship between Mac OS X and Mach can also be learned from this blog: http://dolgopa.wordpress.com/2010/04/14/jordan-k-hubbard-freebsd-relation-between-freebsd-and-mac-osx/
After reading the replies, I think I can answer this question from another perspective. You need to know two questions: what is the kernel of the system? How good is spending money on developing your own kernel?
I think the role of the kernel is very clear. Simply put, it provides process management, file network management, system security permission management, and the basis for communication between systems and hardware devices. On a multi-level operating system, such as Android or iOS, which is highly dependent on the framework, the kernel is almost invisible to upper-layer developers and can only perform related operations through the framework interfaces that are open to you.
Therefore, we can say that the kernel is fundamental, not functional, to the entire system. For the entire Android project, its Dalvik [including the new ARTS] and subject interaction and functional framework are the top priorities.
Let's talk about the advantages of self-developed kernels, or the cost-effectiveness.
As the basis of the entire system, the efficient and stable kernel can be said to be a heavy lifting, and the development of any software must go through the iteration process. It takes a lot of money and time for Microsoft to develop the NT kernel, the continuous improvement and maintenance are the best examples of this iteration. Even so, after nearly ten years of development and maintenance, the efficiency and functionality of the NT kernel is still weaker than that of Linux. Due to the open-source nature of Linux, a large number of individuals and enterprises continuously maintain and improve it, which is an important reason for Linux to remain ahead of the curve. Microsoft cannot compete with it with its own strength. This is actually telling everyone that, on the premise of an open-source Linux, developing the system kernel by yourself is actually a thankless task. In addition, neither the previous Android team nor the current Google team has their own system kernel projects. Therefore, using Linux as a source naturally saves time, effort, money, and insurance. As for why Microsoft is moving farther and farther on the NT Road, I think it will have its own principle, such as having full control over the system, and so on. I will not discuss it in a hypothetical way here.
In addition, some people mentioned earlier that "Apple's proprietary R & D kernel" is actually inaccurate. Both iOS and OSX are based on the UNIX kernel. It is also regarded as "industry practice ".
Again, software and building reuse are common methods in open source software. Using well-maintained open-source projects is crucial to improving the stability and functionality of software systems. Why do we need to reinvent the wheel? The answer to the dependency theory driven by opposition. Driver is not the main problem, or the biggest problem. Because mobile phones are not traditional PCs, many devices are customized and must be rewritten.
Numerous libraries and network components around Linux are major issues.
If the Linux kernel is not used, these complex libraries involving all aspects of knowledge need to be transplanted or even rewritten, which is not worth the candle.
On the other hand, if Google wants to build its own kernel, it will also write a Linux-compatible system for these libraries. From the perspective of system development hierarchy and difficulty, since we have an open source Linux, why should we develop the kernel on our own? It's like some of the games that people play, some Windows systems can run directly, and few manufacturers will re-develop the underlying system. Even game consoles, in fact, their operating systems and function libraries are also ready-made. Game Developers only need to write programs based on the system functions. This reduces the development difficulty and cost.
P.S: Allow me to vomit
@ Tech-Z
Android is essentially a java virtual machine running on the Linux kernel.
Google only uses kernel, and other things are useless. This means that, compared with traditional Linux releases such as Ubuntu, Debian, and Redhat, only the underlying structure of the system is the same, and other things are different in Android, especially programmers have completely different programming interfaces. Therefore, all Android applications must be rewritten, and existing Linux programs cannot be transplanted. Therefore, in a strict sense, Android is a brand new system, which is far away from Linux than Mac OS and Linux.
The License for Kernel and Android is different. The License for the former is a GPL License, and the License for the latter is an Apache Software License (ASL) License. The GPL license stipulates that any modification to the source code must be open-source, so Android is open-source because it modifies the Kernel. ASL permits that the source code can be used at will without open source. Therefore, hardware drivers and applications built on Android can be kept closed. To get support from more vendors, Google intentionally chooses to do so and specifically modifies the Kernel so that some functions originally included in the kernel are transferred to the userspace, therefore, we can avoid open source. For more information, see the answer from robert love in quora: Android (OS): What are the major changes that Android made to the Linux kernel?
Modify the kernel as little as possible and get rid of the existing UNIX desktop heritage as much as possible, which is a feature of android compared with other mobile devices (such as meego.