Instrumentation de code Java

Dimension: px
Commencer à balayer dès la page:

Download "Instrumentation de code Java"

Transcription

1 Instrumentation de code Java Mickaël Delahaye Étude bibliographique Master 2 Recherche Informatique 2007 Résumé Cette étude bibliographique présente un état de l art de l instrumentation de code Java. L instrumentation a pour objectif la collecte d informations dynamiques sur le programme. Elle peut se réaliser à plusieurs niveaux (code source, bytecode, machine virtuelle) et à plusieurs moments (avant, au moment ou en cours d exécution). Encadrant : François Bodin, Projet CAPS

2 Table des matières Introduction 2 1 Instrumentation statique Au niveau du code source Au niveau du bytecode Approche orientée aspect Le paradigme Points de jonction Exemple d utilisation Pour l instrumentation Instrumentation dynamique Instrumentation du bytecode au chargement Gestion d événements Solutions hybrides Tissage d aspect dynamique Conclusion 9 1

3 Introduction La collecte d informations sur les programmes est aujourd hui essentielle. Elle permet de déterminer des propriétés sur le comportement, les performances, la sécurité, etc. Alors que l analyse statique déduit des propriétés du programme à partir du texte du programme, l analyse dynamique se fonde sur l exécution. De nombreuses analyses dynamiques sont mises en oeuvre par instrumentation du code : couverture du code, trace d appels, temps d exécution, création et synchronisation des threads, accès aux données, etc. Même si les données sont toujours collectées à l exécution, l instrumentation de code peut être réalisée de manières variées suivant les propriétés que l on souhaite collecter et l impact sur les performances du code. Selon la manière dont l instrumentation est réalisée, on qualifie l instrumentation de statique ou bien de dynamique. L instrumentation statique analyse le code du programme et y ajoute des sondes avant son exécution. L instrumentation dynamique opère quant à elle à l exécution du programme, par exemple à l aide d interface de surveillance de la machine virtuelle. La plateforme Java repose sur une machine virtuelle exécutant du bytecode. Aussi, il paraît naturel de demander à la machine virtuelle de collecter les données dynamiques de l exécution. De plus, alors que les fichiers objet sont peu instrumentés (si ce n est par le compilateur), le bytecode est souvent instrumenté, notamment parce qu il est commun à toutes les architectures matérielles. Ainsi, l instrumentation de programme Java peut se faire à trois niveaux : le code source, le bytecode et la machine virtuelle. L instrumentation du code source relève bien sûr de l approche statique, et l instrumentation de la machine virtuelle de l approche dynamique. Mais l instrumentation du bytecode peut être réalisée avant l exécution, pendant le chargement des classes ou bien même à l exécution. Ce rapport a pour objectif de montrer les différentes méthodes d instrumentation, de savoir quelles informations dynamiques peuvent être collectées, mais également de connaître leur impact sur le programme instrumenté. Il présente les deux voies d instrumentation, c est-à-dire l instrumentation statique et l instrumentation dynamique, avec leurs principes, leurs caractéristiques et leurs limitations. 1 Instrumentation statique En Java, l instrumentation statique peut avoir lieu soit au niveau du code source, soit au niveau du bytecode en conservant la même portabilité. La principale contrainte de l instrumentation statique est de disposer de tout 2

4 le code à instrumenter avant son exécution, ce qui est parfois plus facile au niveau du bytecode en raison des licences. Les deux premiers paragraphes de cette partie sont consacrés aux solutions existantes d instrumentation du code source et du bytecode. Le dernier paragraphe se détache des considérations de lieu d instrumentation pour explorer le paradigme de la programmation orientée aspect. 1.1 Au niveau du code source L instrumentation du code source commence par une analyse du code source, à l aide d analyseurs lexical et syntaxique, puis place des sondes dans le code source. Ainsi, Cenqua Clover Code Coverage for Java [7], par exemple, analyse le code source Java, à l aide d analyseurs générés par ANTLR (ANother Tool for Language Recognition). Cette technique lui permet de découvrir naturellement les structures de contrôles de flot pour placer les sondes permettant de découvrir les branches mortes. Mais cette technique est surtout employée avec d autres langages. Par exemple, le système de mesures de performance TAU [15] instrumente les sources C, C++ et Fortran. Les événements instrumentés sont principalement l entrée/sortie de procédure et la gestion des threads. Même si on peut choisir quelles procédures instrumenter, on peut remarquer que l analyse du code source mise en place est très limitée. L instrumentation du code source permet de réaliser une analyse statique poussée avant de placer les sondes. De plus, le contrôle de la machine virtuelle, intégré à l API Java, permet de récupérer des données d exécution pourtant totalement transparente du point de vue du langage (notamment via les classes Runtime et Thread et le paquetage java.lang.management) : nombre de threads actifs, utilisation du tas, mémoire utilisé, taille du tas, etc. L instrumentation statique du code source est assez peu utilisée dans le monde Java, au profit de l instrumentation du bytecode, plus simple à analyser et tout aussi portable. 1.2 Au niveau du bytecode L injection de bytecode est une technique très utilisée aujourd hui, que ce soit pour le tissage d aspect, la mesure de performance ou l analyse de couverture. Le bytecode Java, désigné par l extension.class, est assez facile à analyser, mais certaines informations peuvent êtres perdues. La modification du bytecode est assuré par des bibliothèques, comme BCEL [3](Apache Jakarta), SERP [17] ou le plus récent ASM, permettant 3

5 de manipuler ces fichiers.class. Leur rôle principal est d extraire les données du bytecode et de pouvoir reconstruire un fichier.class avec ses mêmes données. La bibliothèque ASM [5], utilisée notamment par AspectJ (voir la Section 1.3), est particulièrement adaptée à l instrumentation de code : gestion transparente de la pool de constantes ; grande légèreté par rapport à BCEL et SERP (surtout utile dans le cas d une instrumentation dynamique) ; modèle original basé sur les événéments (utilisé aussi bien pour lire que pour écrire). Pour instrumenter une méthode, il suffit d intercepter un événement et de le modifier avant de le renvoyer. La modification des fichiers de bytecode a cependant une limitation : toute instrumentation nécessite la réécriture totale du fichier. En effet, un fichier.class contient exactement une classe ou interface Java, en conservant la structure objet de la classe. Mais le point noir de ce format, du point de vue de l instrumentation, est le partage des constantes et des noms entre les méthodes de la classe. En effet, le fichier.class contient un pool de constantes, qui contient les constantes proprement dites (chaînes, flottants et grands entiers), mais aussi les noms des classes, des méthodes et des champs utilisés. Comme ce pool est commun à toutes les méthodes, l instrumentation, qui appelle une fonction pour enregistrer les informations dynamiques, oblige à réécrire tout le fichier. Les instructions présentes dans la description des méthodes d un fichier.class permettent de réaliser une analyse de flot de contrôle ou de donnée. Ainsi, EMMA [10] peut vérifier la couverture par bloc de base en instrumentant le bytecode. Cependant, certaines informations peuvent être perdues en fonction d options de compilation : noms des variables, numéros de ligne, etc. De plus, si le compilateur Java réalise des optimisations, les informations dynamiques collectées seront très difficiles à interpréter. On notera tout de même que le compilateur Sun Microsystems (depuis la JDK 1.3) a abandonné les optimisations importantes du bytecode, comme l inlining, laissant l optimisation à la machine virtuelle. 1.3 Approche orientée aspect Lorsqu on instrumente un programme, on ajoute à l existant une nouvelle préoccupation, un nouvel aspect : la collecte d informations. Cette section présente en quoi le paradigme de la programmation orientée aspect peut répondre à notre attente. 4

