In recent years, all major microprocessor manufacturers are transitioning towards the deploymenet of multiple processing cores on every chip. These multi-core architectures represent the industry consensus regarding the most effective utilization of available silicon resources to satisfy growing demands for processing and memory capacities. Porting off-the-shelf software capabilities to multi-core architectures often requires significant changes to data structures and algorithms. When developing new software capabilities specifically for deployment on SMP architectures, software engineers are required to address specific multi-core programming issues, and in the ideal, must do so in ways that are generic to many different multi-core target platforms. This talk provides an overview of the special considerations that must be addressed by software engineers targeting multi-core platforms and describes how the Java language facilitates solutions to these special challenges.
The Java language is now the most popular programming language for the creation of new software capabilities. Its popularity has resulted in signficant economies of scale, with Java adopted as the primary language of instructional within many university curriculums, an abundance of reusable Java software components and Java software development tools available both from commercial suppliers and as open source technology, a large pool of competent Java developers from which to recruit staff, and a general willingness by senior staff software engineers to invest the effort required to learn this new programming language and technology. This talk describes the special approaches recommended for the use of Java in safety-critical deployments. The talk surveys the current state of the draft JSR-302 Safety Critical Java Specification and describes related experiences with commercially available technologies based on the constraints of early JSR-302 design discussions.