Ce support explique les concepts de bases du principe de l'inversion de contrôle et d'injections des dépendances.
Les concepts les plus importants à comprendre par les futurs ingénieurs du génie Logiciel.
Ce Support de cours Spring contient :
- Architecture JEE (Over view)
- Spring Overview
- Spring IOC
- Spring MVC
- Spring Integration (RMI, JaxWS, JaxRS, JMS, JMX,...)
- Spring Security
Bon apprentissage à tous
The document discusses distributed computing and caching with Hazelcast. It describes Hazelcast as an open-source Java middleware that allows creating a distributed in-memory data grid (IMDG). Hazelcast partitions and replicates data across nodes to provide scalable distributed data storage and processing. It implements common data structures like maps, queues, sets, and lists in a distributed manner to improve performance and scalability for distributed systems.
Exemple d'application qui montre comment utiliser les bonnes pratiques de JEE pour développer un site web de commerce électronique en utilisant les outils :
- Eclipse comme environnement de développement
- Maven comme outil d’intégration
- JUnit comme Framework des tsts unitaire
- Spring IOC pour l'inversion de contrôle
- Spring MVC pour la couche web
- Spring Security pour la s��curité
- JPA, Hibernate
- Web Service SOAP
- Web Service REST
- Service RMI
Comment débuter en devops et apprendre à réaliser son premier pipeline. Très facilement et en toute simplicité.
Une formation gratuite pour s'initier au devops.
https://youtu.be/tiSfXCM8VTw
https://gitlab.com/xavki/pipeline-saison-1
Les slides de ma présentation à Devoxx France 2017.
Introduite en Java 8, l'API Collector vit dans l'ombre de l'API Stream, ce qui est logique puisqu'un collecteur doit se connecter à un stream pour fonctionner. Le JDK est organisé de sorte que l'on utilise surtout les collectors sur étagère : groupingBy, counting et quelques autres. Ces deux éléments masquent non seulement le modèle de traitement de données des collectors, mais aussi sa puissance et ses performances.
Ces présentation parle des collectors qui existent et qu'il faut connaître, ceux que l'on peut créer, ceux dont on se doute que l'on peut les créer une fois que l'on comprend un peu les choses, et les autres, tant les possibilités offertes par cette API sont illimitées.
Support de formation pour les développeurs. Pour les formations, ce support est complété par un livret d'exercices pour les stagiaires et de l'ensemble de tous les exemples, sous forme de projets Eclipse.
Formation Gratuite Total Tests par les experts Java Ippon Ippon
Garantissez la qualité des vos applications par des tests efficaces : unitaire, d'intégration, de performance... Apprenez à mettre en oeuvre un harnais de tests complet et efficace avec Junit, AssertJ, Mockito, Spring Test, Arquillian, ... et assimilez les concepts du TDD et du BDD, illustré avec Cucumber. La formation Total Test Training ira encore plus loin en vous présentant l'utilisation de Sonar et le rôle des tests dans un système d'intégration continue. Enfin, les aspects liés à la mesure de la performance (instrumentation avec Metric et stress test avec JMeter et Gatling) et à l'optimisation ciblée vous permettront d'être en mesure de produire un code "propre", protégé des risques de regressions.
Présentation d'un cours en JAVA/J2EE
Création et manipulations des objets en Java
** Connexion JDBC à la base de données
** Modèle en couches
** FrameworkHibernate
** Framewoek Spring MVC
Au cours des 10 précédentes années, nous avons eu des sessions de Devoxx FR et plusieurs versions dont certaines majeures de Java.
L’objectif de ce talk est de revenir rétrospectivement sur certaines annonces et sur certaines des nombreuses évolutions de Java, notamment récentes afin d’en profiter dans nos applications. Au-delà des évolutions syntaxiques et dans les API, ce sera aussi l’occasion de justifier la migration vers des versions plus récentes de Java.
Beaucoup d’applications utilisent encore Java 8 mais Java a beaucoup évolué depuis notamment avec la diffusion de deux versions LTS.
L’objectif de ce talk est de revenir sur certaines de ces nombreuses évolutions de Java, notamment récentes afin d’en profiter dans nos applications. Au-delà des évolutions syntaxiques et dans les API, ce sera aussi l’occasion de justifier la migration vers des versions plus récentes de Java.
Ce chapitre est destiné pour les étudiants de la 2ème année année master Mathématiques, Cryptologie et Sécurité Informatique (MMCSI) Semestre 3. Il traite les concepts de base du langage Java.
Les versions de Java se suivent et leurs engouements ne se ressemblent pas : la version 8 de Java est probablement celle qui a suscité le plus d’intérêts chez les développeurs. Java 9, au contraire, est la version de Java qui génère le plus de craintes et d’interrogations voir de peurs. Il faut se préparer pour utiliser Java 9 d’autant que Java 10 est déjà là et les versions suivantes vont s’enchaîner. Le but de ce talk est de parcourir les avantages et les intérêts à utiliser ces nouvelles versions mais aussi certaines difficultés possibles lors de la migration.
Les versions de Java se suivent et leurs engouements ne se ressemblent pas : la version 8 de Java est probablement celle qui a suscité le plus d’intérêts chez les développeurs. Java 9, au contraire, est la version de Java qui génère le plus de craintes et d’interrogations voir de peurs. Il faut se préparer pour utiliser Java 9 d’autant que Java 10 est déjà là et les versions suivantes vont s’enchaîner. Le but de ce talk est de parcourir les avantages et les intérêts à utiliser ces nouvelles versions mais aussi certaines difficultés possibles lors de la migration.
Le sujet principal de Java 9 est le support de la modularité mais Java 9 propose aussi de nombreuses autres fonctionnalités. Ce talk a pour but de faire une revue des principales d’entre-elles en attendant la sortie de Java 9 : support de standards, nouvelles API, évolutions dans certaines API, mises à jour des outils du JDK et améliorations de la JVM.
Ce n'est pas qu'un slogan politique mais bien la réalité pour Java depuis l'année écoulée.
A tel point que plusieurs caractéristiques historiques de Java sont partiellement remises en cause notamment la lenteur patente entre deux releases, l'embonpoint endémique du JRE/JDK, et même la sacro sainte rétro-compatibilité, ... Faisons un tour de ces évolutions qui sont parfois de profonds changements.
Ce guide fournit un exemple de la manière dont Spring Boot vous aide à accélérer le développement d'applications. Au fur et à mesure que vous lirez plus de guides de démarrage de Spring, vous verrez plus de cas d'utilisation de Spring Boot. Ce guide est destiné à vous donner un aperçu rapide de Spring Boot. Si vous souhaitez créer votre propre projet basé sur Spring Boot, visitez Spring Initializr, remplissez les détails de votre projet, choisissez vos options et téléchargez un projet groupé sous forme de fichier zip.
Ce n'est pas qu'un slogan politique mais bien la réalité pour Java depuis l'année écoulée.
A tel point que plusieurs caractéristiques historiques de Java sont partiellement remises en cause notamment la lenteur patente entre deux releases, l'embonpoint endémique du JRE/JDK, et même la sacro sainte rétro-compatibilité, ...
Faisons un tour de ces évolutions qui sont parfois de profonds changements avant de fêter le 10ème anniversaire du Nantes JUG.
Les versions de Java se suivent et leurs engouements ne se ressemblent pas : la version 8 de Java est probablement celle qui a suscité le plus d’intérêts chez les développeurs. Java 9, au contraire, est la version de Java qui génère le plus de craintes et d’interrogations voir de peurs. Il faut se préparer pour utiliser Java 9 d’autant que Java 10 est déjà là et les versions suivantes vont s’enchaîner. Le but de ce talk est de parcourir les avantages et les intérêts à utiliser ces nouvelles versions mais aussi certaines difficultés possibles lors de la migration.
Retrouvez toute la communauté Liferay francophone pour un meetup virtuel (100% remote) pendant la pause déjeuner du jeudi 4 juillet.
Ce meetup sera l'occasion de vous présenter 5 sujets auxquels consacrer un peu de veille technique entre deux siestes sur la plage cet été.
Pour chaque sujet on vous fait un petit résumé, on en discute ensemble et bien sur on vous donne tous les pointeurs utiles pour vous occuper un peu les jours de pluie cet été (rares bien entendu).
Au programme : HTMX, Alpine.js, animation.css, N8N, Sentry, GlitchTip
Et bien sur les traditionnels échanges libres ne seront pas oubliés !
Ansible, Terraform, CloudFormation, [insert your favorite tech here]… Les solutions d’infra-as-code sont pléthores. Alors, pourquoi parler du dernier rejeton à la mode porté par le CNCF ? Allez, spoilons un peu l'affaire ! Bâti sur Kubernetes, Crossplane permet lui de faire converger le delivery d’une app containerisée avec toutes les autres ressources requises hors de votre cluster K8S préféré, et dont elle aura toutefois grand besoin pour fonctionner correctement : un bucket S3, une base de donnée managée, etc.. Vous orchestrez ainsi le cycle de vie de votre application complète avec une seule et même perspective. Ajoutez à cela un multicloud facilité, ou encore une vrai capacité à s’inscrire dans une démarche GitOps, et vous obtenez là une solution très efficace pour organiser vos prochains déploiements !
Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...Erol GIRAUDY
Vision de Claude 3.5 SONNET
La famille de modèles Claude 3 est dotée de nouvelles capacités de vision qui permettent à Claude de comprendre et d’analyser des images, ouvrant ainsi des possibilités passionnantes pour l’interaction multimodale.
https://www.ugaia.eu/2024/07/claude-35.html
Ce guide décrit comment utiliser des images dans Claude, y compris les meilleures pratiques, les exemples de code et les limitations à garder à l’esprit.
Comment utiliser la vision
Utilisez les capacités de vision de Claude via :
• claude.ai. Téléchargez une image comme vous le feriez pour un fichier, ou faites glisser et déposez une image directement dans la fenêtre de discussion.
• L’établi de la console. Si vous sélectionnez un modèle qui accepte les images (modèles Claude 3 uniquement), un bouton pour ajouter des images apparaît en haut à droite de chaque bloc de message Utilisateur.
Demande d’API. Voir les exemples dans ce guide.
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptxJacques KIZA DIMANDJA
L'intelligence artificielle est un domaine de l'informatique qui se concentre sur la création de systèmes et de technologies capables de simuler des processus cognitifs humains tels que l'apprentissage, la résolution de problèmes, la reconnaissance de formes, et la prise de décision. Ce cours vise à explorer les différentes techniques et méthodes utilisées pour développer et améliorer les capacités des machines à penser et agir de manière autonome.
L'une des principales composantes de l'intelligence artificielle est l'apprentissage automatique, qui consiste à utiliser des algorithmes pour permettre aux machines d'apprendre à partir de données et de s'améliorer progressivement sans intervention humaine. Cette approche est utilisée dans de nombreux domaines tels que la reconnaissance faciale, la recommandation de produits, la traduction automatique, et la conduite autonome.
Au cours de ce cours, les étudiants sont initiés aux concepts fondamentaux de l'intelligence artificielle, tels que les réseaux de neurones, l'apprentissage supervisé et non supervisé, les processus de décision Markov, et les algorithmes de traitement automatique du langage naturel. Ils apprennent également à mettre en œuvre ces concepts en utilisant des langages de programmation tels que Python et des bibliothèques logicielles telles que TensorFlow et scikit-learn.
En plus d'explorer les techniques de base de l'intelligence artificielle, ce cours aborde également des sujets avancés tels que l'apprentissage en profondeur, les réseaux de neurones convolutifs, et les réseaux générateurs adverses. Les étudiants sont encouragés à participer à des projets pratiques qui leur permettent d'appliquer les connaissances acquises et de développer leurs compétences en matière de résolution de problèmes.
En conclusion, ce cours de l'intelligence artificielle vise à former les étudiants aux concepts et aux technologies de pointe dans le domaine en pleine expansion de l'intelligence artificielle. Grâce à une combinaison de théorie et de pratique, les étudiants acquièrent les compétences nécessaires pour relever les défis de l'avenir et contribuer au développement de systèmes intelligents et autonomes.
Jacques KIZA DIMANDJA
Tutoriel interactif d’ingénierie rapide d’Anthropic.pdfErol GIRAUDY
Le tutoriel interactif d’ingénierie rapide d’Anthropic. Ce cours est destiné à vous fournir une compréhension complète, étape par étape, de la façon de concevoir des invites optimales dans Claude.
Après avoir terminé ce cours, vous serez en mesure de :
Maîtriser la structure de base d’une bonne invite
Reconnaître les modes de défaillance courants et apprendre les techniques « 80/20 » pour y remédier
Comprendre les forces et les faiblesses de Claude
Créez des invites puissantes à partir de zéro pour les cas d’utilisation courants
Ce tutoriel existe également sur Google Sheets en utilisant l’extension Claude for Sheets d’Anthropic. Nous vous recommandons d’utiliser cette version car elle est plus conviviale.
Lorsque vous êtes prêt à commencer, allez à pour continuer.01_Basic Prompt Structure
CLAUDE 3.5 SONNET EXPLICATIONS sur les usagesErol GIRAUDY
Présentation de Claude 3.5 Sonnet
La famille de modèles Claude 3 est dotée de nouvelles capacités de vision qui permettent à Claude de comprendre et d’analyser des images, ouvrant ainsi des possibilités passionnantes pour l’interaction multimodale.
Les artefacts : une nouvelle façon d’utiliser Claude
voir aussi sur mon blog :
www.ugaia.eu
2. JDK : release
§ Jusqu'à Java 9 :
§ fonctionnement en features release :
§ Une liste de fonctionnalités été définie pour une release
§ La date de release été planifiée : généralement une toute les 2 ans
§ Dès qu'une fonctionnalités prenait plus de temps : la release est décalée
§ Conséquence :
§ Des releases de tailles importantes difficile à sortir
§ Des releases de 3 ans plutôt que 2 : 3,5 ans entre Java 8 et 9 !
§ Compliqué à prendre en main par les développeurs
3. JDK : release
§ Depuis Java 10 :
§ Dès qu'une fonctionnalité est prête on l'intègre dans la future release
§ On release à date ce qui est intégré.
§ Conséquence :
§ Des releases tous les 6 mois
§ Des releases plus petites et donc faciles à livrer et à intégrer pour les
développeurs
§ Un développement plus facile et rapide de fonctionnalités dans Java
4. JDK : Support
§ Depuis Java 10 on a donc une release tous les 6 mois.
§ Toutes les 6 releases => une release Long Term Support -- LTS.
§ La politique de support gratuit a changé :
§ Une release non-LTS est supportée 6 mois
§ Une release TS est supportée au minimum 3 ans
§ Java 8 sera EOL en 2019
§ Oracle fournit du support étendu payant
§ Pas de panique, d'autres vont proposer du support étendu gratuit :)
5. JDK : Distribution
§ OpenJDK est le projet open source d'implémentation du langage Java et de
la JVM.
§ Beaucoup d'organisations participent à ce projet.
§ Oracle est une de ces organisations (la principale).
§ Depuis Java 11, Oracle fournit deux distributions d'OpenJDK qui sont
identiques en terme de fonctionnalités :
§ OpenJDK : support limité dans le temps
§ OracleJDK : support étendu payant
6. JDK : Distribution
§ Il existe beaucoup d'autres distributions de Java, dont certaines
proposent déjà un support plus étendu qu'OpenJDK :
§ Azul : Zing (payant) et Zulu (gratuit)
§ AdoptOpenJDK
§ RedHat
§ Eclipse via OpenJ9 (implémentation IBM)
§ Amazon Corretto
§ Certaines de ces distributions ont un support (et donc des mise à jour)
gratuit sur une période plus grande qu'OpenJDK.
7. Java 9 : Modules
C’est quoi un Module :
§ A Module is a self-describing collection of Code, Data and some
Resources.
§ It is a set of related Packages, Types (classes, abstract classes,
interfaces etc) with Code & Data and Resources.
§ Each Module contains only a set of related code and data to support
Single Responsibility (Functionality) Principle (SRP).
10. Pourquoi les Modules
§ Chargement de classe à la demande : new
§ Chargement linaire de classes : la classloader charge les classes
linéairement et s’arrête à la première classe correspondant au nom
complet demandé.
§ Duplication de classes : pas de vérification à l’exécution sur l’existence
de plusieurs occurrences d’une même classe.
§ Vérification de présence dépendances de tous les jars / classes
nécessaires au bon fonctionnement de l’application.
§ Le classpath est plat sans aucune notion de dépendances entre les
jars.
16. Modules providers : ServiceLoader
§ Un mécanisme intégré simple et facile à utiliser
pour le chargement dynamique des implémentations d'interface
§ De nombreuses API Java sont implémentées sur la base du ServiceLoader
18. Automatic Module : Anciens Jars
Limitations:
If jar name contains – or . characters at that time module-info.java does not allowed module name with – or .
i.e: require gauva-11.5
gauva-11.5 is invalid. In this case rename jar file and remove – or . characters from jar file.
19. Java 9 jshell: The Java Shell (Read-Eval-Print Loop)
§ Beaucoup de langages (ruby, scala, python, …) proposent une Read-
Evaluate-Print-Loop (REPL), un shell.
§ Permet un apprentissage aisé du langage
§ Eviter le cérémonial d’édition, de compilation, de packaging du code.
§ Avec Java 9, apparait jshell, le REPL de java !
22. Java 9 : Factory Methods Collections
§ L'un des plus grand changement en terme d’API : des méthodes
statiques pour la création de collection immuable.
§ Cible : création de petite collections (list, set, map).
§ La performance et l’utilisation mémoire ont été au centre de
l’implémentation de ces collections.
23. Java 9 : List, Set, Map of
§ Ces méthodes retournent une List, un Set ou une Map immuables
Jdk8
Jdk9
25. Java 9 : Nouvelles méthodes
§ Classe Stream : takeWhile, dropWhile, ofNullable et iterate.
§ Classe Optional : ifPresent, ifPresentOrElse, or et stream..
§ Arrays : Beaucoup de nouvelles méthodes permettant de comparer des tableaux :
§ Arrays.equals()
§ Arrays.compare()
§ Arrays.compareUnsigned()
§ Arrays.mismatch()
26. Java 9 : Performance compact Strings
§ Avant Java 9 : String étaient stockées en UTF-16, chaque caractère
prenait donc deux octets car stockés dans un tableau de char.
§ Avec Java 9 : Revue de l’implémentation des String en Java pour en
proposer une version plus compact en cas de String compatible ISO-
8859-1 (ou Latin-1).
§ UTF-16 : chaque caractère est stocké sur deux octets.
§ ISO-8859-1 chaque caractère est stocké sur un octets.
27. Java 9 : Performance Indify String
Concatenation
§ Avant Java 6 =>
entraîne la création de 6 String car les String sont immuable : s, « toto », « tata »,
« titi », »tototata », « tototatatiti », « tototatatititutu » … pour finir par ne garder
que s et donc les autres objets seront nettoyés par GC (la Garbage Collector).
§ Depuis Java 6 : le compilateur Java (javac) essaye d’optimiser, en
remplaçant, lors de la compilation, les concaténations par l’usage de
StringBuilder. Il remplace donc le code précédent par :
§ Avec Java 9 : utilisation du bytecode InvodeDynamic lors de la concaténation
de String et l’implémentation au runtime d’une stratégie de concaténation
optimisée directement au sein de la JVM.
28. Java 9 : Enhanced Deprecation
§ Ajout de deux attributs à l'annotation @Deprecated :
§ since : depuis quelle version l'API est dépréciée.
§ forRemoval : mettre à true (par défaut false) si l'API sera supprimée dans une
future release.
§ Le but est de faciliter le cycle de vie des applications et de permettre,
peut-être plus sereinement, de supprimer dans le futur certaines API
du JDK lui-même.
29. Java 9 : interface avec Méthode privée
§ Avec Java 8 :
§ Constant variables
§ Abstract methods
§ Default methods
§ Static methods
§ Avec Java 9 : Méthode privée dans les interfaces : permet la
factorisation de code de méthode statique dans une même interface.
§ Private methods
§ Private Static methods
30. Java 9 : Objects
§ Objects.requireNonNullElse(T obj, T defaultObj) : retourne le premier
éléments si non null, sinon le deuxième. Si les deux sont null :
NullPointerException
§ Objects.requireNonNullElseGet(T obj, Supplier supplier) : retourne le
premier éléments si non null, sinon appel le supplier.get().
§ int Objects.checkIndex(int index, int length) : check de l’index : génère un
IndexOutOfBoundsException si l’index est inférieur à 0 ou supérieur ou
éagle à la taille. Cette méthode peut-être optimisée par le JVM.
§ int Objects.checkFromToIndex(int fromIndex, int toIndex, int length) :
idem mais pour le sous-range fromIndex/toIndex
§ int Objects.checkFromIndexSize(int fromIndex, int size, int length) : idem
mais pour le sous-range fromIndex/fromIndex + size
31. Java 9 : Javadoc
Remise en forme légère au niveau graphique de la javadoc :
§ Passage à HTML5,
§ Support des commentaires javadoc dans les déclarations de modules
§ Ajout d'une zone de recherche.
32. Java 9 : HTTP/2 Client (Incubator)
§ Une nouvelle API a été créée pour proposer une implémentation plus
simple à utiliser que la très ancienne HttpURLConnection
§ Nouveau client HTTP au goût du jour, synchrone ou asynchrone (alors
basé sur les CompletableFuture).
34. Java 9 : Stack-Walking API
• En Java 8 et versions antérieures, la méthode getStackTrace de la
classe Thread permettait déjà d’obtenir la stack trace ..: mais n’offrait
pas la même richesse de filtres, d’assertion et de récupération (stack
trace courte ou complète).
• Nouvelle API :
• pour récupérer la stack trace du thread courant,
• de naviguer et d’interagir avec ses éléments.
• de filtrer les classes en supprimant par exemple toutes les mentions de
framework/proxies pour ne conserver que les classes métiers de l’application.
39. Java 9 : Reactive Stream avec Flow API
Publisher<T> :
§ Représente l’entité émettrice (émetteur) du flux d’événements/données.
§ Le type générique T représente le type de la donnée qui sera émise
(Integer,String, Objet ou autre classe).
§ La méthode déclarée subscribe permet d’abonner une ou plusieurs entités
réceptrice (subsrciber)
40. Java 9 : Reactive Stream avec Flow API
Subsriber<T> :
§ Représente l’entité réceptrice (abonné) du flux d’événements/données.
§ Le type générique T représente le type de la donnée qui sera réceptionnée.
Donc pour qu’un abonné soit rattaché à un émetteur il faut qu’il ait le
même type générique T.
§ Les méthodes de cette interface permettent de
§ onSubscribe : définir une action à entreprendre avant l’appel de n’importe quelle
méthode de cet abonné et ce pour l’abonnement subscription passé en paramètre.
§ onNext : définir une action à entreprendre dans cet abonné lorsqu’une émission a
lieu.
§ onError : définir une action à entreprendre dans cet abonné lorsqu’une erreur a lieu
lors de l’émission.
§ onComplete : définir une action à entreprendre lorsque l’émetteur termine l’émission
de toutes les données du flux.
41. Java 9 : Reactive Stream avec Flow API
Processor<I,O> :
§ Permet de transformer les données entre Publisher et Subsriber.
42. Java 10 : Inférence de type variables locales
§ C’est LA grande nouveauté de Java 10 : la possibilité d’utiliser le mot
clé var à la place d’une déclaration standard de variable, à l’intérieur
d’une méthode (variable locale) quand le type peut être inféré par le
compilateur.
§ En attendant :
43. Java 10 : Inférence de type variables locales
Restrictions :
§ Une variable doit être initialisée avec valeur non null :
var x; //No!!!, var x = null; //No!
§ var x=0,y=0; // no!
§ Modification de type :
var x=0; //Inferred to be of type 'int'
var x="c"; //No! - incompatible types!
44. Java 10 : Nouvelles méthodes
§ Optional : orElseThrow() alternative get()
§ List, Set et Map : copyOf, copie immuable
§ Collectors Stream : création de collection immuable
§ Collectors.toUnmodifiableList(),
§ Collectors.toUnmodifiableSet(),
§ Collectors.toUnmodifiableMap(keyFunc, valueFunc),
§ Collectors.toUnmodifiableMap(keyFunc, valueFunc,
mergeFunc).
45. Java 10: Reader.transferTo(Writer)
§ Un nouvelle méthode à la classe Reader de directement transférer
tout les caractère d’un Reader à un Writer :
46. Java 10 : Performance Parallel Full GC for G1
§ G1 est depuis Java 9 l’algorithme de Garbage Collection par défaut.
Hors dans celui-ci, quand le collector n’arrive plus à nettoyer assez
rapidement la heap de manière concurrente, il déclenche un Full GC
qui était mono-threadé.
§ Depuis Java 10 l’implémentation de celui-ci a été changée en multi-
threadé, le nombre de threads étant définit par -XX:ParallelGCThreads
47. Java 11
§ Première version LTS (Long Term Support) de 3 ans => prochaine LTS
Java 17
§ Support Java 8 jusqu’en 2019 (commerciale), 2020 (personnelle) =>
sinon (25$/mois/cpu core)
§ Plus de support Java 10
48. Java 11 : Local-Variable Syntax for Lambda
Parameters
§ Permet l’utilisation du mot clé var les signatures des lambdas.
§ But : permettre d'ajouter des modificateurs (ex: annotations) sans
nécessité de mettre le type.
49. Java 11 : nouvelles méthodes
String :
§ repeat(int) - Repeats the String as many times as provided by the int parameter
§ lines() - Uses a Spliterator to lazily provide lines from the source string
§ isBlank() - Indicates if the String is empty or contains only white space characters
§ stripLeading() - Removes the white space from the beginning
§ stripTrailing() - Removes the white space from the end
§ strip() - Removes the white space from both, beginning and the end of string
File :
§ writeString(): This is to write some content in a file.
§ readString(): This is used to read the contents of a file.
§ isSameFile(): This method is used to know whether two paths locate the same file or not.
TimeUnit Conversion : This method is used to convert the given time to a unit like DAY, MONTH, YEAR and for time too.
50. Java 11 : nouvelles méthodes
TimeUnit Conversion : This method is used to convert the given time to a unit like DAY, MONTH, YEAR and for time too.
§ Optional: isEmpty() This method returns true if the value of any object
is null and else returns false.
§ Predicate.not: négation d’un prédicat.
§ Affichage de la taille du tableau dans le message de l’exception
ArrayIndexOutOfBoundsException.
51. Java 11 : Launch Single-File Source-Code Programs
§ La commande java permet de lancer un fichier .java sans passer
par javac (compilation)
§ La compilation se fait alors en mémoire
§ On peut même, sous unix, faire des scripts java avec l'utilisation du
shebang : #!/usr/bin/java --source 11
§ But : réduire la cérémonie du language
52. Java 11 : Launch Single-File Source-Code Programs
§ Source dans un seul fichier pas de dépendance avec d’autres classes
§ Si classe compilée => utilisation obligatoire : javac test.java; java
test.java
§ File name, not class name!
§ Plusieurs classes publiques