Safety-Critical Java (SCJ) is a profile of the Real-Time Specification for Java that brings to the safetycritical industry the possibility of using Java. SCJ defines three compliance levels: Level 0, Level 1 and Level 2. The SCJ specification is clear on what constitutes a Level 2 application in terms of its use of the defined API but not the occasions on which it should be used. This paper broadly classifies the features that are only available at Level 2 into three groups: nested mission sequencers, managed threads and global scheduling across multiple processors. We explore the first two groups to elicit programming requirements that they support. We identify several areas where the SCJ specification needs modifications to support these requirements fully; these include the following: support for terminating managed threads, the ability to set a deadline on the transition between missions and augmentation of the mission sequencer concept to support composibility of timing constraints. We also propose simplifications to the termination protocol of missions and their mission sequencers. To illustrate the benefit of our changes, we present excerpts from a formal model of SCJ Level 2 written in Circus, a state-rich process algebra for refinement. of the memory allocated for the component's temporary objects is reclaimed. An immortal memory area holds objects throughout the lifetime of the program: they are never deallocated. The scoped memory area of a mission is cleared out at the end of each mission. Each release of a handler has an associated per-release scoped memory area, cleared out at the end of the release. In the case of a thread, the execution of its associated run() method is viewed as a single release, and consequently, it is associated with its own local scoped memory area. Additionally, during a release, a stack of temporary private scoped memory areas can be used.The SCJ language specification defines three compliance levels (Levels 0, 1 and 2), which reflect three supported programming and execution models. The compliance levels reflect increased levels of complexity in terms of the available programming features and, therefore, of the supported programs, with direct impact on the effort required for certification. It is accepted that the effort required to certify a program that exploits the generality of Level 2 capabilities may be significantly greater than that required to certify programs that use only the more limited capabilities of the lower compliance levels.The differences between the three compliance levels are summarised in Table I. The schedulable objects available at each level include those listed for that level and those listed for the previous levels. While mission sequencers are schedulable objects and are used at all compliance levels, they can only be registered to a mission at Level 2, as we explain in the following discussions. The suspension column refers to the availability of features like Object.wait(), Object.notify() and Services.delay().A Level 0 application's execution...