Introduction to Android

satya - Sunday, November 23, 2008 9:16:59 AM

cnet review Nov 2008

cnet review Nov 2008

satya - Tuesday, November 25, 2008 9:04:54 AM

wikipedia reference

wikipedia reference

satya - Tuesday, December 16, 2008 11:07:23 PM

important article about history

important article about history

satya - Wednesday, December 17, 2008 8:42:44 AM

Mobile phones run on different oses including proprietary

Mobile phones run on different oses including proprietary

satya - Wednesday, December 17, 2008 8:42:58 AM

Rich Miner founder of Android

Rich Miner founder of Android

Search for: Rich Miner founder of Android

satya - Wednesday, December 17, 2008 8:58:33 AM

long press in mobile phones

long press in mobile phones

Search for: long press in mobile phones

satya - Wednesday, December 17, 2008 9:01:05 AM

pinching and zooming in android

pinching and zooming in android

Search for: pinching and zooming in android

satya - Wednesday, December 17, 2008 9:25:10 AM

which linux distribution is in Android

which linux distribution is in Android

Search for: which linux distribution is in Android

satya - Wednesday, December 17, 2008 9:40:57 AM

Linux compatibility

Linux compatibility

satya - Wednesday, December 17, 2008 9:44:19 AM

what is android libc

what is android libc

Search for: what is android libc

satya - Wednesday, December 17, 2008 9:47:51 AM

How does android java differs from JDK?

How does android java differs from JDK?

Search for: How does android java differs from JDK?

satya - Wednesday, December 17, 2008 9:50:57 AM

What is Open GL ES?

What is Open GL ES?

Search for: What is Open GL ES?

satya - Thursday, December 18, 2008 9:05:06 AM

What is the architecture of android preferences?

What is the architecture of android preferences?

Search for: What is the architecture of android preferences?

satya - Thursday, December 18, 2008 9:05:25 AM

Are there any sites to learn about OpenGL on the web?

Are there any sites to learn about OpenGL on the web?

Search for: Are there any sites to learn about OpenGL on the web?

satya - Thursday, December 18, 2008 9:05:42 AM

What are some good books to learn OpenGL from?

What are some good books to learn OpenGL from?

Search for: What are some good books to learn OpenGL from?

satya - Thursday, December 18, 2008 9:09:07 AM

What do you use java.sql for in android?

What do you use java.sql for in android?

Search for: What do you use java.sql for in android?

satya - Thursday, December 18, 2008 9:24:06 AM

What on earth is GSM telephony?

What on earth is GSM telephony?

Search for: What on earth is GSM telephony?

satya - Thursday, December 18, 2008 9:47:23 AM

GSM: Global System For Mobile Communications

A standard for mobile phones allowing roaming among carriers. It is a digial system. It is also called 2G for second generation. GSM allowed SMS, a text messaging service. Allowed a universal emergency number "112" anywhere in the world. In 97 it added General Packet Radio Service (GPRS). In 99 allowed higher data transmission speeds using Enhanced Data Rates for GSM evolution (EDGE). GSM is a standard for cellular networks. GSM operates in 4 frequency ranges 900Mhz, 1800Mhz, 850Mhz, 1900 Mhz, 400 Mhz, 450Mhz. GSM also specifies sampling rate, transmission speed, and cell types. The maximum distance GSM allows is 35Km. GSM uses frequency modulation that varies frequencies in addition called Gaussian minimum-shift keying (GMSK)

The concept of SIM is essentially a GSM concept. It is possible to lock a SIM through SIM locking. It is not allowed to lock SIMs in some countries.

satya - Thursday, December 18, 2008 10:32:52 AM

UMTS: Universal Mobile Telecommunication System

