Yuanma.org

China Open Source community - News and Technical articles!

Android: A Brief Introduction(1)

A handset operating system and a rich and functional SDK for handset software development, Android is considered Google’s entry into the mobile world, but it’s actually being developed by the Open Handset Alliance. Working together, hardware companies, software companies, and mobile operators are developing a free and open mobile platform. Google’s involvement in the project is extensive, with Google hosting the open source project and providing documentation, tools, forums, and the SDK.

Android is an emerging mobile technology still in the development phases. Early releases of the SDK have been made available to the mobile developer community to start writing applications before handsets are available on the market. Fully featured Android handsets are expected to start shipping towards the end of 2008 or early 2009.

For the developer, Android is a new mobile platform based on Java running on top of a Linux kernel. For now, Java is the only development language available, but eventually Android may support other programming languages. Android has a complete set of application programming interfaces available for everything from user-interface components to accessing location information.

Unlike other mobile development platforms, all Android applications have access to the same APIs. There is no distinction between native applications and developer-created applications. This allows for more innovative applications than are currently available.

Why Is Android Important?

Mobile application developers are watching Android, which promises to be an exciting new market in mobile device development. The manufacturers of Android handsets are amongst the largest in the world. Mobile operators from all the hot mobile tech markets (Europe, Asia, and the Americas) are involved in the Alliance, with others also announcing Android handsets in their upcoming product lines. Mobile application developers looking for broad mobile coverage will need to factor Android handsets into their product plans in the near future.

Android’s open platform is being embraced by many operators. Verizon has said their network will be open to any device and any application and AT&T has said much the same. If an open platform reduces operator costs, there could be a migration to open handsets from proprietary platforms and Android is well suited to fill this demand. If Android does carve out its audience from existing platforms, you’ll want to be ready so your customer base doesn’t shrink.

Early developers are likely to have many of the typical first-to-market advantages, such as a smaller base of competitors or even none at all. Additionally, this early exposure and experience can have lasting advantages over competitors later to the market. Incentives are also being provided, like the Google-sponsored Android Developer Challenge.

Early days of Android development have exhibited many similarities to the early days of development for both J2ME and QUALCOMM’s BREW platform. Early support is available via community forums and online documentation. It’s a new platform, with all the typical roadblocks.

What Benefits Does Android Have?

For the mobile developer, Android has a number of benefits over other platforms. Android is an open-source platform and the SDK and basic development tools are freely available. You’ll be able to use your favorite Java development environment. Plug-ins for Android project development are already available for the popular Eclipse environment. The development tools are all available for Linux, Mac, and Windows PCs.

Android is an open platform, both in the open source sense and in the open API sense. Several stock applications, such as the contact application and the web browser, will be distributed on Android handsets and are being developed with application interaction in mind. Google is also providing some core services that are not readily available on other platforms. Developers will have access to Google Maps to display location information. A messaging service for peer-to-peer communication without the use of SMS, as is common on competing platforms, will also be available. This is another case of enabling application innovation that either isn’t available on other phones or would be cost-prohibitive to replicate.

The goal is to allow for new and innovative applications that either can’t be done on existing platforms or simply haven’t been allowed. This openness extends beyond simply providing access to the data on the handset. Included applications can be customized or even replaced entirely. For example, a corporation could replace the messaging application with one that only allowed secure messaging through the company’s servers or a user could replace the included photo viewer with one of their choosing.

The Android APIs are extensive and modern. In addition to the typical APIs for screen drawing, user input, and network access, you’ll find APIs for storage, media, graphics, and even direct hardware access. Media APIs are available for both playback and recording of audio, video, and still images. For storage, developers aren’t limited to file-based APIs. SQLite is available for relational data storage, a preferences API is available for simple setting storage, and applications can extend the data storage mechanisms available. OpenGL ES, with optional hardware acceleration, is available for 3D graphics applications. Lastly, there will be a set of low-level APIs for direct access to the hardware, such as WiFi or Bluetooth. Most mobile platforms don’t allow low-level access to the hardware, but Android allows developers to extend the hardware on a given handset. For instance, it might be possible to add support for Bluetooth profiles that weren’t provided out-of-the-box.

Security is essential with such an open development environment. Therefore, a tight security model is built into Android. Applications are only granted required permissions (data access, APIs used, and so forth) at installation time and cannot change their permissions later. So, an application can’t remotely add a new feature to, say, read a user’s location with or without the user’s permission. This is a big step towards preventing malware and easing privacy and safety concerns for users of the platform.

