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 talk includes special emphasis on mission-critical and real-time configurations of the Java virtual machine on SMP hardware.