6 1.3.1 Le paradigme La programmation orientée aspect a pour objectif d augmenter la modularisation et séparer les préoccupations. En effet, on constate que certaines préoccupations, dites transverses (cross-cuting concerns), tel que le logging, la sécurité ou la persistance, se retrouve dispersé dans l ensemble du programme. Dans la programmation orientée apect, les préoccupations transverses sont réalisés séparemment, puis elles sont entremelées, tissées, dans le code métier du programme, pour obtenir le programme fonctionnel. Le tisseur d aspect se charge d insérer le code des préoccupations tranverses à des points particuliers, appelés points de jonction (joint points). Pour chaque fragment de code d une préoccupation, appelé greffon (ou advice), l utilisateur peut choisir un point d action (pointcut), c est-à-dire un ensemble des points de jonction sélectionnés grâce à un motif. Le tisseur d aspect injecte ensuite les greffons aux emplacements sélectionnés par les points d action. Le tissage d aspect peut se faire à plusieurs moments : statiquement, avant ou après la compilation en bytecode, ou dynamiquement à l exécution. Ici, seul le tissage statique nous intéresse, la Section 2.4 discute du tissage dynamique. Dans le monde Java, une solution de programmation orientée objet se distingue particulièrement. En effet, AspectJ [1] est un projet soutenu par IBM et BEA Systems, qui permet le tissage statique d aspects et depuis la fusion avec le projet AspectWerkz [2] le tissage dynamique. À l origine, AspectJ tissait le code source, mais il il s est finalement tourné vers un tissage du bytecode (aujourd hui en utilisant ACM) Points de jonction Les tisseurs d aspect offrent à peu près tous les mêmes points de jonctions sur le papier : appel de méthode ou de constructeur ; exécution de méthode ou de constructeur ; accès à un champs (set/get) ; initialisation d un objet, initialisation statique d une classe ; exécution d une clause catch Exemple d utilisation La Figure 1 montre comment on peut très rapidement mettre en place un aspect qui enregistre le temps d exécution de toutes les méthodes publiques des classes du paquetage fr.irisa (et de ses sous-paquetages). 5

7 Fig. 1 Mesure du temps d exécution de méthode aspect P r o f i l i n g { private f i n a l static PrintStream output = new PrintStream (new FileOutputStream ( " p r o f i l e " ) ) ; } Object around ( ) : execution ( public f r. i r i s a... (.. ) ) { long time = System. c u r r e n t T i m e M i l l i s ( ) ; try { return proceed ( ) ; } f i n a l l y { time = System. c u r r e n t T i m e M i l l i s ( ) time ; output. p r i n t l n ( t h i s J o i n P o i n t S t a t i c P a r t. g e t S i g n a t u r e ( ) + " executed in " + time + "ms. " ) ; } } Pour l instrumentation Du point de vue de l instrumentation, la programmation orientée aspect arrive avec des outils de qualité. À partir d un greffon, toutes les informations dynamiques collectables par les autres techniques statiques sont disponibles, mais elles ne peuvent être collectées qu à certains moments de l exécution. Même si les points d actions peuvent être choisis assez précisément (classe, paquetage, méthode ou champ), le tisage d aspect ne peut pas, par principe, vérifier le passage du contrôle de flot dans les structures de contrôle, ou suivre l évolution de la valeur d une variable. On perd ainsi les avantages que peut procurer une analyse statique du code avant l instrumentation. 2 Instrumentation dynamique L instrumentation dynamique d un programme repose principalement sur deux techniques. La première consiste à instrumenter le bytecode des classes Java au cours de leur chargement. La seconde, en revanche, utilise la machine virtuelle pour intercepter des événements qui nous intéressent, grâce à des hooks. Mais il existe une troisième voie d instrumentation utilisant à la fois l instrumentation du bytecode et de la machine virtuelle. Cette partie présente les trois solutions et termine par un point de vue «orienté aspect» de l instrumentation dynamique. 6

8 2.1 Instrumentation du bytecode au chargement Sur toutes les machines virtuelles, il existe au moins un moyen simple permettant de modifier le bytecode au chargement des classes. Cette technique permet de bénéficier de tous les avantages de l instrumentation statique du bytecode, mais ne s effectue que sur les classes à charger et sans avoir à les sélectionner a priori. Pour instrumenter le bytecode au chargement d une classe, il est assez évident pour un développeur Java de surcharger la classe ClassLoader. La sous-classe de ClassLoader devra modifier les octets du fichier.class chargé avant de les renvoyer à la superclasse. Cette technique nécessite un moyen d imposer ce nouveau ClassLoader. Certaine machine virtuelle accepte un argument en ligne de commande pour choisir le ClassLoader par défaut. Mais le plus simple est encore d utiliser un lanceur, c est-à-dire un petit programme Java qui crée ce nouveau ClassLoader et charge ensuite le programme client avec lui. Depuis Java 5, la machine virtuelle Java propose une manière standard pour instrumenter le bytecode grâce à un agent d instrumentation programmé en Java [16]. Ainsi, d après D. Schwarz [13], un agent d instrumentation utilisant une bibliothèque de manipulation du bytecode (voir la Section 1.2), dans son cas BCEL [3], peut extraire de l information du bytecode et modifier le bytecode, en conséquence, au chargement des classes Gestion d événements La gestion d événements requiert que la machine virtuelle dispose d une interface pour intercepter des événements comme le chargement d une classe ou l exécution d une fonction. Cette technique est limitée par le nombre d événements observés, par leurs précisions. Il existe des interfaces natives (accessibles en C/C++) pour surveiller l exécution de programme Java. Avant Java 5, le standard (supporté à la fois par les machines virtuelles de Sun Microsystems, BEA Systems et IBM) s appelait JVMPI (Java Virtual Machine Profiler Interface). Il permet de placer des hooks notamment sur les événements suivants : le chargement de classe ; le démarrage et fermeture de thread ; l entrée et la sortie de méthode ; le chargement et le déchargement de méthode compilée (JIT). La limitation de JVMPI réside donc dans le nombre limité d événements observés. Mais, cette interface permet de consulter directement un certain nombre d informations sur la machine virtuelle (trace d appels notamment), 7

