avatars

Valid XHTML 1.0 Transitional CSS Valide !

Site universitaire de Jérôme Pilliet




image


Je suis doctorant en informatique à l'Université Paris-Est de Marne-la-Vallée.

Le sujet de ma thèse consiste en :
l'exécution efficace des langages dynamiques sur des environnements à ressources restreintes.

J'étudie les machines virtuelles et plus spécialement celles qui suivent la spécification Java.
Ma recherche s'effectue sur la transposition de la JSR 292 et de ses mécanismes
au sein d'environnements restreints tels que les smartphones et les tablettes.

La machine virtuelle utilisée pour les tests est celle d'Android nommée : Dalvik.
Vous pouvez suivre l'état d'avancement de ce projet sur

Acces : sujet / fichiers

Éxécution efficace des langages typés dynamiquement
au sein d'environnements à ressources restreintes.

¿ Késako ? Oo

C'est sûrement un peu flou juste avec le sujet, alors voila une petite explication ;)

L'existant

Il existe des langages typés statiquement (C, Java, ...) et d'autres dynamiquement (Python, Ruby, ...). Les langages typés dynamiquement sont exécutés au sein d'une machine virtuelle qui va déterminer lors de l'exécution à la fois les types ainsi que la sémantique du language.

Prenons un exemple simple:
Lorsqu'on se retrouve devant le symbole "+", nous devons choisir entre l'addition entre des entiers, des réels voir pour certains langages, la concaténation de chaînes de caractères. Un langage typé dynamiquement fera ce choix lors de la compilation tandis qu'un langage typé dynamiquement le fera lors de l'exécution (lorsqu'il connaîtra le type des éléments).

Puisqu'un langage dynamique tourne sur une machine virtuelle (VM), cette dernière va pouvoir travailler sur le programme (optimisation, gestion de la mémoire, ...). Il est donc important que la machine virtuelle soit performante. La JVM (Java Virtual Machine) est une des machines les plus performantes, elle dispose d'une infrastructure assez imposante
(JIT, plusieurs ramasse-miettes (GC), ...).

Il est donc intéressant pour des langages de pouvoir être exécutés sur cette machine. La JVM exécute actuellement plus de 200 langages autres que Java (son langage d'origine). Mais ayant des instructions typées statiquement, c'est une lourde tâche pour les développeurs de langages dynamiques que de faire exécuter leur langage sur la JVM.

C'est pourquoi depuis 2011, il existe la JSR 292 qui est une aide au support des langages dynamiques sur la JVM.

schéma de la JVM

Et moi dans tout ça ?

Le but de ma thèse est d'avoir ce même comportement sur des environnements à ressources restreintes tels que les smartphones et les tablettes.

Le problème majeur de ces environnements c'est qu'ils sont limités par leurs ressources
(puissance de calcul, mémoire, ...) dû au fait qu'il faut préserver au maximum la batterie de l'appareil.

Il existe plusieurs machines virtuelles tournant sur de tels environnements (jamVM, Dalvik, ...).
Ces machines peuvent potentiellement faire tourner des langages dynamiques,
mais l'efficacité d'exécution serait déplorable ...

L'idée est donc d'exploiter la JSR 292 sur ces machines. Nous ne pouvons malheureusement pas reprendre directement ce qui à été fait. Il faut savoir que les mécanismes utilisés par la JVM sont extrêmement gourmands. Il faut donc repenser les méta-modèle ainsi que les mécanismes afin que les développeurs de langages dynamiques puissent voir ces machines comme des JVM classiques.

Durant ma thèse, je travaillerai sur Dalvik, la machine virtuelle d'Android. J'y effectuerai les modifications nécessaires à la compréhension de la JSR 292 et y implémenterai les optimisations trouvés durant mes recherches.

schéma de la Dalvik

FAQ

  • Cette page présente une liste de conditions qui doivent être respectées pour qu'un TP puisse être corrigé. Prendre de bonnes habitudes de rendu pour votre travail est essentiel, pour cette raison les divers critères présents sur cette page entraineront d'importantes pénalités s'ils ne sont pas respectés (la plupart seront motifs de 0 sans correction). Dans le monde du travail, il n'est pas acceptable de rendre un projet en retard, qui ne compile pas, n'est pas documenté, ... Imposer une rigueur très stricte pour les rendus de TP vous permettra d'acquérir les standards de qualité du monde de l'entreprise.


    Mail

    Adresse d'envoi

    Le rendu de tp doit être fait avec votre adresse étudiante

    Date de rendu

    Le mail devra être envoyé avant la date de rendu au chargé de TP. Tout retard entrainera un 0 sans correction. Pour éviter les imprévus, il est fortement conseillé de ne pas attendre la dernière minute pour rendre son travail et de faire plusieurs copies à différents endroits pour ne pas perdre votre TP en cas de problème.

    Objet

    L'objet du mail doit avoir le format suivant afin de pouvoir être filtré :

    • Votre formation entre crochets
      ex : [L1], [L2], ..., [M1], ...
    • La matière pour laquelle le rendu est fait entre crochets
      ex : [ALGO1], [PROG4], ...
    • Le prénom et nom de la personne rendant le TP séparés par un underscore "_"
      ex : barack_obama, chuck_norris, ...
    • Le numéro du TP/TD
      ex : TP1, TD3, ...
    exemple [L2][PROG4] mickey_mouse TP3

    Corps

    Le corps du mail doit simplement respecter les règles de politesse les plus élémentaires.

    exemple Bonjour,
    Voici le rendu du TP3 de programmation 4.
    Bonne journée,
    Donald Duck.

    Pièce jointe

    Le corps du mail ne doit pas contenir de code ! Le code et le rapport seront envoyés dans une archive en pièce jointe. Pensez à vérifier que la pièce jointe est bien attachée au mail avant d'envoyer ce dernier.

    Format de l'archive

    La pièce jointe doit être au format tar.gz. Cette archive peut être créée de différentes façons :

    • par l'interface graphique (clic droit sur le dossier, compresser);
    • par un terminal en utilisant la commande tar et les options cvzf.
    exemple tar cvzf mickey_mouse.tar.gz mickey_mouse

    Nom de l'archive

    Le nom de l'archive devra suivre le format suivant : prenom_nom.tar.gz

    Contenu de l'archive

    Lors de l'extration de l'archive, un dossier dont le nom sera prenom_nom devra être créé. Ce dossier contiendra les fichiers sources du TP ainsi que le rapport.


    Fichiers sources

    Compilation

    Un TP ne compilant pas ne sera ni corrigé, ni ouvert et sa note sera bien évidemment 0.

    Indentation

    L'indentation du code est obligatoire. Si pour une raison exotique, vous programmez sans indenter votre code, le programme "indent" permet d'indenter les fichiers sources en langage C (voir le manuel).


    Rapport de TP

    Un rapport est demandé systématiquement lors des TPs.

    Contenu

    Le rapport devra contenir les sections suivantes :

    exemple DateNom Prénom
    Mail
    Formation / Groupe



    Titre du TP





    chargé : Nom Prénom

    • Une page de garde comprenant :
      • Votre nom, prénom et mail;
      • Votre formation et groupe de TP;
      • La date;
      • Le titre du TP et son numéro;
      • Le nom et prénom du chargé de TP.
    • Une introduction expliquant le but global du TP
    • Une section par exercice contenant les réponses aux questions et expliquant de façon détaillée les choix d'implémentation.
    • Une conclusion expliquant quelles notions ont été abordées dans ce TP ainsi que ce qui a été accompli.

    Format

    Le rapport devra être rendu sous la forme d'un fichier pdf. Les rapports rendus sous un autre format seront ignorés et considérés comme non rendus.

    Il est possible d'obtenir un fichier pdf à partir d'un fichier word ou openoffice. Idéalement LATEX sera utilisé pour créer le rapport.

    Orthographe

    Les fautes d'orthographes seront pénalisées car elles dénotent un profond manque de sérieux, de relecture et d'implication.

TPs/TDs

Listes non exaustives des TPs et TDs que je donne actuellement :
2014 - 2015 :
2013 - 2014 :
2012 - 2013 :
2011 - 2012 :
Cours TPs/TDs FAQs En Vracs

Parcours

2015--2016
ATER, Université Paris Est Marne-la-Vallée, Champs-sur-Marne.
Attaché Temporaire d'Enseignements et de Recherche.

2012--2016
Doctorat, LIGM - Université Paris Est, Champs-sur-Marne.
Exécution efficace des langages typés dynamiquement au sein d'environnements à ressources restreintes.

2010--2012
Master, Université Paris Est Marne-la-Vallée, Champs-sur-Marne.
Informatique - Logiciel et Réseau - Spécialité "Logiciel".
(rang : master I - 4/51 | master II - 2/19)

2007--2010
Licence, Université Paris Est Marne-la-Vallée, Champs-sur-Marne.
Mathématiques et Informatique - Informatique

2007
Baccalauréat, Lycée Pierre de Coubertin, Meaux.
Scientifique - option Sciences de l'Ingénieur

Stages de fin d'études

Avril--Aout 2012
Stage recherche, Université Paris Est Marne-la-Vallée, Champs-sur-Marne.
Stage de master II, MethodHandle : Réification des pointeurs de fonctions sur Dalvik.
  • Etude de l'existant :
    • Android et sa machine virtuelle Dalvik (AOSP) ;
    • JSR 292 et les langages dynamiquement typés.
  • Première ébauche de développement.

Mai--Aout 2011
Développeur, emka TECHNOLOGIES, Paris 15.
Stage de master I, Développement d'un logiciel d'acquisition et d'analyse de signaux physiologiques.
  • Validation d'outils de développement
  • Conception d'une architecture de gestion de flux de données
  • Développement d'une IHM de test

Juin--Juillet 2010
Développeur, NCDécor / Université Paris Est Marne-la-Vallée, Château-Thierry.
Stage de fin de licence, Analyse du protocole de communication d'une station de découpe 3D.
  • Récupération et analyse de trames sur un port série RS-232
  • Implémentation d'un logiciel en Python et d'un plugin sur Rhinoceros® en VBScript

Recherche

Publications (conférences internationales avec comité de lecture)

JTRES'14
Android 292: implementing invokedynamic on Android.

JTRES'15
DualStack: improvement of invokedynamic implementation on Android.

Présentations et séminaires

Oct. 2015
DualStack: improvement of invokedynamic implementation on Android., JTRES, Champs-sur-Marne

Nov. 2014
Android 292: implementing invokedynamic on Android., LIGM, Champs-sur-Marne

Oct. 2014
Android 292: implementing invokedynamic on Android., JTRES, Chutes du Niagara (USA)

Nov. 2013
Android 292, DEVOXX, Anvers (Belgique)

Juil. 2013
JSR 292 on Android, Oracle: JVM Summit, Santa Clara (USA)

Fev. 2013
Android 292, FOSDEM, Bruxelles (Belgique)

Oct. 2012
Dalvik 292, Open World Forum: Paris Android User Group, Paris

Enseignements

Vacations

2011--2012
  • Algorithmique et Programmation C - (24h) - licence Math/Info 2e année ;
  • Programmation C - (24h) - IMAC 1re année.

Monitorat

2014--2015
  • Algorithmique et Programmation Python 2 - (24h) - licence Math/Info 1re année.

2013--2014
  • Algorithmique et Programmation C - (30h) - licence Math/Info 2e année ;
  • Programmation Avancée Java - (24h) - master Informatique 1re année ;
  • Remise à niveau Java - (18h) - master Informatique 1re année.

2012--2013
  • Programmation C - (24h) - licence Math/Info 1re année ;
  • Algorithmique et Programmation C - (30h) - licence Math/Info 2e année ;
  • Programmation Objet Java - (24h) - licence Math/Info 3e année ;
  • Remise à niveau Java - (18h) - master Informatique 1re année.

ATER

2015--2016
  • Programmation C avancée - (20h) - ingénieur Informatique et Réseau 1re année ;
  • Programmation Objet Avancée Java - (18h) - ingénieur Informatique et Réseau 2e année ;
  • Concurrence - (12h) - ingénieur Informatique et Réseau 2e année ;
  • Interface Graphique Android - (18h) - ingénieur Informatique et Réseau 2e année ;
  • Programmation Objet Avancée Java - (24h) - master d’informatique 1re année ;
  • Machine Virtuelle - (12h) - master d’informatique 2e année.


Compétences

Informatiques

Système
Windows, Linux
Langage
C, C++, Java, C♯, Python ...
Web
(x)Html, CSS, PHP, JavaScript
Builder
Make, Autotools, Ant, Maven, Gradle
Framework
JQuery, Android, EmberJS, GDX...
SGBD
MySQL, PostgreSQL, Oracle
Autres
LATEX, Git, Mercurial...
IDE
Geany, Eclipse, Intellij Idea

Langues

Anglais
lu - écrit - parlé

Réalisations (http://git.brach.net/)

C
Mastermind , T9, "Twitter" (client - serveur), Traceur d'allocation mémoire...
Java
jeu type «Bomberman», Gestion d'autopsies (Swing),

Client/Serveur FTP, Site marchant JEE (http://jaestore.project.brach.net/)...
Python
Gestion d'arbres CSG (openGL 2.x), robot IRC (xChat)...
SQL
gestion d'une fromagerie, de certificats d'études et d'un concessionnaire de motos
Web
divers sites dont deux professionnels (www.payesplus.fr / www.adfnet.fr)

Centres d'intérêt

Musique
Éclectique, Pratique de la Batterie
Informatique
Développement, Divertissement
Autres
Cinéma, Séries, Manga/Animes...
Sport
Pratique du Skateboard
informations google-plus linkedin
projets cgit github bitbucket
contact mail
qrcode