Considered next generation of GSM. Often also called 3G. UMTS uses "code division multiple access" (CDMA) as opposed to "Time Division Multiple Access" (TDMA) to accomodate higher speeds. It can support 14Mb/sec data transfer rate. However current 3G handsets may be supporting only 400Mb/sec in practice. Advanced GSM using packet switching can support 56kbps. with EDGE you can reach 180kbps. HSDPA (High Speed Downlink Packet Access) enables download speeds of 7.2mbs. Next evolution of UMTS (4G) is expected to support 100mbps down and 50mbps up using orthogonal frequency-division multiplexing. The 3G frequencies are 850/900/1700/2100. There are no universal handsets that support all these frequencies. With 2G and 3G combined there are over 11 frequency bands that are in use.

satya - Thursday, December 18, 2008 10:44:51 AM

EVDO - Evolution Data Only

is a wireless broadband data access standard for DSL like data speeds with out any need for hosspots. data speeds are 500kbps to 1000kpbs. Unlike GSM it is not a mobile standard but a general purpose data standard like wi-fi. On an edge network (GSM based) it may take 90 seconds to download 1 Mb of file. On an EVDO network it takes about 10 secs for the 1MB file. At the moment sprint and verizon supports EVDO cards for laptops.

satya - Thursday, December 18, 2008 10:47:55 AM

The relative speeds are


GSM 14.4 kbps
GPRS 115 kbps
CDMA 2000 144kbps
EDGE 384 kbps
w-cdma (3G) - 2000kbps - 2mb
evdo 2 - 400 kbps

satya - Thursday, December 18, 2008 10:48:33 AM

Good article on EVDO

Good article on EVDO

satya - Thursday, December 18, 2008 11:40:24 AM

what is android.text.util and Linkify

what is android.text.util and Linkify

Search for: what is android.text.util and Linkify

satya - Wednesday, January 07, 2009 4:29:49 PM

dalvik jvm vs java

dalvik jvm vs java

satya - Wednesday, January 07, 2009 4:30:02 PM

dalvik jvm

dalvik jvm

Search for: dalvik jvm

satya - Wednesday, January 07, 2009 4:31:51 PM

Apache Harmony

Apache Harmony

Search for: Apache Harmony

satya - Wednesday, January 07, 2009 4:42:34 PM

Dalvik internals: a google presentation

Dalvik internals: a google presentation

satya - Wednesday, January 07, 2009 9:18:28 PM

hiphop jvm

hiphop jvm

Search for: hiphop jvm

satya - Thursday, January 08, 2009 11:01:22 AM

What is implicit typing in dalvik vm?

What is implicit typing in dalvik vm?

Search for: What is implicit typing in dalvik vm?

satya - Thursday, January 08, 2009 11:05:17 AM

What is Zygote

What is Zygote

Search for: What is Zygote

satya - Thursday, January 08, 2009 11:10:28 AM

What is mobile ARM?

What is mobile ARM?

Search for: What is mobile ARM?

satya - Thursday, January 08, 2009 11:19:20 AM

Basics

The effort started in 2005 at google as part of the Android work. Handheld devices lack in memory and speed from a desktop version by 8 to 10 years. They have very limited power available for any intense computation. They may only have as little as 20Mb of space available for applications. The total RAM may even be as less as 64Mb. The performance requirements as a result are draconian, requiring handset designers to optimize everything. If you look at the list of packages in Android, you will know that they are full featured and extensive in number. According to google these system libraries may take as much as 10Mb with their optimized jvm.

This led to revisiting the JVM implemenation. Much of the graphics code is implemented in native c and c++ libraries. Java is a just a thin wrapper. The key figure in the googles implementation of this JVM is Dan Bornstein, who is a native of Dalvik, a town in Iceland. This is how this JVM implementation got its name.

Android takes the generated multiple class files and combines them into one or more dex files. Duplicate information from multiple class files are reused and effectively the space requirement (uncompressed) will go down by half from a traditional jar file. For example the dex file of the web browser app in Android is about 200k. The equivalent uncompressed jar version is about 500k. The alarm clock app is about 50k in dex file size and roughly double in its jar version.

