Technology is amazing and has changed itself and our life – significantly. We’ve seen computers filling entire room and heating up like hell. In this day and age, we call them Personal Computers (PC), sometimes which can be carried anywhere in a form of Laptop, Personal Digital Assistant (PDA) or even a small embedded ‘smart-device’. These devices also include mobile phones, PDAs, ATM machines, Kiosks, Tablet PCs, Robots, Electronic toys, Music systems, digital cameras and what not. And these small devices are capable of doing lots of things and that too within a fraction of a second. You just need to wish (or should I say ‘program them’) and these devices will obey the command.
Programming these smart-devices is exigent task. Developers don’t have that luxury of GBs of RAM OR TBs of hard-drive space OR GHz of Processing power with 32 OR 64 bit addressing space from a desktop OR even millions of pixels and thousands of colors hogging up screen OR even 24x7x365 broadband connectivity.
When it comes to smart-device programming, developers need to mull over many scenarios. Most of the today’s smart-devices still have 100-200 MHz processing power or even less with small addressing space like 8-bits OR 16 bits. These devices don’t have hard-drive and by and large they depend upon flash memory of MBs and termed as ROM. These devices also have a constraint on RAM. Mostly these devices don’t have a display screen (called as headless device) or if they do have, then it might be in a size of 240×320 with only selected color scheme. Even these specifications change from device to device and according to the position in which device is held like horizontally OR vertically. Sometimes, these devices have limited connectivity like Wi-Fi, Infrared, Bluetooth, GPRS, Cellular network or sometimes no connectivity at all. And as a developer, we need to think about how the application will behave in these scenarios.
There are lots of technologies out there to help us command these devices and address these scenarios. Depending on the type of device, its working process model, environment conditions, cost and risks associated, development process, time to market these devices and last but not least – interest of manufacturer, developers can choose any technology which suits and interests them.
These devices can be powered by technologies like Microsoft Windows Embedded family, Linux, Symbian, iPhone, Android, etc. and can be programmed by C, C++ and Java. And nowadays developers can choose VB.NET or C# as well – whichever is perfect for them.
There is subtle difference between writing applications for desktop/web and these devices. Developers build apps for desktop OR web and just deploy it. But in case of smart-device, if the device is a brand new custom made device, perhaps developers would need to have their own operating system running on it e.g. Kiosks, ATM machines have a custom made OS. And then, developers will write an application which will run on top of it. After all this, what if developers don’t have access to a real device?
Does it look pretty complicated? Well, it’s easy once we get our hands dirty with some practical stuff.
In next few blog-posts, I’m planning to share my understanding of Windows Mobile, Windows Embedded, Symbian, Android and iPhone with you.
So, stay tuned and keep looking for further updates on technological world.