9 et permet d interagir avec l objet source de l événement grâce à l interface native Java (JNI). Certaines informations demeurent cependant indisponibles. Ainsi, lorsque le hook intercepte un appel de fonction, les paramètres effectifs ne sont pas connus, ce qui rend impossible tout contrôle des flux de données. Pour lever cette limitation, le système de mesures de performance TAU [14], qui peut mesurer les performances d un système parallèle programmé en Java, utilisant MPI (bibliothèque de communication), est obligé d utiliser une implémentation C de MPI instrumentée. La surveillance de la machine virtuelle paraît une bonne solution pour réaliser des mesures de performances. Malheureusement, comme indiqué dans les articles [11] et [9] (voir la Section 2.3), lorsque JVMPI ou un de ses équivalents place un hook sur l entrée et la sortie de méthodes, ce n est pas pour une méthode en particulier mais pour toutes les méthodes, ce qui obligent à maintenir des tables de hâchage, entrainant un surcoût à l exécution. Avec l arrivé de Java 5, JVM TI (JVM Tool Interface) prend le relais en tenant compte de ce problème. Comme indiqué dans [12], il offre moins d événements. Cette interface mise d avantage sur les solutions hybrides à base d injection de bytecode. 2.3 Solutions hybrides Les solutions mixtes utilisent des interfaces de la machine virtuelle pour instrumenter le bytecode, en utilisant exactement les mêmes techniques que dans la première méthode, mais cette fois-ci à partir d un environnement natif (en C/C++). De nombreux articles [9, 4, 11] décrivent des machines virtuelles personnalisées, ce qui peut entraîner la perte de la portabilité. D. Brear [4], par exemple, utilise une machine virtuelle Java, s exécutant sur une machine virtuelle Java, qui fragmente le bytecode utilisateur pour pouvoir placer des sondes dans chaque bloc de base, pendant l exécution. Le défaut majeur de cette technique est bien sûr le surcoût à l exécution. La technologie HotSwap intégrée à certaines machines virtuelles permet de modifier le code des classes chargées au cours de l exécution à partir d une interface de déboggage. Selon M. Dmitriev [8], cette technologie peut être utilisée pour l instrumentation de code. Grâce à la fonction RedefineClasses de JVMDI (JVM Debugger Interface), une autre interface expérimentale qui existait en parallèle de JVMPI, il est possible d instrumenter le bytecode des classes déjà chargées. Cependant, les performances de JMVDI sont perfectibles [9]. Avec JVMTI, les plateformes compatibles Java 5 promettent de meilleures performances que JVMDI. 8

10 Ces méthodes ont quelques avantages par rapport aux méthodes simples : leur performance par rapport à la gestion d événements ; la possibilité de réaliser une analyse statique du bytecode, qui se limite aux classes chargées ; la possibilité d instrumenter le bytecode durant l exécution. Leur défaut est qu elle repose sur des interfaces peu implémentées (JVMDI), ou des machines virtuelles non portables. 2.4 Tissage d aspect dynamique Comme on l a vu dans la Section 1.3, l instrumentation de code peut se voir comme un aspect. Si l instrumentation peut être dynamique, le tissage peut l être également. Le tissage dynamique est surtout utilisé en associationant avec les serveurs d applications. La principale différence avec le tissage statique réside dans la manière dans les aspects sont associé au code métier. Dans AspectJ, par exemple, l approche statique spéficie dans la définition de l aspect avec quelles classes il doit être tissés. Mais les solutions dynamiques, comme JBoss AOP, AspectWerkz [2] ou encore AspectJ 5, préfèrent utilisés un document XML pour associer les aspects au code métier. Le tissage proprement est réalisé au niveau du bytecode. Les tisseurs d aspects se prémunisent des problèmes de compatibilité en autorisant plusieurs méthodes d instrumentation des classes au chargement. AspectWerkz, par exemple, en possède plus de dix, notamment : un agent JVMTI pour les plateformes compatibles Java 5 ; un debugger JVMDI pour quelques machines virtuelles Sun Microsystems ; une classe ClassLoader personnalisée ; differents systèmes propriétaires, par exemple pour JRockit, la machine virtuelle de BEA Systems pour processeur Intel. Comme le démontre [6], le tissage dynamique peut profiter des possibilités du HotSwap. L avantage étant de pouvoir tisser pendant l exécution du programme. Conclusion Cette étude présente les différentes méthodes d instrumentation de code, qu elle soit réalisée avant ou au cours de l exécution. On peut voir que, parmis toutes les méthodes décrites, aucune ne domine plus que les autres. 9

11 L instrumentation statique, d abord, permet de placer les sondes avec un grand discernement basé sur une analyse statique, qui peut être intra- et interprocédurale. Malheureusement, il n est pas toujours facile de rassembler tout le code de l application pour instrumentation. Quant à l analyse du bytecode, elle se rélève parfois compliquée, proche des techniques de reverse engeneering, parce que la compilation peut perdre certaines données. Ensuite, les solutions dynamiques, qui sont souvent plus pratiques à mettre en place, sont affectées par un surcoût à l exécution et une perte de portabilité (code natif, machine virtuelle spécialisée, etc.). Enfin, le tissage d aspect, qui peut prendre en charge l instrumentation de code, n est en fait qu une couche d harmonisation au dessus des mêmes techniques que l instrumentation (injection de bytecode, HotSwap...). C est pourquoi son utilisation est simple, mais aussi plus limitée dans les événements observables. L objectif du stage est de trouver la ou les instrumentations adéquates pour récolter des informations permettant de décider si une optimisation réalisée dans le code source est pertinante. Références [1] AspectJ. [2] AspectWerkz. [3] Apache Jakarta BCEL. [4] Douglas J Brear, Thibaut Weise, Tim Wiffen, Kwok Cheung Yeung, Sarah A M Bennett et Paul H J Kelly : Search strategies for Java bottleneck location by dynamic instrumentation, [5] Eric Bruneton, Romain Lenglet et Thierry Coupaye : ASM : a code manipulation tool to implement adaptable systems. In Proceedings of the ASF (ACM SIGOPS France) Journées Composants 2002 : Systèmes à composants adaptables et extensibles (Adaptable and extensible component systems), [6] S. Chiba, Y. Sato et M. Tatsubori : Using HotSwap for implementing dynamic AOP systems, [7] Cenqua Clover for Java. [8] M. Dmitriev : Application of the HotSwap technology to advanced profiling. In First International Workshop on Unanticipated Software Evolution (USE2002)., [9] M. Dmitriev : Profiling Java applications using code hotswapping and dynamic call graph revelation. In WOSP 04 : Proceedings of the 4th 10

