Chapitre 4. Le modèle de composants : les services
|
|
- Beatrice Cloutier
- il y a 8 ans
- Total affichages :
Transcription
1 Chapitre 4 Le modèle de composants : les services 1
2 Les services "A Service is an application component that can perform long-running operations in the background and does not provide a user interface." Un service continue son exécution même si l'utilisateur change d'application Il peut être lié à plusieurs applications Il y a deux types de service : "started" (= démarré ou unbounded = non lié), lancés par startservice(). Un tel service, après avoir été lancé, est exécuté indéfiniment tant qu'il n'a pas fini son travail (même si le composant qui l'a lancé est détruit) "bound" (= liés), lancés par bindservice(). Un tel service interagit avec d'autres composants. Il est détruit lorsque tous les composants qui lui sont associés ont annulé leur association avec lui sauf s'il est aussi started donc... Un service peut à la fois être démarré par le composant d'une application est lié à d'autres source : 2 tml
3 Service vs. thread Un service est en arrière plan des actions utilisateur, pas des threads (*). C'est à dire qu'il n'y a pas de création de thread, ni de processus lorsqu'un service est lancé et il s'exécute dans la thread qui lui a donné naissance On doit donc créer une thread pour ne pas être bloquant Et donc à quoi sert un service?! Avoir un service plutôt qu'une thread dans une application augmente la priorité de l'application et a donc ainsi moins de chance d'être détruite par l'environnement. Voir à On peut lier un service à d'autres composants de l'application, voire à d'autres applications : cf. la suite de cet exposé Il est géré par l'environnement d'exécution et par exemple, en cas d'arrêt de l'application, si le service est demandé, il peut être relancé automatiquement par l'environnement d'exécution (*) 3
4 Cycle de vie d'un service L'automate d'états-transitions d'un service est linéaire donc simple! Il y a évidemment deux sortes d'automates : un pour les services non liés, l'autre pour les services liés Les méthodes onstartcommand(), onbind(), onunbind() ne sont appelées que dans un des cas Les méthodes oncreate(), ondestroy() sont toujours appelées 4
5 Création d'un service : précisions Les méthodes startservice() et bindservice() sont des méthodes de la classe (abstraite) Context qu'on trouve donc dans les classes dérivées Service, Activity pas ContentProvider ni BroadcastReceiver startservice(), signé public abstract ComponentName startservice (Intent is) permet de lancer un service "started" et de le créer si ce n'est déjà fait. La méthode onstartcommand() du service est chaque fois exécutée mais la méthode oncreate() du service n'est exécutée qu'une seule fois à la création du service bindservice(), signée public abstract boolean bindservice (Intent is, ServiceConnection conn, int flags) permet de lier l'application au service et de le créer si ce n'est déjà fait Remarque : startservice() a un seul argument (l'intent) alors que bindservice() en a 3 (dont l'intent) 5
6 Arrêter un service Un service non lié (i.e. lancé par startservice()) peut être arrêté : si le service lui-même lance sa méthode stopself() en lançant la méthode stopservice(intent IDuService) de la classe Context sur ce service. IDuService est un Intent décrivant le service à arrêter. Si ce service est lié à aucun autre composant, il sera arrêté quel que soit le nombre d'appels startservice() qui ont été exécutés le service a fini son travail Un service lié (i.e. lancé par bindservice()) est exécuté tant qu'au moins un composant avec lequel il est lié est vivant (= non détruit). Ce service ne peut être arrêté que lorsque tous les composants liés à lui sont détruits 6
7 Déclarer un service Un service doit être déclaré dans l'androidmanifest.xml comme fils de la balise application <manifest... >... <application... > <service android:name=".exampleservice" />... </application> </manifest> Remarque : si le service n'est pas déclaré dans le manifest, il n'y a (évidemment) pas d'erreur à la compilation mais il n'y aussi pas d'erreur à l'exécution : rien ne se passe! 7
8 onstartcommand() d'un service "started" La méthode int onstartcommand(intent intent, int flags, int startid) que lance le service a pour arguments : intent est l'intent qui a été passé à startservice(), flags est un indicateur précisant comment le lancement précédent de ce service s'est terminé, startid est un id précisant cette requête L'entier retourné (qui peut être START_STICKY ou START_NOT_STICKY) est utile pour gérer la création du service s'il a été détruit lors de son exécution précédente alors qu'il n'avait pas fini de s'exécuter Rappel : en général, un service est lancé dans la thread principale de l'application qui l'accueille. Donc il est conseillé de lancer un service dans une thread créée par le programmeur : on peut utiliser Handler ou AsyncTask 8
9 Démos sur les services locaux Une démo, OK! Demo Ch4ServiceLocalHorlogeProjet 9
10 Service bloquant, non bloquant Comme indiqué, si la méthode int onstartcommand(intent intent, int flags, int startid) est codée sans création de thread, l'application risque d'être bloquée Demo Ch4ServiceLocalHorlogeProjet, clic sur le bouton "Lance un service bloquant" donne : Il faut donc écrire cette méthode plutôt comme : public int onstartcommand(intent intent, int flags, int startid) { new Thread(new Runnable() { public void run() { while (lecompteur < ) { try { lecompteur++; Thread.sleep(1000); } catch (InterruptedException e) { e.printstacktrace(); } } } }).start(); return Service.START_STICKY; } Démo : clic sur "Lance un service de comptage" 10
11 Récupérer les travaux d'un service "started" L'architecture est généralement : on lance le service started celui ci informe un BroadcastReceiver lorsque le travail est fait Le BroadcastReceiver informe que le travail a été fait Bibliographie : 11
12 Lancer un service started : le code C'est aussi simple que lancer une activité! Context lecontexte = getapplicationcontext(); Intent i = new Intent(leContexte, ClasseDuService.class); lecontexte.startservice(i); On utilise la méthode startservice() qui a un seul argument, l'intent (comme startactivity()) Remarque : En fait la méthode startservice() utilisée ici est celle de la classe Context alors que la méthode startactivity() utilisée pour lancer les activités est celle de la classe Activity, pas de la classe Context (n'est pas Jean-marc!) 12
13 Service "lié" local ou distant Définition 1 : Un composant Android peut être lié à un service s'exécutant dans la même application. Un tel service est dit local (local service) Définition 2 : Un composant Android peut être lié à un service s'exécutant dans une autre application (un autre process). Un tel service est dit distant (remote service) Pour être lié à un service local, l'utilisation de Binder suffit Pour être lié à un service distant, il faut utiliser les Messenger ou AIDL Seuls une activité, un service et un content provider peuvent être des composants liés à un service, pas un broadcast receiver Voir à 13
14 Service "lié" local : le Binder Le service auquel on doit être lié, doit retourner ce qui permettra d'être lié à lui : un Binder Ce Binder (spécifié par l'interface IBinder) sera retourné par la méthode public IBinder onbind(intent intent) du service La classe Service (classe mère de tout service) possède cette méthode onbind() abstraite... qu'il faut donc toujours implémenter dans un service! 14
15 La liaison Binder, ServiceConnection L'association à un service est lancé par bindservice(). C'est un processus asynchrone bindservice() n'est pas bloquant et ne retourne pas un IBinder mais un boolean valant true si l'association a été faite bindservice() avertit le service, qui lance sa méthode onbind() qui retourne alors le Binder ce Binder est passé au gestionnaire de connexion (un ServiceConnection) qui lance sa méthode onserviceconnected() avec ce Binder comme argument En général cette méthode onserviceconnected() initialise des champs de la classe englobante => la classe qui implémente ServiceConnection et interne à la classe qui veut être liée au service 15
16 Service "lié" local : l'enchaînement des appels La suite des appels lors du bind est donc : On a évidemment une suite d'appels similaire pour le onunbind(intent i) : seules les méthodes changent 16
17 Conclusion sur l'enchaînement des appels La méthode bindservice() (de la classe Context) est en fait signée public abstract boolean bindservice (Intent intent, ServiceConnection conn, int flags) L'appel bindservice() fait par le client est donc bindservice(intent, leserviceconnection, drapeau); Dans intent il y a le service auquel on veut être lié. L'environnement construit une instance de ce service, puis lance la méthode onbind() sur cette instance qui retourne un objet lebinder L'objet leserviceconnection (2ième argument de bindservice()) lance alors sa méthode onserviceconnected() avec l'objet lebinder ci dessus comme second argument Dans l'objet lebinder, il y a ce qu'il faut pour utiliser le service (c'est le service qui l'a créé!) Et voilà comment le client et le serveur sont liés 17
18 Le ServiceConnection Donc on doit aussi construire un gestionnaire de service implémentant l'interface android.content.serviceconnection et donc donner un corps aux deux méthodes void onserviceconnected(componentname name, IBinder service) et void onservicedisconnected(componentname name) spécifié dans l'interface Ce ServiceConnection est passé comme argument de bindservice() 18
19 Démo de service lié local Voir projet ServiceLocalHorlogeProjet, bouton "Lance un service de comptage" Cliquer sur bouton "change d'activité" Dans la nouvelle activité, cliquer le bouton de "liaison au service local" puis le bouton "valeur du service local" 19
20 Services liés distants On veut désormais atteindre un service d'une application à partir d'une autre application On est sur le même smartphone mais on parle de service... distant! Bon il est vrai que ce sont deux processus distincts (mais deux DVM) Un première solution utilise les messagers (Messager, Message,...) Une seconde solution utilise une technologie générale d'accès aux technologies distantes (cf. CORBA,...) : c'est AIDL 20
21 Services liés distants : les messagers Dans cette technologie, on utilise les notions de messagers (Messenger), messages (Message), thread gestionnaire d'envoi de message (Handler) Et évidemment de service (Service), d'objet pour la liaison (IBinder), de gestionnaire de connexion (ServiceConnection) 21
22 AIDL (Android Interface Definition Language) La seconde solution pour interroger un service "distant" est d'utiliser une technologie générale d'accès aux technologies distantes (cf. CORBA,...) Il faut donc d'abord spécifier dans un langage générique ce qui est peut être proposé (par un serveur), c'est à dire ce qu'on peut utilisé (par un client). Ce type de langage est un IDL (Interface Definition Langage) Pour Android ce langage de spécification est AIDL 22
23 Spécification AIDL On veut construire une application qui lance un compteur puis interroger cette application Les spécifications en AIDL sont : package android.jmf.servicedistantaidlspecification; interface IServiceDeCompteur { long getcompteur(); } C'est le fichier IServiceDeCompteur.aidl à ranger sous src dans le paquetage android.jmf.servicedistantaidlspecification Remarque : les fichier aidl ont un nom de la forme XXX.aidl, sont mis dans un paquetage p.sp et commence par la ligne package p.sp; 23
24 Spécification AIDL : traduction en Java Automatiquement, l'environnement de dévelopement construit la traduction de ce fichier en Java. Evidemment une interface : package android.jmf.servicedistantaidlspecification; public interface IServiceDeCompteur extends android.os.iinterface { /** Local-side IPC implementation stub class. */ public static abstract class Stub extends android.os.binder implements android.jmf.servicedistantaidlspecification.iservicedecompteur {... Remarque 1 : C'est le fichier IServiceDeCompteur.java rangé sous gen dans le paquetage android.jmf.servicedistantaidlspecification Remarque 2 : En général, c'est le fichier XXX.java rangé sous gen dans dans le paquetage p.sp Remarque 3 : ce fichier est automatiquement généré (cf. première ligne) et il ne faut pas le changer. Même si l'indentation déplait! 24
25 L'interface générée Remarque 4 : l'interface possède une classe interne (statique abstraite) Stub qui dérive de Binder (et qui contient du code!) : si, c'est possible! Donc le Binder est en grande partie créé. Cela explique l'utilisation de l'architecture AIDL 25
26 Le service distant (1/2) Il est similaire à un service local : il dérive de android.app.service on doit construire le Binder qui sera retourné par onbind() évidemment la classe IServiceDeCompteur.Stub nous aide. Il suffit de dériver de cette classe et d'implémenter les méthodes utiles pour le client D'où le service distant : public class ServiceDeCompteurAIDL extends Service { private long mlecompteurnonstatic = 0; private final IServiceDeCompteur.Stub mbinder = new IServiceDeCompteur.Stub() { public long getcompteur() { return mlecompteurnonstatic; } public IBinder onbind(intent arg0) { // TODO Auto-generated method stub return mbinder; }... // Suite diapositive suivante 26
27 Le service distant (2/2) Son service de compteur est similaire au service local précédent public int onstartcommand(intent intent, int flags, int startid) { new Thread(new Runnable() { public void run() { while (mlecompteurnonstatic < ) { try { mlecompteurnonstatic++; Thread.sleep(1000); } catch (InterruptedException e) { e.printstacktrace(); } } } }).start(); return Service.START_STICKY; } 27
28 Déclaration du service distant dans son AndroidManifest.xml Evidemment, il faut déclarer le service dans l'androidmanifest.xml La déclaration doit être : <service android:name=".servicedecompteuraidl" > <intent-filter> <action android:name="android.jmf.servicedistantaidlspecification.iservicedecompteur" /> </intent-filter> </service> Il faut indiquer que ce service pourra être lancé par des Intent (implicites) qui demande l'action android.jmf.servicedistantaidlspecification.iservicedec ompteur. Ce sera le cas d'une application externe (un client) qui ne connaît pas exactement la classe du service (sinon il le dirait et utiliserait un Intent explicite) mais seulement son interface android.jmf.servicedistantaidlspecification.iservicedec ompteur (associé à l'action de même nom) 28
29 L'application cliente L'application cliente est une autre application qui va demander ce service de comptage Il lui faut les spécifications de ce service c'est à dire le fichier IServiceDeCompteur.aidl à copier dans son paquetage android.jmf.servicedistantaidlspecification L'environnement de développement construit le fichier IServiceDeCompteur.java qu'il va ranger sous gen dans le paquetage android.jmf.servicedistantaidlspecification On a alors : 29
30 L'application cliente : le code Pour être lié au service distant, il suffit d'écrire (comme d'habitude) : On a besoin d'un ServiceConnection qui est : IServiceDeCompteur étant l'interface android.jmf.servicedistantaidlspecification.iservicedecompte ur Context lecontexte = getapplicationcontext(); Intent i = new Intent(IServiceDeCompteur.class.getName()); lecontexte.bindservice(i, mconnection, Context.BIND_AUTO_CREATE); private IServiceDeCompteur miservicedecompteur; private ServiceConnection mconnection = new ServiceConnection() { public void onserviceconnected(componentname classname, IBinder service) { miservicedecompteur = IServiceDeCompteur.Stub.asInterface(service); } public void onservicedisconnected(componentname classname) { miservicedecompteur = null; } }; 30
31 Service distant : une démo Ayant repéré le service distant par miservicedecompteur, on peut récupérer les valeurs du compteur par : Démo : miservicedecompteur.getcompteur(); On lance le service distant : projet ServiceDistantAIDLServeurProjet. Au lancement de cette applilcation, le serveur est mis en route (voir les Log) On lance le client : projet ServiceDistantAIDLClientProjet. Faire l'association puis le relevé du compteur 31
32 Bibliographie sur les services p/service.html sur AIDL : l.html
33 Fin 33
Tutorial pour une application simple
ANDROID & ECLIPSE Tutorial pour une application simple 1. Introduction Android est un système d'exploitation pour téléphone portable de nouvelle génération développé par Google. Celui-ci met à disposition
Plus en détailRMI le langage Java XII-1 JMF
Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine
Plus en détailInfo0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java
Info0604 Programmation multi-threadée Cours 5 Programmation multi-threadée en Java Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 18 février 2015 Plan
Plus en détailPour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère
L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la
Plus en détailRMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.
RMI Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. Méthode proche de RPC. Outils et classes qui rendent l'implantation d'appels de méthodes d'objets distants aussi simples
Plus en détailTP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet
TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur
Plus en détailCréation d un service web avec NetBeans 5.5 et SJAS 9
Sommaire Création d un service web avec NetBeans 5.5 et SJAS 9 1. Présentation... 2 2. Création d un service web avec NetBeans... 2 2.1. Création d une application Web... 2 2.2. Création du service web...
Plus en détailTD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting
IUT Bordeaux 1 2005-2006 Département Informatique Licence Professionnelle ~ SI TD Objets distribués n 3 : Windows XP et Visual Studio.NET Introduction à.net Remoting Partie 1 : l'analyseur de performances
Plus en détailINITIATION 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étailRemote Method Invocation (RMI)
Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe
Plus en détailEncapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.
Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres
Plus en détailLes connexions sans fil avec Android. JMF (Tous droits réservés) 1
Les connexions sans fil avec Android JMF (Tous droits réservés) 1 Plan de l'exposé Wi-Fi : un rappel Démo 1 : trouver les réseaux Wi-Fi Démo 2 : repérer les appareils connectés sur notre réseau Wi-Fi Démo
Plus en détailChapitre 2. Classes et objets
Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons
Plus en détailAndroid et le Cloud Computing
Android et le Cloud Computing 1 Plan de l'exposé Rappels sur Android et le cloud Présentation de GCM Notions fondamentales de GCM Construire un projet GCM Ecrire un client GCM (récepteur GCM) Ecrire un
Plus en détailTP1 : 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étailProjet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations
Projet Viticulture TP 3 : bases de données externes Description du thème Partie 1 : bases de données locales SQLite Partie 2 : projet H2O stockage local Partie 3 : bases de données distantes Partie 4 :
Plus en détailPage 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>
Page 1 sur 5 TP3 Lectures préalables : l Java_II l tutorial Interfaces Thèmes du TP : l la classe Object l Vector l Stack Une pile d'objects Les éléments de la classe Pile sont maintenant des instances
Plus en détailNFP 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étailDirXML License Auditing Tool version 1.1 - Guide de l'utilisateur
DirXML License Auditing Tool version 1.1 - Guide de l'utilisateur Présentation Installation DirXML License Auditing Tool (DLAT) vous permet de déterminer le nombre de licences DirXML utilisées dans une
Plus en détailDéveloppement sous Android
Développement sous Android Chapitres traités Les fournisseurs de contenu (Content Provider) Pour cette dernière étude de l'environnement Android, nous allons en profiter pour découvrir plein de fonctionnalités
Plus en détailProjet 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étailUtilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM
Utilisation de GCM (Google Cloud Messaging) pour Android Ce TP est inspiré de : http://android.amolgupta.in/2012/07/google-cloud-messaging-gcm-tutorial.html On va écrire deux parties. Une application Android
Plus en détailTP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface
Plus en détailJava DataBaseConnectivity
Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage
Plus en détailQu'est-ce que c'est Windows NT?
Qu'est-ce que c'est Windows NT? Que faire en cas de blocage d'une station NT? Profils «errants» avec win NT : des éclaircissements Echange de fichiers entre les deux environnements PC/Mac Blocage réseau
Plus en détailSHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5
SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N
Plus en détailOutils, langage et approche Android Une introduction. Nicolas Stouls nicolas.stouls@insa lyon.fr
Outils, langage et approche Android Une introduction Nicolas Stouls nicolas.stouls@insa lyon.fr Webographie La bible contenant «tout» : http://developer.android.com/index.html Les supports cette intervention
Plus en détailHéritage presque multiple en Java (1/2)
Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen
Plus en détailUn ordonnanceur stupide
Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire
Plus en détailTP SIN Programmation sur androïde Support : eclipse
TP SIN Programmation sur androïde Support : eclipse Support : Smartphone sur androïde Pré requis (l élève doit savoir): Savoir utiliser un ordinateur Savoir utiliser un Smartphone Programme Objectif terminale
Plus en détailACTIVITÉ DE PROGRAMMATION
ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,
Plus en détailJava Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites
Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)
Plus en détailINTRODUCTION 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étailProgrammer 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étailServeur d'application Client HTML/JS. Apache Thrift Bootcamp
Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/
Plus en détailINF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30
Examen intra 20 février 2014 17:30 à 20:30 Nom, prénom : Code permanent : Répondez directement sur le questionnaire. Question #1 5% Quelle influence peut avoir le typage dynamique sur la maintenabilité
Plus en détailIntroduction à 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étailNotion de thread (1/2)
Notion de thread (1/2) La machine virtuelle java (JVM) permet d'exécuter plusieurs traitements en parallèle (en pratique, ils s'exécutent par tranche et en alternance sur le processeur). Ces traitements
Plus en détailProgrammation par les Objets en Java
Programmation par les Objets en Java Najib TOUNSI Les classes en Java (TD 3) I. Notion de classe I.1 Classe, champs, méthodes, instanciation, this, private vs. public. Créer une classe Point (coordonnée
Plus en détailInitiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr
Initiation à JAVA et à la programmation objet raphael.bolze@ens-lyon.fr O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation
Plus en détailJava Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets
Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper
Plus en détailAuto-é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étailTP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat-8.0.15-windowsx64.zip.
TP réseau Android Ce TP utilise tomcat 8, sous windows et des.bat windows. On peut trouver ce serveur web et conteneur d'applications web à http://tomcat.apache.org/download-80.cgi. Il se trouve dans l'archive
Plus en détailSynchro et Threads Java TM
Synchro et Threads Java TM NICOD JEAN-MARC Master 2 Informatique Université de Franche-Comté UFR des Sciences et Techniques septembre 2008 NICOD JEAN-MARC Synchro et Threads avec Java TM 1 / 32 Sommaire
Plus en détailRemote Method Invocation Les classes implémentant Serializable
Parallélisme Architecture Eric Goubault Commissariat à l Energie Atomique Saclay Classe qui implémente la méthode distante (serveur): - dont les méthodes renvoient un objet serializable - ou plus généralement
Plus en détailProjet de programmation (IK3) : TP n 1 Correction
Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public
Plus en détailPremiers Pas en Programmation Objet : les Classes et les Objets
Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.
Plus en détailDéveloppement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN fbertin@neotilus.com
Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184 Frédéric BERTIN fbertin@neotilus.com Présentaion : Mobile 3D Graphics API JSR 184 M3G :présentation Package optionnel de l api J2ME. Prend
Plus en détailQuelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)
Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07
Plus en détailCours de Génie Logiciel
Cours de Génie Logiciel Sciences-U Lyon Diagrammes UML (2) http://www.rzo.free.fr Pierre PARREND 1 Avril 2005 Sommaire Les Diagrammes UML Diagrammes de Collaboration Diagrammes d'etats-transitions Diagrammes
Plus en détailCompte-rendu de projet de Système de gestion de base de données
Compte-rendu de projet de Système de gestion de base de données Création et utilisation d'un index de jointure LAMBERT VELLER Sylvain M1 STIC Université de Bourgogne 2010-2011 Reponsable : Mr Thierry Grison
Plus en détailIFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse
IFT287 Exploitation de base de données relationnelles et orientées objet Laboratoire Mon premier programme Java en Eclipse Comment faire? Nous allons utiliser l environnement de travail proposé par Eclipse
Plus en détailAndroid 4 Les fondamentaux du développement d'applications Java
La plateforme Android 1. Présentation 13 2. Historique 14 3. Google Play 15 3.1 Création d'un compte développeur 16 3.2 Publication d'une application 16 3.3 Suivi et mise à jour d'une application 18 Environnement
Plus en détailLambda! Rémi Forax Univ Paris-Est Marne-la-Vallée
Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée forax at univ-mlv dot fr - ParisJUG Java.next() - Mars 2012 What Else? Lambda == Inner class? Java a des lambdas depuis la version 1.1 Exemple utilisant
Plus en détail1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5
1. Introduction... 2 2. Création d'une macro autonome... 2 3. Exécuter la macro pas à pas... 5 4. Modifier une macro... 5 5. Création d'une macro associée à un formulaire... 6 6. Exécuter des actions en
Plus en détailDiagramme de classes
Diagramme de classes Un diagramme de classes décrit les classes et leurs relations (associations, généralisation/spécialisation, ). classe association méthodes attributs héritage Diagramme de classes :
Plus en détailP r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )
P r ob lé m a t iq u e d e la g é n é r icit é les versions de Java antérieures à 1.5 permettaient de créer des classes de structures contenant n'importe quels types d'objet : les collections (classes
Plus en détailThreads. Threads. USTL http://www.lifl.fr/ routier 1
Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un
Plus en détailExclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011
Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique
Plus en détail1.3 Gestion d'une application
1.3 Gestion d'une application 1. Un premier projet... Il est temps maintenant d'écrire la véritable première application Android avec l'inévitable affichage du mot bonjour, ce qui évidemment pour un développement
Plus en détailLMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour
LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections
Plus en détailTP au menu «UI ANDROID»
TP au menu «UI ANDROID» Pré-requis & Installation ( du couvert) soit installer en natif sur vos postes (!!! ATTENTION!!! FromScratch 1,1 Go à télécharger ) JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html
Plus en détailTutoriel: Création d'un Web service en C++ avec WebContentC++Framework
Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Gaël de Chalendar CEA LIST / LIC2M Journée de Présentation des Technologies WebContent INSTN 14/12/2009 Présentation de gsoap Plan
Plus en détailLa base de données XML exist. A. Belaïd
La base de données XML exist Introduction Qu est-ce-que exist? C est une base de donnée native, entièrement écrite en Java XML n est pas une base de données en soi Bien qu il possède quelques caractéristiques
Plus en détailDis papa, c est quoi un bus logiciel réparti?
Dis papa, c est quoi un bus logiciel réparti? Raphael.Marvie@lifl.fr LIFL IRCICA Equipe GOAL Octobre 2006 10. Des sockets aux bus logiciels répartis 1 0. Une application répartie 2 Objectif Découvrir la
Plus en détailApplication web de gestion de comptes en banques
Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion
Plus en détailCette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :
Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens
Plus en détailProjet gestion d'objets dupliqués
Projet gestion d'objets dupliqués Daniel Hagimont Daniel.Hagimont@enseeiht.fr 1 Projet Service de gestion d'objets dupliqués Mise en cohérence lors de la prise d'un verrou sur un objet Pas de verrous imbriqués
Plus en détailProjet Android (LI260) Cours 2
Projet Android (LI260) Cours 2 Nicolas Baskiotis Université Pierre et Marie Curie (UPMC) Laboratoire d Informatique de Paris 6 (LIP6) S2-2013/2014 Plan Les ressources Debug Communication entre activités
Plus en détailFORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères
FORMATION PcVue Mise en œuvre de WEBVUE Journées de formation au logiciel de supervision PcVue 8.1 Lieu : Lycée Pablo Neruda Saint Martin d hères Centre ressource Génie Electrique Intervenant : Enseignant
Plus en détailSQL Server 2012 Administrez une base de données : Exercices et corrigés
ÉnoncésChapitre 1 : Installer SQL Pré-requis 9 Énoncé 1.1 Choisir l'édition de SQL Server 11 Énoncé 1.2 Installer une instance de SQL Server 11 Énoncé 1.3 Installer la base d'exemple 12 Enoncé 1.4 Installer
Plus en détailCA Desktop Migration Manager
CA Desktop Migration Manager Manuel de configuration du déploiement DMM Service Pack 12.8.01 La présente Documentation, qui inclut des systèmes d'aide et du matériel distribués électroniquement (ci-après
Plus en détailI. Introduction aux fonctions : les fonctions standards
Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons
Plus en détailLes fondamentaux du développement d applications Java
Android 5 Les fondamentaux du développement d applications Java Nazim BENBOURAHLA Table des matières 1 Les éléments à télécharger sont disponibles à l'adresse suivante : http://www.editions-eni.fr Saisissez
Plus en détailRappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme
Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation
Plus en détailGuide d'installation. Release Management pour Visual Studio 2013
1 Guide d'installation Release Management pour Visual Studio 2013 Le contenu de ce document est fourni «en l'état». Les informations et les points de vue contenus dans ce document, y compris les URL et
Plus en détailJADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.
: Java Agent DEvelopment framework Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.fr Introduction à la plateforme JADE 1) Modèle d agent 2) Services 3) Norme FIPA
Plus en détailComposants Logiciels. Le modèle de composant de CORBA. Plan
Composants Logiciels Christian Pérez Le modèle de composant de CORBA Année 2010-11 1 Plan Un rapide tour d horizon de CORBA 2 Introduction au modèle de composant de CORBA Définition de composants CORBA
Plus en détailProgrammation par composants (1/3) Programmation par composants (2/3)
Programmation par composants (1/3) La programmation par composant vise le développement de logiciel par aggrégation de briques logicielles existantes est indépendante de la POO La programmation par composant
Plus en détailTUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013
TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013 1. Téléchargement des sources AppInventor http://appinventor.mit.edu/appinventor-sources/ Télécharger ces
Plus en détailInterfaces graphiques avec l API Swing
Interfaces graphiques avec l API Swing Les Swing Les classes graphiques Swing dérivent de la classe JComponent, qui hérite ellemême de la classe AWT (Abstract Window Toolkit). Tous les composants Swing
Plus en détailTp 1 correction. Structures de données (IF2)
Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que
Plus en détailhttp://articles.softonic.fr/2013-06-04-sauvegarde-android-sms-contacts-applications-backup Sauvegarde Android
15/06/2013 http://articles.softonic.fr/2013-06-04-sauvegarde-android-sms-contacts-applications-backup Sauvegarde Android Comment sauvegarder SMS, contacts et applications Android d'un appareil à l'autre?
Plus en détailCorrigé de l'atelier pratique du module 8 : Implémentation de la réplication
Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication Table des matières Atelier pratique 8 : Implémentation de la réplication 1 Exercice 1 : Création d'une publication 1 Exercice
Plus en détailCorrigé des exercices sur les références
Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile
Plus en détailIntroduction : les processus. Introduction : les threads. Plan
IN328 Programmation distribuée avec Java et J2EE 2 - Threads en Java Introduction : les processus Un processus est un ensemble d instructions à exécuter, un espace mémoire réservé et éventuellement d autres
Plus en détailEdutab. gestion centralisée de tablettes Android
Edutab gestion centralisée de tablettes Android Résumé Ce document présente le logiciel Edutab : utilisation en mode enseignant (applications, documents) utilisation en mode administrateur (configuration,
Plus en détailRAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)
CLASSE RACINE Object ancêtre de toutes les classes RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) définit donc des méthodes héritées par toutes
Plus en détailCONNECTEUR PRESTASHOP VTIGER CRM
CONNECTEUR PRESTASHOP VTIGER CRM Page 1 / 14 Vtiger CRM - Prestashop Connector Pour PRESTASHOP version 1.4.x et 1.5.x Pour vtiger CRM version 5.1, 5.2.0, 5.2.1, 5.3 et 5.4 Introduction En tant que gérant
Plus en détailLe serveur SLIS - Utilisation de base
Le serveur SLIS - Utilisation de base Le SLIS est un serveur de communication permettant entre autres de : Créer des adresses électroniques (des comptes de messageries)
Plus en détailJ2SE 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étailProjet Active Object
Projet Active Object TAO Livrable de conception et validation Romain GAIDIER Enseignant : M. Noël PLOUZEAU, ISTIC / IRISA Pierre-François LEFRANC Master 2 Informatique parcours MIAGE Méthodes Informatiques
Plus en détailAndroid Publish/Subscribe, GCM, Google Cloud Messaging : une introduction
Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction jean-michel Douin, douin au cnam point fr version : 8 Décembre 2014 Notes de cours 1 Sommaire Le socle, les fondements Le patron
Plus en détailCARPE. Documentation Informatique S E T R A. Version 2.00. Août 2013. CARPE (Documentation Informatique) 1
CARPE (Documentation Informatique) 1 CARPE Version 2.00 Août 2013 Documentation Informatique S E T R A Programme CARPE - Manuel informatique de l'utilisateur CARPE (Documentation Informatique) 2 Table
Plus en détailTutorial et Guide TeamViewer
Tutorial et Guide TeamViewer TeamViewer est un programme qui permet de partager son bureau ou prendre la main d'un bureau à distance via internet partout dans le monde, et d'ainsi avoir l'opportunité de
Plus en détailIntroduction à JDBC. Accès aux bases de données en Java
Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity
Plus en détailBTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais
BTS S.I.O. 2012-2013 PHP OBJET Module SLAM4 Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais Table des matières 1 But... 3 2 Les bases :... 3 3 Utilisation d'une classe : Instanciation...3
Plus en détailPolymorphisme, la classe Object, les package et la visibilité en Java... 1
Polymorphisme, la classe Object, les package et la visibilité en Java. Polymorphisme, la classe Object, les package et la visibilité en Java.... 1 Polymorphisme.... 1 Le DownCast... 4 La Classe Object....
Plus en détailMessages d'erreurs. Redémarrez votre PC en cliquant sur Démarrer, en sélectionnant ensuite Arrêter puis en cochant Redémarrer
Messages d'erreurs Erreur 602 Vous essayez de vous connecter à Internet. L'erreur n 602 apparaît et il vous est impossible de vous connecter. L'erreur 602 est souvent issue de l'utilisation de l'accès
Plus en détail