IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Java : des extensions pour la programmation parallèle
Imaginées par des chercheurs de l'Université de l'Illinois

Le , par Idelways

354PARTAGES

2  0 
Mise à jour du 20/12/2010 par Idelways

Une équipe de chercheurs de l'Université de l'Illinois vient de sortir un outil interactif destiné à faciliter l'écriture de programmes Java pouvant bénéficier simultanément de la puissance de calcul de plusieurs processeurs.

Il s'agit de DPJizer, un plugin pour l'IDE Eclipse. Cette même équipe avait déjà développé des extensions au langage Java destinés à prévenir les problèmes usuels du développement d'applications parallèles, des extensions rendues publiques fin octobre (lire ci-avant).

L'équipe du projet décrit ce plug-in comme étant le premier outil interactif, pratique et à effet d'inférence pour un système d'effet moderne et orienté objet.

Selon ces universitaires, un système d'effet (un système formel qui décrit les effets de calcul de programmes informatiques, tels que les effets secondaires) nécessite de la part des développeurs de nombreuses annotations.
Des annotations qu'il faut synchroniser continuellement avec son code.

Une tâche fastidieuse que DPJizer automatise en analysant l'intégralité du programme pour y inférer des annotations DPJ.
Les chercheurs trouvent même les annotations inférés par DPJizer plus précises que celles faites par les développeurs manuellement.

Pour mémoire, le projet DJP, pour Deterministic Parallell Java a pour but de fournir une sémantique « déterministe par défaut » à un langage de programmation impératif et orienté objet à vérification de type à la compilation.

Le déterminisme dont il est question signifie que le programme produit à toutes les exécutions le même résultat visible pour une même entrée donnée. A moins que le développeur en décide autrement.

Le projet, son code source et son guide de mise en route sont disponibles en téléchargement sur Github

Source : le site du projet

Et vous ?

Avez-vous essayé les exetensions Deterministic Parallell Java ? Le plugin DPJizer vous semble-t-il intéressant ?

En collaboration avec Gordon Fowler

Java : des extensions pour la programmation parallèle
imaginées par des chercheurs de l'Université de l'Illinois

Des chercheurs de l'université de l'Illinois, à Urbana-Champaign, ont développé des extensions au langage Java destinés à prévenir les problèmes usuels du développement d'applications parallèles.

Distribué sous licence open-source, Deterministic Parallel Java (DJP) aide les développeurs à prévenir les bugs dûs à la programmation parallèle, en plein essor avec le passage massif de l'informatique aux processeurs multi-coeurs.

Ce projet est le premier du genre qui garantit la sémantique déterministe sans vérification à l'exécution pour un langage orienté objet à usage général (non spécifique).

Deterministic Parallel Java est concrètement un ensemble d'extensions au langage Java sous forme de compilateurs et un moteur d'exécution (runtime) pour réaliser des programmes qui produiraient toujours le même résultat visible pour une même entrée.

C'est aussi le premier à utiliser la vérification des types à la compilation pour des opérations parallèles sur des tableaux de références (pointeurs).

Ce comportement déterministe dans DPJ fonctionne par défaut, sauf si le développeur décide explicitement que son programme fonctionnera autrement.

Le résultat est donc une variante parallèle du langage Java, sûre et modulaire, qui permettrait aux développeurs de porter des applications séquentielles vers des systèmes à cœurs multiples.

L'équipe du projet ne compte pas s'arrêter là et travaille sur un C++ parallèle.

Code source, binaires et documentation sont téléchargeable sur le site de l'Université de l'Illinois

Source : le site du projet

Et vous ?

Qu'en pensez-vous ? Ce projet a-t-il de l'avenir ?
Faites-vous du développement parallèle ? Avec quels langages ? Quels sont vos retours d'expériences ?

En collaboration avec Gordon Fowler

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Traroth2
Membre émérite https://www.developpez.com
Le 21/10/2010 à 10:40
Plutôt alléchant. Ce type de concept a très certainement de l'avenir. Encapsuler la complexité afin de permettre aux développeurs applicatifs de profiter des dernières évolutions technologiques, c'est toujours une idée intéressante !
1  0 
Avatar de TheNOHDirector
Membre du Club https://www.developpez.com
Le 20/12/2010 à 15:59
Dans la même veine, des gens comme Ralph Johnson (il fait partie du GoF) travaillent sur un langage de pattern pour la programmation parallèle.

http://parlab.eecs.berkeley.edu/wiki...terns/patterns

Il s'agit encore d'un travail en cours, mais reconnaitre et connaitre ces patterns est probablement important à notre époque.
J'ai beaucoup de lecture à ce sujet d'ailleurs
0  0 
Avatar de ateji
Candidat au Club https://www.developpez.com
Le 14/02/2011 à 19:19
Il n'est pas nécessaire d'aller chercher jusqu'en Illinois. J'ajouterais une info à cette brève:

Java : des extensions pour la programmation parallèle imaginées par des chercheurs d'une startup parisienne

L'extension de Java en question s'appelle Ateji PX, elle est disponible depuis l'été dernier sous la forme d'un plugin Eclipse, et elle n'est pas limitée aux programmes déterministes.

L'idée de base est très simple : pour écrire Hello et World en parallèle, on construit un bloc parallèle avec deux branches. Ca s'écrit comme ça :

Code : Sélectionner tout
1
[
  || System.out.println("Hello");
  || System.out.println("World");
]
Difficile de faire plus simple, non ?

Et ça imprimera Hello World ou World Hello selon l'ordre dans lequel les branches parallèles ont été exécutées.

Bien sur il y a beaucoup plus que Hello World, on gère le parallélisme de données, de tâches, le data-flow, les streams à la MapReduce, etc. Vous pouvez voir un aperçu des constructions du langage dans cet article : http://www.ateji.com/px/whitepapers/...ava%20v1.0.pdf
0  0 
Avatar de gorgonite
Rédacteur/Modérateur https://www.developpez.com
Le 21/10/2010 à 10:31
a-t-on un comparatif par rapport à Parallel-C#

leur "ForkJoinTask" signifie-t-il qu'ils prévoient de paralléliser des processus, et ne plus se battre sur les threads ?
par ailleurs, quid des données partagées ? l'interface dispo semble proposer uniquement un retour de données à la fin de l'exécution
0  1