Development frameworks help generate embedded applications very quickly. However, they do require a major commitment to using the framework. Using standard support classes eliminates the need to build or buy additional services, which in turn reduces the time-to-market cycles.
Frameworks provide faster development times for a variety of reasons. Frameworks offer many different services that have already been tested and have been proven to work together.
Frameworks tend to support a number of CPUs and operating systems (OSs), making hardware choices easier. Developers can use their expertise on different platforms as new projects migrate to different, possibly high-performance systems.
Making A Framework
Frameworks consist of a collection of libraries or classes that provide standard services such as communication, user interface, and memory management. Common services found in many frameworks include garbage collection and virtual-machine (VM) support.
A VM makes framework porting easier, but it also allows framework designers to have better control over the task of code management. In many implementations, the VM code is just an intermediate step with some just-in-time (JIT) compilers generating native code.
Additionally, frameworks tend to be tied closely to a programming language like Java and Java 2 Micro Edition (J2ME) or Limbo and Inferno. Some framework designers go to the other extreme and support a variety of programming languages as does .NET.
Frameworks typically run on top of standard OSs like Windows, Linux, QNX, and VxWorks. Support for real-time OSs normally maps to framework classes or functions. This, in turn, allows developers to create real-time applications, without the need for having the developers to go outside of the framework.
Popular frameworks are supporting various Internet protocols such as Hyper Text Transfer Protocol (HTTP) and eXtensible Markup Language (XML). As a result, embedded network devices have the ability to communicate with devices that were not developed using the same framework.
J2ME And Java
The best known embedded framework is Java, but Java is an overused term. Embedded Java development is now concentrated in the J2ME. Java is the language and J2ME frameworks run on a JVM. But the hierarchical collection of Java classes is what makes J2ME a real development framework.
.NET And C#
Microsoft's .NET initiative is known for its high-end, Web-server orientation for delivering content to workstations, although there's an embedded platform as well. The embedded .NET framework supports the premier .NET language, C#. Unlike many other frameworks, .NET supports an array of programming languages.
The .NET framework incorporates support for Simple Object Access Protocol (SOAP), a set of rules for processing XML messages. In addition, .NET provides native COM support.
Developed years ago at Bell Laboratories in conjunction with Plan 9, Vita Nouva's Inferno framework actually predates J2ME and .NET frameworks. A similarity between the Inferno and J2ME frameworks is that each has its own programming language.
Inferno's unique communication system, called Styx, links embedded systems. It achieves this by using a hierarchical file system and encrypted messages. Implementations of the Styx communication system exist on other platforms. As a result, the Inferno framework isn't an island unto itself.