12 international workshop on Software and performance, pages ACM Press, [10] EMMA. [11] M. Harkema, D. Quartel, B. M. M. Gijsen et R. D. van der Mei : Performance monitoring of Java applications. In WOSP 02 : Proceedings of the 3rd international workshop on Software and performance, pages ACM Press, [12] K. O Hair : The JVMPI transition to JVMTI. Sun Developper Network, [13] D. Schwarz : Peeking inside the box : Attribute-oriented programming with Java 1.5. ONJava.com, [14] Sameer Shende et Allen D. Malony : Integration and applications of the TAU performance system in parallel Java environments. In JGI 01 : Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande, pages ACM Press, [15] Sameer S. Shende et Allen D. Malony : The TAU parallel performance system. Int. J. High Perform. Comput. Appl., 20(2): , [16] Java 2 Platform SE 5.0 API Specification : java.lang.instrument. [17] A. White : SERP. 11

Introduction au langage Java

Introduction au langage Java Introduction au langage Java 1 / 24 1 Vue générale La technologie Java Le langage Java La machine virtuelle Java Résumé Plan 2 Hello World Prérequis Premier programme : 3 étapes Résumé 3 HelloWorld en

Plus en détail

La technologie Java Card TM

La technologie Java Card TM Présentation interne au CESTI La technologie Java Card TM sauveron@labri.u-bordeaux.fr http://dept-info.labri.u-bordeaux.fr/~sauveron 8 novembre 2002 Plan Qu est ce que Java Card? Historique Les avantages

Plus en détail

Analyse statique de programmes Typage et analyse statique au sein de Java

Analyse statique de programmes Typage et analyse statique au sein de Java Analyse statique de programmes Typage et analyse statique au sein de Java Master Professionnel Informatique spécialité FSIL/FSI Jean-Marc Talbot jean-marc.talbot@lif.univ-mrs.fr Aix-Marseille Université

Plus en détail

Analyse de la démographie des objets dans les systèmes Java temps-réel

Analyse de la démographie des objets dans les systèmes Java temps-réel Analyse de la démographie des objets dans les systèmes Java temps-réel Nicolas BERTHIER Laboratoire VERIMAG Responsables du stage : Christophe RIPPERT et Guillaume SALAGNAC le 29 septembre 26 1 Introduction

Plus en détail

Instrumentation et réflexivité en Java 5.0 et 6.0

Instrumentation et réflexivité en Java 5.0 et 6.0 Java Instrumentation et réflexivité en Java et 6.0 UPMC November 9, 2006 (UPMC) Instrumentation November 9, 2006 1 / 28 Java Petit Plan Plan de ce cour 1 Présentation de l Instrumentation 2 Présentation

Plus en détail

Éléments de programmation et introduction à Java

Éléments de programmation et introduction à Java Éléments de programmation et introduction à Java Jean-Baptiste Vioix (jean-baptiste.vioix@iut-dijon.u-bourgogne.fr) IUT de Dijon-Auxerre - LE2I http://jb.vioix.free.fr 1-20 Les différents langages informatiques

Plus en détail

Analyse de performance et optimisation. David Geldreich (DREAM)

Analyse de performance et optimisation. David Geldreich (DREAM) Analyse de performance et optimisation David Geldreich (DREAM) Plan de l exposé Analyse de performance Outils Optimisation Démonstrations Analyse de performance Pas d optimisation sans analyse de performance

Plus en détail

Guillaume SOLDERA (B guillaume.soldera@serli.fr) SERLI Informatique Bull OW2 Consortium. Comparatif Choco/Drools dans le cadre du projet JASMINe

Guillaume SOLDERA (B guillaume.soldera@serli.fr) SERLI Informatique Bull OW2 Consortium. Comparatif Choco/Drools dans le cadre du projet JASMINe Guillaume SOLDERA (B guillaume.soldera@serli.fr) SERLI Informatique Bull OW2 Consortium dans le cadre du projet JASMINe Avril 2008 Table des matières 1 Introduction 3 1.1 Rappel sur JASMINe.......................................

Plus en détail

G en om3: Building middleware-independent robotic components. Comparaison de middleware: YARP, MS Robotics Dev Studio, URBI, OpenRTM-aist, ROS

G en om3: Building middleware-independent robotic components. Comparaison de middleware: YARP, MS Robotics Dev Studio, URBI, OpenRTM-aist, ROS G en om3: Building middleware-independent robotic components Comparaison de middleware: YARP, MS Robotics Dev Studio, URBI, OpenRTM-aist, ROS Pablo Rauzy 15 février 2011 Table des matières 1 G en om3 :

Plus en détail

Annexe : La Programmation Informatique

Annexe : La Programmation Informatique GLOSSAIRE Table des matières La Programmation...2 Les langages de programmation...2 Java...2 La programmation orientée objet...2 Classe et Objet...3 API et Bibliothèque Logicielle...3 Environnement de

Plus en détail

Environnements de développement (intégrés)

Environnements de développement (intégrés) Environnements de développement (intégrés) Développement de greffons Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure Centre d enseignement

Plus en détail

Conteneurs Adaptable Dynamiquement pour la plateforme CORBA Component Model Model

Conteneurs Adaptable Dynamiquement pour la plateforme CORBA Component Model Model Conteneurs Adaptable Dynamiquement pour la plateforme CORBA Component Model Model Journée de l'action spécifique CNRS-GET Systèmes répartis et réseaux adaptatifs au contexte ( Context-Aware ) Laboratoire

Plus en détail

Mieux programmer en Java

Mieux programmer en Java Mieux programmer en Java Peter Haggar Éditions Eyrolles ISBN : 2-212-09171-0 2000 PARTIE 1 l exécution de l instruction return, cependant, le contrôle est transféré au bloc finally en // 2. Cela provoque

Plus en détail

édition revue et corrigée avec Java SE 7 7 1 Les bases 11 Compiler un programme Java 13 Exécuter un programme Java 14 Définir le chemin de classe 15

édition revue et corrigée avec Java SE 7 7 1 Les bases 11 Compiler un programme Java 13 Exécuter un programme Java 14 Définir le chemin de classe 15 Table des matières Au sujet de l auteur 1 Introduction 3 édition revue et corrigée avec Java SE 7 7 1 Les bases 11 Compiler un programme Java 13 Exécuter un programme Java 14 Définir le chemin de classe

