Parce que les microprocesseurs ont tendance à atteindre des limites de performance "brute", les nouvelles puces embarquent aujourd'hui plusieurs "coeurs", dont la multiplication permet de poursuivre la course à la puissance. Malheureusement, la programmation de ces nouvelles générations de processeurs est complexe car les développeurs doivent répartir les traitements qu'ils programment sur les coeurs disponibles.
C'est pour faciliter ce travail que l'université de l'Illinois à Urbana-Champaign a mis au point "Deterministic Parallel Java" (DPJ), une extension au langage java dédiée à la programmation d'applications parallèles. Elle permet, par annotations, de décrire les parties de code à paralléliser et de segmenter en régions isolées la mémoire utilisée par le programme. Le compilateur DPJ, disponible en open source, exploite ces informations pour déterminer automatiquement les portions de code qui peuvent être effectivement exécutées en parallèle, en garatissant un résultat déterministe (déterministe par opposition au risque classique des programmes dont le résultat peut varier en fonction de conditions externes : par exemple lorsque deux branches exécutéees en parallèle lisent et écrivent une même zone mémoire, toute erreur de synchronisation peut conduire à des résultats aléatoires).
Malgré la maturité des processeurs multi-coeur, la maîtrise de la programmation parallèle reste un domaine de spécialistes et, dans de nombreux cas, l'exploitation des multiples coeurs d'une puce reste basique et inefficace (ou limitée à des traitements qui se prêtent facilement à la parallélisation), pour éviter tout risque d'erreur. Une partie de la puissance des machines modernes est ainsi "gaspillée". De nombreux chercheurs à travers le monde, dont, naturellement, ceux d'Intel, travaillent à rendre ce travail plus facile pour un résultat sans défaut. Le projet DPJ constitue une avancée prometteuse dans ce sens.