Naissance d'un géant : Java

64
8
juil.
2011
Java

Java est un des langages de programmation les plus auréolés de succès de ces quatre dernières décennies. Une grande partie des offres de postes de développeurs en France concerne Java.

D'après le « TIOBE Programming Community Index » Java est toujours leader avec 18,58 % des parts de marché en juin 2011. Il était bien plus haut en 2000, avoisinant les 30 %.

Mais comment Java en est arrivé là ? Cet article effectue un retour sur la période 1991–2000.

OpenJDK JEP 180: HashMap, collisions & attaques par la complexité

46
6
mai
2014
Java

Cette dépêche parle de la JEP 180 d'OpenJDK 8 qui propose une solution intéressante aux problèmes d'attaques sur la complexité que rencontrent les tables de hachage.

On a déjà parlé de ce sujet ici même à plusieurs reprises. Je vais cependant rapidement représenter le problème et l'évolution des discussions. Le lecteur averti sur le sujet ira directement au dernier paragraphe pour voir la proposition de la JEP 180.

NdM : merci à ckyl pour son journal.

Brevets logiciels Oracle/Google : est-ce enfin la guerre nucléaire ?

Posté par (page perso) . Modéré par patrick_g.
45
13
août
2010
Java
Oracle Corporation, le géant américain des bases de données propriétaires, vient de déposer plainte contre Google pour violation de sa propriété intellectuelle sur les technologies Java.

Oracle a racheté Sun l'an dernier et la firme est donc devenue la détentrice de tout les brevets liés à Java et sa machine virtuelle. Oracle a décidé de se servir de cet arsenal pour attaquer Google et notamment Android et sa machine virtuelle Dalvik qui exécute le code java des applications.

Plus de détails dans le reste de la dépêche.

NdM : à rapprocher de « Pour l'ancien patron de Sun, seuls les désespérés attaquent pour violation de brevets » ou « Brevets abusifs : Jonathan Schwartz, ex-PDG de Sun, se lâche sur son blog » (articles Numerama ou Le Monde informatique de mars sur un affrontement Apple/Google)

Modernisez votre code Java en un clic avec AutoRefactor v1.0.0 !

Posté par . Édité par palm123, BAud, Snark, Nÿco et Benoît Sibaud. Modéré par ZeroHeure. Licence CC by-sa
40
5
juin
2015
Java

Le 22 mars 2015 est sortie la version 1.0.0 du projet AutoRefactor. Ce logiciel est publié sous Eclipse Public License v1.0 et GNU General Public License v3+.

AutoRefactor restructure automatiquement le code source d'un programme Java afin de :

  • Faciliter la maintenance en améliorant la lisibilité
    • exemple : lorsque toutes les branches d'un if ont les mêmes instructions à la fin des blocs, celles-ci sont déplacées après le if, …
  • Moderniser le code
    • exemple : passer des APIs de java.util.Vector vers celle de java.util.List, …
  • Appliquer les bonnes pratiques
    • exemple : utilisation d’accolades après un if, javadoc bien formés, bonne utilisation des APIs de BigDecimal, TestNG, …
  • Réduire la taille du code
    • exemple : un if imbriqué dans un autre if devient un if unique, suppression des variables locales déclarées juste avant un return, …
  • Améliorer les performances
    • exemple : utiliser Integer.valueOf(int) au lieu de new Integer(int), …

Apache Software Foundation et Oracle : le divorce autour de Java est prononcé

Posté par . Modéré par baud123.
Tags : aucun
36
10
déc.
2010
Java
Restituons le contexte : les inquiétudes des utilisateurs de MySQL soulevées il y a de nombreux mois s'étaient avérées justifiées lorsqu' Oracle annonça une augmentation de ses tarifs de support.

Ce n'était qu'un aperçu de tous les dégâts et déceptions qu'allait causer Oracle auprès du logiciel libre, puisque s'ensuivit l'arrêt du développement ouvert d'OpenSolaris. L'éditeur décida de ne distribuer le code source qu'après la sortie d'une version majeure et de ne plus permettre un développement ouvert continu et permanent. Aujourd'hui existent deux forks de ce système d'exploitation : OpenIndiana et IllumOS.