What Could Be Better?

For all of its benefits, Android is not perfect. It’s a moving target, always changing and improving, and it’s not always stable. This introduces risk for early developers of Android applications, but being aware of the risks associated with any new platform is key to success. Android developers currently using the early-release SDKs have had to cope with changes to APIs between releases of the SDKs as well as incomplete APIs and defects with the platform have not been uncommon.

Also, the question of how to sell your Android apps to end users once Android “goes live” remains unanswered. There has been no formal announcement of any traditional application store for developers to distribute their applications through. Many in the Android developer community are assuming that some distribution solution will be developed before Android is commercially available. At a recent Google Fireside chat, Google’s Director of Mobile Platforms said some form of distribution has been considered, but Google has made no commitments. Without a shared distribution channel, small developers or developers wishing to distribute free applications may have a much harder time getting the distribution they would like. There is also the possibility that operators will create their own application stores and enforce their own rules, leading to a closed distribution environment.

Tag:Android, Google, SDK

No related blog

Everything you wanted to know about being a Linux kernel developer

So you want to be one of the few, the proud, the Linux kernel developers do you? Well, it’s not easy. But, if you’ve got the right stuff, Linux is looking for a few good programmers.

On August 13th, the Linux Foundation, the nonprofit organization dedicated to supporting Linux, published a guide to how to participate in the Linux kernel community. This 30-page ebook, How to Participate in the Linux Community, was written by noted Linux authority and executive editor of LWN.net (formerly Linux Weekly News) Jonathan Corbet.

 

The book got its start, Amanda McPherson, Linux Foundation vice president of marketing and developer programs, explained at the Linux Foundation’s April meeting in Austin Tex. There, McPherson said, several hardware and software developers talked about their troubles in finding who they should talk to in the Linux community to address their concerns, or, for that matter, how they could contribute to Linux. One of the results was the Linux Application Checker, which enables ISVs (independent software vendors) to more easily create applications that will run on multiple Linux distributions and the other is Corbet and the Linux Foundation’s new Linux Developer Network book

In this book, according to the Foundation, “Readers will learn why contributing code to the mainline kernel is desirable, how the contribution process works, and how to avoid common pitfalls along the way. Since the Linux kernel depends on outside contributions for its continued success, it’s vitally important to make participating in that community easy for new developers. While the kernel community is thriving with more than 1,000 developers at more than 100 companies contributing just last year, the Linux Foundation, in collaboration with its vendor and technical advisory councils, wants to encourage participation through education and promotion.”

This is not a programmer’s guide to the kernel. Instead, it’s a discussion of the process by which the kernel is developed, It includes sections on the kernel release cycle and the mechanics of merge windows; how early-stage planning works; what’s involved in the coding process, including patch requirements and review, and how to work with patch reviewers. It also addresses how to manage patches with Git, the Linux kernel version control system.

In a statement, Corbet said, “While the Linux kernel development process is quite open, it can sometimes be surprising or intimidating to new developers. This guide should help aspiring kernel developers and their managers understand how kernel development works, how to avoid common pitfalls and how to join our community in making the kernel better for everybody.”

In an e-mail interview, Corbet expanded on just what you need to actually help develop Linux. “?In general, it’s a matter of what sort of work you want to do. If you want to replace the core VM (Virtual Machine) page replacement algorithms, you need to have quite a bit of experience behind you. If you want to contribute certain kinds of documentation, you may not need any development experience at all.”

“In general,” Corbet continued, “somebody who wants to do development work needs a solid understanding of the C language and some understanding of systems-level programming. But nobody starts out as an experienced Linux kernel programmer; that kind of ability comes from actually working in the community and looking at a lot of code. Developers with some background, some talent, and a willingness to learn will become experienced kernel developers soon enough.

“More than anything else,” Corbet added, would be kernel developers need “A desire to learn. Everything else, really, is best learned directly from the community.” You should also be aware that at the top level, Linus Torvalds has his own sometimes brutally frank way of managing Linux development. Linux development is not for wusses.

Want to know more? You can comment on the guide in the Linux Developer Network and post questions in the forum devoted to Linux development. The Linux Foundation plans on translating the book into other languages including Chinese, Japanese, Korean, and Spanish. Translations in other languages will follow.

Tag:Kernel, Linux, open source, Operating System

No related blog