Plus en détail

Familiarisation avec Eclipse / Netbeans

Familiarisation avec Eclipse / Netbeans Institut Galilée LEE Année 011-01 Master T.P. 0 Familiarisation avec Eclipse / Netbeans Lien important contenant le pdf du cours et du TP, et ensuite des sources : http://www-lipn.univ-paris13.fr/~fouquere/mpls

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

JVM. RMI - couche de référence. RMI - couche de transport TCP/IP

JVM. RMI - couche de référence. RMI - couche de transport TCP/IP Chapitre 9 Dans ce chapitre nous abordons le mécanisme RMI (Remote Method Invocation) permettant le développe ment des systèmes répartis. Nous expliquerons comment les classes d un serveur peuvent être

Plus en détail

IRL : Simulation distribuée pour les systèmes embarqués

IRL : Simulation distribuée pour les systèmes embarqués IRL : Simulation distribuée pour les systèmes embarqués Yassine El Khadiri, 2 ème année Ensimag, Grenoble INP Matthieu Moy, Verimag Denis Becker, Verimag 19 mai 2015 1 Table des matières 1 MPI et la sérialisation

Plus en détail

Cahier de charges (Source : "Java EE - Guide de développement d'applications web en Java" par Jérôme Lafosse) Module. Site Web dynamique JSP / Servlet