La série noire continua avec la mésentente des développeurs d'OpenOffice et d'Oracle. S'ensuivit la décision de bon nombre des développeurs d'OpenOffice de quitter le projet et de créer un « fork », LibreOffice, histoire de se libérer de l'emprise d'Oracle sur le logiciel.

Tous ces évènements n'ont pas inquiété Oracle, qui a décidé de continuer sur sa lancée. Cette fois, c'est Java qui est concerné : Oracle a refusé d'accorder une licence suffisamment permissive à la fondation Apache pour qu'elle puisse continuer à implémenter librement les prochaines versions des spécifications de Java.

Enfin, un client EBICS java libre

Posté par . Édité par baud123, tuiu pol, Benoît Sibaud et Xavier Claude. Modéré par baud123.
Tags : aucun
34
13
mar.
2012
Java

Nous avons développé un framework en Java qui implémente un client EBICS (version 2.4, EBICS pour Electronic Banking Internet Communication Standard). EBICS étant le nouveau protocole destiné à remplacer le protocole actuel de communication bancaire ETEBAC dont l'arrêt est prévu fin Juin 2012 en France.

Ce framework permet aux applications Java d'échanger, en toute sécurité, les transactions bancaires sous forme de fichiers via Internet. Il n'existait apparemment pas d'initiative en libre, ce pourquoi nous en proposons une.

Des tests de qualification sur www.qualif-ebics.fr ont permis de s'assurer du bon fonctionnement de notre framework.

Nous serons ravis si vous participez à l'amélioration du client pour le rendre le premier client EBICS java libre et performant. Nous sommes à votre disposition pour tout type d'aide.

NdM: le logiciel est sous licence LGPL 2.1

L’environnement de développement Eclipse 4.3 est disponible

Posté par (page perso) . Édité par ZeroHeure, Xavier Claude, palm123, Yvan Munoz et Nÿco. Modéré par Xavier Claude. Licence CC by-sa
Tags :
33
30
juin
2013
Java

La Fondation Eclipse vient d’annoncer la disponibilité d’une nouvelle version de l’environnement de développement libre Eclipse numéroté 4.3, nom de code Kepler, pour Linux, Mac OS X et Windows.

Eclipse

Eclipse Kepler se compose de 71 projets, ce qui représente 58 millions de lignes de code. Cette nouvelle version prend en charge Java EE 7 (sorti le 12 juin dernier) et apporte de nouvelles améliorations concernant l’interface et les performances.

Kepler apporte de nouvelles améliorations concernant l’interface et les performances. Les nouvelles fonctionnalités sont nombreuses, bien détaillées et illustrées de captures d’écran - cliquez sur les liens ci dessous. Voir la liste en français en seconde partie.

Sortie de Scala 2.10

Posté par (page perso) . Édité par Benoît Sibaud, baud123 et Christophe Guilloux. Modéré par Xavier Claude. Licence CC by-sa
Tags :
31
24
jan.
2013
Java

Comme vous l'avez aperçu sur ce même site, la version 2.10 du langage de programmation Scala est sortie, il y a quelques semaines.

Cette version apporte pas mal de nouveautés, de corrections et d'améliorations. Cette dépêche propose une petite revue rapide des différents apports de cette version.

Java 8 et NetBeans 8 sont disponibles

Posté par (page perso) . Édité par Davy Defaud, barmic, j, BAud, palm123, ZeroHeure, domak, Nÿco et Sébastien Koechlin. Modéré par Nÿco. Licence CC by-sa
Tags : aucun
31
28
mar.
2014
Java

Oracle a annoncé la mise à disposition de la nouvelle version standard de Java, huitième du nom. Deux ans et sept mois après Java 7, la publication de cette nouvelle version a été retardée afin d’améliorer la sécurité.

Et pour permettre d’exploiter au mieux ce nouveau JDK, une nouvelle version de l’environnement de développement NetBeans est également disponible et porte le même numéro. Côté Eclipse, un correctif est proposé et concernant IntelliJ, Java 8 est pris en charge dans la version 13.1 sortie la semaine dernière.

Ces deux sorties marquent la volonté d’Oracle de convaincre les développeurs.

Naca 1.2 : support Oracle et Microfocus pour la migration de Cobol vers Java

