Clairement dans cette version, nous assistons à une volonté de simplification. Plus de lisibilité du code, plus d’outils pour ne plus avoir à perdre de temps sur des opérations simples et courantes, pour au final un code de meilleur qualité et plus accessible. La plupart de ces améliorations se trouvent dans cette présentation.
objectif général : Comprendre le principe de fonctionnement d'AJAX
objectifs opérationnels :
- Connaître les avantages et inconvénients d’AJAX
- Connaître les attributs et méthodes de l’objet XMLHttpRequest
- Construire une interaction AJAX
Objectif général : Prendre en main la bibliothèque JavaScript la plus utilisée
Objectifs spécifiques :
Inclure la bibliothèque
Sélectionner du contenu
Manipuler des éléments
Mettre en forme du contenu
Gérer des évènements
Utiliser des effets
Effectuer des requêtes AJAX
Objectif général : Connaître les fondamentaux d’une API REST
Objectifs spécifiques :
Savoir définir une API
Connaître l’architecture REST
Connaître les contraintes du REST
Connaître la structure d’une requêtes HTTP
Connaître les caractéristiques d’une ressources
Se servir des méthodes HTTP
Connaître la structure d’une réponses HTTP
Connaître les codes HTTP
objectif général : Comprendre le principe de fonctionnement d'AJAX
objectifs opérationnels :
- Connaître les avantages et inconvénients d’AJAX
- Connaître les attributs et méthodes de l’objet XMLHttpRequest
- Construire une interaction AJAX
Objectif général : Prendre en main la bibliothèque JavaScript la plus utilisée
Objectifs spécifiques :
Inclure la bibliothèque
Sélectionner du contenu
Manipuler des éléments
Mettre en forme du contenu
Gérer des évènements
Utiliser des effets
Effectuer des requêtes AJAX
Objectif général : Connaître les fondamentaux d’une API REST
Objectifs spécifiques :
Savoir définir une API
Connaître l’architecture REST
Connaître les contraintes du REST
Connaître la structure d’une requêtes HTTP
Connaître les caractéristiques d’une ressources
Se servir des méthodes HTTP
Connaître la structure d’une réponses HTTP
Connaître les codes HTTP
Objectif général : Savoir créer des pages Web interactives sans trop solliciter le serveur et le réseau pour offrir une meilleure expérience utilisateur
Objectifs opérationnels :
Stocker des données à l’aide des variables
Traiter des données à l’aide des opérateurs.
Communiquer avec l’internaute à l’aide des E/S de base
Contrôler le flux d’exécution des instructions.
Réutiliser et organiser le code en créant des fonctions
Créer l’interactivité grâce à la gestion des évènements
Traiter plus facilement plusieurs données connexes grâce aux tableaux et aux objets
Traiter des chaînes de caractères avec l’objet String
Gérer les propriétés de la fenêtre avec l’objet Window
Manipuler le contenu de la page Web grâce à l’objet Document
Contrôler la saisie d’un formulaire avec l’objet Form
Objectifs généraux :
Savoir effectuer une requête HTTP synchrone ou asynchrone
Savoir effectuer des requêtes RESTful avec les méthodes GET, POST, PUT, PATCH et DELETE
Objectifs opérationnels :
Comprendre une requête synchrone
Effectuer une requête synchrone
Lire, d’une manière synchrone, le contenu d’un fichier local
Comprendre une requête asynchrone
Effectuer une requête asynchrone
Récupérer des données à partir d’un serveur avec une requête asynchrone
Comprendre les méthodes de requête RESTful
Effectuer des requêtes RESTful avec les méthodes GET, POST, PUT, PATCH et DELETE
Objectif général
Prendre en main l’un des framework PHP les plus utilisés
Objectifs opérationnels
Structurer les fonctionnalités grâce aux bundles
Faire correspondre une URL donnée à un traitement précis grâce au routage
Traiter les requêtes grâce aux contrôleurs
Intégrer des données dans des templates grâce à TWIG
Faciliter la communication avec une base de données grâce à Doctrine
Permettre à un utilisateur d’initialiser ou de modifier les attributs d'un objet métier grâce aux formulaires
Ce cours vise à présenter le JDBC (Java Database Connectivity) et comment utiliser JDBC à travers des applications Java à d'accéder à des bases de données.
objectif général : Acquérir les compétences nécessaires pour développer des sites Web dynamiques.
objectifs opérationnels :
Stocker et utiliser des données à l’aide des variables et des opérateurs.
Manipuler des tableaux et des chaînes de caractères.
Contrôler le flux d’exécution des instructions.
Définir et utiliser des fonctions.
Transférer des données.
Interfacer PHP avec MySQL.
Cette présentation brosse une revue détaillée des nouveautés qui sont proposées en standard, en preview et en incubation dans la version 22 du JDK issues des projets d’OpenJDK :
- Amber : String Templates, Unnamed Patterns and Variables, Unnamed Classes and Instance Main Methods
- Loom : Structured Concurrency, Scoped Values
- et Panama : Foreign Function & Memory API, Vector API
Mais aussi des fonctionnalités dans les API de Java Core et dans la JVM HotSpot qui ne font pas l'objet de JEP.
Objectif général : Savoir créer des pages Web interactives sans trop solliciter le serveur et le réseau pour offrir une meilleure expérience utilisateur
Objectifs opérationnels :
Stocker des données à l’aide des variables
Traiter des données à l’aide des opérateurs.
Communiquer avec l’internaute à l’aide des E/S de base
Contrôler le flux d’exécution des instructions.
Réutiliser et organiser le code en créant des fonctions
Créer l’interactivité grâce à la gestion des évènements
Traiter plus facilement plusieurs données connexes grâce aux tableaux et aux objets
Traiter des chaînes de caractères avec l’objet String
Gérer les propriétés de la fenêtre avec l’objet Window
Manipuler le contenu de la page Web grâce à l’objet Document
Contrôler la saisie d’un formulaire avec l’objet Form
Objectifs généraux :
Savoir effectuer une requête HTTP synchrone ou asynchrone
Savoir effectuer des requêtes RESTful avec les méthodes GET, POST, PUT, PATCH et DELETE
Objectifs opérationnels :
Comprendre une requête synchrone
Effectuer une requête synchrone
Lire, d’une manière synchrone, le contenu d’un fichier local
Comprendre une requête asynchrone
Effectuer une requête asynchrone
Récupérer des données à partir d’un serveur avec une requête asynchrone
Comprendre les méthodes de requête RESTful
Effectuer des requêtes RESTful avec les méthodes GET, POST, PUT, PATCH et DELETE
Objectif général
Prendre en main l’un des framework PHP les plus utilisés
Objectifs opérationnels
Structurer les fonctionnalités grâce aux bundles
Faire correspondre une URL donnée à un traitement précis grâce au routage
Traiter les requêtes grâce aux contrôleurs
Intégrer des données dans des templates grâce à TWIG
Faciliter la communication avec une base de données grâce à Doctrine
Permettre à un utilisateur d’initialiser ou de modifier les attributs d'un objet métier grâce aux formulaires
Ce cours vise à présenter le JDBC (Java Database Connectivity) et comment utiliser JDBC à travers des applications Java à d'accéder à des bases de données.
objectif général : Acquérir les compétences nécessaires pour développer des sites Web dynamiques.
objectifs opérationnels :
Stocker et utiliser des données à l’aide des variables et des opérateurs.
Manipuler des tableaux et des chaînes de caractères.
Contrôler le flux d’exécution des instructions.
Définir et utiliser des fonctions.
Transférer des données.
Interfacer PHP avec MySQL.
Cette présentation brosse une revue détaillée des nouveautés qui sont proposées en standard, en preview et en incubation dans la version 22 du JDK issues des projets d’OpenJDK :
- Amber : String Templates, Unnamed Patterns and Variables, Unnamed Classes and Instance Main Methods
- Loom : Structured Concurrency, Scoped Values
- et Panama : Foreign Function & Memory API, Vector API
Mais aussi des fonctionnalités dans les API de Java Core et dans la JVM HotSpot qui ne font pas l'objet de JEP.
Découvrez le framework web Spring Boot qui a la cote !
Apprenez comment son système d'auto-configuration fonctionne.
Live coding et exemple de migration vers Spring Boot sont de la partie.
Cette présentation brosse une revue détaillée des nouveautés qui sont proposées en standard, en preview et en incubation dans la version 22 du JDK issues des projets d’OpenJDK :
- Amber : String Templates, Unnamed Patterns and Variables, Unnamed Classes and Instance Main Methods
- Loom : Structured Concurrency, Scoped Values
- et Panama : Foreign Function & Memory API, Vector API
Mais aussi des fonctionnalités dans les API de Java Core et dans la JVM HotSpot qui ne font pas l'objet de JEP.
Workshop Spring 3 - Tests et techniques avancées du conteneur SpringAntoine Rey
Les secrets du conteneur Spring vous attendent pour ce 3ième workshop sur le framework Spring : module spring-test, injection de beans de portées différentes, support des JSR 250 et 330, post-processeurs de beans, fichiers de configuration et abstraction de l’accès aux ressources.
Tester unitairement une application javaAntoine Rey
Présente les différents types de tests automatisés, les objectifs des tests unitaires, les stratégies de mise en œuvre, les bonnes pratiques, les difficultés, ce qu'est un mock, différents outils (Unitils, Mockito, DbUnit, Spring Test) et des exemples de tests (DAO et contrôleurs Spring MVC), sans oublier le test de code legacy.
Présentation en détail de l'analyse statique : ses fondements en PHP, ses mécanismes internes, les processus d'augmentation des connaissances et de personnalisation des analyses, ainsi que les résultats d'audits.
Durant cette session, on va vous montrer les différentes fonctions de la Tooling API avec des cas d'utilisations concrets.
Et vous présentera quelques requêtes SOQL en Tooling API utilisable au quotidien ( Dev ou Admin)
Procédures CLR pour SQL Server : avantages et inconvénientsDenis Voituron
Depuis toujours nous souhaitons développer au mieux des procédures stockées dans SQL Server, afin de clarifier ou d’optimiser nos développements.
Depuis 2005, les procédures stockées et les triggers peuvent être développés en .NET, grâce à votre langage favoris : C#, VB.NET, etc. Nous pouvons ainsi tirer parti de toute la puissance de ce Framework : fonctions mathématiques, cryptages, gestion de chaine de caractères, manipulation des dates, etc.
Lors de cette session, nous expliquerons comment créer des procédures, des triggers et des fonctions d’agrégations dans ce mode CLR. Nous passerons en revue les trucs et astuces utiles pour optimiser nos requêtes. Nous verrons quels sont les avantages de concevoir des procédures SQL en .NET ; mais également quels en sont les inconvénients. Finalement, nous verrons comment déployer facilement les bibliothèques .NET créées, dans SQL Server : quels outils utiliser.
PFE BOOK CYNAPSYS 2016 -2017
Le deadline du dépôt des demandes est fixé pour le
10/12/2016
Les candidats présélectionnés passeront un test technique
(Date : entre le 19 Décembre 2016 & le 23 Décembre 2016)
Présentation noura baccar " Innovation on Indoor GeoLocalization Applications...Cynapsys It Hotspot
la présentation expose en premier lieu une vue d'ensemble des techniques et technologies de localisation munie d’une analyse comparative de l'état des lieux du marché des applications de géolocalisation indoor.
deuxièmement donne une description d'une approche novatrice pour la géolocalisation intérieure basée sur la Logique Floue avancée et l'application mobile résultante développée pour les locaux Cynapsys.
Le cloud computing est un concept qui consiste à déporter sur des serveurs distants des stockages et des traitements informatiques traditionnellement localisés sur des serveurs locaux ou sur le poste de l'utilisateur. Plus précisément selon le National Institute of Standards and Technology (NIST), le cloud computing est l'accès via le réseau, à la demande et en libre-service à des ressources informatiques virtualisées et mutualisées.
On entend de plus en plus parler de « cloud computing ». Cette présentation représente une introduction à cette technologie. A la fin de la présentation, vous serez en mesure de définir le « cloud » et de présenter ses types et ses formes.
Un banc de test est un système physique permettant de mettre un produit en conditions d'utilisation paramétrables et contrôlées afin d'observer et mesurer son comportement. Le banc de test est largement utilisé dans l'industrie, au point de représenter une part importante du budget de développement d'un produit.
Notre métier consiste à exploiter les dernières technologies de communication dans le domaine de connectivité automotive.
Dans le but de faire évoluer les réseaux de communication dans le secteur automobile, le département Automotive et Transport de Cynapsys, doté d’expériences a échelle international, développe des solutions alternatives pour les bus de communications inter et intra-véhiculaire.
L’équipe automotive vise à intégrer les technologies de contrôle sans fil dans les équipements, où les contraintes temps réel sont flexibles, tels que les systèmes de lève-vitres électriques, lave-phare, essuie-glaces, sièges électriques….Ceci est applicable aussi au systèmes de diagnostics et de calibration.
En outre, la technologie CPL (Courant Porteur en Ligne) présente des avantages importants profitant d’un support physique existant, pour véhiculer de manière fiable les données. Notre équipe travaille sur la mise au point de systèmes d’interfaçages des bus existants tel que CAN, LIN … avec la ligne de batterie.
LA SOLUTION MANTIS A ETE SELECTIONNE POUR LA PLATFORME LIBRE SAVOIRS COMME GESTIONNAIRE DE SUIVI D'INCIDENTS IL A ETE PERSONNALISE EN FONCTION DES BESOINS DES UTILISATEURS ET DES CONTRAINTES PROJTS
L’informatique quantique est un domaine qui est encore à ses premiers pas. - L’intrication, la téléportation et la cryptographie semblent être encore de la fiction pour certain. - Ces théorie ont déjà été mise en œuvre expérimentalement, grâce à l’utilisation des photons et de spins nucléaire. - Les recherches poursuivront afin de créer un ordinateur quantique viable.
L’informatique quantique est un domaine qui est encore à ses premiers pas. - L’intrication, la téléportation et la cryptographie semblent être encore de la fiction pour certain. - Ces théorie ont déjà été mise en œuvre expérimentalement, grâce à l’utilisation des photons et de spins nucléaire. - Les recherches poursuivront afin de créer un ordinateur quantique viable.
La cryptographie permet de satisfaire les besoins en sécuritéLe crypto-système symétrique souffre d’un problème de distribution de clés, pour cela son utilisation doit être combinée avec le crypto-système asymétriqueLes crypto-systèmes asymétriques souffrent d’une vulnérabilité dite : Man In The Middle AttackSolution : Certificats électroniques
Le domaine des architectures reconfigurables est un domaine en extension il est nécessaire de faire des travaux de recherches sur :Architectures basse consommation de puissance (Low- Power)Architectures hétérogène (HARD + SOFT)Co-conception (Co-Design)Outils d’estimation de performances haut niveauOutils d’exploration de l’espace de conception
Mantis est un système de suivi d'anomalies logicielles (bugs) basé sur une interface web. Il est écrit en PHP, requiert une base de données (MySQL, SQL Server, PostgreSQL et DB2 supportées) et un serveur web. Mantis peut être installé sur Microsoft Windows, Mac OS, et sur de nombreux OS du type Unix.Le principe de cet outil consiste à enregistrer la déclaration d'un bug informatique, puis, pour les techniciens de maintenance informatique concernés, à mettre à jour l'avancement de sa résolution, jusqu'à sa clôture. Le déclarant de l'anomalie peut s'informer à tout moment via le serveur Web de l'avancement du traitement de son problème.
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO Technology
En cette année 2024 qui s’annonce sous le signe de la complexité, avec :
- L’explosion de la Gen AI
-Un contexte socio-économique sous tensions
- De forts enjeux sur le Sustainable et la régulation IT
- Une archipélisation des lieux de travail post-Covid
Découvrez les Tech trends incontournables pour délivrer vos produits stratégiques.
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...OCTO Technology
par Claude Camus (Coach agile d'organisation @OCTO Technology) et Gilles Masy (Organizational Coach @OCTO Technology)
Les équipes infrastructure, sécurité, production, ou cloud, doivent consacrer du temps à la modernisation de leurs outils (automatisation, cloud, etc) et de leurs pratiques (DevOps, SRE, etc). Dans le même temps, elles doivent répondre à une avalanche croissante de demandes, tout en maintenant un niveau de qualité de service optimal.
Habitué des environnements développeurs, les transformations agiles négligent les particularités des équipes OPS. Lors de ce comptoir, nous vous partagerons notre proposition de valeur de l'agilité@OPS, qui embarquera vos équipes OPS en Classe Business (Agility), et leur fera dire : "nous ne reviendrons pas en arrière".
2. Modularité du Java
Swing
Types et génériques
NIO 2
Support natif XML
Support des propriétés JavaBean
Closures - abstraction
API Date & Time
Units & Quantities
JMX 2.0
Javadoc
6. Java Module System (JSR 277)
Format de distribution de déploiement du module
Versioning et dépendance
Dépôt API
L’appui d'exécution dans le lanceur / classloaders
11. Bean Binding Framework
JSR 295
• Utilisez une Binding pour lier les propriétés de deux beans:
Binding binding = new Binding(source, "sourcePath",
target, "targetPath");
binding.bind();
• Une fois lié, les changements de chaque source ou cible sont envoyés
vers l'autre.
• Changements passer par un BindingConverter et un BindingValidator le long
du chemin.
• Le langage d'expression JSP (EL) est utilisé pour spécifier les conversions.
12. Bean Validation
JSR 303
• Voici un exemple de Hibnerate Validator qui peut être évocateur:
public class Address {
@NotNull
private String line1;
private String line2;
private String zip;
private String state;
@Length(max = 20)
@NotNull
private String country;
@Range(min = -2, max = 50, message = "Floor out of range")
public int floor;
}
13. Choix des Generics
class NewCollection<class E> extends
Collection<E> { ... }
class NewList<class E> extends
NewCollection<E>, List<E> { ... }
14. Annotations sur types JSR 308
• pour les arguments de type générique à des classes paramétrées:
Map<@NonNull String, @NonEmpty List<@Readonly Document>> files;
• pour les arguments de type générique à une méthode générique ou d'invocation du
constructeur:
o.<@NonNull String>m("...");
• Pour paramètres de type bounds et wildcards:
class Folder<F extends @Existing File> { ... }
Collection<? super @Existing File>
• pour l'héritage de classe :
class UnmodifiableList<T> implements @Readonly List<@Readonly T> { ...
}
• Pour les clauses throws :
void monitorTemperature() throws @Critical TemperatureException { ... }
• Pour les conversions de type :
myString = (@NonNull String) myObject;
• Pour les types du test:
boolean isNonNull = myString instanceof @NonNull String;
• Pour la création des objets:
new @NonEmpty @Readonly List<String>(myNonEmptyStringSet)
15. Création d'une instance raccourcie
public static void main(String[] args) {
map := new HashMap<String, Integer>();
for(word : args) {
freq := map.get(word);
map.put(word, (freq==null) ? 1 : freq+1);
}
System.out.println(map); }
public static void main(String[] args) {
final map = new HashMap<String, Integer>();
for(final word : args) {
final freq = map.get(word);
map.put(word, (freq==null) ? 1 : freq+1);
}
System.out.println(map); }
16. NIO 2 (JSR 203)
• Les principales caractéristiques :
– Nouvelle interface filesystem
• Permissions
• Les attributs de fichiers
• Implémentations débrochables
• Échapper vers les spécifications de l’API filesystem
– API pour E/S asynchrones sur les sockets et les fichiers
– La réalisation de canaux socket (multicast, options, etc)
17. NIO 2 – File System API
Closeable WatchService WatchEvent
WatchKey
Watchable
Files
FileId
FileSystems FileSystem
FileReference Directory
FileSystem
Provider
BackingFile
PathReference Path
System
FileSystem
AttributeView
File
DiskSpace
AttributeView
24. Support des propriétés JavaBean
Proposition de nouveau mot-clé :
public class Point {
property double x;
property double y;
}
Point p = new Point(1, 2);
System.out.println(p.x + " " + p.y);
Nouvelle proposition de la syntaxe d'accesseur:
Point p = new Point();
p->X = 56;
p->Y = 87;
int z = p->X;
25. Closures - abstraction
Closures :
Commencer à penser à eux comme des blocs de code, vous pouvez passer autour et invoquer plus tard.
Peut déjà le faire en Java avec les classes internes ou des objets de la méthode
void validateWithMax(Stat[] stats, final int max) throws InvalidStatException {
for(Stat stat : stats) {
if(! (stat.value() <= max)) {
throw new InvalidStatException();
}
}
}
void validateWithMin(Stat[] stats, final int min) throws InvalidStatException {
for(Stat stat : stats) {
if(! (stat.value() >= min)) {
throw new InvalidStatException();
}
}
}
26. Closures– Inner Classes
void validateWithMax(Stat[] stats, final int max) throws InvalidStatException {
validate( stats, new Validator() {
public boolean isValid(Stat stat) { return stat.value() <= max; }
} ); }
void validateWithMin(Stat[] stats, final int min) throws InvalidStatException {
validate( stats, new Validator() {
public boolean isValid(Stat stat) { return stat.value() >= min; }
} ); }
interface Validator { boolean isValid(Stat stat); }
void validate(Stat[] stats, Validator validator) {
for(Stat stat : stats) {
if(! validator.isValid(stat)) { throw new InvalidStatException(); }
}
}
27. Les propositions des Closures
• BGGA – Gilad Bracha, Neal Gafter, James Gosling,
Peter von der Ahe
• CICE – “Concise Instance Creation Expressions”
– Josh Bloch, Bob Lee, Doug Lea
• FCM – “First Class Methods” / JCA “Java Control
Abstraction”
– Stephen Colebourne, Stefan Schulz, Ricky Clarkson
32. Closures - JCA
File file = ...;
usingFileReader(FileReader reader : file) {
reader.read…
}
public static void usingFileReader(#(void(FileReader)) block : File file) throws IOException {
FileReader reader = null;
try {
reader = new FileReader(file);
block.invoke(reader);
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) { }
}
}
- c'est la définition de type de bloc, variables passées dans le bloc
- Passer des variables nécessaires par le bloc dans la méthode invoke
33. Closures - BGGA
File file = ...;
usingFileReader(FileReader reader : file) {
reader.read…
}
public static <T,throws E extends Exception>
T usingFileReader(File file, {=>T throws E} block) throws E {
FileReader reader = null;
try {
reader = new FileReader(file);
return block.invoke(reader);
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) { }
}
}
• La syntaxe BGGA est beaucoup plus compliquée car elle est la manipulation à la fois la syntaxe et la
syntaxe avant l'abstraction de contrôle.
• Avoir à gérer cas d'exception, mais fondamentalement semblable dans son concept
34. API Date / Time
• Correction des APIs existantes date/heure
• Problèmes heure d'été
• Threads DateTimeFormat
• Mutabilité Date/Calendar
• Manque des classes interval/duration
• Basé sur JodaTime
• Analyse, de mise en forme, l'arithmétique, etc
35. Units and Quantities (JSR 275)
Unit UnitFormatter SI
NonSI
BaseUnit DerivedUnit Dimension
ProductUnit AlternateUnit TransformedUnit Converter
MultiplyConverter AddConverter LogConverter
36. Exemples des Unités
// Conversion entre les unités.
KILO(METER).getConverterTo(MILE).convert(10)
• 6.2137119223733395
// Récupération de l'unité système (identifie le type de mesure).
REVOLUTION.divide(MINUTE).getSystemUnit()
• rad/s
// Vérifier la dimension
ELECTRON_VOLT.isCompatible(WATT.times(HOUR))
• true
// Récupération de dimension unitaire (dépend du modèle actuel).
ELECTRON_VOLT.getDimension()
• [L]²·[M]/[T]²
37. JMX (Java Management Extensions)
• JMX 2.0 (JSR 255)
– Rénovation avec les types génériques
– Utilisation les annotations
– Faire MBeans ouverts facile à utiliser
– Généraliser les moniteurs pour supporter types
complexes
– serveurs Mbean Cascade/fédéré
– Les connecteurs services Web (JSR 262)
38. Javadoc (JSR 260)
• De nouvelles étiquettes pour des exemples,
• Catégorisations nouveaux types de
méthodes, propriétés de bean, etc
• Mettre à jour le look old school
39. Autres..
• Support des opérateurs numérique pour le type
BigDecimal
BigDecimal a = …
BigDecimal b = …
BigDecimal s = a + b;
• Comparaisons de chaines de caractères dans la
clause switch:
switch(stooge) {
case ‘Moe’: …
• Comparaison pour les énumérations
JACK < QUEEN