Pour tes polices, ça dépend aussi de l'environnement de bureau que tu utilises: les versions récentes de GNOME codent toujours 96 dpi en dur quelle que soit la valeur fournie par le pilote (parce qu'ils ne font plus confiance à cette dernière), dans KDE, c'est configurable (comme tout), mais respecte la valeur fournie par le pilote par défaut. Mais je ne sais pas si OpenJDK respecte la valeur fournie par l'environnement (exportée dans les XSettings par gnome-settings-daemon sous GNOME ou par xsettings-kde (que je conseille d'installer si ce n'est pas encore le cas) sous KDE) ou s'il a encore un réglage à sa sauce. Les toolkits standard (Qt, GTK+) respectent les réglages de l'environnement de bureau, mais Java est toujours un peu "bizarre".
-OpenJDK +le JDK/JRE de Sun, version Open ou non
C'est pratiquement le même code. S'il y a des différences, c'est que les distributions ont modifié OpenJDK pour être moins bizarre, donc si tu crois que l'édition propriétaire s'intègre mieux, tu es totalement à côté de la plaque.
Les problèmes avec OpenJDK, c'était surtout du code non-standard qui utilise des interfaces internes à l'implémentation (notamment com.sun.* et sun.*), implémentation qui a changé par endroits pour des raisons de licence. (Et encore, ce problème était encore plus fréquent avec GNU Classpath qui était une implémentation totalement différente.) Maintenant, avec Java 7, ils ont viré ces interfaces non-standard aussi de l'édition propriétaire pour éliminer les différences entre les 2 versions, et les développeurs gueulent que c'est "incompatible", mais AMHA ils ont bien fait. Ces interfaces n'auraient jamais dû être utilisées, et maintenant les développeurs sont obligés de rendre leur code portable comme l'était le but de Java dès le départ. (Et pour les interfaces internes qui restent dans Java 7 et OpenJDK, le compilateur se plaint maintenant avec un avertissement (warning) quand on essaie de les utiliser.)
Niveau intégration avec le système, IcedTea (la version de OpenJDK distribuée en pratique) a toujours été en avance sur l'édition propriétaire.
vince Le 29/05/2012 à 14:57 C'est pas comme ça que les "pros" voient les choses : ils ont mis "java 6" dans les cibles supportées et si un client demande une cible non supportée, le portage sera à ses frais... (et comme on l'expliquait -avec bien du mal- à un ex collègue : même si une techno de cette année permet de faire tout proprement tiptop, on ne peut pas se permettre de réécrire ce qui a été fait il y a dix ans si aucun besoin métier ne nous y contraint...)
Le problème, c'est surtout que le code non-standard s'est retrouvé à des endroits (applets Java sur des sites web, par exemple) où on a vraiment besoin de code portable, ou du moins compatible avec OpenJDK (parce que dans le monde des distributions GNU/Linux, ce n'est pas toi qui choisis la VM qui fera tourner ton application, ni même ton utilisateur, mais la distribution qu'il utilise! Et la plupart des distributions ont choisi OpenJDK pour des raisons de licence évidentes), et donc Oracle a fait ce qui était de plus logique pour résoudre ce problème. De plus, ça leur permet d'utiliser le même code pour OpenJDK et l'édition propriétaire, donc ils ont moins de code à maintenir, et les utilisateurs d'OpenJDK ne sont plus confrontés à des incompatibilités gratuites. Bref, tout le monde y gagne, sauf évidemment les développeurs qui ont abusé des interfaces privées.
vince Le 29/05/2012 à 17:23 ou bien (et ça sera probablement le cas) ils se contenteront d'un warning "attention, la cible open jdk n'est pas officiellement supportée"
C'est bien pour ça que c'est important que les interfaces en question soient retirées de toutes les éditions comme Oracle l'a fait. Les sites ne pourront pas demander Java 6 pour l'éternité.
vince Le 29/05/2012 à 17:47 oui et non, même si c'est compatible avec prout-caca-jdk en théorie, tant qu'une recette n'aura pas été faite, la cible ne pourra pas être réputée "supportée" par l'éditeur.
Nil Le 29/05/2012 à 17:48 Le problème, c'est surtout qu'on ne puisse pas avoir plusieurs versions majeures de JVM de façon concomitante dans un même navigateur... c'est hallucinant qu'on ne puisse pas avoir un attribut du genre java_version = "n" au moment de l'appel de l'applet (ou qu'il n'y ait pas un "preferred version" en dur directement dans les binaires) et qu'on ne puisse pas avoir plein de JVM actives à la fois (voire manuellement sélectionnables via un plug-in qui intercepterait les lancements d'applets).
vince Le 29/05/2012 à 17:58 c'est vrai, d'autant que, s'agissant de vm, il ne devrait pas y avoir de restriction sur le nombre et le type...
Parce que c'est lourd? Parce qu'on ne veut pas avoir affaire aux problèmes de licence des anciennes versions? Etc.
Tout code conforme à la spécification Java marche sans problèmes avec la version la plus récente. C'est la spécification qu'il fallait viser, pas une implémentation particulière.
Pen^2 Le 29/05/2012 à 18:16 Ou au minimum, en vue du portage, utiliser des ram calls pour ne pas disperser ce code technique !
Nil > ça poserait aussi de gros problèmes de sécurité : si les applets pouvaient choisir une version de la JVM, suffirait de demander une ancienne version pour pouvoir réexploiter les failles corrigées dans les versions ultérieures (et backporter les correctifs n'est pas réaliste)
—
Zeroblog —
« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » —
Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » —
GT TurboJe ne connais pas beaucoup de boîtes qui font du support logiciel sur 10 ans, excepté dans des cas très spécifiques ; déjà que souvent, on peut s'estimer heureux quand on a 5 ans...
Et puis ça reste un pis-aller pas terrible. Si tu fais une API rétrocompatible, les anciens softs profitent aussi de certaines évolutions sans que ça demande de boulot supplémentaire. S'il y a des problèmes de compatibilité insoluble, tu peux aussi faire une API versionnée avec une base de code unique (si une appli demande une version précédente, les trucs qui sont incompatibles sont émulés en utilisant des wrappers). C'est mieux que de se traîner X versions de la base de code.
—
Zeroblog —
« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » —
Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » —
GT Turbooui on peut faire un serveur sync local en 3 coups de cuillère à php, j'ai fait, c'est un serveur tiers, pas celui de mozilla qui était trop complexe.
mais faut avoir les ressources anéfé.