Android also believed that pre loading the most used classes at boot time and then allowing them to be shared will save memory and cpu cycles. To this end they designed a pre load process called Zygote that shares the core libraries between other java processes.

Google also has tuned the garbage collection and also opted for not having a JIT, at least, in this release. The thought is that most of the core is in c and c++ which don't require JIT.

Android also uses a diffrent kind of assembly code generation where it uses registers as the primary units of data storage and not the stack. By doing this Google is hoping to accomplish 30% fewer instructions.

satya - Thursday, January 08, 2009 11:28:23 AM

What is QEMU

What is QEMU

Search for: What is QEMU

satya - Thursday, January 08, 2009 11:42:26 AM

Dan Bornsteins background

Dan Bornsteins background

satya - Thursday, January 08, 2009 1:00:18 PM

What does DEX stand for

Dalvik Executable

satya - Thursday, January 08, 2009 1:06:43 PM

QEMU on wikipedia

QEMU on wikipedia

satya - Thursday, January 08, 2009 1:10:57 PM

QEMU is a process emulator

This is a process emulator where one CPU can emulate another CPU. Allows writing virtual machines where one operating system can host other other operating systems written for other CPUs. For example it can run Linux binaries on most of the processors in the market including ARM.

satya - Thursday, January 08, 2009 1:11:41 PM

What is ARM?

What is ARM?

Search for: What is ARM?

satya - Thursday, January 08, 2009 1:32:14 PM

ARM - Advanced Risk Machine

This is a microprocessor architecture based on RISC (Reduced Instruction Set Computer)where design uniformity and simplicity and speed is acheived by reducing the number of instructions in an instruction set. PowerPCs supporting Apple Macs, and SPARC chips supporting Sun workstations are examples of RISC architectures. ARM (Advanced RISC machine) architecture is a 32 bit processor RISC architecture that is widely used in hand helds and other embedded electronics where lower power consumption is important. Accornding to wikipedia 75% of the mobile market uses processors based on this architecture. The Apple Newton is based on ARM6 processor. Devices like iPod, Nintendo DS, and Gameboy Advance run on ARM architectur version 4 with around 30,000 transistors. Compared to that the Pentium classic contains 3,200,000 (3.2 million) transistors. 100 times more transistors.

satya - Thursday, January 08, 2009 1:32:40 PM

android emulator architecture qemu arm

android emulator architecture qemu arm

Search for: android emulator architecture qemu arm

satya - Thursday, January 08, 2009 1:37:35 PM

Android emulator details

It is based on ARM v5 CPU, 16 bit LCD display, sound card, flash memory, GSM modem, and a SIM card.

satya - Thursday, January 08, 2009 1:37:47 PM

Details about emulator options

Details about emulator options

satya - Thursday, January 08, 2009 1:41:10 PM

The key limitations include

support for placing and receiving calls, Capture Camera images/video, battery usage, bluetooth.

satya - Thursday, January 08, 2009 3:01:43 PM

What are dalvik limitations

What are dalvik limitations

Search for: What are dalvik limitations

satya - Thursday, January 08, 2009 3:09:47 PM

beanshell and dalvik

beanshell and dalvik

satya - Thursday, January 08, 2009 3:10:00 PM

dalvik javase

dalvik javase

Search for: dalvik javase

satya - Thursday, January 08, 2009 3:21:45 PM

Apache Harmony

Apache Harmony

satya - Thursday, January 08, 2009 3:21:58 PM

Apache Harmony Dalvik Android

Apache Harmony Dalvik Android

Search for: Apache Harmony Dalvik Android

satya - Thursday, January 08, 2009 3:32:05 PM

More on Dalvik

It is optimized to run multiple vms so that each android application runs in its own process with its own instance of dalvik VM. Dalvik is written such that these simultaneous vms can run efficiently.

Dalvik doesn't use its own compiler. It just uses any java code compiled by any java compiler. It uses the Apache implementation of the Java SE.

