ET for Energy-Aware Programming

ET is a new object-oriented programming language for energy-aware programming. The centerpiece of the language is a type system to promote energy-friendly code called Energy Types. The target code currently runs on Android-powered smartphones.

ET Compiler

The compiler source code can be downloaded here. Please find the installation instructions here.

The Type System

Energy Types is described in the following paper: Here is the abstract of the paper:

This paper presents a novel type system to promote and facilitate energy-aware programming. Energy Types is built upon a key insight into today's energy-efficient systems and applications: despite the popular perception that energy and power can only be described in joules and watts, real-world energy management is often based on discrete phases and modes, which in turn can be reasoned about by type systems very effectively. A phase characterizes a distinct pattern of program workload, and a mode represents an energy state the program is expected to execute in.

This paper describes a programming model where phases and modes can be intuitively specified by programmers or inferred by the compiler as type information. It demonstrates how a type-based approach to reasoning about phases and modes can help promote energy efficiency. The soundness of our type system and the invariants related to inter-phase and inter-mode interactions are rigorously proved. Energy Types is implemented as the core of a prototyped object-oriented language ET for smartphone programming. Preliminary studies show ET can lead to significant energy savings for Android Apps.

A longer version that includes the details omitted in the paper (such as proofs) can be found here.

Project Members


We would like to acknowledge NSF and Google for their sponsorship. This project is being supported by NSF CAREER Award CCF-1054515 and a Google Faculty Award.