OOVM/Resilient Embedded Smalltalk by OOVM A/S and Esmertec
OOVM A/S (Object Oriented Virtual Machines) which develop a unique and advanced
software development platform. OOVM develops the next generation software platform
for embedded systems to dramatically improve productivity, serviceability, and reliability.
The OOVM platform is based on a small object-oriented virtual machine, which
runs directly on hardware without the need for an operating system. All software
components are compiled to safe, ultra compact bytecodes and executed on top of
the virtual machine. The compactness makes it possible to fit the virtual machine,
core libraries, device drivers, TCP/IP networking stack, and user applications
in less than 128KB of memory. The OOVM platform supports pure object-oriented
programming. Programmers familiar with object-oriented programming can take
advantage of their skills and immediately start developing for embedded devices.
Object-orientation enables software reuse. Since bytecodes are independent of the
underlying hardware, software components can be reused across different hardware
"If you have say, a small router or a dishwasher you can upgrade the code while
it's running, no reboot is required," [Lars] Bak told us today. "If you have a device,
and you have more than one component it doesn't make sense to shut down the system."
Embedded software today is written in C, linked with libraries and run on top of an RTOS.
You put a binary image on a flash memory, and then debug with printf statements or In-Circuit Emulators.
The development goes on slowly and uses an unsafe programming language;
also there's no way to fix bugs in the deployed product.
INCUBA OOVM A/S
OOVM article by Lars Bak
Modern systems have embedded software everywhere, even hi-fi systems and digital
speakers might be connected by FireWire: Bang & Olufsen uses them and wants to update
software and debug/fix potential problems at the customer's site via the Internet.
The embedded industry is requesting increased reliability and rapid development
cycles, and also to do quick and cheap dynamic software updates in the field
(especially for things like cell phones).
Is embedded Java (J2ME) the solution? The problem is that it has a very complicated
virtual machine specification, and the bytecodes are not designed for speed and
compactness. It also does not support changing methods and continuing execution
on the fly after debugging (you might need to recompute all vtables when adding
a single method). There is finally the issues of big libraries that come together
with Java, requiring up to 1MB of ROM.
What could be better? It would be nice to use a safe language with dynamic capabilities,
that could support a development environment directly connected to the running system,
and that could do dynamic software updates.
Lars [Bak] has been implementing object-oriented virtual machines for 18 years, including
Beta, Self, Strongtalk, HotSpot for Java (150 million downloads), and then a small
HotSpot for cell phones, and now he started his own company called OOVM. OOVM produces
a Smalltalk for embedded systems which is a bit different from standard Smalltalk:
reflection is only available in the development VM, there is an atomic test and store
statement for synchronization, namespaces are supported, and blocks can optionally be
typed and LIFO for performance. Pool variables and class-instance variables were removed.
The OOVM embedded platform executes platform independent bytecodes directly on the
bare metal, without any underlying RTOS nor C library and with a small memory
footprint. The programming environment connects to a running program, supporting
true incremental development and full serviceability of running application.
(quoted above). .
Esmertec to acquire OOVM
Esmertec acquires OOVM
Smalltalk/VM allows code modification on the fly
Smalltalk Powers Forward
by James Robertson
In depth review of OOVM in the article Resilient - Making Embedded Systems in Smalltalk
by James Robertson
A course in the Design and Implementation of Object-Oriented Virtual Machines
provides multiple PDF files that explore the topic in depth.
This course focuses on how to design and implement virtual machines for
object oriented languages. First part of the course discusses the designs
behind some of today's high performance virtual machines. A simple virtual
machine is introduced as a platform for testing the implementation techniques
covered by this part of the course. The second part of the course is project
based: participants are expected to enhance or implement a virtual machine.
The result is a report that describes the implementation and any experiences.
To widen the perspective, virtual machines for functional languages will
be contrasted to object-oriented virtual machines."
High Performance Virtual Machines
[PDF] slide presentation.
What is a high performance virtual machine? It is a virtual machine that applies
an array of optimizations while preserving the illusion that it executes
A slide presentation Resilient: Making Embedded Systems Serviceable
by Lars Bak.
To present a new compact and fast embedded object-oriented system that provides product serviceability.
A variant of the Smalltalk language.
1999-2010 by Smalltalk.org, All Rights Reserved.