Java ME doesn't come packaged with OpenGL, Bluetooth,and USB support and a developer cannot assume they are there.

satya - Thursday, January 08, 2009 3:32:18 PM

A limited subset of the packages are provided

A limited subset of the packages are provided

satya - Thursday, January 08, 2009 3:33:11 PM

swing and awt are not included.

swing and awt are not included.

satya - Thursday, January 08, 2009 3:40:20 PM

Android comes with a subset of Java SE packages.

Android comes with a subset of Java SE packages.

satya - Thursday, January 08, 2009 3:42:28 PM

Read this link to see the differences in java se implementation

Read this link to see the differences in java se implementation

satya - Thursday, January 08, 2009 3:45:38 PM

Important missing packages


java.beans
java.awt
javax.swing

satya - Thursday, January 08, 2009 3:46:40 PM

Problems issues with J2ME JME

Problems issues with J2ME JME

Search for: Problems issues with J2ME JME

satya - Thursday, January 08, 2009 3:55:40 PM

KVM and Dalvik

KVM and Dalvik

Search for: KVM and Dalvik

satya - Thursday, January 08, 2009 3:56:24 PM

Java KVM

Java KVM

Search for: Java KVM

satya - Thursday, January 08, 2009 3:56:44 PM

Java KVM packages

Java KVM packages

Search for: Java KVM packages

satya - Thursday, January 08, 2009 4:12:53 PM

what is midp?

what is midp?

Search for: what is midp?

satya - Thursday, January 08, 2009 4:13:17 PM

j2me faq

j2me faq

satya - Thursday, January 08, 2009 4:14:35 PM

kvm white paper pdf

kvm white paper pdf

satya - Thursday, January 08, 2009 4:58:40 PM

j2me positioning

j2me positioning

satya - Thursday, January 08, 2009 5:09:52 PM

What does Java ME platform look like

In increasing complexity here is the list of jvms

java cldc - kvm - a tiny portion of java se
java cdc - a portion of java se
java se
java ee

satya - Thursday, January 08, 2009 5:10:47 PM

pbp, agui, java tv

pbp, agui, java tv

Search for: pbp, agui, java tv

satya - Thursday, January 08, 2009 9:41:03 PM

midp java apis

midp java apis

Search for: midp java apis

satya - Thursday, January 08, 2009 9:52:39 PM

java me apis

java me apis

satya - Thursday, January 08, 2009 10:52:26 PM

How does Android relates to Java ME

Android has taken a dedicated and focussed approach to it mobile platform efforts. The android platform comes with everything you need in a single package: the OS, device drivers, core libraries, JNI, Optimized Dalvik VM, and the Java development environment. Developers can be assured that when they develop new applications they can be certain that all key libraries are available on the device. Android has chosen not to use the Java ME standard for its mobile efforts. Android also diverged from java execution environment developing their own JVM.

Let me present very briefly how Java ME works before comparing the two approaches. Java SE, the standard edition, is suitable for desktop and workstation configurations. Java EE, the enterprise edition is designed for server configurations. In a similar sense Java ME is an edtion of Java that is pared down for smaller devices. Java ME is further broken down into two configurations. The first configuration is called the "Connected Device Configuration" or CDC. The Java ME for CDC involves a pared down version of Java SE with less number of packages, and less number of classes with in those packages and even more dramatically less number fields and methods with in those classes. For appliances and devices that are further constrained, java defines a configuration called "Connected Limited Device Configuration" that is further more constrained.

Any optional packages that are installed on top of these base CDC and CLDC apis are treated as "profiles" that are standardized using the JSR process. Each defined "profile" adds an additional set of apis to the core. Both CLDC and CDC may support some java apis that are outside of JavaSE. These classes may not start with java.* namespace. What this means is that if you have a java program that runs on your desktop, there are no guarantees that it will run on microedition versions.

