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

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

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

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

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

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

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

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

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

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

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

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

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

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués International Journal of Engineering Research and Development e-issn: 2278-067X, p-issn: 2278-800X, www.ijerd.com Volume 7, Issue 5 (June 2013), PP.99-103 Solution A La Gestion Des Objets Java Pour Des

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

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

JAVA Première approche

JAVA Première approche Année 2008-2009 JAVA Première approche Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.fr 1 Qu'est ce que Java? C'est le nom d'une technologie mise au point

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

É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

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

Java - la plateforme

Java - la plateforme Java - la plateforme Java la plateforme Java? VM GC JIT Java Aujourd'hui 3 environnements d'exécutions différents Java ME (Micro Edition) pour PDA, téléphone Android (Java SE moins certain paquetages)

Plus en détail

Vers un outil d analyse de l empreinte mémoire d un code de calcul scientifique.

Vers un outil d analyse de l empreinte mémoire d un code de calcul scientifique. Vers un outil d analyse de l empreinte mémoire d un code de calcul scientifique. Ameziane NAIT ABDELAZIZ Département informatique, filière PRCD Maître de stage : Bruno LATHUILIERE Tuteur : Brice GOGLIN

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

É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

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

é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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Langages et Frameworks

Langages et Frameworks 1/7 La description de module définit les conditions cadres du déroulement de l enseignement des matières du module. Filière(s) Orientation Public Informatique (INF) Développement Logiciel et Multimédia

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

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

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

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

Projet de développement

Projet de développement Projet de développement Introduction à Eclipse Philippe Collet Licence 3 MIAGE S6 2012-2013 http://miageprojet2.unice.fr/index.php?title=user:philippecollet/projet_de_développement_2012-2013 Plan r Application

Plus en détail

Bases Java - Eclipse / Netbeans

Bases Java - Eclipse / Netbeans Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement

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

Présentation de Jakarta Common VFS

Présentation de Jakarta Common VFS Présentation de Jakarta Common VFS Common Virtual File System Flavien BACH Ingénieurs 2000 IR3 Novembre 2003 Plan de la présentation Présentation de l API Mise en œuvre Principe de fonctionnement général

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

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

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

Environnements de développement (intégrés) Environnements de développement (intégrés) Tests unitaires, outils de couverture de code Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

Plus en détail

Programmation Orientée Objet avec JAVA

Programmation Orientée Objet avec JAVA Programmation Orientée Objet avec JAVA Présenté par Abdoul Aziz Ciss Docteur en Cryptologie, Consultant ITSec Dept GIT EPT Email: aaciss@ept.sn Web : www.alekciss.com Tel: 77 451 92 95 Plan 1. Introduction

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) Introduction aux EDI, la plateforme Eclipse Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 42

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 42 Java et Objet Amélie Lambert 2014-2015 Amélie Lambert 2014-2015 1 / 42 Chapitre 8 Développement d applications Web Amélie Lambert 2014-2015 2 / 42 Plan du cours Typologie des applications Web Architecture

Plus en détail

Objectif du cours. Bases de la programmation. Plan de cette partie

Objectif du cours. Bases de la programmation. Plan de cette partie Objectif du cours Bases de la programmation Université de Nice - Sophia Antipolis Richard Grin Version 1.2.5 24/9/11 http://deptinfo.unice.fr/~grin Introduction à la programmation orientée objet pour pouvoir

Plus en détail

Formation développement Java, Spring et Hibernate

