Embedded Application Development at the Crossroads

Due to emergence of mobile and wireless handsets, the availability of lite editions of cutting-edge application frameworks like J2EE and .NET (embedded counterparts J2ME and the .NET Compact Framework), as well as availability of Linux and Windows versions designed specifically for embedded applications, is a vast new sphere of activity for embedded application development.

This innovative world produces some technology dreamers extolling a scenario where the practices of embedded and enterprise application development mingle. Though it is obvious that convergence is inevitable. The bulk of embedded developers keep on coding in their traditional technology domains, and vice versa. Its a part of a tendency—nobody knows for sure how widespread—when commercial and open-source IDEs turn to optional programming environments for two different software development adherents: embedded developers and enterprise programmers. And advocates call it standardization, and most of them think its good.

There is an ocean of IDEs, though the two of them deserve peculiar attention: Microsoft’s Visual Studio .NET and the open-source Eclipse project. Eclipse is the most popular Java IDE. It is also an open and extensible IDE framework—it supports any kind of programming language or application architecture.

Not some old microcontroller
Some years ago, Intel created its venerable 8051 microcontroller. And some modifications of the chip are manufactures to this day; industry analysts say that it will likely be manufactured for many years more. These micricontrollers are not obsolete, they are perfectly fit for applications including keyboard microcontrollers or industrial control systems. Embedded programming old stagers more and more work with with chips (or multi-chip hardware networks), which by processing power, memory and storage capacity could be compared to desktop computers some ten years ago. Embedded systems become increasingly more like a conventional system. A modern embedded system has from 8MB of Flash, 256MB RAM and a 32-bit processor running at over 100 MHz. Such embedded systems are powerful enough to be standalone, and its not quite correct to use the term embedded application code.

The generic embedded application development concept changes. Currently developers usually have more resources, thus the embedded systems become more sophisticated.

One IDE to unite them all
When it comes to embedded software development in enterprise environment today, it should be mentioned that it is detached from generic application development. But the situation is changing due to omnipresence of wireless and mobile devices, and embedded application development tasks shifted from primary industrial and manufacturing sectors. It goes even further, enterprises create hybrid applications, which include both client desktop and embedded (mobile or wireless systems) components. Moreover, further on they will also want their programmers, both embedded and conventional, to work with the same development tools and kits.

For a part of companies, specifically those where embedded application development isn’t a strong suit, its an implicitly compelling vision. More and more companies seek to unify these development processes as they want these things to run on the desktop, on the server, on these mobile devices.

The bulk of developers consider themselves the elite. Not some supreme beings but people with great responsibilities – they are exceedingly aware that their code may have grave consequences in the real world. Embedded systems power thousands of vital devices: pacemakers, flight control systems, dialysis machines etc. In all these cases a bug in a production system can cause much more than lost revenue or possible litigation.

The larger part of embedded professionals would consent the best practices of conventional software development could be applied to the embedded domain.