Posté par (page perso) . Modéré par Florent Zara.
30
16
oct.
2009
Java
Les outils du projet NACA en Open Source sont étendus (support fichiers Microfocus, Oracle, nouveaux verbes Cobol, etc.) dans leur version 1.2 pour rendre toujours plus simple la migration de Cobol sur mainframe vers Java et Linux. Nous avons publié la version 1.2 de notre framework de conversion 100% automatique de Cobol vers Java, développé initialement lors de notre projet NACA de migration des applications Publicitas d'un mainframe IBM vers une (toute petite) ferme de serveurs Intel.

Depuis la mise en Open Source de ces outils, nous avons allègrement dépassé le cap des 1500 téléchargements et connaissons des tests pilotes, voire des migrations avec nos outils déjà largement avancées sur quatre continents : seule l'Afrique nous manque à ce moment.

Tous les détails du projet se trouvent dans les articles déjà publiés sur ce site (voir liens) et des précisions dans la suite de la dépêche.

Play! 1.0 est sorti

Posté par . Modéré par Jaimé Ragnagna.
Tags :
29
20
oct.
2009
Java
Depuis des années JEE a été vu comme l'unique façon de créer des applications Web avec Java. Cependant, il est malheureusement connu pour sa faible productivité, notamment à cause des phases répétées de compilation-packaging-déploiement. Voici donc une nouvelle manière de créer des applications Web avec Java.

La version 1.0 finale du framework Play est un framework Java « pile complète » qui propose tous les composants nécessaires pour créer des applications Web modernes. Notre souci principal est la productivité des développeurs, avec un cycle de développement « corriger et rafraîchir la page », des messages d'erreurs parfaits affichant le code source de l'application directement dans le navigateur et un « lanceur de tests » intégré qui rend le « développement piloté par tests » naturel.

Play utilise de nombreux composants libres, dont Apache Mina pour la pile réseau, Groovy comme langage de script pour le moteur de template et Hibernate pour le mapping objet-relationnel. Ce framework est basé sur une architecture "Share Nothing" qui aide à construire des applications Web RestFul. Il est possible de déployer l'application sur plusieurs serveurs simultanément (sans besoin de synchronisation), et donc de supporter de très fortes charges.

OpenJDK 8, JEP 142 & False Sharing

Posté par . Édité par Davy Defaud, ZeroHeure, Florent Zara, palm123, tuiu pol et Benoît Sibaud. Modéré par ZeroHeure. Licence CC by-sa
28
2
avr.
2014
Java

Java 8 est sorti ce mois‐ci et vous avez même eu droit à une dépêche, ici‐même, qui parle des lambdas, de l’API flux (stream API), etc.

Cependant, derrière ces gros changements qui impactent le monde hétérogène des développeurs Java, il y a des petits changements qui eux servent plutôt aux développeurs qui font des briques de base, de l’infrastructure ou du code qui va vite. Je vous propose donc d’explorer quelques JDK Enhancement Proposals d’OpenJDK.

Pour cette première dépêche, on commence avec la JEP 142 : Reduce Cache Contention on Specified Fields soit l’annotation @Contended qui vise à proposer une solution aux problèmes de false sharing.

NdM : merci à ckyl pour son journal.

Nouvelle version stable de Jitsi

Posté par . Modéré par patrick_g.
25
5
sept.
2011
Java

Jitsi (anciennement « SIP Communicator ») est un logiciel de VoIP et de messagerie instantanée sous licence LGPL, développé en Java. Il supporte les appels audio‐vidéo via les protocoles SIP et XMPP et la plupart des messageries instantanées comme Windows Live (MSN), XMPP (et donc Google Talk et Facebook), AIM/ICQ, Yahoo! Messenger… Jitsi dispose aussi de fonctionnalités comme le partage de bureau, le chiffrement des appels, l’enregistrement des appels audio et beaucoup d’autres.

Après de nombreux mois de travail intensif, la nouvelle version stable de Jitsi est disponible.

Parmi les changements on retrouve notamment :

  • les appels audio‐vidéo vers les contacts Google Talk (Gmail et Android) ;
  • les appels téléphoniques via Google Voice ;
  • le support du codec audio SILK (utilisé également par Skype) ;
  • vérificateur orthographique ;
  • corrections et améliorations diverses.

Sonar 2.13 est disponible