The CLDC configuration includes java.lang, java.util, io, security, and internationalization. It does not include user interface, event handling, an application model. Furthermore it doesnt support floating point, JNI, reflection, and weak references. The white paper on CLDC available at http://java.sun.com/products/cldc/wp/KVMwp.pdf lists all the packages and classes that are part of the CLDC.

The CLDC java platform is hosted on a specialized and much reduced JVM called "KVM" that is capable of running on devices that have as low memory as 128 kilo bytes. The "k" in "kvm" stands for "kilobytes". CLDC provides addtional apis under the name "MIDP 2.0" (Mobile Information Device Profile). This api includes a number of packages under javax.microedition.*. The key packages are midlets (simple applications), a ui package called LCDUI, gaming and media.

The CDC configuration adds to this the "awt", "net", and more security apis. It also adds the javax.microedition.xlet api. Xlets represent applications in the CDC configuration. On top of this it has about 10 more optional packages that can be run. These include bluetooth, media api, OpenGL/ES, Jaxp, Jaxp-rpc, java 2D, Swing, RMI, JDBC, and Java API. Overall the javame specification includes over 20 JSRs. It is also expected that JavaFx will also play an increasing role in the mobile space for java.

As you can see Java ME seem to be addressing two classes of micro devices. It offers standardized and distinct solutions for each. Android on the other hand has just one model. Android stays slightly higer on the food chain by ignoring the really low end devices or hoping that the configurations of these very low end devices will improve making Android feasible even for those devices.

Android is easy to understand as it focuses all its ideas in a single model. Where as Java ME it has multiple UI models for each configuration: there are midlets, xlets, awt, and swing based on the features supported by a device.

The multiplication of JSRs for each spcification of Java ME is tedious to follow and possibly could take longer to mature and find implementations for.

The Dalvik VM is much more optimized and should be much more responsive compared to the standard JVM supported on a similarly configured device. Dalvik VM can be compared to KVM but KVM is addressing a much lower configuration devices with much less memory.

Android, due to Dalvik VM, does not run java byte codes but DEX formatted byte codes. This should not be a major concern as long as java is compiled to standard java class files. Only run time interpretation of java byte codes is not possible.

However there is wide spread support for Java ME on mobile devices as most of the mobile phones support Java ME. However the uniformity, cost, and ease of development in Android would be a compelling reason for java developers to develop on Android.

Compared to the suport for Java SE in CDC, the Android support for Java SE is better except for the awt and swing. Android has its own ui approach. The whole Android Java SDK differs signicantly from the java approach by introducing declarative UIs, Intents, and Content Providers. The declarative UI of Android is similar to the Java Fx approach.

satya - Thursday, January 08, 2009 11:02:09 PM

java me

java me

Search Google for: java me

Search Android Developers Group for: java me

Search Android Beginers Group for: java me

Search Google Code for: java me

Search Android Issues Database for: java me

satya - Saturday, January 10, 2009 8:35:29 AM

Mobile Operating Systems Palm OS, Symbian

Mobile Operating Systems Palm OS, Symbian

Search for: Mobile Operating Systems Palm OS, Symbian

satya - Saturday, January 10, 2009 8:54:33 AM

Tmobile G1 specs memory cpu

Tmobile G1 specs memory cpu

Search for: Tmobile G1 specs memory cpu

satya - Saturday, January 10, 2009 9:10:05 AM

Tmobile G1 compared to iPhone

Tmobile G1 compared to iPhone

satya - Sunday, January 11, 2009 10:23:02 AM

what is skia graphics library

what is skia graphics library

Search for: what is skia graphics library

satya - Sunday, January 11, 2009 10:27:20 AM

more about skia

more about skia

satya - Sunday, January 11, 2009 10:28:03 AM

open gl es kronos

open gl es kronos

Search for: open gl es kronos

satya - Friday, February 13, 2009 9:15:35 AM

background on skia

background on skia