Cahier de charges (Source : Java EE - Guide de développement d'applications web en Java par Jérôme Lafosse) Module. Site Web dynamique JSP / Servlet Cahier de charges (Source : "Java EE - Guide de développement d'applications web en Java" par Jérôme Lafosse) Module Site Web dynamique JSP / Servlet Sujet : betaboutique Soutenance le 04 / 01 /2013 &

Plus en détail

RAPPORT DE CONCEPTION UML :

RAPPORT DE CONCEPTION UML : Carlo Abi Chahine Sylvain Archenault Yves Houpert Martine Wang RAPPORT DE CONCEPTION UML : Bamboo Ch@t Projet GM4 Juin 2006 Table des matières 1 Introduction 2 2 Présentation du logiciel 3 2.1 Précisions

Plus en détail

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\ Exercices corrigés de programmation OO Java Préparés par : Mlle Imene Sghaier Année Académique : 2006-2007 Premiers Pas I. Avant de programmer en Java Le JDK de Sun (Java Development Kit) est l outil essentiel

Plus en détail

Installation de Virtual Box & VM ware

Installation de Virtual Box & VM ware SCHMITT Année 2012/2014 Cédric BTS SIO Installation de Virtual Box & VM ware Description : Ce projet a pour but de définir la virtualisation, de comparer deux solution (Virtual Box & VMware), de les installer

Plus en détail

Votre première application Android - Introduction aux Interfac. utilisateur

Votre première application Android - Introduction aux Interfac. utilisateur Votre première application Android - Introduction aux Interfaces graphiques utilisateur frederic.guinand@univ-lehavre.fr 2014-2015 Plan Analyse d une app Android : visite guidée Introduction aux interfaces

Plus en détail

Une introduction au langage C++ Marc Jachym, Lurpa

Une introduction au langage C++ Marc Jachym, Lurpa Une introduction au langage C++ Marc Jachym, Lurpa Janvier 2008 À l origine, le langage C Langage procédural créé dans les années 1970 aux laboratoires Bell (ATT : télécoms américains) en vue d écrire

Plus en détail

Introduction aux systèmes d exploitation

Introduction aux systèmes d exploitation Introduction aux systèmes d exploitation Le système d exploitation est un ensemble de logiciels qui pilotent la partie matérielle d un ordinateur. Les principales ressources gérées par un système d exploitation

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

Plus en détail

AOP Tools Comparison

AOP Tools Comparison Comparaison des outils de développement AOP en Java basée sur l'article de Mik Kersten. Fabrice Bodmer & Timothée Maret Université de Fribourg, Juin 2006 Plan 1. Introduction 2. Présentation des outils

Plus en détail

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau Plan Tableaux Université de Nice - Sophia Antipolis Richard Grin Version 1.0.4 25/11/10 Définition Déclaration d un tableau Création d un tableau Utilisation d un dun tableau Tableau des paramètres de

Plus en détail

Java pour le Web. Cours Java - F. Michel

Java pour le Web. Cours Java - F. Michel Java pour le Web Cours Java - F. Michel Introduction à JEE 6 (ex J2EE) Historique Qu'est-ce que JEE JEE : Java Entreprise Edition (ex J2EE) 1. Une technologie outils liés au langage Java + des spécifications

Plus en détail

Les Systèmes et Applications Réparties et leur Programmation

Les Systèmes et Applications Réparties et leur Programmation Les Systèmes et Applications Réparties et leur Programmation Samia Bouzefrane Maître de Conférences Laboratoire CEDRIC Conservatoire National des Arts et Métiers 292 rue Saint Martin 75141 Paris Cédex

Plus en détail

Les exceptions en Java

Les exceptions en Java Chapitre 6 Les exceptions en Java Lorsqu on conçoit un programme, on essaie évidemment qu il soit correct, c est-à-dire qu il fonctionne parfaitement dans les conditions prévues de son utilisation. L utilisateur

Plus en détail

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles Brique ASC Samuel Tardieu sam@rfc1149.net École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles La compilation peut

Plus en détail

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/2012. 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/2012. 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme Java 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme 1 2 c est quoi? Technologie développée par SUN Microsystems lancée en 1995 Dans un des premiers papiers* sur le langage JAVA, SUN le décrit

Plus en détail

PLAN. I. Pourquoi : les besoins, les types d applications

PLAN. I. Pourquoi : les besoins, les types d applications PLAN I. Pourquoi : les besoins, les types d applications II. Comment : les technos et pratiques dont on dispose pour mettre en œuvre les applications III. Avec quels outils III.1 Introduction aux IDE III.2

Plus en détail

Introduction au Java Development Kit Et quelques instructions en Java. 1 Création des répertoires d accueil des programmes Java

Introduction au Java Development Kit Et quelques instructions en Java. 1 Création des répertoires d accueil des programmes Java HLIN406 - Janvier 2015 Le Java Development Kit offre un ensemble d outils de développement d applications Java. Pour utiliser ces outils, JDK ne propose pas d interface utilisateur, on doit donc écrire

Plus en détail

Spring IDE. Mise en œuvre. Eclipse

Spring IDE. Mise en œuvre. Eclipse A Spring IDE Bien que Spring mette à disposition d intéressants mécanismes afin d améliorer l architecture des applications Java EE en se fondant sur l injection de dépendances et la programmation orientée

Plus en détail

4D v11 SQL Release 5 (11.5) ADDENDUM

4D v11 SQL Release 5 (11.5) ADDENDUM ADDENDUM Bienvenue dans la release 5 de 4D v11 SQL. Ce document présente les nouveautés et modifications apportées à cette nouvelle version du programme. Prise en charge de nouvelles plates-formes La release

Plus en détail

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007 NFP 121 Java et les Threads Présentation : Thierry Escalarasse Mai 2007 Plan du cour Présentation de la notion de Threads La classe Thread L interface Runnable Les états d un thread La Synchronisation

Plus en détail

Précis de vocabulaire Orienté Objet

Précis de vocabulaire Orienté Objet Dernière Mise à jour : Mars 2007 Précis de vocabulaire Orienté Objet 1 Questions Expliquer et donner un exemple pour chacun des concepts suivants 1. Qu'est-ce qu'un objet? 2. Qu'est-ce qu'une classe? 3.

Plus en détail

Programmation RMI Ph. Truillet

Programmation RMI Ph. Truillet http://www.irit.fr/~philippe.truillet Ph. Truillet Octobre 2015 v. 1.7 0. déroulement du TP RMI (Remote Method Invocation) est une technologie développée et fournie par Sun à partir du JDK 1.1 pour permettre

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

ASM : un outil de manipulation de code pour la réalisation de systèmes adaptables

ASM : un outil de manipulation de code pour la réalisation de systèmes adaptables ASM : un outil de manipulation de code pour la réalisation de systèmes adaptables Eric Bruneton, Romain Lenglet, Thierry Coupaye France Télécom R&D, DTL/ASR 28, chemin du Vieux Chêne BP 98, 38243 MEYLAN

Plus en détail

CAHIER DES CHARGES D IMPLANTATION

CAHIER DES CHARGES D IMPLANTATION CAHIER DES CHARGES D IMPLANTATION Tableau de diffusion du document Document : Cahier des Charges d Implantation EVRP Version 6 Etabli par DCSI Vérifié par Validé par Destinataires Pour information Création

Plus en détail

d applications embarquées en environnement Java Card TM

d applications embarquées en environnement Java Card TM Mémoire de DEA sous la direction de Serge Chaumette Sécurité et vérification d applications embarquées en environnement Java Card TM sauveron@labri.u-bordeaux.fr http://dept-info.labri.u-bordeaux.fr/~sauveron

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Environnements de développement

Environnements de développement Environnements de développement Mihaela Sighireanu UFR d Informatique Paris 7, LIAFA, 175 rue Chevaleret, Bureau 6A7 http://www.liafa.jussieu.fr/ sighirea/cours/edi/ Introduction aux EDI, la plateforme

Plus en détail

Le.NET Compact Framework Windows Mobile

Le.NET Compact Framework Windows Mobile Le.NET Compact Framework Windows Mobile HEROGUEL Quentin 2 Le.NET Compact Framework Windows Mobile Sommaire 1 Le.NET Compact Framework... 3 1.1 Vue d ensemble rapide de l architecture du.net Compact Framework...

Plus en détail

Introduction à l Informatique

Introduction à l Informatique Introduction à l Informatique. Généralités : Etymologiquement, le mot informatique veut dire «traitement d information». Ceci signifie que l ordinateur n est capable de fonctionner que s il y a apport

Plus en détail

Cours 1: Java et les objets

Cours 1: Java et les objets Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/

Plus en détail

Présentation. Logistique. Résumé de la 1e Partie. Mise en place du système

Présentation. Logistique. Résumé de la 1e Partie. Mise en place du système Présentation Diapo01 Je m appelle Michel Canneddu. Je développe avec 4D depuis 1987 et j exerce en tant qu indépendant depuis 1990. Avant de commencer, je tiens à remercier mes parrains Jean-Pierre MILLIET,

Plus en détail

Ecole Nationale Supérieure des Télécommunications Les outils XML

Ecole Nationale Supérieure des Télécommunications Les outils XML Ecole Nationale Supérieure des Télécommunications Les outils XML Page 1 sur 13 SOMMAIRE 1 Introduction 3 2 Parseur XML et processeur XSLT 4 2.1 Le Parseur XML v2 4 2.1.1 Les API DOM et SAX 4 2.1.2 Le parseur

Plus en détail

Cours 2 : The Java VM Specification. Damien MASSON d.masson@esiee.fr. 28 février 2011

Cours 2 : The Java VM Specification. Damien MASSON d.masson@esiee.fr. 28 février 2011 Androïd Cours 2 : The Java VM Specification Damien MASSON d.masson@esiee.fr http://igm.univ-mlv.fr/~masson/teaching/android/ 28 février 2011 Buts du cours et Références Ce cours présente le fonctionnement

Plus en détail

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

Environnements de développement

Environnements de développement Environnements de développement UFR d Informatique Paris 7, LIAFA, 175 rue Chevaleret, Bureau 6A7 http://www.liafa.jussieu.fr/ sighirea/cours/edi/ Extension de la plate-forme Eclipse Résumé 1 Rappels de

Plus en détail

Introduction aux Composants Logiciels

Introduction aux Composants Logiciels Introduction aux Composants Logiciels Christian Pérez LIP/INRIA Année 2010-11 Plan Introduction aux composants logiciels Pourquoi des composants logiciels Notions de composants logiciels Conclusion Survol

Plus en détail

Sécurité de la plate-forme d exécution Java : limites et proposition d améliorations

Sécurité de la plate-forme d exécution Java : limites et proposition d améliorations Sécurité de la plate-forme d exécution Java : limites et proposition d améliorations Guillaume Hiet, Frédéric Guihéry, Goulven Guiheux, David Pichardie, Christian Brunette AMOSSYS-INRIA-SILICOM 10 juin

Plus en détail

Solutions de gestion de la sécurité Livre blanc

Solutions de gestion de la sécurité Livre blanc Solutions de gestion de la sécurité Livre blanc L intégration de la gestion des identités et des accès avec l authentification unique Objectif : Renforcer la politique de sécurité et améliorer la productivité

Plus en détail

Java Remote Method Invocation

Java Remote Method Invocation Java Remote Method Invocation Ce support est très largement inspiré du livre et du cours de S. Krakowiak S. Krakowiak Java Remote Method Invocation 1 / 25 Intérêt des objets pour la construction d applications

Plus en détail

Rapport de TER: Analyse de pointeur dans LLVM

Rapport de TER: Analyse de pointeur dans LLVM Rapport de TER: Analyse de pointeur dans LLVM Aurélien CHEMIER Janvier-Février 2014 Résumé Les optimisations réalisées à l intérieur d un compilateur, pour améliorer l efficacité du code généré, ont besoin

Plus en détail

Vulgarisation Java EE Java EE, c est quoi?

Vulgarisation Java EE Java EE, c est quoi? Paris, le 1 Février 2012 Vulgarisation Java EE Java EE, c est quoi? Sommaire Qu est ce que Java? Types d applications Java Environnements Java Versions de Java Java EE, c est quoi finalement? Standards

Plus en détail

Exceptions. Fiabilité d un logiciel. Fiabilité en Java. Erreurs/exceptions. Localisation du traitement des erreurs/exceptions.

Exceptions. Fiabilité d un logiciel. Fiabilité en Java. Erreurs/exceptions. Localisation du traitement des erreurs/exceptions. Fiabilité d un logiciel Exceptions Université Française d Egypte Version O 5.7 5/10/15 Richard Grin Robustesse : fonctionne correctement, même en présence d événements exceptionnels Correction : donne

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

Chapitre 2 : Abstraction et Virtualisation

Chapitre 2 : Abstraction et Virtualisation Virtualisation et Cloud Computing Chapitre 2 : Abstraction et Virtualisation Objectifs Présenter la notion de niveaux d abstraction séparés par des interfaces bien définies Description des avantages et

Plus en détail

Historique. Évolution des systèmes d exploitation (à travers les âges)

Historique. Évolution des systèmes d exploitation (à travers les âges) Historique Évolution des systèmes d exploitation (à travers les âges) Historique L histoire des systèmes d exploitation permet de dégager des concepts de base que l on retrouve dans les systèmes actuels

Plus en détail

Cours client-serveur Web : Java et RMI (Remote Method Invocation)

Cours client-serveur Web : Java et RMI (Remote Method Invocation) Cours client-serveur Web : Java et RMI (Remote Method Invocation) 1 Java: Rappel sur les threads Cycle de vie d un thread (1) Né -> prêt appel de la méthode start du thread Prêt Exécution Distribution

Plus en détail

Analyse de performance, monitoring

Analyse de performance, monitoring Analyse de performance, monitoring Plan Principes de profilage Projet TPTP dans Eclipse Utilisation des profiling tools de TPTP Philippe Collet Master 1 Informatique 2009-2010 http://deptinfo.unice.fr/twiki/bin/view/minfo/gl

Plus en détail

Qu est ce que l environnement Eclipse?

Qu est ce que l environnement Eclipse? Qu est ce que l environnement Eclipse? Bernard DAUTREVAUX Directeur formation et conseil Acsys www.ac6-formation.com Pour en savoir plus: nos formations Eclipse +33 (0)1 41 16 80 10 Page 0 assistance conseil

Plus en détail

Framework. NET & Windows Presentation Foundation

Framework. NET & Windows Presentation Foundation Framework. NET & Windows Presentation Foundation UE Informatique ambiant Module Informatique graphique Morgan DIOT M Buta Kabengele 5 ème année EO Option Vision Embarquée PROGAMME DE LA SEANCE I. Partie

Plus en détail

Héritage, et quelques petits mots-clés de Java

Héritage, et quelques petits mots-clés de Java Héritage, et quelques petits mots-clés de Java Bilan de la séance du 3 février. 1 Champs d instance, champs de classe La situation usuelle pour les attributs et les méthodes est la suivante : La classe

Plus en détail

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

Chapitre I Notions de base et outils de travail

Chapitre I Notions de base et outils de travail Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement

Plus en détail

Vers la certification des applications Java Card TM

Vers la certification des applications Java Card TM AS CNRS Sécurité logicielle : modèles et vérification Vers la certification des applications Java Card TM sauveron@labri.u-bordeaux.fr http://dept-info.labri.u-bordeaux.fr/~sauveron 20-21 février 2003

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Utiliser NDK dans un projet Android

Utiliser NDK dans un projet Android Introduction NDK est une suite d outils permettant de compiler puis d utiliser du code natif dans une application Android. Ce code natif est ensuite appelé via JNI (Java Native Interface), fournissant

Plus en détail

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI JAVA, CORBA et RMI objectif : développer des applications client/serveur incluant des objets répartis Java / CORBA : client/serveur hétérogènes Java / RMI : client/serveur homogènes plan : l architecture

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

Cours 3 : The Dalvik VM Specification. Damien MASSON d.masson@esiee.fr

Cours 3 : The Dalvik VM Specification. Damien MASSON d.masson@esiee.fr Androïd Cours 3 : The Dalvik VM Specification Damien MASSON d.masson@esiee.fr http://igm.univ-mlv.fr/~masson/teaching/android/ 1 er mars 2011 Buts du cours et Références Buts : Pourquoi Google n a pas

Plus en détail

Service combinators for farming virtual machines

Service combinators for farming virtual machines Master d Informatique Fondamentale École Normale Supérieure de Lyon Sémantique du parallélisme Chantal Keller Service combinators for farming virtual machines K. Bhargavan, A. D. Gordon, I. Narasamdya

Plus en détail

Projet Informatique. Philippe Collet. Licence 3 Informatique S5 2014-2015. http://deptinfo.unice.fr/twiki/bin/view/linfo/projetinfo201415

Projet Informatique. Philippe Collet. Licence 3 Informatique S5 2014-2015. http://deptinfo.unice.fr/twiki/bin/view/linfo/projetinfo201415 Projet Informatique Philippe Collet Licence 3 Informatique S5 2014-2015 http://deptinfo.unice.fr/twiki/bin/view/linfo/projetinfo201415 Réalisation d'un développement de taille conséquente? r Firefox? Ph.

Plus en détail

PRESENTATION DE JAVA. Qu est-ce que java? Les caractéristiques du langage java Les outils Les API Références. Software Associates International

PRESENTATION DE JAVA. Qu est-ce que java? Les caractéristiques du langage java Les outils Les API Références. Software Associates International PRESENTATION DE JAVA Qu est-ce que java? Les caractéristiques du langage java Les outils Les API Références 1 Qu est-ce que java? Un langage de programmation orienté objets Une architecture de Virtual

Plus en détail

Projet de Veille Technologique

Projet de Veille Technologique Projet de Veille Technologique Programmation carte à puce - JavaCard Ing. MZOUGHI Ines (i.mzoughi@gmail.com) Dr. MAHMOUDI Ramzi (mahmoudr@esiee.fr) TEST Sommaire Programmation JavaCard Les prérequis...

Plus en détail

0- Le langage C++ 1- Du langage C au langage C++ 2- Quelques éléments sur le langage. 3- Organisation du cours

0- Le langage C++ 1- Du langage C au langage C++ 2- Quelques éléments sur le langage. 3- Organisation du cours 0- Le langage C++ 1- Du langage C au langage C++ 2- Quelques éléments sur le langage 3- Organisation du cours Le présent cours constitue une introduction pour situer le langage C++, beaucoup des concepts

Plus en détail

Environnements de Développement

Environnements de Développement Institut Supérieur des Etudes Technologiques de Mahdia Unité d Enseignement: Environnements de Développement Mme BEN ABDELJELIL HASSINE Mouna m.bnaj@yahoo.fr Développement des systèmes d Information Syllabus

Plus en détail

Éléments de base en Java (suite et fin)

Éléments de base en Java (suite et fin) Éléments de base en Java (suite et fin) P.O.O. LMI 2 Semestre 4 Option Info Année 2008-09 1/33 Éléments de base en Java (suite et fin) Année 2008-09 Plan du cours Les chaînes de caractères Retour vers

Plus en détail

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation Cycle Ingénierie 2e année SIGL Dernière mise à jour : 19/10/2006 Christophe Porteneuve Threads Principes Cycle de vie Création java.lang.thread

Plus en détail

CROSS PLATEFORM MOBILE DEVELOPMENT (Phonegap, RhoMobile)

CROSS PLATEFORM MOBILE DEVELOPMENT (Phonegap, RhoMobile) INGENIEUR EN SCIENCES INFORMATIQUES RAPPORT D ETUDE TECHNOLOGIQUE SUR LES SOLUTIONS WEB CROSS PLATEFORM MOBILE DEVELOPMENT (Phonegap, ) Student : Jiachen NIE Parcours: IHM Subject : Adaptation des Interfaces

Plus en détail

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN Les contenues de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information et ne peuvent en aucun cas

Plus en détail

Serveur d intégration continue Jenkins et d analyse de code Sonar couplés à la forge logiciel SourceSup

Serveur d intégration continue Jenkins et d analyse de code Sonar couplés à la forge logiciel SourceSup Serveur d intégration continue Jenkins et d analyse de code Sonar couplés à la forge logiciel SourceSup Sébastien MEDARD GIP RENATER 263 avenue du Général Leclerc CS 74205 35042 Rennes Cedex Résumé L intégration

Plus en détail

Objectifs. Architecture des Ordinateurs Partie III : Liens avec le système d exploitation. Au sommaire... Schéma général d un compilateur (1/8)

Objectifs. Architecture des Ordinateurs Partie III : Liens avec le système d exploitation. Au sommaire... Schéma général d un compilateur (1/8) Architecture des Ordinateurs Partie III : Liens avec le système d exploitation 2. Génération de code David Simplot simplot@fil.univ-lille1.fr Objectifs Voir la génération de code ainsi que les mécanismes

Plus en détail

*4D, quand c est la solution qui compte. 4D démocratise les services Web

*4D, quand c est la solution qui compte. 4D démocratise les services Web *4D, quand c est la solution qui compte. 4D démocratise les services Web Table des matières I. INTRODUCTION page 3 II. VERS UNE DEFINITION DES SERVICES WEB 1. Qu est ce que c est? page 3 2. A quoi ça sert?

Plus en détail

Cours architectures des ordinateurs

Cours architectures des ordinateurs Université KASDI MERBAH Ouargla Faculté des Nouvelles Technologies de l Information et de la Communication Département d Informatique et Technologie de l information Cours architectures des ordinateurs

Plus en détail

FORMATION VB.NET Visual Studio 2008

FORMATION VB.NET Visual Studio 2008 FORMATION VB.NET Visual Studio 2008 Livret 1 Introduction à Visuàl Studio Thierry TILLIER http://www.coursdinfo.fr Ce support de cours est réservé à un usage personnel. Toute utilisation et diffusion dans

Plus en détail

6.1 Une classe simple pour représenter des comptes bancaires

6.1 Une classe simple pour représenter des comptes bancaires Chapitre 6 Héritage Ce chapitre du cours traite de concepts relatifs à la programmation objet (hiérarchie de classe, héritage, extension, masquage) et sera illustré par un exemple de représentation de

Plus en détail

TP1. Outils Java Eléments de correction

TP1. Outils Java Eléments de correction c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par

Plus en détail

Le Framework.Net. Introduction. Pourquoi.Net?

Le Framework.Net. Introduction. Pourquoi.Net? Introduction. Pourquoi.Net? Le Framework.Net Cela fait une dizaine d'années que le monde du développement est bouleversé d'une part par la programmation objet et d'autre part par les applications web.

Plus en détail

RICM 4 ème année 12/1/2012

RICM 4 ème année 12/1/2012 RICM 4 ème année 12/1/2012 Examen de Systèmes Répartis Durée : 2h, Documents autorisés à l exception des livres. Le barème est indicatif. Partie A Applications Web Question 1. Dans un répertoire contenant

Plus en détail

Cluster de calcul, machine Beowulf, ferme de PC Principes, problématique et échanges d expérience

Cluster de calcul, machine Beowulf, ferme de PC Principes, problématique et échanges d expérience Cluster de calcul, machine Beowulf, ferme de PC Principes, problématique et échanges d expérience 29 mars 2002 Olivier BOEBION - Laboratoire de Mathématiques et de Physique Théorique - Tours 1 Principes

Plus en détail

Le service pack 6 (SP6) est le dernier disponible pour visual studio 6. Ce dernier devrait être maintenu par Microsoft jusqu en 2008.

Le service pack 6 (SP6) est le dernier disponible pour visual studio 6. Ce dernier devrait être maintenu par Microsoft jusqu en 2008. 1 CONCEPT DE BASE 1.1 Visual Basic 6 1.1.1 Pour quoi faire? VB est un langage de type RAD : «Rapid Application Development». Il permet de créer des applications rapidement grâce à une conception simple

Plus en détail

Projet de développement. Introduction à Eclipse. Philippe Collet. Licence 3 MIAGE S6 2013-2014

Projet de développement. Introduction à Eclipse. Philippe Collet. Licence 3 MIAGE S6 2013-2014 Projet de développement Introduction à Eclipse Philippe Collet Licence 3 MIAGE S6 2013-2014 http://miageprojet2.unice.fr/user:philippecollet/projet_de_d%c3%a9veloppement_2013-2014 Plan r Eclipse : Introduction

Plus en détail

QUELQUES CONCEPTS INTRODUCTIFS

QUELQUES CONCEPTS INTRODUCTIFS ESIEE Unité d'informatique IN101 Albin Morelle (et Denis Bureau) QUELQUES CONCEPTS INTRODUCTIFS 1- ARCHITECTURE ET FONCTIONNEMENT D UN ORDINATEUR Processeur Mémoire centrale Clavier Unité d échange BUS

Plus en détail