Posté par (page perso) . Édité par Lucas Bonnet, Nÿco, baud123 et Mouns. Modéré par Lucas Bonnet. Licence CC by-sa
25
27
jan.
2012
Java

Sonar, l'outil d'analyse de la qualité du code source que l'on ne présente (presque) plus désormais, vient de sortir sa nouvelle version, comme toutes les 6 semaines ou presque.
Logo Sonar

La version complètement Open Source (LGPL v3) permet d'analyser du Java, PHP, Groovy, C#, Flex/ActionScript et du Javascript et fournir les résultats détaillés et agrégés dans un portail web contenant des tableaux de bords essentiellement techniques. Il s'intègre assez naturellement avec les outils d'intégration continue.

Les nouveautés sont détaillées dans la seconde partie. Vous pouvez tester par vous même sur l'instance publique de Sonar.

Sortie de LDAP Synchronization Connector 2.1.0

Posté par (page perso) . Édité par ZeroHeure, Benoît Sibaud, Xavier Claude, palm123 et tuiu pol. Modéré par Xavier Claude. Licence CC by-sa
Tags :
24
21
mai
2014
Java

Le logiciel LDAP Synchronization Connector est un moteur de synchronisation entre annuaires LDAP, bases de données, fichiers, et autres sources (API REST, etc.). Il est particulièrement efficace pour diffuser les données d'utilisateurs et de groupes entre son annuaire d'entreprise, un serveur Active Directory, une base de données d'application. On peut le classer dans la catégorie des logiciels de Méta-annuaire ou de gestionnaire d'identités (IDM en anglais).

logo LSC

La version 2.1.0 vient d'être publiée, avec son lot de nouveautés et de correctifs, décrits dans la suite de la dépêche.

Ndm : LSC est livré sous licence BSD.

Le point sur Java 7

Posté par (page perso) . Modéré par baud123.
Tags :
22
16
avr.
2010
Java
Pour les développeurs Java, les nouveautés que réserve Sun^WOracle pour les prochaines versions de son langage Orienté Objet sont autant de sujets d'attentes, de débats, et même pour certains ... d'espoirs ! Beaucoup a été dit et surtout bloggué depuis le lancement du projet Java 7 "Dolphin", les échanges ont été nombreux et le débat fourni. À l'heure où la sortie de cette dernière mouture de Java est imminente, faisons le point sur le sujet et tout particulièrement sur le projet Coin de Sun et des améliorations qu'il apporte à Java 7.

NdM : Merci à galaux pour son journal à l'origine de la dépêche.

SIP Communicator devient « Jitsi » et Google Summer of Code 2011 !

Posté par (page perso) . Modéré par Xavier Teyssier.
Tags :
22
19
mar.
2011
Java

Depuis ce début d’année, SIP Communicator se nomme désormais « Jitsi » (qui signifie « câbles » en bulgare).
Ce changement de nom s’explique par le fait que SIP Communicator n’est plus seulement un client SIP depuis l’ajout de la gestion des appels audio via XMPP / Jingle, en fin d’année 2010.

En outre, pour la cinquième année consécutive, Jitsi a été sélectionné pour le Google Summer of Code : plusieurs sujets sont proposés, dont certains en collaboration avec les projets SEMS et Kamailio (OpenSER), il ne reste plus qu’à faire son choix !

Sortie de Scala 2.8 !

Posté par (page perso) . Modéré par Benoît Sibaud.
Tags :
21
15
juil.
2010
Java
La version finale de Scala 2.8 est sortie !

Scala est un langage de programmation très évolué. Il se compile en bytecode Java ou en .Net. La compatibilité avec Java est telle qu'il est possible d'utiliser des classes écrites en Java à partir de Scala et vice-versa.

Ce langage intègre de façon naturelle des fonctionnalités issues des langages orientés-objets et des langages fonctionnels. Les apports de la programmation fonctionnelle aux langages objets, plus répandus, sont multiples et deviennent rapidement indispensables une fois qu'on y est habitué.

En particulier, il est maintenant possible d'écrire des codes à la fois très concis, comme en Ruby ou Python, tout en ayant beaucoup plus de sûreté grâce à un typage statique fort. Cela est rendu possible grâce à un système très avancé de gestion et d'inférence des types.

Plus d'infos sur cette nouvelle version dans la suite de la dépêche.

NdM : Le code source de Scala est sous une licence propre au projet mais semblable à la licence BSD.