Formation développement Java, Spring et Hibernate L institut de formation continue des professionnels du Web Formation développement Java, Spring et Hibernate Référence formation : Durée : Prix conseillé : DJSH 10 jours (70 heures) 4 500 HT (hors promotion

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

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

Unity. du changement pour les projets d automatisme. p.1 Présentation. p.2 L environnement Unity. p.3 Les premiers pas avec Unity Pro

Unity. du changement pour les projets d automatisme. p.1 Présentation. p.2 L environnement Unity. p.3 Les premiers pas avec Unity Pro Le magazine Schneider Electric de l enseignement technologique et professionnel Juin 2006 p.1 Présentation p.2 L environnement Unity p.3 Les premiers pas avec Unity Pro p.4 Un besoin de communication p.5

Plus en détail

Derrière toi Une machine virtuelle!

Derrière toi Une machine virtuelle! Derrière toi Une machine virtuelle! Yann-Gaël Guéhéneuc guehene@emn.fr École des Mines de Nantes, France Object Technology International Inc., Canada D où ça vient? Calculatrice Machine de Turing 1936

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

Projet de développement. Introduction à Eclipse. Philippe Collet. Licence 3 Informatique 2012-2013

Projet de développement. Introduction à Eclipse. Philippe Collet. Licence 3 Informatique 2012-2013 Projet de développement Introduction à Eclipse Philippe Collet Licence 3 Informatique 2012-2013 Plan r Application de redmine à votre projet r Eclipse : Introduction et historique r Architecture d Eclipse

Plus en détail

CATALOGUE DE FORMATIONS OPTIMISATION DE PERFORMANCE ET ARCHITECTURES PARALLÈLES

CATALOGUE DE FORMATIONS OPTIMISATION DE PERFORMANCE ET ARCHITECTURES PARALLÈLES CATALOGUE DE FORMATIONS OPTIMISATION DE PERFORMANCE ET ARCHITECTURES PARALLÈLES Trois types de formation LES FORMATEURS Les experts techniques AS+ Groupe EOLEN disposent d une réelle expérience pratique

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

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

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet CNAM UV 19357 Année 2003-2004 David Delahaye David.Delahaye@cnam.fr Conception et Développement Orientés Objets Cours 1 : Introduction 1 Présentation de la valeur Ce cours s adresse à toute personne ayant

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

JAVA PROGRAMMATION. Programme. 1. Java, HTML et World Wide Web

JAVA PROGRAMMATION. Programme. 1. Java, HTML et World Wide Web PROGRAMMATION PUBLIC Professionnels informatiques qui souhaitent développer des applications et «applets» Java DUREE 4 jours 28 heures OBJECTIF Créer divers «applets» à intégrer dans un site Web dynamique,

Plus en détail

Cours 1 : Introduction Générale + Objet I

Cours 1 : Introduction Générale + Objet I Organisation du cours Équipe pédagogique DUT Informatique S3 - Programmation Java Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet I Jean-Claude MARTIN (Responsable, Cours, TD

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

INTRODUCTION À L INJECTION DE DÉPENDANCES EN JAVA

INTRODUCTION À L INJECTION DE DÉPENDANCES EN JAVA INTRODUCTION À L INJECTION DE DÉPENDANCES EN JAVA Andr0 29 octobre 2015 Table des matières 1 Introduction 5 2 Qu est ce que l injection de dépendances? 7 2.1 Mais une dépendance, c est quoi?.........................

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

CHAPITRE 2 AUTOMATISATION DE L EXPLOITATION DES RÉSULTATS EXPÉRIMENTAUX ET DE SIMULATION

CHAPITRE 2 AUTOMATISATION DE L EXPLOITATION DES RÉSULTATS EXPÉRIMENTAUX ET DE SIMULATION CHAPITRE 2 AUTOMATISATION DE L EXPLOITATION DES RÉSULTATS EXPÉRIMENTAUX ET DE SIMULATION 47 2.1 Objectif Dans le premier chapitre, nous avons présenté la physique des composants à semiconducteur et leurs

Plus en détail

UN MODELE DE TRANSFORMATION DE DESIGN PATTERN VERS DES PROGRAMMES ORIENTES ASPECTS

UN MODELE DE TRANSFORMATION DE DESIGN PATTERN VERS DES PROGRAMMES ORIENTES ASPECTS République Algérienne Démocratique et Populaire Ministère de l Enseignement Supérieur et de la Recherche Scientifique Université Mentouri de Constantine Faculté des Sciences de l'ingénieur Département

Plus en détail

NFP111 Systèmes et Applications Réparties

NFP111 Systèmes et Applications Réparties NFP111 Systèmes et Applications Réparties 1 de 38 NFP111 Systèmes et Applications Réparties Cours 11 - Les Enterprise Java Beans (Introduction aux Enterprise Claude Duvallet Université du Havre UFR Sciences

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

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

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

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

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

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

RMI (Remote Method Invocation) Client serveur, situation traditionnelle. Client serveur, situation traditionnelle.

RMI (Remote Method Invocation) Client serveur, situation traditionnelle. Client serveur, situation traditionnelle. RMI (Remote Method Invocation) Présentation de RMI Université Française d Egypte Richard Grin Version 0.6 10/10/12 R. Grin RMI page 2 Client serveur, situation traditionnelle Sur la machine A un client

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

Outils d analyse de performance pour le HPC

Outils d analyse de performance pour le HPC Outils d analyse de performance pour le HPC François Trahay Master MOPS Décembre 2013 Plan 1 Introduction.................................................................... 3 2 Outils de profiling..............................................................10

Plus en détail

Introduction à ADO.NET

Introduction à ADO.NET 1 Introduction à ADO.NET Introduction à ADO.NET Sommaire Introduction à ADO.NET... 1 1 Introduction... 2 1.1 Qu est ce que l ADO.NET?... 2 1.2 Les nouveautés d ADO.NET... 2 1.3 Les avantages d ADO.NET...

Plus en détail

Prise en compte des ressources dans les composants logiciels parallèles

Prise en compte des ressources dans les composants logiciels parallèles Prise en compte des ressources dans les composants logiciels parallèles Aperçus de l action RASC et du projet Concerto F. Guidec Frederic.Guidec@univ-ubs.fr Action RASC Plan de cet exposé Contexte Motivations

Plus en détail

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 7 : RMI Nom(s) : Groupe : Date : Objectifs : savoir créer des applications client-serveur mettant en jeu des machines

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

Dr. Djamel Benmerzoug. Email : djamel.benmerzoug@univ-constantine2.dz

Dr. Djamel Benmerzoug. Email : djamel.benmerzoug@univ-constantine2.dz Master 2 SITW Les services Web Dr. Djamel Benmerzoug Email : djamel.benmerzoug@univ-constantine2.dz Maitre de Conférences A, Département TLSI Faculté des NTIC Université Constantine 2 Abdelhamid Mehri

Plus en détail

Programmation Java. Madalina Croitoru

Programmation Java. Madalina Croitoru Programmation Java Madalina Croitoru Madalina Croitoru 2002 2006 Univ. Aberdeen 2006 2008 Univ. Southampton Depuis 2008 Univ. Montpellier II Contact: Page web: www.lirmm.fr/~croitoru/teaching.html Email:

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

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

Environnement algorithmique et conventions

Environnement algorithmique et conventions 1 Environnement algorithmique et conventions Un algorithme est un maillon de la chaîne de développement d une application. Il est le lien indispensable entre l analyse et le développement final. Ce chapitre

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

Les architectures N-tiers

Les architectures N-tiers Les architectures N-tiers 1 SOMMAIRE DU COURS XML ET LES ARCHITECTURES N-TIER Introduction aux architectures N-tier Serveurs d applications Déploiement d applications J2EE Tiers applicatif : servlets Tiers

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

M a c h i n e V i r t u e l l e R a d i o

M a c h i n e V i r t u e l l e R a d i o M a c h i n e V i r t u e l l e R a d i o Riadh Ben Abdallah riadh.ben-abdallah@inria.fr Laboratoire CITI, Équipe Systèmes Embarqués Séminaire des thésards, 20 Mars 2008 1 Le Contexte radio logicielle

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

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

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 à la Recherche en Laboratoire

Introduction à la Recherche en Laboratoire Introduction à la Recherche en Laboratoire Transferts de données pour le vol de travail Tristan Darricau tristan.darricau@ensimag.grenoble-inp.fr 26 mai 2014 Grenoble INP - ENSIMAG Ecadrement Frédéric

Plus en détail

Installation Batch pour UNIX de IBM SPSS Modeler 14.2

Installation Batch pour UNIX de IBM SPSS Modeler 14.2 Installation Batch pour UNIX de IBM SPSS Modeler 14.2 Les instructions suivantes permettent d installer IBM SPSS Modeler Batch version 14.2. IBM SPSS Modeler Batch fournit les capacités analytiques intégrales

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

Sensibilisation à RMI (Remote Method Invocation)

Sensibilisation à RMI (Remote Method Invocation) Jini Sensibilisation à RMI (Remote Method Invocation) Le rêve de tout système distribué L idéal serait d avoir un système distribué utilisant la technologie objet et permettant : 1) d invoquer une méthode

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

Introduction aux Machines Virtuelles avec VMKit

Introduction aux Machines Virtuelles avec VMKit Introduction aux Machines Virtuelles avec Ingénieur :, Responsables : Gaël Thomas, Gilles Müller EQUIPE REGAL LIP6 INRIA (Paris/France) un substrat de machine virtuelle : a substrate for Managed Runtime

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

2- Téléchargement et installation version actuelle 6.1

2- Téléchargement et installation version actuelle 6.1 1- EDI NetBeans (Environnement : Microsoft Windows Linux Ubuntu) EDI, Environnement de Développement Intégré Anglais : IDE, Integrated Development Environment Programme regroupant : Un éditeur de texte

Plus en détail