<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Général Java</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum d'entraide sur le langage Java, les problèmes d'installation, les API standards et tiers, la persistance des données, la manipulation de format (XML, JSON). Avant de poster -> Cours Java, FAQ Java et Sources Java.]]></description>
		<language>fr</language>
		<lastBuildDate>Tue, 14 Apr 2026 05:18:17 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Général Java</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Reader et writer avif</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182904&amp;goto=newpost</link>
			<pubDate>Fri, 27 Mar 2026 18:24:56 GMT</pubDate>
			<description><![CDATA[Bonjour, 
 
Je n'arrive pas a...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je n'arrive pas a trouver de reader et writer pour le format d'image avif en pure Java en gratuit.<br />
<br />
Une idée ?<br />
<br />
Merci d'avance.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>genamiga</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182904/java/general-java/reader-writer-avif/</guid>
		</item>
		<item>
			<title>envoyer json via https</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182879&amp;goto=newpost</link>
			<pubDate>Thu, 26 Mar 2026 12:37:31 GMT</pubDate>
			<description><![CDATA[Bonjour, 
 
J'ai une simple...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
J'ai une simple question :roll:<br />
<br />
Le code ci-dessous envoi du json via http, mais j'aimerais bien que cela fonctionne en utilisant https afin que l'envoit se passe avec plus de sécurité.<br />
J'ai cherché, certains sites parle qu'il faut faire du code pour traiter le certificat et d'autres semble m'indiquer qu'il suffit de mettre l'url de http --&gt; https.<br />
<br />
Donc, je ne sais plus quoi faire !<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span> sendJSON<span class="br0">&#40;</span>String task, JSONObject jo<span class="br0">&#41;</span> <span style="color: #0000ff;">throws</span> IOException
		<span class="br0">&#123;</span>
		<span style="color: #0000ff;">int</span> status = <span style="color: #cc66cc;">0</span>;
&nbsp;
		HttpEntity stringEntity = <span style="color: #0000ff;">new</span> StringEntity<span class="br0">&#40;</span>jo.toString<span class="br0">&#40;</span><span class="br0">&#41;</span>, ContentType.APPLICATION_JSON<span class="br0">&#41;</span>;
&nbsp;
		CloseableHttpClient httpclient = HttpClients.createDefault<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
		logger.info<span class="br0">&#40;</span>task + <span style="color: #FF0000;">&quot;-&gt; Create the POST to &quot;</span> + dest_server_url<span class="br0">&#41;</span>;
		ClassicHttpRequest httpPost = ClassicRequestBuilder.post<span class="br0">&#40;</span>dest_server_url<span class="br0">&#41;</span>.setEntity<span class="br0">&#40;</span>stringEntity<span class="br0">&#41;</span>.build<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
		logger.info<span class="br0">&#40;</span>task + <span style="color: #FF0000;">&quot; -&gt; Execute the POST&quot;</span><span class="br0">&#41;</span>;
		status = httpclient.execute<span class="br0">&#40;</span>httpPost, response -&gt; <span class="br0">&#123;</span>
		logger.info<span class="br0">&#40;</span>task + <span style="color: #FF0000;">&quot; : &quot;</span> + response.getCode<span class="br0">&#40;</span><span class="br0">&#41;</span> + <span style="color: #FF0000;">&quot; &quot;</span> + response.getReasonPhrase<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
		<span style="color: #0000ff;">final</span> HttpEntity entity2 = response.getEntity<span class="br0">&#40;</span><span class="br0">&#41;</span>;
		<span style="color: #808080;">// do something useful with the response body</span>
		<span style="color: #808080;">// and ensure it is fully consumed</span>
		EntityUtils.consume<span class="br0">&#40;</span>entity2<span class="br0">&#41;</span>;
		<span style="color: #0000ff;">return</span> response.getCode<span class="br0">&#40;</span><span class="br0">&#41;</span>;
		<span class="br0">&#125;</span><span class="br0">&#41;</span>;
		httpclient.close<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
		<span style="color: #0000ff;">return</span> status;
		<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>cormnsa</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182879/java/general-java/envoyer-json-via-https/</guid>
		</item>
		<item>
			<title><![CDATA[Oracle lance Java 26, avec dix propositions d'amélioration du JDK (JEP) axées sur l'intégration de l'IA]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182713&amp;goto=newpost</link>
			<pubDate>Wed, 18 Mar 2026 06:58:42 GMT</pubDate>
			<description>*Oracle lance Java 26, la...</description>
			<content:encoded><![CDATA[<div><b><font size="4">Oracle lance Java 26, la dernière version du langage de programmation et de la plateforme de développement, avec des améliorations axées sur l'intégration de l'IA, le chiffrement et la productivité</font></b><br />
<br />
<b>Oracle a annoncé la disponibilité de Java 26, la dernière version du langage de programmation et de la plateforme de développement numéro un au monde. Java 26 (Oracle JDK 26) apporte des milliers d'améliorations qui boostent la productivité des développeurs, simplifient le langage et aident les développeurs à intégrer des fonctionnalités d'IA et de chiffrement dans leurs applications.</b><br />
<br />
Java est un ensemble de logiciels et de spécifications qui fournit une plateforme logicielle permettant de développer des applications et de les déployer dans un environnement informatique multiplateforme. Java est utilisé sur une grande variété de plateformes informatiques, allant des appareils embarqués et des téléphones mobiles aux serveurs d'entreprise et aux supercalculateurs. Les applets Java, moins courantes que les applications Java autonomes, étaient généralement exécutées dans des environnements sécurisés et isolés (sandbox) afin d'offrir de nombreuses fonctionnalités des applications natives tout en étant intégrées dans des pages HTML.<br />
<br />
L'écriture en langage de programmation Java est le principal moyen de produire du code qui sera déployé sous forme de bytecode dans une machine virtuelle Java (JVM) ; des compilateurs de bytecode sont également disponibles pour d'autres langages, notamment Ada, JavaScript, Kotlin (le langage Android préféré de Google), Python et Ruby. De plus, plusieurs langages ont été conçus pour s'exécuter en mode natif sur la JVM, notamment Clojure, Groovy et Scala. La syntaxe de Java s'inspire largement du C et du C++, mais ses fonctionnalités orientées objet s'inspirent de Smalltalk et d'Objective-C.<br />
<br />
Java évite certaines constructions de bas niveau telles que les pointeurs et dispose d'un modèle de mémoire très simple où les objets sont alloués sur le tas (bien que certaines implémentations, par exemple toutes celles actuellement prises en charge par Oracle, puissent utiliser l'optimisation par analyse d'échappement pour allouer sur la pile à la place) et où toutes les variables de type objet sont des références. La gestion de la mémoire est assurée par un ramasse-miettes automatique intégré, géré par la JVM. <br />
<br />
Récemment, Oracle a annoncé la disponibilité de Java 26, la dernière version du langage de programmation et de la plateforme de développement numéro un au monde. Java 26 (Oracle JDK 26) apporte des milliers d'améliorations qui boostent la productivité des développeurs, simplifient le langage et aident les développeurs à intégrer des fonctionnalités d'IA et de chiffrement dans leurs applications.<br />
<br />
Afin d'aider les développeurs à rationaliser et à améliorer davantage leurs initiatives de développement, Oracle annonce également le nouveau Java Verified Portfolio (JVP), qui fournit aux développeurs un ensemble sélectionné d'outils, de frameworks, de bibliothèques et de services pris en charge par Oracle, y compris une assistance commerciale pour JavaFX, un framework d'interface utilisateur basé sur Java, et Helidon, un framework Java pour les microservices. De plus, Oracle a l'intention d'aligner le rythme de publication d'Helidon sur celui des versions Java et de proposer Helidon en tant que projet OpenJDK. <br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p675043d1773819772/java/general-java/oracle-lance-java-26-dix-propositions-d-amelioration-jdk-jep-axees-l-integration-l-ia/1.jpg/" border="0" alt="Nom : 1.jpg
Affichages : 6450
Taille : 28,5 Ko"  style="float: CONFIG" /></div><br />
« <i>Depuis plus de 30 ans, les entreprises s'appuient sur la plateforme et le langage Java pour alimenter leurs systèmes critiques et soutenir le développement rapide d'applications et de services</i> », a déclaré Arnal Dayaratna, vice-président de la recherche en développement logiciel chez IDC. « <i>L'évolution continue de la plateforme permet aux entreprises d'intégrer des capacités transformatrices dans leurs applications, tout en préservant la fiabilité et la sécurité qui caractérisent les logiciels critiques. En étendant les fonctionnalités de Java avec de nouvelles fonctionnalités et de nouveaux services, tels que des capacités avancées en matière d'IA et de sécurité, Java 26 offre aux entreprises une voie plus rapide vers l'innovation.</i> »<br />
<br />
« <i>Java joue un rôle essentiel en tant que technologie d’entreprise fondamentale depuis plus de 30 ans, servant de pilier aux piles d’applications des entreprises et les aidant à créer des applications et des services puissants, fiables et sécurisés</i> », a déclaré Georges Saab, vice-président senior d’Oracle Java Platform et président du conseil d’administration d’OpenJDK. « <i>Les nouvelles fonctionnalités de Java 26 reflètent l’engagement d’Oracle à aider ses clients à exploiter l’IA et la cryptographie pour créer des applications qui accélèrent la croissance de leur activité. Avec l’introduction de JVP, les développeurs peuvent rationaliser leurs projets de développement à l’aide d’une suite d’outils fiables pris en charge par Oracle, notamment Helidon, un framework Java rapide et léger permettant de créer des microservices hautement performants et des applications basées sur l’IA.</i> »<br />
 <br />
<b><font size="3">Principales propositions d'amélioration du JDK (JEP)</font></b><br />
<br />
<b>Fonctionnalités du langage</b><br />
<br />
- <b>JEP 530 : Types primitifs dans les motifs, instanceof et switch (quatrième aperçu)</b> : aide les développeurs à accroître leur productivité et à rationaliser le développement d'applications intégrant l'inférence IA en rendant Java plus uniforme et plus expressif. Elle élimine plusieurs restrictions relatives aux types primitifs qui créent des frictions lors de l'utilisation de la correspondance de motifs, de instanceof et de switch. Pour aider les développeurs à améliorer encore leur productivité, elle renforce également la définition de l’exactitude inconditionnelle et applique des contrôles de dominance plus stricts dans les constructions switch, permettant ainsi au compilateur d’identifier et de réduire un plus large éventail d’erreurs de codage.<br />
 <br />
<b>Mises à jour de performances</b><br />
<br />
- <b>JEP 522 : G1 GC : Amélioration du débit par la réduction de la synchronisation</b> : aide les développeurs à traiter plus de travail en moins de temps en améliorant l’efficacité de la mémoire. Elle réduit la synchronisation entre les threads de l'application et ceux du ramasse-miettes, augmentant ainsi le débit avec le ramasse-miettes G1. En s'exécutant plus rapidement et en prenant en charge davantage d'utilisateurs sans matériel supplémentaire, Java améliore l'efficacité, réduit les coûts d'infrastructure et offre une expérience utilisateur plus fluide.<br />
 <br />
<b>Fonctionnalités du projet Leyden</b><br />
<br />
- <b>JEP 516 : Mise en cache d'objets à l'avance avec n'importe quel ramasse-miettes</b> : Améliore la productivité des développeurs et l'efficacité des ressources en accélérant le temps de démarrage des applications Java avec n'importe quel ramasse-miettes (GC). Il permet le chargement séquentiel en mémoire d'objets Java pré-initialisés et mis en cache à partir d'un format neutre, indépendant du ramasse-miettes. Il améliore également le cache « ahead-of-time », permettant à la machine virtuelle Java HotSpot d'améliorer les temps de démarrage et de préchauffage et d'être utilisée avec n'importe quel ramasse-miettes, y compris le ZGC à faible latence. Cela aide les développeurs à réduire les délais de démarrage des applications, à faire évoluer leurs applications plus rapidement et à offrir une meilleure expérience utilisateur.<br />
 <br />
<b>Bibliothèques</b><br />
<br />
- <b>JEP 500 : Prépare à ce que la décision finale soit définitive</b> : aide les développeurs à améliorer la sécurité et la fiabilité des applications en empêchant les modifications involontaires, les altérations ou les erreurs accidentelles dans les systèmes métier critiques. Elle émet des avertissements concernant l'utilisation de la réflexion profonde pour modifier des champs final et permet aux développeurs de modifier ces champs lorsque cela est indispensable, afin d'éviter à la fois les avertissements actuels et les restrictions futures. Ce changement crucial renforce le principe de « l'intégrité par défaut » de Java, qui vise à protéger les données sensibles et la logique métier, à réduire les risques cachés et à diminuer le risque de bogues ou de failles de sécurité.<br />
<br />
- <b>JEP 517 : HTTP/3 pour l'API client HTTP</b> : aide les développeurs à gagner en productivité en facilitant l'écriture de code interagissant avec les serveurs HTTP. Elle met à jour l'API client HTTP pour prendre en charge le protocole HTTP/3, permettant ainsi aux bibliothèques et aux applications d'interagir avec les serveurs HTTP/3 avec un minimum de modifications du code. En éliminant ces goulots d'étranglement courants et en permettant une récupération plus rapide des données avec une latence réduite, elle aide les microservices et les applications Java pilotées par des API à bénéficier de performances accrues et de connexions réseau plus fiables.<br />
<br />
- <b>JEP 526 : Constantes paresseuses (deuxième aperçu)</b> : aide les développeurs à gagner en productivité et à optimiser l'utilisation des ressources en offrant une plus grande flexibilité dans le moment de leur initialisation, ce qui est particulièrement utile pour les applications basées sur l'IA et les données. Grâce à une nouvelle API pour les constantes paresseuses, qui sont des objets contenant des données non modifiables, la JVM traite ces constantes comme de véritables constantes afin d'offrir les mêmes performances que la déclaration d'un champ final. De plus, en permettant aux applications Java et à leurs services cloud natifs et basés sur l'IA de se lancer plus rapidement et d'utiliser les ressources informatiques plus efficacement, cela aide les développeurs à réaliser des déploiements agiles et évolutifs qui se traduisent par des économies de coûts et une meilleure expérience pour les utilisateurs finaux.<br />
<br />
- <b>JEP 525 : Concurrence structurée (sixième aperçu)</b> : Aide les développeurs à améliorer la maintenabilité, la fiabilité et l'observabilité du code multithread, ce qui est particulièrement bénéfique pour améliorer l'évolutivité et la résilience des charges de travail IA et cloud natives. Elle simplifie la programmation concurrente via une API de concurrence structurée, qui traite les groupes de tâches liées s'exécutant dans différents threads comme une seule unité de travail et aide à réduire les risques courants liés à l'annulation et à l'arrêt, tels que les fuites de threads et les retards d'annulation.<br />
<br />
- <b>JEP 529 : API vectorielle (11e version d'incubation)</b> : Aide les développeurs à améliorer les performances et la rentabilité de leurs applications Java en leur permettant d'offrir davantage d'informations et de valeur ajoutée avec moins de matériel. L'API vectorielle exprime des calculs vectoriels qui se compilent de manière fiable lors de l'exécution en instructions vectorielles optimales sur les architectures CPU prises en charge, ce qui se traduit par un traitement plus rapide pour l'analyse de données, l'inférence IA et les charges de travail de calcul scientifique. Cela permet aux développeurs d'obtenir des performances supérieures à celles des calculs scalaires équivalents souvent utilisés dans les scénarios d'inférence IA et de calcul.<br />
 <br />
<b>Bibliothèques de sécurité</b><br />
<br />
- <b>JEP 524 : Codages PEM d'objets cryptographiques (deuxième aperçu)</b> : aide les développeurs à améliorer la productivité et à renforcer la sécurité des applications Java pour les formats de sécurité largement utilisés grâce à une nouvelle API de codage. L'API encode les objets représentant des clés cryptographiques, des certificats et des listes de révocation de certificats dans le format de transport de courrier électronique à confidentialité renforcée (PEM), largement utilisé, puis les décode à nouveau en objets. Cela réduit le risque d'erreurs, simplifie la conformité et améliore la portabilité et l'interopérabilité des applications Java sécurisées en rationalisant la configuration et l'intégration de la cryptographie pour répondre aux besoins des entreprises, du cloud et des réglementations.<br />
 <br />
<b>Fonctionnalités de rationalisation</b><br />
<br />
- <b>JEP 504 : Suppression de l'API Applet</b> : permet aux développeurs de réduire l'encombrement lié à l'installation et au code source, et d'améliorer les performances, la stabilité et la sécurité des applications en supprimant l'API Applet, qui avait été marquée comme obsolète dans le JDK 17 et ne fait plus partie de la plateforme.<br />
 <br />
<div style="text-align: center;">
<div class="video-container"><iframe class="restrain" title="YouTube video player" width="560" height="315" allowfullscreen src="//www.youtube.com/embed/1ERvyBqPihs?wmode=transparent&amp;fs=1" frameborder="0"></iframe></div>
</div><br />
<b>Améliorations supplémentaires en matière de sécurité, de fiabilité et de performances</b><br />
<br />
Outre les 10 JEP, Java 26 propose des dizaines de mises à jour qui aident les organisations à renforcer la sécurité, la fiabilité et les performances de leurs applications. Avec Java 26, les organisations peuvent désormais rationaliser le chiffrement sécurisé grâce au chiffrement hybride à clé publique (HPKE) conforme aux normes de l'industrie, pérenniser leurs chaînes d'approvisionnement avec la signature de fichiers JAR prête pour l'ère post-quantique, et bénéficier d'une prise en charge améliorée des normes mondiales grâce aux mises à jour vers Unicode 17.0 et CLDR v48. De plus, des contrôles renforcés pour les algorithmes cryptographiques et les keystores hérités renforcent encore davantage la sécurité et la conformité, ce qui aide les organisations à se moderniser en toute confiance.<br />
<br />
Les performances et la fiabilité des applications sont améliorées grâce à des dizaines de mises à jour supplémentaires qui permettent un démarrage plus rapide de la JVM, un ramasse-miettes plus efficace, une compilation C2 JIT étendue et une gestion plus intelligente du tas. De plus, les développeurs et les administrateurs peuvent gagner en productivité grâce à de nouvelles fonctionnalités, notamment le téléchargement de fichiers par région dans HttpClient, une création d'images d'exécution plus stricte, une API de métriques JVM améliorée et un nouveau mode sombre pour JavaDoc.<br />
<br />
Les fonctionnalités de la version Java 26 sont le fruit d'une collaboration continue entre Oracle et les membres de la communauté mondiale des développeurs Java via OpenJDK et le Java Community Process (JCP).<br />
<br />
<b>Source</b> : <a rel="nofollow" href="https://www.oracle.com/news/announcement/oracle-releases-java-26-2026-03-17/" target="_blank">Annonce de Java 26</a><br />
<br />
<b>Et vous ?</b><br />
<br />
:fleche: Pensez-vous que cette annonce est crédible ou pertinente ?<br />
:fleche: Quel est votre avis sur le sujet ?<br />
<br />
<b>Voir aussi :</b><br />
<br />
:fleche: <a href="https://java.developpez.com/actu/375914/Oracle-annonce-la-publication-de-Java-25-apportant-des-ameliorations-qui-optimisent-le-langage-Java-etendent-ses-capacites-d-IA-et-aident-les-developpeurs-a-accroitre-leur-productivite/" target="_blank">Oracle annonce la publication de Java 25 apportant des améliorations qui optimisent le langage Java, étendent ses capacités d'IA et aident les développeurs à accroître leur productivité</a><br />
<br />
:fleche: <a href="https://java.developpez.com/actu/373953/Pres-de-75-pourcent-des-utilisateurs-d-Oracle-Java-ont-fait-l-objet-d-un-audit-de-conformite-logicielle-au-cours-des-trois-dernieres-annees-les-couts-eleves-de-licence-les-poussent-vers-les-alternatives-open-source/" target="_blank">Près de 75 % des utilisateurs d'Oracle Java ont fait l'objet d'un audit de conformité logicielle au cours des trois dernières années, les coûts élevés de licence les poussent vers les alternatives open source</a><br />
<br />
:fleche: <a href="https://java.developpez.com/actu/372432/Java-fete-ses-30-ans-retour-sur-l-evolution-d-un-langage-qui-a-su-rester-pertinent-a-l-ere-du-cloud-du-DevOps-et-de-l-IA-Ce-veteran-du-developpement-peut-il-encore-seduire-les-nouvelles-generations/" target="_blank">Java fête ses 30 ans : retour sur l'évolution d'un langage qui a su rester pertinent à l'ère du cloud, du DevOps et de l'IA. Ce vétéran du développement peut-il encore séduire les nouvelles générations ?</a></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p675043d1773819772/java/general-java/oracle-lance-java-26-dix-propositions-d-amelioration-jdk-jep-axees-l-integration-l-ia/1.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>Alex</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182713/java/general-java/oracle-lance-java-26-dix-propositions-d-amelioration-jdk-jep-axees-l-integration-l-ia/</guid>
		</item>
		<item>
			<title><![CDATA[Jbuilder entreprise => xml]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181989&amp;goto=newpost</link>
			<pubDate>Sun, 08 Feb 2026 00:06:30 GMT</pubDate>
			<description>Salut salut 
Comment generer...</description>
			<content:encoded><![CDATA[<div>Salut salut<br />
Comment generer un fichier xml en l'occurrence <br />
Une facture dans jbuilder entreprise <br />
Bye &amp; merci</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>slimmix</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181989/java/general-java/jbuilder-entreprise-xml/</guid>
		</item>
		<item>
			<title><![CDATA[Migration en JDK 25 & utilisation class reccord]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181942&amp;goto=newpost</link>
			<pubDate>Thu, 05 Feb 2026 14:01:07 GMT</pubDate>
			<description><![CDATA[Bonjour, 
 
Pour l'instant,...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Pour l'instant, je suis en JDK11, mais je me pose la question de migré en JDK25 (si LTS).<br />
Mais, je me dis qu'il serait bien d'utiliser les nouvelles fonctionnalité des JDK, en outre la class reccord.<br />
<br />
Mais, migré pour juste avoir une version plus récente, je ne suis pas certains que cela soit très un bon choix.<br />
Donc, je brainstorm...<br />
<br />
Pour ce qui est de la class de type reccord, je peux par exemple convertir celle-ci : <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> def_formula
	<span class="br0">&#123;</span>
	<span style="color: #0000ff;">int</span> action = <span style="color: #cc66cc;">0</span>;
  <span style="color: #0000ff;">int</span> type = <span style="color: #cc66cc;">0</span>;
  String operande = <span style="color: #FF0000;">&quot;&quot;</span>;
  String operation = <span style="color: #FF0000;">&quot;&quot;</span>;
&nbsp;
  <span style="color: #808080; font-weight: bold;">/**</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp;* Constructor</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp;* </span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp;* <span style="color: #0000ff;">@param</span><span style="color: #800000;"> iAction</span></span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp;* <span style="color: #0000ff;">@param</span><span style="color: #800000;"> iType</span></span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp;* <span style="color: #0000ff;">@param</span><span style="color: #800000;"> sOperande</span></span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp;* <span style="color: #0000ff;">@param</span><span style="color: #800000;"> sOperation</span></span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp;*/</span>
  <span style="color: #0000ff;">public</span> def_formula<span class="br0">&#40;</span><span style="color: #0000ff;">int</span> iAction, <span style="color: #0000ff;">int</span> iType, String sOperande, String sOperation<span class="br0">&#41;</span>
    <span class="br0">&#123;</span>
    action = iAction;
    type = iType;
    operande = sOperande;
    operation = sOperation;
    <span class="br0">&#125;</span>
&nbsp;
	<span style="color: #808080; font-weight: bold;">/**</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* <span style="color: #0000ff;">@return</span> the action</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span>
	<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> getAction<span class="br0">&#40;</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
		<span style="color: #0000ff;">return</span> action;
		<span class="br0">&#125;</span>
&nbsp;
	<span style="color: #808080; font-weight: bold;">/**</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* <span style="color: #0000ff;">@return</span> the type</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span>
	<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> getType<span class="br0">&#40;</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
		<span style="color: #0000ff;">return</span> type;
		<span class="br0">&#125;</span>
&nbsp;
	<span style="color: #808080; font-weight: bold;">/**</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* <span style="color: #0000ff;">@return</span> the operande</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span>
	<span style="color: #0000ff;">public</span> String getOperande<span class="br0">&#40;</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
		<span style="color: #0000ff;">return</span> operande;
		<span class="br0">&#125;</span>
&nbsp;
	<span style="color: #808080; font-weight: bold;">/**</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* <span style="color: #0000ff;">@return</span> the operation</span>
<span style="color: #808080; font-weight: bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span>
	<span style="color: #0000ff;">public</span> String getOperation<span class="br0">&#40;</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
		<span style="color: #0000ff;">return</span> operation;
		<span class="br0">&#125;</span>
	<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div>en<br />
<br />
reccord def_formula(int action, int type, String operande, String operation) {}<br />
<br />
Mais, cela veut dire que je dois remplacer les appels :<br />
<br />
<ul><li style="">getAction() par action()</li><li style="">getType() par type()</li><li style="">getOperande() par operande()</li><li style="">getOperation() par operation()</li></ul><br />
<br />
D'ailleurs, question annexe : une class de type reccord peut-il être encapsulé dans une ArrayList ou un Vecteur ?<br />
<br />
Ce qui donnerait (en utilisant les class de type reccord) : <br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td valign="top"><pre style="margin: 0"> def_formula formula = <span style="color: #0000ff;">null</span>;
&nbsp;
  <span style="color: #0000ff;">for</span><span class="br0">&#40;</span><span style="color: #0000ff;">int</span> i = <span style="color: #cc66cc;">0</span>; i &lt; alFormula.size<span class="br0">&#40;</span><span class="br0">&#41;</span>; i++<span class="br0">&#41;</span>
       <span class="br0">&#123;</span>  
       formula = alFormula.get<span class="br0">&#40;</span>i<span class="br0">&#41;</span>;
     	 priorite = formula.getAction<span class="br0">&#40;</span><span class="br0">&#41;</span>;
     	 PLog.debug<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;executing line &quot;</span> + priorite<span class="br0">&#41;</span>;
&nbsp;
         <span style="color: #0000ff;">double</span> value1 = <span style="color: #cc66cc;">0</span>, value2 = <span style="color: #cc66cc;">0</span>;
&nbsp;
     	   <span style="color: #0000ff;">switch</span><span class="br0">&#40;</span>formula.type<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
....
st = <span style="color: #0000ff;">new</span> StringTokenizer<span class="br0">&#40;</span>formulaoperande<span class="br0">&#40;</span><span class="br0">&#41;</span>,<span style="color: #FF0000;">&quot;;&quot;</span><span class="br0">&#41;</span>;</pre></td></tr></table></code><hr />
</div>Est-ce que cela vaut la peine de  faire ce genre de modification ou vaut-il mieux laisser ainsi.<br />
<br />
Bref, il y a deux questions dans ce post : <br />
- Interet à migrer en JDK 25<br />
- Usage d'adapter certaines class en class de type reccord.<br />
<br />
Désolé si le post est un peu chao, mais en écrivant, je réfléchis et &quot;brainstorm&quot;</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>cormnsa</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181942/java/general-java/migration-jdk-25-utilisation-class-reccord/</guid>
		</item>
		<item>
			<title>Gestion de fichier de log</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180119&amp;goto=newpost</link>
			<pubDate>Mon, 27 Oct 2025 16:33:58 GMT</pubDate>
			<description>Bonjour ou bonsoir... :) 
...</description>
			<content:encoded><![CDATA[<div>Bonjour ou bonsoir... :)<br />
<br />
J'ai une (des) application(s) qui font du logging.<br />
Un fichier pour reçevoir le stream standard (System.out) et un fichier pour recevoir le stream d'erreur (System.err).<br />
<br />
Une redirection des styreams out et err vers des fichiers.<br />
<br />
Mais, actuellement, ces deux fichiers sont stocker dans un répertoire du profile utilisateur.<br />
Si j'avais besoin de faire du support, je me connectais sur le serveur en mode administrateur et j'allais dans le répertoire adhoc consulter les fichiers logs.<br />
<br />
Sauf que la parano des admins ont décider de mettre en place une solution zero-trust avec une solution nommée cyber-ark.<br />
Donc, pour faire du support utilisateur, il faut que je me connecte sur la plate-formce cyber-ark, MFA, arriver sur le serveur, et faire le support...<br />
<br />
Dès lors, je me demande s'il serait pas plus simple que les fichiers logs soit mis ailleurs, dans le répertoire d'installation de l'application, ce serait plus facile.<br />
Sauf que plusieurs personnes peuvent utiliser l'application..<br />
<br />
La contrainte est que la méthode de redirection est avant la fenêtre qui demande le logging utilisateur.<br />
<br />
Alors, je me demande s'il serait pas possible de faire: <br />
<br />
création de deux fichier temporaire <br />
mise en place redirection vers les deux fichiers temporaire<br />
renommer les deux fichiers temporaire vers &lt;login&gt;.err.log &amp; &lt;login&gt;.out.log<br />
<br />
Mais, ma question est : Est-ce que cela est possible ?<br />
faut-il faire un genre de switch log (remise en place redirection par défaut après loggin, renommer les fichiers temporaire et puis refaire la redirection) ?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>cormnsa</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180119/java/general-java/gestion-fichier-log/</guid>
		</item>
		<item>
			<title><![CDATA[Problème d'accents avec le JDK 25.]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179857&amp;goto=newpost</link>
			<pubDate>Tue, 14 Oct 2025 17:48:08 GMT</pubDate>
			<description>Bonjour, 
 
Ci dessous une...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Ci dessous une classe qui marchait très bien en version 1.8 (et sous Eclipse 2025-9 avec le JDK 25) , mais pas lorsque je lance l'application. <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
C:\Windows\System32&gt;java -version
openjdk version <span style="color: #FF0000;">&quot;25&quot;</span> <span style="color: #cc66cc;">2025</span>-<span style="color: #cc66cc;">09</span>-<span style="color: #cc66cc;">16</span> LTS
OpenJDK Runtime Environment <span class="br0">&#40;</span>build <span style="color: #cc66cc;">25</span>+<span style="color: #cc66cc;">37</span>-LTS<span class="br0">&#41;</span>
OpenJDK <span style="color: #cc66cc;">64</span>-Bit Server VM <span class="br0">&#40;</span>build <span style="color: #cc66cc;">25</span>+<span style="color: #cc66cc;">37</span>-LTS, mixed mode, sharing<span class="br0">&#41;</span></pre></td></tr></table></code><hr />
</div><font color="#FF0000">Commande lancée sous Windows 11.</font><br />
<b> java   -cp  c:\jars\gegeutil.jar gegeutil.TestAccents </b> <br />
<br />
Je suppose que c'est sans doute un problème de codepage mais sans en comprendre la raison puisque je n'ai pas le même souci sous Eclipse ou en version 1.8.  <br />
<br />
Merci d'avance si vous avez des idées.<br />
<br />
Gégé<br />
<br />
<font color="#FF0000">Voici le résultat  sous Eclipse . </font><br />
<img src="https://www.developpez.net/forums/attachments/p670989d1760506338/java/general-java/probleme-d-accents-jdk-25/resultat-18.jpg/" border="0" alt="Nom : résultat 18.jpg
Affichages : 193
Taille : 32,5 Ko"  style="float: CONFIG" /><br />
<br />
<font color="#FF0000">Voici le résultat  avec la commande. </font><br />
 <img src="https://www.developpez.net/forums/attachments/p670991d1760506682/java/general-java/probleme-d-accents-jdk-25/resultat-25.jpg/" border="0" alt="Nom : résultat  25.jpg
Affichages : 194
Taille : 33,4 Ko"  style="float: CONFIG" /><br />
<br />
<font color="#FF0000"><br />
Ci dessous le programme :</font><br />
<a href="https://www.developpez.net/forums/attachments/p670992d1760506866/java/general-java/probleme-d-accents-jdk-25/testaccents.java/"  title="Nom : TestAccents.java
Affichages : 55
Taille : 1,8 Ko">TestAccents.java</a><br />
<br />
 <br />
<br />
<font color="#FF0000">Le fichier texte :</font><br />
<a href="https://www.developpez.net/forums/attachments/p670993d1760506936/java/general-java/probleme-d-accents-jdk-25/fichiertest.txt/"  title="Nom : FichierTest.txt
Affichages : 51
Taille : 810 octets">FichierTest.txt</a></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p670989d1760506338/java/general-java/probleme-d-accents-jdk-25/resultat-18.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p670991d1760506682/java/general-java/probleme-d-accents-jdk-25/resultat-25.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	
		<fieldset class="fieldset">
			<legend>Fichiers attachés</legend>
			<ul>
			<li>
	<img class="inlineimg" src="https://forum.developpez.be/images/attach/java.gif" alt="Type de fichier : java" />
	<a href="https://www.developpez.net/forums/attachments/p670992d1760506866/java/general-java/probleme-d-accents-jdk-25/testaccents.java/">TestAccents.java</a> 
(1,8 Ko)
</li><li>
	<img class="inlineimg" src="https://forum.developpez.be/images/attach/txt.gif" alt="Type de fichier : txt" />
	<a href="https://www.developpez.net/forums/attachments/p670993d1760506936/java/general-java/probleme-d-accents-jdk-25/fichiertest.txt/">FichierTest.txt</a> 
(810 octets)
</li>
			</ul>
		</fieldset>
	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>GGMARTINELLI</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179857/java/general-java/probleme-d-accents-jdk-25-a/</guid>
		</item>
		<item>
			<title>Où trouver le JRE 21 ?</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179745&amp;goto=newpost</link>
			<pubDate>Thu, 09 Oct 2025 05:09:18 GMT</pubDate>
			<description>Bonjour 
 
Je ne sais pas où...</description>
			<content:encoded><![CDATA[<div>Bonjour<br />
<br />
Je ne sais pas où chercher pour trouver le JRE de la version JAVA 21. J'ai installé le JDK, mais pour le déploiement pour les utilisateurs j'ai besoin du JRE. <br />
J'ai essayé de regarder du côté de BellSoft et d'iBM  mais lorsque je regarde le  contenu de  ce que j'ai téléchargé  je ne trouve pas les classes de javax (par exemple javax.swing.*)<br />
<br />
Si vous avez des idées merci de m'aider.<br />
<br />
Gégé</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>GGMARTINELLI</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179745/java/general-java/trouver-jre-21-a/</guid>
		</item>
		<item>
			<title>JRE pour Java 25</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179542&amp;goto=newpost</link>
			<pubDate>Mon, 29 Sep 2025 09:33:17 GMT</pubDate>
			<description>Bonjour, 
 
Je viens de...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je viens de télécharger le JDK 25. Cela marche parfaitement, et j'ai remarqué qu'il n'y a plus de JRE.<br />
<br />
Ma question concerne les utilisateurs. Doivent-t-il  tous installer le JDK ? ou bien  où trouver l'équivalent du JRE ? <br />
Merci d'avance<br />
<br />
Gégé</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>GGMARTINELLI</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179542/java/general-java/jre-java-25-a/</guid>
		</item>
		<item>
			<title>Java et service windows</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179537&amp;goto=newpost</link>
			<pubDate>Sun, 28 Sep 2025 22:37:35 GMT</pubDate>
			<description>Bonjour, 
dans un programme...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
dans un programme Java j'utilise le pilote de postgresql. Cela nécessite que le service postgresql soit démarré. Or il arrive (en particulier après une mise à jour) que ce service soit arrêté.<br />
J'ai deux questions <br />
1 Est-il possibe le java de vérifier si ce sevice est démarré ?<br />
2 Est-il possible en Java de démarrer le service windows Postgresql ?<br />
<br />
Merci.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>Patrice Henrio</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179537/java/general-java/java-service-windows/</guid>
		</item>
		<item>
			<title>Oracle annonce la publication de Java 25 apportant des améliorations qui optimisent le langage Java</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179317&amp;goto=newpost</link>
			<pubDate>Wed, 17 Sep 2025 13:27:29 GMT</pubDate>
			<description>*Oracle annonce la...</description>
			<content:encoded><![CDATA[<div><b><font size="4">Oracle annonce la publication de Java 25 apportant des améliorations qui optimisent le langage Java, étendent ses capacités d’IA et aident les développeurs à accroître leur productivité</font></b><br />
<br />
<b>Oracle publie Java 25. La nouvelle version concrétise 18 propositions d’amélioration de JDK (JEP : JDK Enhancement Proposals), qui optimisent le langage Java, étendent ses capacités d’IA et aident les développeurs à accroître leur productivité. Les améliorations apportées aux performances, à la sécurité et à la stabilité de la plateforme aident les entreprises à stimuler la croissance de leur activité. L’offre de support à long terme permet aux clients de migrer à leur rythme.</b><br />
<br />
Oracle annonce la publication de Java 25, la nouvelle version du langage de programmation et de la plateforme de développement numéro un dans le monde. Java 25 (Oracle JDK 25) aidera les entreprises à stimuler la croissance de leurs activités en apportant des milliers d’améliorations qui dopent la productivité des développeurs et améliorent les performances, la stabilité et la sécurité de la plateforme. Par ailleurs, Oracle fournira une assistance à long terme pour Java 25 sur au moins huit ans. <br />
<br />
« <i>À l’aube de sa quatrième décennie existence, Java continue de fournir des fonctionnalités pour garantir que les applications, y compris celles optimisées et intégrées aux fonctionnalités d’IA, seront très efficaces et évolutives sur toutes les plateformes matérielles</i> », constate Arnal Dayaratna, research vice president, software development, IDC. « <i>La gestion de la technologie Java par Oracle continue de faire évoluer le langage et la plateforme de programmation Java, en particulier en ce qui concerne l’IA et la sécurité, et la cadence de publication cohérente de Java sur six mois est conçue pour accélérer davantage l’innovation. Par conséquent, Java est bien placé pour fournir un flux continu de fonctionnalités modernes qui traitent du développement d’applications de nouvelle génération alimenté par l’IA.</i> »<br />
<br />
«<i> Java a passé un cap important cette année avec son 30e anniversaire. La plateforme et le langage ne cessent d’évoluer pour aider les développeurs à créer rapidement et facilement des applications dotées de capacités d’IA et de sécurité innovantes</i> », se félicite Georges Saab, senior vice president, Oracle Java Platform, et chair, OpenJDK governing board. «<i> Java 25 souligne l’investissement continu d’Oracle dans les fonctionnalités qui alimentent les solutions d’IA et simplifient le langage, ce qui rend Java plus facile à apprendre pour les nouveaux développeurs et les équipes informatiques.</i> »<br />
<br />
Oracle prévoit d’offrir un support à long terme pour Java 25 pendant au moins huit ans, ce qui donne aux entreprises la flexibilité de conserver les applications en production plus longtemps avec une maintenance minimale et de migrer éventuellement à leurs propres conditions. Oracle JDK 25 devrait recevoir des mises à jour trimestrielles de sécurité et de performance jusqu’en septembre 2028 conformément aux conditions Oracle No-Fee Terms and Conditions (NFTC) et les mises à jour JDK 25 publiées après cette date seront offertes sous la licence OTN Java SE (OTN) prévue jusqu’en septembre 2033 au moins.<br />
<br />
<div style="text-align: center;">
<div class="video-container"><iframe class="restrain" title="YouTube video player" width="560" height="315" allowfullscreen src="//www.youtube.com/embed/duIceCXObrA?wmode=transparent&amp;fs=1" frameborder="0"></iframe></div>
</div><br />
Principales propositions d’améliorations de JDK (JDK Enhancement Proposals : JEP)<br />
<br />
<b><font size="3">Fonctionnalités du langage Oracle JDK 25</font></b><br />
<br />
<ul><li style=""><b>JEP 507: Types primitifs dans les patterns, instanceof et switch (troisième aperçu)</b> : aide les développeurs à augmenter leur productivité en rendant le langage Java plus uniforme et plus expressif. Par exemple, les développeurs peuvent améliorer la correspondance de modèles en supprimant les restrictions relatives aux types primitifs rencontrés lors de l’utilisation de la correspondance de modèles, d’instanceof et de switch. Il permet également les modèles de type primitif dans tous les contextes de modèle et étend instanceof et switch pour fonctionner avec tous les types primitifs. La prise en charge des types primitifs sera particulièrement bénéfique pour les développeurs qui créent des applications qui intègrent l’inférence d’IA.<br />
<br /></li><li style=""><b>JEP 511: Déclarations d’importation de modules</b> : permet aux développeurs d’améliorer leur productivité en leur permettant d’importer facilement tous les packages exportés par un module, sans nécessiter que le code d’importation se trouve dans un module lui-même. Cela simplifie la réutilisation des bibliothèques modulaires pour tous les développeurs et aide les débutants à utiliser des bibliothèques tierces et des classes Java fondamentales sans la nécessité de savoir où elles se trouvent dans une hiérarchie de packages. En outre, les développeurs peuvent éviter le bruit de plusieurs déclarations d’importation à la demande lors de l’utilisation de diverses parties de l’API exportées par un module, ce qui est bénéfique pour les applications simples qui assemblent les inférences d’IA et les workflows des bibliothèques populaires.<br />
<br /></li><li style=""><b>JEP 512: Fichiers source et méthodes principales d’instance compactes</b> : aide à rendre le langage Java plus accessible aux débutants, aux administrateurs système et informatiques en offrant une prise en main plus aisée de la programmation Java. Les novices peuvent écrire leurs premiers programmes de manière concise sans avoir à comprendre les fonctionnalités linguistiques conçues pour les grands programmes et peuvent développer leur code avec élégance au fur et à mesure que leurs compétences se développent. En outre, les administrateurs système et informatiques qui ne sont peut-être pas des experts Java peuvent réduire la cérémonie d’écriture de petits programmes tels que des scripts et des utilitaires de ligne de commande.<br />
<br /></li><li style=""><b>JEP 513 : Corps de constructeur flexibles</b> : permet aux développeurs d’améliorer la sécurité et la fiabilité du code en autorisant la validation des entrées et les calculs sécurisés avant d’appeler explicitement un constructeur. Cela améliore la sécurité du code en autorisant davantage d’expressions de constructeur naturelles et en activant l’initialisation de champ avant qu’elles ne soient visibles par d’autres codes de classe, tels que les méthodes appelées à partir d’un constructeur de superclasse. Cela améliore également la fiabilité en préservant la protection qui empêche les constructeurs de sous-classe d’interférer avec l’instanciation de la superclasse.</li></ul><br />
<b><font size="3">Bibliothèques Oracle JDK 25</font></b><br />
<br />
<ul><li style=""><b>JEP 505: Accès simultané structuré (cinquième aperçu)</b> : aide les développeurs à améliorer la maintenabilité, la fiabilité et l’observabilité du code multithread en simplifiant la programmation simultanée. En traitant les groupes de tâches connexes exécutées dans différents threads comme une seule unité de travail, la simultanéité structurée aide à éliminer les risques courants liés aux annulations et arrêts, tels que les fuites de threads et les retards d’annulation. C’est particulièrement bénéfique pour le développement de l’IA, qui implique souvent l’exécution de plusieurs tâches en parallèle.<br />
<br /></li><li style=""><b>JEP 506: Valeurs ciblées</b> : améliore l’ergonomie, la compréhensibilité, les performances et la robustesse des projets en permettant le partage de données immuables au sein des threads et entre eux. Cela profite particulièrement aux applications utilisant des plateformes d’IA, des cadres Web et des microservices. En outre, les valeurs avec un scope sont plus faciles à gérer que les variables locales à un thread et ont des coûts d’espace et de temps plus faibles, en particulier lorsqu’elles sont utilisées avec des threads virtuels et une simultanéité structurée.<br />
<br /></li><li style=""><b>JEP 502 : Valeurs stables (aperçu)</b> : aide les développeurs à augmenter la flexibilité en introduisant une API pour les valeurs stables, qui sont des objets qui contiennent des données immuables. Étant donné que les valeurs stables sont traitées en tant que constantes par la Java Virtual Machine, elles permettent les mêmes optimisations de performances que la déclaration d’un champ final, tout en offrant une plus grande flexibilité dans le calendrier de leur initialisation.<br />
<br /></li><li style=""><b>JEP 508 : API vectorielle (10e incubateur)</b> : aide les développeurs à améliorer leur productivité via une API qui exprime des calculs vectoriels qui sont compilés de manière fiable lors de l’exécution pour obtenir des instructions vectorielles optimales sur les architectures CPU prises en charge. Les développeurs peuvent ainsi obtenir des performances supérieures aux calculs scalaires équivalents, qui sont souvent utilisés dans les scénarios d’inférence et de calcul de l’IA.</li></ul><br />
<b><font size="3">Bibliothèques de sécurité Oracle JDK 25</font></b><br />
<br />
<ul><li style=""><b>JEP 470 : Encodages PEM d’objets cryptographiques (aperçu)</b> : aide les développeurs à augmenter leur productivité via une nouvelle API pour le codage d’objets. L’API encode les objets représentant les clés cryptographiques, les certificats et les listes de révocation de certificats dans le format de transport de courrier largement utilisé et optimisé pour la confidentialité, et décode à partir de ce format en objets. Cela facilite l’intégration des applications Java aux systèmes d’authentification de sécurité et aux périphériques tels que Yubikeys.<br />
<br /></li><li style=""><b>JEP 510: API de fonction de dérivation de clé</b> : aide les développeurs à se préparer aux environnements de calcul quantique émergents en offrant une API pour les fonctions de dérivation de clé, qui sont des algorithmes cryptographiques pour la dérivation de clés supplémentaires à partir d’une clé secrète et d’autres données. Cela fournit un bloc de construction nécessaire pour la prise en charge du chiffrement hybride de clé publique, ce qui permet une transition en douceur vers le chiffrement quantique sécurisé.</li></ul><br />
<b><font size="3">Mises à jour de performances pour Oracle JDK 25</font></b><br />
<br />
<ul><li style=""><b>JEP 519: En-têtes d’objet compact</b> : aide les développeurs à augmenter leur productivité en réduisant la taille des en-têtes d’objet à 64 bits sur les architectures 64 bits. Cela améliore la densité de déploiement et augmente la localisation des données, tout en réduisant la taille des objets et l’empreinte mémoire sur les workloads réalistes.<br />
<br /></li><li style=""><b>JEP 514: Ergonomie en ligne de commande anticipée</b> : aide les développeurs à accélérer la productivité en facilitant la création de caches à l’avance sans perte d’expressivité. Cela accélère le démarrage des applications Java en simplifiant les commandes requises pour les cas d’utilisation courants.<br />
<br /></li><li style=""><b>JEP 515: Profilage anticipé des méthodes</b> : aide les développeurs à augmenter leur productivité en accélérant les performances des applications. Le temps d’échauffement est amélioré en déplaçant la collection de profils d’exécution de méthode initiale des cycles de production vers les cycles d’entraînement, en transmettant les profils via le cache à l’avance. Cela permet au compilateur JIT de générer du code natif immédiatement au démarrage de l’application plutôt que d’attendre que les profils soient collectés. Cela élimine également le besoin de modifier le code des applications, des bibliothèques ou des structures et supprime toute contrainte sur l’exécution des applications.</li></ul><br />
<b><font size="3">Mises à jour de surveillance d’Oracle JDK 25</font></b><br />
<br />
<ul><li style=""><b>JEP 509: Profilage du temps de CPU JFR (expérimental)</b> : aide les développeurs à améliorer la productivité et l’efficacité de leurs programmes en améliorant le JDK Flight Recorder (JFR) pour capturer des informations de profilage du temps CPU plus précises sur Linux et en aidant à identifier les éléments de programme à optimiser.<br />
<br /></li><li style=""><b>JEP 518: Échantillonnage coopératif JFR</b> : aide les développeurs à augmenter la fiabilité du code en améliorant la stabilité du JFR lorsqu’il échantillonne de manière asynchrone les piles de threads Java. Cela permet au JFR de limiter les biais de point de sécurité dans les échantillonneurs d’événements tout en évitant les heuristiques risquées pour générer des traces de pile en dehors des points de sécurité. Cela permet également la création de demandes d’échantillons en réponse à un événement matériel ou à l’intérieur d’un gestionnaire de signaux et réduit la quantité de travail que le thread échantillonneur doit exécuter.<br />
<br /></li><li style=""><b>JEP 520 : JFR Method Timing &amp; Tracing</b> : aide les développeurs à améliorer leur productivité en leur permettant d’identifier les goulets d’étranglement des performances des applications, d’optimiser le code et de trouver les causes profondes des bugs. Ceci est réalisé en étendant le JFR avec des facilités de synchronisation et de traçage de méthode via l’instrumentation de code exécutable.</li></ul><br />
Les fonctionnalités de Java 25 sont le fruit de la collaboration continue entre les ingénieurs d’Oracle et le reste de la communauté mondiale des développeurs Java via OpenJDK et le Java Community Process (JCP). <br />
<br />
« <i><a href="https://java.developpez.com/actu/372432/Java-fete-ses-30-ans-retour-sur-l-evolution-d-un-langage-qui-a-su-rester-pertinent-a-l-ere-du-cloud-du-DevOps-et-de-l-IA-Ce-veteran-du-developpement-peut-il-encore-seduire-les-nouvelles-generations/" target="_blank">Depuis son lancement il y a 30 ans, Java est resté un langage fiable et sécurisé pour la création d'applications d'entreprise à grande échelle</a></i> », a déclaré Adam Resnick, responsable de recherche, Développement logiciel moderne et tendances développeurs chez IDC. « <i>Comme souligné lors de la conférence JavaOne de cette année, Java est sur le point d'élargir sa portée auprès des développeurs débutants et des étudiants en programmation. De nouvelles fonctionnalités simplifiant la complexité et offrant un retour d'information immédiat facilitent la création de programmes de niveau débutant. L'évolution continue de Java reflète un équilibre judicieux, élargissant son accessibilité aux développeurs moins expérimentés tout en préservant la robustesse requise pour les solutions d'entreprise.</i> »<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p670388d1758120538/java/general-java/oracle-annonce-publication-java-25-apportant-ameliorations-optimisent-langage-java/1.jpg/" border="0" alt="Nom : 1.jpg
Affichages : 32182
Taille : 27,6 Ko"  style="float: CONFIG" /></div><br />
<b><font size="3">Prise en charge de toute la communauté mondiale Java et innovation dans le cloud</font></b><br />
<br />
Java offre une innovation, des performances, une efficacité et des économies de coûts accrues lorsqu’il est déployé sur Oracle Cloud Infrastructure (OCI), le premier cloud à très grande échelle à prendre en charge Oracle JDK 25. En offrant Oracle Java SE et des fonctionnalités avancées, telles que le pack Java SE Subscription Enterprise Performance Pack sans coût supplémentaire sur OCI, Java 25 aide les développeurs à créer et déployer des applications qui s’exécutent plus rapidement et avec un rapport coût-performance optimal.<br />
<br />
Oracle Java SE Universal Subscription fournit aux clients un support de pointe. Il inclut le Java SE Subscription Enterprise Performance Pack, la prise en charge du triage de l’ensemble du portefeuille Java, le service Java Management Service et la flexibilité nécessaire pour la mise à niveau au rythme des activités des clients. Les équipes informatiques peuvent ainsi gérer la complexité, limiter les coûts et atténuer les risques de sécurité. <br />
<br />
Outre les avantages de Java sur OCI et de l’abonnement Oracle Java Universal SE Subscription, Java 25 offre des performances d’application améliorées et un large éventail de fonctionnalités d’IA et de sécurité, y compris la prise en charge du chiffrement post-quantique (PQC), afin d’améliorer les performances, la stabilité et la sécurité des implémentations de la plateforme Java SE et du JDK.<br />
<br />
<b><font size="3">Les leaders de la communauté Java mondiale accueillent favorablement Oracle JDK 25</font></b><br />
<br />
« <i>Lorsque Java est passé à une version tous les six mois, il semblait impossible que de nouvelles fonctionnalités intéressantes puissent être divisées en suffisamment de petites pièces pour être livrées de cette façon — et il semblait possible que certaines versions n’en comportent même pas beaucoup</i> », déclare Trisha Gee, head of advocacy, Gradle, Inc. « <i>Or, nous avions tort ! Chaque nouvelle version de Java a des fonctionnalités intéressantes et utiles. Il est extrêmement enrichissant de diviser les grands livrables en petits composants indépendants. Par exemple, les différentes fonctionnalités de correspondance de modèles sont autonomes et peuvent être fournies indépendamment, mais toutes s’ajoutent à un ensemble fantastique de nouvelles fonctionnalités pour Java et à une nouvelle façon pour les développeurs Java de réfléchir à la façon de résoudre leurs problèmes. La force de Java ne faiblit pas.</i> »<br />
<br />
« <i>JEP 512 introduit &quot;Compact Source Files and Instance Main Methods&quot; qui simplifie considérablement Java pour les débutants en leur permettant d’écrire des programmes sans le code passe-partout traditionnel public static void main (String[] args)</i> », explique Rémi Forax, maître de conférences à l’Université Gustave Eiffel. «<i> Les étudiants peuvent maintenant commencer par des programmes simples et développer progressivement leur compréhension à des concepts plus avancés au fur et à mesure qu’ils grandissent, créant un parcours d’apprentissage fluide, des concepts de programmation de base à la programmation orientée objet complète.</i> »<br />
<br />
« <i>Mes parties préférées de Java 25 sont les fichiers source compacts (Compact Source Files), les méthodes principales d’instance (Instance Main Methods) et les déclarations d’importation de modules, car ces fonctionnalités facilitent l’adoption de Java par les programmeurs débutants</i> », détaille Cay Horstmann, professeur émérite à l’Université d’Etat de San José. « <i>Les programmeurs expérimentés profitent aussi de ces avancées, élargissant la portée de Java à de petites tâches quotidiennes. Je trouve très satisfaisant de réécrire des scripts bricolés en shell ou Python avec Java, un langage industriel et fortement typé avec un excellent support d’outils.</i> »<br />
<br />
« <i>Lorsque la cadence de sortie des fonctionnalités de six mois a été annoncée avec Java 9, j’étais l’un des plus grands sceptiques, et je l’ai même dit publiquement. Oracle pourrait-il s’en sortir ? J’avais mes doutes, car nous avions l’habitude d’une nouvelle sortie tous les trois ans</i> », se souvient Dr Heinz M. Kabutz, auteur de la newsletter The Java Specialists. « <i>Mais en effet, Oracle s’en tire avec panache et avec enthousiasme. Sous la direction d’Oracle et avec une énorme communauté qui fait avancer les choses, <a href="https://java.developpez.com/actu/355056/-Java-n-est-pas-pres-de-disparaitre-le-langage-de-programmation-est-toujours-sur-la-liste-des-priorites-des-entreprises-en-2024-selon-le-rapport-Java-Developer-Productivity-de-Perforce/" target="_blank">Java se démarque des autres langages de programmation</a>. Les enregistrements, les fichiers source compacts et les importations de modules facilitent grandement l’adoption de Java et les threads virtuels, l’API de mémoire étrangère, l’API vectorielle et ZGC rendent Java adapté à la création de systèmes évolutifs techniquement avancés.</i> »<br />
<br />
« <i>La plus grande force de Java est sa communauté. Chez JUG Oberpfalz, nous relançons nos discussions &quot;(Re)Start with Java&quot; en 2025, et les développeurs sont toujours impressionnés par l’évolution du langage</i> », explique Richard Fichtner, CEO, XDEV Software GmbH. « <i>Dans sa version moderne, Java est plus productif, plus sûr et plus innovant que jamais : une preuve de ce que la communauté et la collaboration peuvent réaliser. </i>»<br />
<br />
<b>Sources</b> : <a rel="nofollow" href="https://jdk.java.net/25/release-notes" target="_blank">Release Notes</a>, <a rel="nofollow" href="https://jdk.java.net/25/" target="_blank">OpenJDK JDK 25</a>, <a rel="nofollow" href="https://mail.openjdk.org/pipermail/announce/2025-September/000360.html" target="_blank">Annonce de Java 25</a> <br />
<br />
<b>Et vous ?</b><br />
<br />
:fleche: Pensez-vous que cette annonce est crédible ou pertinente ?<br />
:fleche: Quel est votre avis sur le sujet ?<br />
<br />
<b>Voir aussi :</b><br />
<br />
:fleche: <a href="https://java.developpez.com/actu/370217/Oracle-annonce-la-disponibilite-de-Java-24-apportant-des-ameliorations-en-matiere-de-performance-de-stabilite-et-de-securite-a-la-plateforme-pour-permettre-aux-entreprises-d-accelerer-leur-croissance/" target="_blank">Oracle annonce la disponibilité de Java 24, apportant des améliorations en matière de performance, de stabilité et de sécurité à la plateforme pour permettre aux entreprises d'accélérer leur croissance</a><br />
<br />
:fleche: <a href="https://java.developpez.com/actu/373953/Pres-de-75-pourcent-des-utilisateurs-d-Oracle-Java-ont-fait-l-objet-d-un-audit-de-conformite-logicielle-au-cours-des-trois-dernieres-annees-les-couts-eleves-de-licence-les-poussent-vers-les-alternatives-open-source/" target="_blank">Près de 75 % des utilisateurs d'Oracle Java ont fait l'objet d'un audit de conformité logicielle au cours des trois dernières années, les coûts élevés de licence les poussent vers les alternatives open source</a><br />
<br />
:fleche: <a href="https://java.developpez.com/actu/357065/90-pourcent-des-services-Java-presentent-un-risque-de-vulnerabilite-les-images-de-conteneurs-legers-entrainent-moins-de-vulnerabilites-et-l-adoption-de-l-IaC-est-elevee-selon-le-rapport-DevSecOps-de-Datadog/" target="_blank">90% des services Java présentent un risque de vulnérabilité, les images de conteneurs légers entraînent moins de vulnérabilités et l'adoption de l'IaC est élevée, selon le rapport DevSecOps de Datadog</a></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p670388d1758120538/java/general-java/oracle-annonce-publication-java-25-apportant-ameliorations-optimisent-langage-java/1.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>Jade Emy</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179317/java/general-java/oracle-annonce-publication-java-25-apportant-ameliorations-optimisent-langage-java/</guid>
		</item>
		<item>
			<title><![CDATA[Un soft ne reconnait pas Java qu'il demande]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2178648&amp;goto=newpost</link>
			<pubDate>Sun, 17 Aug 2025 10:42:33 GMT</pubDate>
			<description>Bonjour 
W 11 pro 
Le soft...</description>
			<content:encoded><![CDATA[<div>Bonjour<br />
W 11 pro<br />
Le soft DBGL, qui est un frontend de Dosbox ( qu'importe qu'il ne fonctionne pas vu que j'en ai 2 autres mais je tiens a comprendre) exige Java 17. Ah bon. <br />
<a rel="nofollow" href="https://ibb.co/MyXNVnV0" target="_blank">https://ibb.co/MyXNVnV0</a><br />
Bon. J'installe la toute dernier version de Java, activee<br />
<br />
<br />
<a rel="nofollow" href="https://ibb.co/JWcSRbb1" target="_blank">https://ibb.co/JWcSRbb1</a><br />
Mais DBGL demande toujours Java 17<br />
Quelque chose a faire afin qu'il reconnaisse que Java est bien installe dans Windows ?<br />
Merci et bon weekend</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>bigbernie</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2178648/java/general-java/soft-ne-reconnait-java-qu-demande/</guid>
		</item>
		<item>
			<title><![CDATA[Intégration d'une classe qui permet le tri des noms de dossier par date de création]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2178349&amp;goto=newpost</link>
			<pubDate>Thu, 31 Jul 2025 06:59:00 GMT</pubDate>
			<description>Bonjour, 
 
Dans mon code...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Dans mon code principal, utilisé pour un appareillage, je liste le contenu d'un répertoire. Je souhaiterais adapter le code ci-dessous à mon script plus bas.<br />
Je n'arrive pas à mes fins tout seul.<br />
<br />
Le code est sous Java ETK1.4.5 (il ne m'est pas possible de changer cette version)<br />
<br />
Voici le code qui me permettrais de lister par date de création:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td valign="top"><pre style="margin: 0">File directory = <span style="color: #0000ff;">new</span> File<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;c:<span style="color: #800000;">\\</span>books<span style="color: #800000;">\\</span>&quot;</span><span class="br0">&#41;</span>;
   File<span class="br0">&#91;</span><span class="br0">&#93;</span> files = directory.listFiles<span class="br0">&#40;</span><span class="br0">&#41;</span>;
   Arrays.sort<span class="br0">&#40;</span>files, <span style="color: #0000ff;">new</span> Comparator<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> compare<span class="br0">&#40;</span>Object o1, Object o2<span class="br0">&#41;</span> <span class="br0">&#123;</span>
       File a1=<span class="br0">&#40;</span>File<span class="br0">&#41;</span>o1;
       File a2=<span class="br0">&#40;</span>File<span class="br0">&#41;</span>o2;
       <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>a1.lastModified<span class="br0">&#40;</span><span class="br0">&#41;</span> &lt; a2.lastModified<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
          <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">-1</span>;
       <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>a1.lastModified<span class="br0">&#40;</span><span class="br0">&#41;</span> &gt; a2.lastModified<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
         <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">1</span>;
       <span style="color: #0000ff;">else</span>
         <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">0</span>;
       <span class="br0">&#125;</span>
    <span class="br0">&#125;</span><span class="br0">&#41;</span>;</pre></td></tr></table></code><hr />
</div><br />
Voici mon code actuel fonctionnel qui me permet de lister le contenu d'un repertoire<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">import</span> com.ewon.ewonitf.EvtWebFormListener;
<span style="color: #0000ff;">import</span> java.io.PrintStream;
<span style="color: #0000ff;">import</span> java.util.Date;
<span style="color: #0000ff;">import</span> java.util.Enumeration;
<span style="color: #0000ff;">import</span> javax.microedition.io.Connector;
<span style="color: #0000ff;">import</span> javax.microedition.io.file.FileConnection;
&nbsp;
&nbsp;
&nbsp;
<span style="color: #808080;">/*</span>
<span style="color: #808080;">&nbsp;* To change this template, choose Tools | Templates</span>
<span style="color: #808080;">&nbsp;* and open the template in the editor.</span>
<span style="color: #808080;">&nbsp;*/</span>
&nbsp;
<span style="color: #808080; font-weight: bold;">/**</span>
<span style="color: #808080; font-weight: bold;">&nbsp;* https://stackoverflow.com/questions/72185256/java-1-4-sort-files-recent-latest</span>
<span style="color: #808080; font-weight: bold;">&nbsp;* <span style="color: #0000ff;">@author</span> eWonSupport_Adm</span>
<span style="color: #808080; font-weight: bold;">&nbsp;*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> MyWebFormListener <span style="color: #0000ff;">extends</span> EvtWebFormListener 
<span class="br0">&#123;</span>
&nbsp;
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> callForm<span class="br0">&#40;</span>String FormName<span class="br0">&#41;</span> 
    <span class="br0">&#123;</span>      
         PrintStream ps = <span style="color: #0000ff;">new</span> PrintStream<span class="br0">&#40;</span><span style="color: #0000ff;">this</span><span class="br0">&#41;</span>;
&nbsp;
         setWebHeader<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;text/plain&quot;</span><span class="br0">&#41;</span>;
&nbsp;
        <span style="color: #808080;">//  List File</span>
         <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span><span style="color: #FF0000;">&quot;list&quot;</span>.equals<span class="br0">&#40;</span>FormName<span class="br0">&#41;</span><span class="br0">&#41;</span> 
         <span class="br0">&#123;</span>             
            <span style="color: #0000ff;">try</span>
            <span class="br0">&#123;</span>
               String FileConnStr = <span style="color: #FF0000;">&quot;file:///&quot;</span> + getWebVar<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;directory&quot;</span>,<span style="color: #FF0000;">&quot;/&quot;</span><span class="br0">&#41;</span>;
&nbsp;
               String directoryStr=getWebVar<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;directory&quot;</span>,<span style="color: #FF0000;">&quot;&quot;</span><span class="br0">&#41;</span>;
               ps.println<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;directoryStr: &quot;</span>+directoryStr<span class="br0">&#41;</span>;
&nbsp;
               FileConnection fc =  <span class="br0">&#40;</span>FileConnection<span class="br0">&#41;</span> Connector.<span style="color: #0000ff;">open</span><span class="br0">&#40;</span>FileConnStr<span class="br0">&#41;</span>;
               <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>fc.exists<span class="br0">&#40;</span><span class="br0">&#41;</span> &amp;&amp; fc.isDirectory<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
               <span class="br0">&#123;</span>
                   Enumeration x = fc.list<span class="br0">&#40;</span><span class="br0">&#41;</span>;
                   FileConnection fc1 = <span style="color: #0000ff;">null</span>;
                   String sz_list = <span style="color: #FF0000;">&quot;&quot;</span>;
&nbsp;
                   String orderStr = getWebVar<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;order&quot;</span>,<span style="color: #FF0000;">&quot;&quot;</span><span class="br0">&#41;</span>;
                   String typeStr = getWebVar<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;type&quot;</span>,<span style="color: #FF0000;">&quot;&quot;</span><span class="br0">&#41;</span>;
                   String lineBreakStr = getWebVar<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;lineBreak&quot;</span>,<span style="color: #FF0000;">&quot;&quot;</span><span class="br0">&#41;</span>;
&nbsp;
                   <span style="color: #0000ff;">while</span><span class="br0">&#40;</span>x.hasMoreElements<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
                   <span class="br0">&#123;</span>
                       String item =  x.nextElement<span class="br0">&#40;</span><span class="br0">&#41;</span>.toString<span class="br0">&#40;</span><span class="br0">&#41;</span>;
                       fc1 =  <span class="br0">&#40;</span>FileConnection<span class="br0">&#41;</span> Connector.<span style="color: #0000ff;">open</span><span class="br0">&#40;</span>FileConnStr+ <span style="color: #FF0000;">&quot;/&quot;</span> + item<span class="br0">&#41;</span>;
                       <span style="color: #808080;">// http://192.168.0.10/rcgi.bin/jvmForm?formName=list&amp;type=file&amp;lineBreak=yes&amp;order=ascending&amp;directory=/usr</span>
&nbsp;
                       <span style="color: #808080;">// list file</span>
                       <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span><span style="color: #FF0000;">&quot;file&quot;</span>.equals<span class="br0">&#40;</span>typeStr<span class="br0">&#41;</span><span class="br0">&#41;</span>
                       <span class="br0">&#123;</span>
                    	   <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>!fc1.isDirectory<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>  
                    	   <span class="br0">&#123;</span>
                    		   <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span><span style="color: #FF0000;">&quot;yes&quot;</span>.equals<span class="br0">&#40;</span>lineBreakStr<span class="br0">&#41;</span><span class="br0">&#41;</span>
                    		   <span class="br0">&#123;</span>
                    			   sz_list += <span style="color: #FF0000;">&quot;/&quot;</span> + item+ <span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>&quot;</span>;
                    		   <span class="br0">&#125;</span>
                    		   <span style="color: #0000ff;">else</span>
                    			   sz_list += <span style="color: #FF0000;">&quot;/&quot;</span> + item + <span style="color: #FF0000;">&quot;;&quot;</span>;
                    	   <span class="br0">&#125;</span>
                       <span class="br0">&#125;</span>
&nbsp;
                       <span style="color: #808080;">// http://192.168.0.10/rcgi.bin/jvmForm?formName=list&amp;type=dir&amp;lineBreak=yes&amp;order=ascending&amp;directory=/usr</span>
&nbsp;
                       <span style="color: #808080;">// list dir</span>
                       <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span><span style="color: #FF0000;">&quot;dir&quot;</span>.equals<span class="br0">&#40;</span>typeStr<span class="br0">&#41;</span><span class="br0">&#41;</span>
                       <span class="br0">&#123;</span>
                    	   <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>fc1.isDirectory<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>  
                    	   <span class="br0">&#123;</span>
                    		   <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span><span style="color: #FF0000;">&quot;yes&quot;</span>.equals<span class="br0">&#40;</span>lineBreakStr<span class="br0">&#41;</span><span class="br0">&#41;</span>
                    		   <span class="br0">&#123;</span>
                    			   sz_list += <span style="color: #FF0000;">&quot;/&quot;</span> + item+ <span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>&quot;</span>;
                    		   <span class="br0">&#125;</span>
                    		   <span style="color: #0000ff;">else</span>
                    			   sz_list += <span style="color: #FF0000;">&quot;/&quot;</span> + item + <span style="color: #FF0000;">&quot;;&quot;</span>;
                    	   <span class="br0">&#125;</span>
                   <span class="br0">&#125;</span>
                   ps.print<span class="br0">&#40;</span><span class="br0">&#40;</span>sz_list<span class="br0">&#41;</span><span class="br0">&#41;</span>;
               <span class="br0">&#125;</span>
               <span style="color: #0000ff;">else</span>
                   ps.print<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;DIRECTORY DOES NOT EXIST&quot;</span><span class="br0">&#41;</span>;
          <span class="br0">&#125;</span>
          <span style="color: #0000ff;">catch</span><span class="br0">&#40;</span>Exception ex<span class="br0">&#41;</span>
          <span class="br0">&#123;</span>
              System.out.println<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;size Command Error: &quot;</span> + ex.getMessage<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
              ps.print<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;list Command Error&quot;</span><span class="br0">&#41;</span>;
          <span class="br0">&#125;</span>  
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>dudux2</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2178349/java/general-java/integration-d-classe-permet-tri-noms-dossier-date-creation/</guid>
		</item>
		<item>
			<title><![CDATA[Java a 30 ans : retour sur l’évolution d’un langage qui a su rester pertinent à l’ère du cloud et de l'IA]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2177099&amp;goto=newpost</link>
			<pubDate>Sun, 25 May 2025 07:51:51 GMT</pubDate>
			<description>*Java fête ses 30 ans :...</description>
			<content:encoded><![CDATA[<div><b><font size="4">Java fête ses 30 ans : retour sur l’évolution d’un langage qui a su rester pertinent à l’ère du cloud, du DevOps et de l’IA.</font></b><br />
<b><font size="1">Ce vétéran du développement peut-il encore séduire les nouvelles générations ?   </font></b><br />
<br />
<b>Lançé par Sun Microsystems le 23 mai 1995, Java est rapidement devenu « un pilier de l’informatique d’entreprise ». En 2025, la « mascotte » Duke de Java souffle ses trente bougies, mais le langage reste très vivant : son créateur James Gosling affirme qu’il est « encore très utilisé et activement développé » et qu’il a « des décennies de vie » devant lui. Java est toujours l’un des langages les plus populaires au monde, classé régulièrement dans le top&#8239;5 par l’indice Tiobe.</b><br />
<br />
Selon une enquête d’Azul, 99&#8239;% des entreprises utilisent Java dans leurs applications ou infrastructures critiques. Son succès dans l’industrie est tel qu’on le compare volontiers au mortier et aux briques d’un bâtiment – selon Scott Sellers (PDG d’Azul), « Java est comme le mortier et les murs de briques de l’entreprise – il est juste là ». La longévité de Java est illustrée par son adoption dans des domaines variés (web, mobile, cloud, big data, IoT…) et par son évolution constante pour répondre aux besoins modernes. Comme le souligne un rapport, même après trois décennies « Java reste indispensable » aux entreprises et à la communauté de développeurs, grâce à son « adaptabilité » et sa compatibilité ascendante.<br />
<br />
<b><font size="3">Origine et dénomination du langage</font></b><br />
<br />
Avant de s’appeler Java, le langage était d’abord surnommé «&#8239;Oak&#8239;» par ses concepteurs (référence à un chêne visible depuis le bureau de James Gosling). Ce nom dut être abandonné car il était déjà déposé, et l’équipe de Sun chercha d’autres appellations (Java, DNA, Silk, etc.). Finalement, ce fut « Java » (en hommage au café éponyme) qui fut retenu. Ce choix « caféiné » a fait date : désormais, on associe Java (l’île d’Indonésie célèbre pour son café) à la portabilité du langage. Par la suite, la plateforme Java (JVM + bibliothèques) a concrétisé la fameuse promesse du Write Once, Run Anywhere (« écrire une fois, exécuter partout »). <br />
<br />
Ironie du sort, des développeurs ont plaisanté que l’on devrait dire « Write Once, Test Everywhere » tant certains ajustements sont encore parfois nécessaires pour assurer cette portabilité. Quoi qu’il en soit, ce nom inspiré du café est maintenant synonyme de robustesse et d’universalité.<br />
<br />
<div style="text-align: center;">
<div class="video-container"><iframe class="restrain" title="YouTube video player" width="560" height="315" allowfullscreen src="//www.youtube.com/embed/LHHPbI7sYv8?wmode=transparent&amp;fs=1" frameborder="0"></iframe></div>
</div><br />
<b><font size="3">Un langage omniprésent en entreprise</font></b><br />
<br />
Java est aujourd’hui omniprésent dans l’industrie : back-ends web, applications bancaires, systèmes embarqués, Big Data ou encore Android en utilisent la plate-forme. Dans les infrastructures critiques, Java fournit le socle de nombreux outils (par exemple Jenkins, Hadoop, ou des serveurs d’applications) et reste un choix de référence. Les chiffres sont éloquents&#8239;: dans une étude auprès de 2&#8239;000 développeurs, près de 70&#8239;% déclaraient que plus de la moitié de leurs applications tournent sous Java, et près de 50&#8239;% l’utilisaient pour des projets d’intelligence artificielle. <br />
<br />
Cette diffusion massive explique que Java demeure dans le top&#8239;10 des langages préférés (selon StackOverflow 2024), devant des langages plus récents comme C# ou C++. Certes la montée en puissance de Python ou Rust lui a fait perdre un peu de terrain (TIOBE le place autour de la 4<sup>&#7497;</sup> place aujourd’hui), mais Java a même été élu «&#8239;langage de l’année 2015&#8239;» par cet indice, attestant de sa popularité historique.<br />
<br />
« Java a survécu aux modes et aux changements de paradigmes. Des applets et servlets aux microservices et au cloud natif, Java a évolué tout en restant familier. C’est lui qui a ouvert la voie à l’open source en entreprise. Et, sans doute, l’entreprise n’a jamais regardé en arrière. » – Brian Fox (Sonatype)<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p667637d1748206025/java/general-java/java-30-ans-retour-l-evolution-d-langage-su-rester-pertinent-l-ere-cloud-l-ia/tiobe.png/" border="0" alt="Nom : tiobe.png
Affichages : 17706
Taille : 27,4 Ko"  style="float: CONFIG" /></div><br />
<b><font size="3">Évolutions majeures du langage et innovations clés</font></b><br />
<br />
Au fil des versions, Java a intégré des évolutions importantes pour rester compétitif et moderne. Par exemple :<br />
<ul><li style="">Java&#8239;8 (mars 2014) : c’est la version qui a fait entrer Java dans l’ère de la programmation fonctionnelle. Elle introduit les expressions lambda et l’API Stream, permettant de traiter les collections de manière plus concise et expressive. De nouvelles fonctionnalités comme les <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">default</span> methods</span> dans les interfaces et la nouvelle API <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">Date/Time</span> modernisent également le langage (JDK&#8239;1.8 fut publié le 18 mars 2014.</li><li style="">Java&#8239;9 (sept. 2017) : arrivée de la modularité via le projet Jigsaw (découpage en modules du JDK) et d’outils comme JShell (console interactive). Ce fut aussi la première version à adopter le cycle de sortie semestriel (deux versions par an).</li><li style="">Java 16 (mars 2021) : formalisation des records (types immuables concis pour les données) et des classes scellées (hiérarchies strictement bornées). Ces apports répondent aux critiques de verbosité du langage en simplifiant la déclaration des classes «&#8239;porteuses de données&#8239;».</li><li style="">Java&#8239;17 (sept. 2021, LTS) : version long-terme (LTS) actuelle, apportant de nombreuses améliorations internes (nouveaux garbage collectors, optimisations JIT, etc.). Elle comprend aussi des fonctionnalités plus récentes (pattern matching, etc.) et confirme l’engagement de la communauté envers la compatibilité ascendante.</li><li style="">Java&#8239;21 (sept. 2023, LTS) : dernière version LTS en date, avec d’autres évolutions (types numériques à virgule améliorés, etc.). La prochaine version LTS, Java&#8239;25, est déjà attendue pour septembre 2025.</li><li style="">Portabilité et JVM : le cœur de Java réside dans sa JVM (HotSpot, OpenJ9, GraalVM…), qui exécute le bytecode Java sur chaque plateforme. C’est grâce à elle que la promesse Write Once, Run Anywhere devient réalité. Les compilateurs Just-In-Time et les collecteurs mémoire (garbage collector) ont beaucoup progressé pour optimiser les performances sur serveurs comme sur machines légères. Comme l’observe Charles Oliver Nutter (membre clé d’OpenJDK), « du langage lui-même à la JVM, le rythme des améliorations est stupéfiant ».</li><li style="">Cycle de développement : depuis 2017, une nouvelle version de Java sort tous les six mois, permettant d’ajouter régulièrement des améliorations. Les organisations peuvent choisir les versions à long terme (LTS) pour la stabilité – ainsi Java 8, 11, 17, 21 (et bientôt 25) bénéficient d’un support renforcé.</li></ul><br />
Chacune de ces étapes a contribué à moderniser Java sans trahir son héritage. Par exemple, Java 8 a réduit nettement la verbosité historique du langage. Plus récemment, l’introduction des records évite l’écriture manuelle de getters/setters, équations ou <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">toString<span class="br0">&#40;</span><span class="br0">&#41;</span></span> pour des classes de données. Toutes ces innovations montrent que Java peut évoluer au rythme des nouveaux besoins sans perdre sa compatibilité avec le code existant. Andrew Cornwall (Forrester) le résume ainsi : « Ils ont transformé Java en un langage moderne offrant une bonne expérience développeur tout en conservant la compatibilité avec les versions précédentes ».<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p667635d1748188688/java/general-java/java-30-ans-retour-l-evolution-d-langage-su-rester-pertinent-l-ere-cloud-l-ia/pricing.png/" border="0" alt="Nom : pricing.png
Affichages : 2728
Taille : 17,5 Ko"  style="float: CONFIG" /></div><br />
<b><font size="3">Gouvernance et avenir : d’Oracle à l’open source</font></b><br />
<br />
L’histoire de Java comprend aussi une saga de licences et de gouvernance. En 2010, Oracle a acquis Sun Microsystems et repris Java. Si la plupart du code a été ouvert dans OpenJDK, Oracle a ensuite modifié son modèle : passage à la souscription payante (2019) puis à une <a href="https://java.developpez.com/actu/341030/" target="_blank">facturation par employé</a> (2023). Ces changements ont créé de la confusion et <a href="https://java.developpez.com/actu/368637/" target="_blank">poussé de nombreuses entreprises à explorer des distributions libres de Java</a>. Par exemple, Azul rapporte que la part d’organisation utilisant les versions Oracle est passée de 70&#8239;% à 30&#8239;% en six ans, et que près de 90&#8239;% des sondés envisagent de migrer vers des alternatives open source. Cette tendance s’explique par le coût et la complexité croissants : selon des analystes, le nouveau modèle d’abonnement d’Oracle a surtout pénalisé les grandes entreprises (moins de clients payants, frais calculés au nombre d’employés). Une étude récente confirme que seulement 10&#8239;% des utilisateurs Java interrogés comptent rester chez Oracle.<br />
<br />
Deux ans après l'introduction par Oracle de sa tarification basée sur le nombre d'employés pour Oracle Java SE, <a href="https://java.developpez.com/actu/368637/" target="_blank">les inquiétudes restent vives</a>. 82 % des utilisateurs d'Oracle Java ont exprimé un malaise à l'égard de son modèle de coût (le même pourcentage que celui indiqué dans l'enquête et le rapport Azul 2023 sur l'état de Java). Le pourcentage d'organisations envisageant des alternatives à Oracle Java a également augmenté de manière significative, passant de 72% en 2023 à 88% aujourd'hui. Les cinq principales raisons invoquées pour envisager une migration loin d'Oracle Java (où les répondants pouvaient sélectionner toutes les réponses applicables) comprennent : le coût (42%), la préférence pour l'open-source (40%), les tactiques de vente d'Oracle (37%), l'incertitude créée par les changements continus de la tarification et des licences (36%), et les politiques restrictives d'Oracle (33%). Ces réponses soulignent que les entreprises recherchent de plus en plus des alternatives rentables, flexibles et transparentes à Oracle Java pour atténuer les risques financiers et opérationnels.<br />
<br />
Pour autant, ce conflit de licences n’a pas écorné la position de Java. De nombreuses entreprises se tournent vers OpenJDK ou des distributions comme GraalVM, Red Hat ou AWS Corretto pour continuer à utiliser Java sans licence Oracle. Comme le relève une enquête, la présence massive de Java assure que même les soi-disant « tactiques de licence prédatrices » ne freinent pas sa popularité. Au contraire, la plateforme Java est soutenue par une vaste communauté OpenJDK et des acteurs comme Oracle, Azul, IBM, etc., qui veillent à son évolution.<br />
<br />
Du côté d’Oracle, les responsables (comme Georges Saab) affichent leur confiance : Java a « un long passé de persévérance face aux évolutions technologiques » et on ne voit aucun signe d’essoufflement. En témoigne la feuille de route active du JDK (la version 25 sera notamment LTS en septembre 2025). Les développeurs vétérans ne voient pas Java disparaître de sitôt : par exemple Kohsuke Kawaguchi (créateur de Jenkins) affirme clairement que « Java n’est pas prêt de disparaître ». Au total, même si de nouveaux langages attirent l’attention, Java conserve ses forces (portabilité, stabilité, performance) et continue à servir de base aux innovations technologiques.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p667634d1748188551/java/general-java/java-30-ans-retour-l-evolution-d-langage-su-rester-pertinent-l-ere-cloud-l-ia/azul.png/" border="0" alt="Nom : azul.png
Affichages : 1677
Taille : 139,7 Ko"  style="float: CONFIG" /></div><br />
<b><font size="3">Conclusion</font></b><br />
<br />
En fin de compte, Java à 30 ans reste plus que jamais fondamental dans le paysage logiciel&#8239;: il en incarne l’indépendance et la maturité. Comme l’explique Brian Fox (Sonatype), Java a non seulement survécu aux changements de paradigme, mais il a aussi « pavé la voie de l’open source en entreprise » – une tendance dont l’écho perdure encore aujourd’hui. Et comme le résume Paul Krill : Java « continue d’assurer ce que les développeurs veulent et les entreprises ont besoin : indépendance, évolutivité et résilience ». Trente ans après sa naissance, Java fête donc un anniversaire sous les signes à la fois de la stabilité et de l’innovation, prêt à écrire de nouveaux chapitres pour ses décennies à venir.<br />
<br />
Sources : vidéo dans le texte, <a rel="nofollow" href="https://www.azul.com/blog/oracle-java-pricing-second-anniversary/" target="_blank">Azul</a>, <a rel="nofollow" href="https://www.azul.com/state-of-java-2025/" target="_blank">State of Java 2025</a>, <a rel="nofollow" href="https://openjdk.org/projects/jdk/25/" target="_blank">OpenJDK</a>, <a rel="nofollow" href="https://www.sonatype.com/blog/java-at-30-from-portable-promise-to-critical-infrastructure" target="_blank">Sonatype</a>, <a rel="nofollow" href="https://inside.java/u/GeorgesSaab/" target="_blank">Georges Saab</a><br />
<br />
<b>Et vous ?</b><br />
<br />
:fleche: Java est-il aujourd’hui aussi « moderne » que Kotlin, Rust ou Go ? Qu’est-ce qui manque encore selon vous ?<br />
<br />
:fleche: Les lambdas, les records, le pattern matching… Ont-ils vraiment changé votre façon de coder en Java ?<br />
<br />
:fleche: La compatibilité ascendante de Java est souvent saluée, mais est-elle un frein à l’innovation plus radicale ?<br />
<br />
:fleche: Pourquoi, selon vous, Java reste-t-il aussi massivement utilisé en entreprise malgré la montée de nouveaux langages ?<br />
<br />
:fleche: Quel est selon vous l’avenir de Java dans le cloud natif ou l’intelligence artificielle ? Peut-il y tenir tête à Python ou Node.js ?<br />
<br />
:fleche: Le coût des licences Oracle a-t-il modifié vos choix technologiques ? Utilisez-vous encore la distribution officielle ?<br />
<br />
:fleche: 30 ans, c’est long pour un langage : est-ce un signe de solidité ou un risque de stagnation ?<br />
<br />
:fleche: Quels moments ou versions clés ont marqué votre parcours avec Java ?<br />
<br />
:fleche: Java aurait-il connu le même succès sans la JVM ?<br />
<br />
:fleche: Quels usages émergents voyez-vous pour Java dans les années à venir (IoT, edge computing, quantique…) ?<br />
<br />
:fleche: Selon vous, Java existera-t-il encore dans 20 ans ? Sous quelle forme ?<br />
<br />
:fleche: Si vous deviez recommander Java à un·e jeune développeur·se aujourd’hui, que diriez-vous ?</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p667634d1748188551/java/general-java/java-30-ans-retour-l-evolution-d-langage-su-rester-pertinent-l-ere-cloud-l-ia/azul.png/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p667635d1748188688/java/general-java/java-30-ans-retour-l-evolution-d-langage-su-rester-pertinent-l-ere-cloud-l-ia/pricing.png/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p667637d1748206025/java/general-java/java-30-ans-retour-l-evolution-d-langage-su-rester-pertinent-l-ere-cloud-l-ia/tiobe.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>Stéphane le calme</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2177099/java/general-java/java-30-ans-retour-l-evolution-d-langage-su-rester-pertinent-l-ere-cloud-l-ia/</guid>
		</item>
		<item>
			<title>Aspect selon valeur retournée</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2177019&amp;goto=newpost</link>
			<pubDate>Wed, 21 May 2025 15:15:10 GMT</pubDate>
			<description><![CDATA[Bonjour. 
 
J'ai une...]]></description>
			<content:encoded><![CDATA[<div>Bonjour.<br />
<br />
J'ai une application qui fait appel à une API externe <i>PersonAPI</i> de cette façon :<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> modifierPersonne<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span style="color: #808080;">//Traider input</span>
    PersonDto output = personApi.modify<span class="br0">&#40;</span>input<span class="br0">&#41;</span>;
    <span style="color: #808080;">//Traiter output</span>
<span class="br0">&#125;</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> creerPersonne<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span style="color: #808080;">//Traider input</span>
    PersonDto output = personApi.create<span class="br0">&#40;</span>input<span class="br0">&#41;</span>;
    <span style="color: #808080;">//Traiter output</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
L'API retourne ce genre de JSON :<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td valign="top"><pre style="margin: 0"><span class="br0">&#123;</span>
    <span style="color: #800000;">code</span>: <span style="color: #cc66cc;">200</span>,
    <span style="color: #800000;">messages</span>: <span class="br0">&#91;</span><span class="br0">&#93;</span>,
    <span style="color: #800000;">data</span>: <span class="br0">&#123;</span>
        <span style="color: #800000;">person</span>: <span class="br0">&#123;</span><span style="color: #800000;">name</span>: <span style="color: #FF0000;">&quot;name&quot;</span>, <span style="color: #800000;">age</span>: <span style="color: #cc66cc;">100</span>, ...<span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
Problème, la gestion des erreurs est mal conçue et l'API peut retourner un code HTTP 200 avec des données tel que :<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td valign="top"><pre style="margin: 0"><span class="br0">&#123;</span>
    <span style="color: #800000;">code</span>: <span style="color: #cc66cc;">400</span>,
    <span style="color: #800000;">messages</span>: <span class="br0">&#91;</span>
        <span style="color: #800000;">severity</span>: <span style="color: #FF0000;">&quot;ERROR&quot;</span>,
        <span style="color: #800000;">content</span>: <span style="color: #FF0000;">&quot;Invalid character in 'name'&quot;</span>
    <span class="br0">&#93;</span>,
    <span style="color: #800000;">data</span>: <span class="br0">&#123;</span>
        <span style="color: #800000;">person</span>: <span class="br0">&#123;</span><span style="color: #800000;">name</span>: <span style="color: #FF0000;">&quot;&#1488;&quot;</span>, <span style="color: #800000;">age</span>: <span style="color: #cc66cc;">100</span>, ...<span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
Ce comportement ne pouvant pas changer, je souhaite m'adapter, mais si possible sans toucher au code existant (base de code assez grande).<br />
Les Aspects semblent être une bonne solution, j'en utilise déjà pour log des appels de fonctions très précises.<br />
Je pense intercepter les données de retour et envoyer une exception si le champ <i>severity</i> est &quot;<i>ERROR</i>&quot;.<br />
<br />
Je voudrais savoir si il est possible d'intercepter le processus juste après que la fonction ait retourné le JSON (retour de <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">personApi.create<span class="br0">&#40;</span><span class="br0">&#41;</span></span>) mais avant que la valeur soit assignée à <s>p</s> <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">output</span> ?<br />
Sinon si il y existe une option plus pertinente ?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f22/java/general-java/">Général Java</category>
			<dc:creator>Daïmanu</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2177019/java/general-java/aspect-selon-retournee/</guid>
		</item>
	</channel>
</rss>