Présentation de JORAM

Posté par (page perso) . Édité par Benoît Sibaud, Nÿco, baud123 et heltem. Modéré par patrick_g. Licence CC by-sa
Tags : aucun
21
4
fév.
2013
Java

Un peu moins de trois mois après la sortie de sa dernière version, et à la suite de demandes de la part de la communauté DLFP, il est temps pour moi de vous présenter le logiciel développé au sein de mon entreprise : JORAM, un intergiciel à messages diffusé sous licence libre (LGPL).

Présentation

JORAM (Java Open Reliable Asynchronous Middleware) est un intergiciel à messages, ou MOM, qui implante l'API JMS (Java Message Service) et le protocole AMQP (Advanced Message queuing Protocol). Cet intergiciel est le fruit du travail de la société française ScalAgent Distributed Technologies et est distribué sous licence LGPL. JORAM est en exploitation dans de nombreux environnements opérationnels où il est utilisé de deux façons complémentaires :

  • comme un composant de messagerie asynchrone intégré dans un serveur d’applications JEE. Il est intégré en tant qu'implantation de JMS au sein du serveur d'application Java EE JOnAS. Il est également utilisé dans d'autres serveurs d'applications propriétaires ou libres, tels que WebSphere ou encore JBoss.
  • comme un système de messagerie Java autonome entre des applications développées pour des environnements variés (de J2EE à J2ME). C'est donc une alternative libre aux bus d'entreprise propriétaires, tels que MQSeries.

Pour schématiser, on pourrait dire qu'il permet de faire dans le monde Java ce que D-Bus permet de faire dans le monde Linux : il permet d'interconnecter, via des messages et de façon asynchrone, différents programmes exécutés sur une ou plusieurs machines, lesquelles pouvant être reliées par des topologies réseaux hétérogènes (LAN, WAN avec firewall, etc.), et ce, avec des fonctions de persistance qui garantissent une livraison fiable des messages. Le projet JORAM est hébergé par le consortium OW2, dédié à la promotion et à la diffusion de logiciel d'infrastructure libre dans le monde.

libHprim : bibliothèque de lecture HPRIM

Posté par . Édité par Xavier Claude, Nÿco et Xavier Teyssier. Modéré par Nÿco. Licence CC by-sa
Tags :
21
23
fév.
2013
Java

libHprim est une bibliothèque de lecture de fichiers Hprim santé. Initialement développé comme un simple outil pour comprendre les problèmes existants dans les envois de fichiers de biologie, cet outil s'est transformé en une véritable bibliothèque que j'ai développée sur mon temps libre et que je propose sous licence LGPL.

Silverpeas 5.10.1 est sortie

20
29
août
2012
Java

C'est l'été mais tout le monde ne s'est pas arrêté de travailler et donc c'est avec grand plaisir que je vous annonce la sortie de Silverpeas 5.10.1. Il s'agit d'une solution libre en Java pour mettre en place un intranet/extranet collaboratif, avec plusieurs dizaines d'applications prêtes à être déployées et utilisées directement.

NdM : logiciel sous licence GNU Affero.

Elasticsearch sort en version 0.90

20
29
avr.
2013
Java

Elasticsearch est un système distribué, RESTful, reposant sur le moteur de recherche Apache Lucene. Il est développé par Shay Banon et est publié sous la licence Apache Software. Elasticsearch est développé en Java.

ElasticSearch est une réécriture complète du moteur de recherche Compass par son auteur pour prendre en charge au cœur de l’application la montée en charge horizontale (scalability) ; cette réécriture commencée début 2010 lui permet aussi de profiter des avancées du moteur d’index Lucene. Pour plus de détail, lire The Future of Compass & ElasticSearch.

Sortie de la version 2.10 de Sonar

Posté par . Modéré par Lucas Bonnet. Licence CC by-sa
19
3
sept.
2011
Java

Sonar est une plate‐forme libre (sous licence LGPL v3) permettant de gérer la qualité du code source. Elle agrège et présente d’une manière digeste et utile les résultats de différents outils de qualité logicielle. D’abord limité à Java en utilisant les outils classiques (Findbugs, Cobertura, PMD, etc.), Sonar peut maintenant gérer la qualité de projets utilisant d’autres langages : PHP, C# et autres, grâce à des greffons libres ou propriétaires pour certains, comme Brrrr…, Cobol, VB6, C, PL/SQL, ou encore ABAP.

La version 2.10 de Sonar vient de sortir, et puisqu’il n’y a pas eu de dépêche depuis la 2.4, il y a pas mal de nouveautés à présenter (voir la seconde partie de la dépêche). À noter que la version 2.11 devrait voir la fonctionnalité que j’attends depuis longtemps : la détection du code dupliqué à travers différents projets. Précédemment, cette fonctionnalité était limitée à rechercher du code dupliqué à l’intérieur de chaque projet.

N’hésitez pas à tester la version live de Sonar, prénommée Nemo, qui recueille les informations de qualité pour différents projets open source. En outre, elle est maintenant en français si votre navigateur est paramétré pour privilégier le français face à l’anglais :). Je vous encourage à l’essayer, ce projet est vraiment prometteur.

JQM, un serveur de batchs asynchrones en Java

Posté par . Édité par Benoît Sibaud, Sebastien, palm123 et Xavier Claude. Modéré par Ontologia. Licence CC by-sa
Tags :
19
24
déc.
2013
Java

JQM (Job Queue Management) est un gestionnaire de batch sous licence Apache qui permet de traiter sur des noeuds de traitement répartis toutes les tâches potentiellement longues qui ne sont pas désirables dans un serveur d'application à travers un système de files d'attente. Ce logiciel s'adresse à toute application qui souhaite gérer l'exécution de ses tâches hors du serveur d'application.

Une tâche peut être déclenchée depuis un appel Web Service ou une API par une application web, un ordonnanceur ou un flux d'interface.

L'outil propose de nombreuses fonctionnalités comme l’arrêt d’une tâche, la récupération de fichiers générés, la priorisation d’une tâche et bien d’autres. JQM a été développé en Java SE 1.6, utilise Hibernate/JPA 2.0 comme ORM, et une base de donnée comme référentiel de configuration et file d'attente des traitements. JQM est compatible avec les bases HSQL, MySQL et Oracle, les serveurs d’application WebSphere et Glassfish (prochainement Tomcat) pour l'API cliente et gère les ressources JNDI pour les bases de données et les brokers de messages.

L'outil est compatible avec les projets Maven et tout particulièrement la gestion des dépendances et des projets parents.

Play!, un autre framework web Java

Posté par . Modéré par j.
Tags :
18
4
sept.
2008
Java
Play! est un framework de développement d'application Web en Java un peu à contre-courant des framework Java classiques.

Nous n'avons pas essayé de coller aux sacro-saints « standard J2EE entreprise », mais nous nous sommes plutôt demandé : « comment simplifier le développement d'application Web avec Java, d'ordinaire si lourd ? »

Nous sommes arrivés à un framework Java MVC simple avec quelques spécificités :
  • Play! travaille directement avec les fichiers sources (.java) et non avec des classes compilées (.class). Les phases de compilation et de déploiement sont donc inexistantes ce qui simplifie réellement le cycle de développement ;
  • Le framework n'utilise pas l'API Servlet. À la place nous avons utilisé un framework HTTP asynchrone basé sur mina (http://mina.apache.org). D'une part l'API est plus agréable à utiliser que l'API Servlet car elle donne directement accès à la pile HTTP, d'autre part, en terme de performances cela permet au moteur de traiter plus de requêtes avec moins de thread, donc de mieux utiliser les ressources ;
  • Les rapports d'erreur essaient d'être le plus précis possible. À la place des traditionnelles StackTrace Java illisibles, Play! affiche directement l'erreur avec le code source associé et la ligne incriminée ;
  • Un modèle entièrement Stateless (sans état sur le serveur) qui convient bien mieux au Web et permet par exemple de gérer plus simplement les traditionnels problèmes de boutons Back ou Refresh... En outre, cela permet de distribuer une application Play! sur plusieurs JVM ou plusieurs serveurs de manière naturelle ;
Le framework est bien sûr Open Source, distribué sous licence Apache 2 et hébergé sur Launchpad.

La version courante n'est pas encore finale mais largement assez stable pour créer de vraies applications et les mettre en production. Le tutoriel vous permettra de vous faire rapidement une idée de ce qu'est une application Play!