NdM : Merci à galaux pour son journal à l'origine de la dépêche. Plusieurs chantiers majeurs d'évolutions ont donc été lancés en interne autour d'OpenJDK. Mais Sun a aussi voulu intégrer la communauté Java dans le projet pour prendre en compte le retour d'expérience des utilisateurs quotidiens de sa plate-forme. À cet effet, Sun a initié le projet Coin dans le but de lister les "petites" améliorations qui pourraient être intégrées. Sun a donc misé sur le débat ouvert puisqu'il était permis à tous de soumettre ses idées d'évolution. Et le moins que l'on puisse dire est que ce "projet autour du projet" a porté ses fruits puisque ce n'est pas moins de 70 propositions qui ont été soumises (voir cet article du blog d'Alex Miller qui en a fait une liste exhaustive et documentée). S'en est suivie une longue période de débats, mais après quelques rebondissements de dernière minutes, nous connaissons (enfin) les 5 propositions de la communauté qui ont été retenues :
- Possibilité d'utiliser des String dans les switch
Tout développeur Java s'est déjà retrouvé dans l'impossibilité d'utiliser des chaînes de caractères dans les structures switch. Cette fonctionnalité bien pratique existait depuis longtemps dans bien des langages et ce sera bientôt chose faite pour Java.
- Gestion automatique des ressources
La mémoire est gérée automatiquement en Java et cela dans le but de soulager le développeur dans le développement d'applications haut niveau. Cependant cela n'était pas le cas des autres ressources comme les documents qu'il fallait ouvrir, et surtout, fermer à la main. Cette amélioration de Java 7 vise à automatiser cette gestion même s'il est peu probable que l'on en arrive au niveau de gestion de la mémoire.
- Amélioration des instanciations génériques
Voici une nouveauté qui ne sera en fait qu'une simplification d'écriture dans le but d'alléger le code. Il ne sera désormais plus nécessaire de spécifier le type des éléments de listes génériques lors de la déclaration ET de l'allocation, celle-ci devenant évidente.
Voici un exemple avec la syntaxe actuelle :
List<Integer, List> liste = new ArrayList<Integer, List>();
Java 7 permettra d'écrire :
List<Integer, List> liste = new ArrayList<>();
- Simplification des varargs
Voici une autre modification qui a pour but de simplifier la vie du développeur sans pour autant apporter de grande nouveauté. En l'occurrence l'emploi du code suivant qui était jusqu'alors sujet au warning "uses unchecked or unsafe operations".
static List asList(T... elements) { ... }
static List stringFactories() {
Callable a, b, c;
...
*// Warning: **"uses unchecked or unsafe operations"*
return asList(a, b, c);
}
- Support de langages de script
Un des sujets d'attentes était la possibilité d'intégrer des langages de script comme le Ruby et le Python dans la JVM. C'est désormais le cas via la JSR 292 (Java Specification Request). Ceci est expliqué plus en détail dans ce mail d'archive de la mailing list du projet Coin.
- Closures ou non ?
Comme expliqué plus haut dans l'article, des évènements de dernières minutes sont venus créer des remous dans la communauté Java. Beaucoup de membres espéraient en effet que la proposition d'intégration des Closure allait être acceptée. Cependant celles-ci ne figuraient pas dans la liste des améliorations retenues par le projet Coin pour Java 7. Rebondissement lors de la conférence Devoxx 2009 : Mark Reinhold, ingénieur chez Sun sur le projet OpenJDK annonçait finalement leur acceptation. Depuis aucune information n'est venue confirmer ou infirmer ce dernier commentaire.
Pour mémoire, les closures, qui existent déjà dans nombre de langages comme le C++, sont des sous-fonctions définies dans le corps de fonctions et qui portent sur les variables locales de cette fonction.
Sun développe aussi des efforts en direction des performances de la JVM comme en témoigne ce projet de compression des adresses des pointeurs 64 bits. Mais une amélioration plus intéressante encore se situe au niveau du Garbage Collector, l'outil de libération mémoire des objets du développeur. Le nouveau Garbage Collector "Garbage First G1" devrait passer moins de temps en pause et ainsi d'améliorer l'efficacité de la JVM. Espérons que ces promesses se réaliseront : le Garbage Collector joue un rôle sensible et est souvent un acteur majeur dans nombre de cas d'applications aux performances déteriorées. Dans la veine de ces améliorations, citons aussi le classloader et la concurrence dans les accès IO qui devraient être revus ainsi qu'une bonne partie du chapitre 2D des applications client léger Java.
Autre grande nouveauté du langage Java à proprement parler : la possibilité d'annoter les types afin de leur adjoindre certaines caractéristiques. L'auteur de la JSR en cause propose des exemples très parlants dont la seule vue devrait inspirer les développeurs Java tant ils produisent du code simple et clair :
public int size() @Readonly { ... }
Map<@NonNull String, @NonEmpty List> files;
Au sujet des tableaux :
Document[@Readonly] docs1;
Document[][@Readonly] docs2 = new Document[2][@Readonly 12];
Cast de type :
myString = (@NonNull String)myObject;
Tests de types :
boolean isNonNull = myString instanceof @NonNull String;
Création d'objet :
new @NonEmpty @Readonly List(myNonEmptyStringSet)
Clauses throws
void monitorTemperature() throws @Critical TemperatureException { ... }
Dernière amélioration majeure qui va sûrement retenir l'attention des utilisateurs de Java : la modularisation de la JVM. Le projet Jigsaw attendait depuis longtemps dans les cartons de Sun mais n'avait pas réussi à voir le jour tant ses implications sont importantes. La JVM de Sun est devenue très volumineuse et cela se ressent lors de son téléchargement et de son lancement. Ce projet a pour but de modulariser la JVM pour permettre de ne faire télécharger à l'utilisateur que ce dont il a besoin un peu à la manière d'un distribution Linux. En cas d'utilisation d'une nouvelle application, il suffirait alors de compléter la JVM par les modules qui n'ont pas encore été téléchargés la première fois et dont cette nouvelle application a besoin. L'apport en terme de souplesse de lancement est tout aussi prometteur.
Voilà donc de bien belles promesses qui ne demandent plus qu'à être testées dans les snapshots disponibles de Java 7.
Aller plus loin
- Project Coin (1 clic)
- Snapshots Java 7 (1 clic)
- Project Jigsaw (1 clic)
- Site Java pour les développeurs (1 clic)
- Journal à l'origine de la dépêche (0 clic)
# Cf le journal
Posté par Infernal Quack (site web personnel) . Évalué à 3.
L'association LinuxFr ne saurait être tenue responsable des propos légalement repréhensibles ou faisant allusion à l'évêque de Rome, au chef de l'Église catholique romaine ou au chef temporel de l'État du Vatican et se trouvant dans ce commentaire
[^] # Re: Cf le journal
Posté par Bruno Michel (site web personnel) . Évalué à 3.
Exactement. À chaque fois que l'on édite la dépêche, il retransforme les entités html en symboles, ce qui produit du HTML pas valide qui s'affiche mal dans les navigateurs.
[^] # Re: Cf le journal
Posté par Infernal Quack (site web personnel) . Évalué à 8.
- soit il faut corriger Templeet,
- soit il faut accélérer la refonte de DLFP
/o\ pas taper !
L'association LinuxFr ne saurait être tenue responsable des propos légalement repréhensibles ou faisant allusion à l'évêque de Rome, au chef de l'Église catholique romaine ou au chef temporel de l'État du Vatican et se trouvant dans ce commentaire
# l'utilité de la modularisation?
Posté par collinm (site web personnel) . Évalué à 2.
à quoi bon la modularisation?
l'utilisateur a déjà tout le nécessaire...
www.solutions-norenda.com
[^] # Re: l'utilité de la modularisation?
Posté par ckyl . Évalué à 3.
Le nettoyage permet de rationaliser les dépendances, ce qui devrait au final finir par permettre de gagner en performance et en empreinte mémoire. Lance un hello world ou une petite applis avec -verbose:class pour voir un peu le nombres de classes chargées.
[^] # Re: l'utilité de la modularisation?
Posté par windu.2b . Évalué à 4.
[windu@windu-PC src]$ java -verbose:class Test
[Opened /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Object from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.Serializable from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Comparable from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.CharSequence from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.String from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.reflect.GenericDeclaration from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.reflect.Type from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.reflect.AnnotatedElement from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Class from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Cloneable from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ClassLoader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.System from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Throwable from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Error from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ThreadDeath from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Exception from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.RuntimeException from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.ProtectionDomain from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.AccessControlContext from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ClassNotFoundException from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.LinkageError from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.NoClassDefFoundError from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ClassCastException from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ArrayStoreException from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.VirtualMachineError from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.OutOfMemoryError from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.StackOverflowError from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.IllegalMonitorStateException from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ref.Reference from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ref.SoftReference from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ref.WeakReference from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ref.FinalReference from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ref.PhantomReference from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ref.Finalizer from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Runnable from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Thread from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Thread$UncaughtExceptionHandler from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ThreadGroup from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Map from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Dictionary from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Hashtable from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Properties from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.reflect.AccessibleObject from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.reflect.Member from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.reflect.Field from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.reflect.Method from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.reflect.Constructor from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.MagicAccessorImpl from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.MethodAccessor from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.MethodAccessorImpl from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.ConstructorAccessor from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.ConstructorAccessorImpl from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.DelegatingClassLoader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.ConstantPool from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.FieldAccessor from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.FieldAccessorImpl from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.UnsafeFieldAccessorImpl from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.UnsafeStaticFieldAccessorImpl from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Iterable from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Collection from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.List from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.RandomAccess from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.AbstractCollection from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.AbstractList from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Vector from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Appendable from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.AbstractStringBuilder from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.StringBuffer from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.StackTraceElement from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.Buffer from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Boolean from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Character from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Number from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Float from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Double from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Byte from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Short from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Integer from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Long from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.NullPointerException from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ArithmeticException from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.ObjectStreamField from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Comparator from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.String$CaseInsensitiveComparator from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.Guard from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.Permission from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.BasicPermission from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.RuntimePermission from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.AbstractMap from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.SoftCache from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ref.ReferenceQueue from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ref.ReferenceQueue$Null from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ref.ReferenceQueue$Lock from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.HashMap from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.annotation.Annotation from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Map$Entry from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.HashMap$Entry from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.AccessController from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.reflect.ReflectPermission from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.PrivilegedAction from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.ReflectionFactory$GetReflectionFactoryAction from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Stack from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.ReflectionFactory from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ref.Reference$Lock from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ref.Reference$ReferenceHandler from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ref.Finalizer$FinalizerThread from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Hashtable$Entry from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.charset.Charset from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.charset.spi.CharsetProvider from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.nio.cs.FastCharsetProvider from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.nio.cs.StandardCharsets from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.util.PreHashedMap from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.nio.cs.StandardCharsets$Aliases from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.nio.cs.StandardCharsets$Classes from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.nio.cs.StandardCharsets$Cache from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ThreadLocal from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.atomic.AtomicInteger from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.Unsafe from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.IncompatibleClassChangeError from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.NoSuchMethodError from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.Reflection from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Math from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Set from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.AbstractSet from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.HashMap$EntrySet from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Iterator from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.HashMap$HashIterator from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.HashMap$EntryIterator from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Class$3 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.reflect.Modifier from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.LangReflectAccess from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.reflect.ReflectAccess from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Arrays from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.StringBuilder from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.nio.cs.HistoricallyNamedCharset from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.nio.cs.Unicode from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.nio.cs.UTF_8 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Class$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.ReflectionFactory$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.NativeConstructorAccessorImpl from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.DelegatingConstructorAccessorImpl from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.VM from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.StringCoding from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ThreadLocal$ThreadLocalMap from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ThreadLocal$ThreadLocalMap$Entry from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.StringCoding$StringDecoder from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.charset.CharsetDecoder from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.nio.cs.UTF_8$Decoder from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.charset.CodingErrorAction from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.ByteBuffer from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.HeapByteBuffer from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.Bits from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.ByteOrder from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Readable from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.CharBuffer from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.HeapCharBuffer from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.charset.CoderResult from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.charset.CoderResult$Cache from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.charset.CoderResult$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.charset.CoderResult$2 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.Version from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.Closeable from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.InputStream from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.FileInputStream from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.FileDescriptor from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.JavaIOFileDescriptorAccess from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.FileDescriptor$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.SharedSecrets from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.Flushable from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.OutputStream from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.FileOutputStream from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.FilterInputStream from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.BufferedInputStream from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.atomic.AtomicReferenceFieldUpdater from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.reflect.misc.ReflectUtil from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.FilterOutputStream from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.PrintStream from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.BufferedOutputStream from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.Writer from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.OutputStreamWriter from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.nio.cs.StreamEncoder from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.security.action.GetPropertyAction from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.nio.charset.CharsetEncoder from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.nio.cs.UTF_8$Encoder from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.BufferedWriter from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Runtime from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.File from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.FileSystem from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.UnixFileSystem from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.ExpiringCache from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.LinkedHashMap from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.ExpiringCache$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.LinkedHashMap$Entry from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.JavaIODeleteOnExitAccess from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.File$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ClassLoader$3 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.StringCoding$StringEncoder from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.ExpiringCache$Entry from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ClassLoader$NativeLibrary from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Terminator from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.SignalHandler from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Terminator$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.Signal from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.NativeSignalHandler from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.Console from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.JavaIOAccess from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.Console$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.Console$1$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Shutdown from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.ArrayList from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Shutdown$Lock from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.ApplicationShutdownHooks from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.IdentityHashMap from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.OSEnvironment from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.JavaLangAccess from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.System$2 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Compiler from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.Compiler$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.Launcher from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.net.URLStreamHandlerFactory from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.Launcher$Factory from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.SecureClassLoader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.net.URLClassLoader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.Launcher$ExtClassLoader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.security.util.Debug from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.JavaNetAccess from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.net.URLClassLoader$7 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Enumeration from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.StringTokenizer from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.PrivilegedExceptionAction from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.Launcher$ExtClassLoader$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.MetaIndex from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.Reader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.BufferedReader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.InputStreamReader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.FileReader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.nio.cs.StreamDecoder from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.reflect.Array from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.net.www.ParseUtil from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.BitSet from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.ObjectStreamClass from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.net.URL from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Locale from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.ConcurrentMap from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.ConcurrentHashMap from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.locks.Lock from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.locks.ReentrantLock from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.ConcurrentHashMap$Segment from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.locks.AbstractOwnableSynchronizer from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.locks.AbstractQueuedSynchronizer from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.locks.ReentrantLock$Sync from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.locks.ReentrantLock$NonfairSync from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.locks.AbstractQueuedSynchronizer$Node from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.concurrent.ConcurrentHashMap$HashEntry from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.CharacterData from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.CharacterDataLatin1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.net.Parts from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.net.URLStreamHandler from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.net.www.protocol.file.Handler from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.HashSet from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.URLClassPath from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.net.www.protocol.jar.Handler from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.Launcher$AppClassLoader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.Launcher$AppClassLoader$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.lang.SystemClassLoaderAction from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.net.URLClassLoader$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.URLClassPath$3 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.URLClassPath$Loader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.URLClassPath$JarLoader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.PrivilegedActionException from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.URLClassPath$FileLoader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.Resource from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.URLClassPath$FileLoader$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.nio.ByteBuffered from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.CodeSource from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.PermissionCollection from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.Permissions from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.net.URLConnection from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.net.www.URLConnection from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.net.www.protocol.file.FileURLConnection from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.net.ContentHandler from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.net.UnknownContentHandler from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.net.www.MessageHeader from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.FilePermission from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.FilePermission$1 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.Policy from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.security.provider.PolicyFile from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.Policy$UnsupportedEmptyCollection from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.FilePermissionCollection from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.AllPermission from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.UnresolvedPermission from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.BasicPermissionCollection from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded sun.misc.JavaSecurityProtectionDomainAccess from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.ProtectionDomain$2 from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.ProtectionDomain$Key from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.Principal from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.security.cert.Certificate from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded Test from file:/home/windu/workspace/JCaddie/src/]
Hello world !
[Loaded java.util.ArrayList$Itr from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.IdentityHashMap$KeySet from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.IdentityHashMap$IdentityHashMapIterator from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.IdentityHashMap$KeyIterator from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.io.DeleteOnExitHook from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.LinkedHashSet from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.HashMap$KeySet from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.LinkedHashMap$LinkedHashIterator from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.LinkedHashMap$KeyIterator from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Collections from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Collections$EmptySet from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Collections$EmptyList from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Loaded java.util.Collections$EmptyMap from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
Au passage, on remarque que l'affichage du texte a lieu avant que la JVM n'ait fini de charger les classes...
[^] # Re: l'utilité de la modularisation?
Posté par kowalsky . Évalué à 7.
[^] # Re: l'utilité de la modularisation?
Posté par NicoToub . Évalué à 3.
[^] # Re: l'utilité de la modularisation?
Posté par hsyl20 (site web personnel) . Évalué à 2.
Si ça pouvait améliorer la vitesse de démarrage de la JVM pour les applications WebStart, ce serait génial. Peut-être qu'on pourrait enfin avoir de vraies applications WebStart à la place des "applications web 2.0" écrites dans des langages en mousse non adaptés et pas vraiment portables (différences de rendus, différentes fonctions supportées...) et qui s'exécutent dans des VM navigateurs super lents car pas faits pour ça, qui en plus utilisent un protocole réseau non adapté (HTTP), sous-exploitent TCP, ignorent UDP, et réinventent la gestion des fenêtres/onglets et autres widgets alors que ça n'est pas leur rôle.
Bref tout ce qui fait qu'en 2010 on arrive à faire ramer un Core I7 en surfant sur ce qu'est devenu le Web (et oui une appli Java est au moins aussi rapide qu'un firefox exécutant du JavaScript, et sans parler de Flash).
À quand le support de la 3D accélérée directement dans HTML pour pouvoir faire des applications comme http://bytonic.de/html/jake2_webstart.html (qui existe depuis plus de 3 ans)...
[^] # Re: l'utilité de la modularisation?
Posté par claudex . Évalué à 4.
Mais elle est 1000 fois moins intégrée à la page, si tu veux pouvoir manipuler les éléments de ta page, utiliser les fonctionnalités du navigateur (comme retenir le mot de passe, ...), c'est complètement impossible. Autant refaire les pages entièrement en Java ou en Flash: ça existe déjà et c'est pénible au possible.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: l'utilité de la modularisation?
Posté par hsyl20 (site web personnel) . Évalué à 10.
Ce que je voulais dire c'est qu'on est en train de réinventer, en se basant sur des technologies inadaptées, ce qui existe déjà et qui a été conçu pour. Quand on voit ce que prévoit HTML5, c'est du n'importe quoi :
* API for playing of video and audio which can be used with the new video and audio elements.
* An API that enables offline Web applications.
* An API that allows a Web application to register itself for certain protocols or media types.
* Editing API in combination with a new global contenteditable attribute.
* Drag & drop API in combination with a draggable attribute.
* API that exposes the history and allows pages to add to it to prevent breaking the back button.
Bref je suis pour qu'on sépare clairement le Web simple et statique (textes + images + vidéos, liens = document) des applications qui utilisent Internet. Le mélange des genres sans avoir préalablement réfléchi au problème devient une usine à gaz...
[^] # Re: l'utilité de la modularisation?
Posté par Gniarf . Évalué à 2.
http://www.mail-archive.com/full-disclosure@lists.grok.org.u(...)
bah oui, quand je vois ce genre de trucs passer, en 2010, y'a de quoi se fâcher
(et je passe sur le précédent qui en gros utilisait une option -Xquelque chose qui permettait de charger une autre lib ou dll de VM que celle installée, option non documentée et normalement utilisée seulement et exclusivement par les développeurs de la JVM, c'est à dire un outil de debug mais seulement à leur intention. alors bon ce genre de build en version debug et trouée par défaut en centaines de millions d'exemplaires dans la nature...)
[^] # Re: l'utilité de la modularisation?
Posté par hsyl20 (site web personnel) . Évalué à 4.
[^] # Re: l'utilité de la modularisation?
Posté par auve . Évalué à 3.
À quand ? Pas plus tard que le mois dernier: http://code.google.com/p/quake2-gwt-port/
[^] # Re: l'utilité de la modularisation?
Posté par barmic . Évalué à 6.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: l'utilité de la modularisation?
Posté par yellowiscool . Évalué à 3.
Envoyé depuis mon lapin.
# Pas compris
Posté par enclair . Évalué à 1.
public int size() @Readonly { ... }
Ça fait quoi ?
(size() est une fonction, qui retourne un int, mais je ne comprends pas le @Readonly).
[^] # Re: Pas compris
Posté par __o . Évalué à 2.
Par contre le lien dit que ce ne sont que des exemples et qu'aucune annotation n'est proposée; que ça ne change pas la sémantique de java au moment de la compilation ni au runtime.
# Qu'en est-il...
Posté par enclair . Évalué à 3.
C'est à dire qu'à la déclaration d'un attribut d'une classe, on disait s'il était accessible en lecture seulement, écriture seulement, ou les deux.
Bref on y accédait avec o.x, au lieu de o.getX() ou o.setX()
Vous savez ce qu'il en est ?
[^] # Re: Qu'en est-il...
Posté par collinm (site web personnel) . Évalué à 2.
de toute façon avec les ide, ça peut être généré automatiquement.... ce qui limite l'intérêt
www.solutions-norenda.com
[^] # Re: Qu'en est-il...
Posté par Antoine . Évalué à 10.
Toute la philosophie Java résumée en une phrase. Merci.
[^] # Re: Qu'en est-il...
Posté par collinm (site web personnel) . Évalué à 2.
je préfère qu'il mettre plutôt du temps sur des fonctionnalités vraiment utile, amélioration performance.... que de miser dans de la syntaxe bonbon
www.solutions-norenda.com
[^] # Re: Qu'en est-il...
Posté par barmic . Évalué à 5.
Je ne comprends vraiment pas cette phrase...
Sinon si un IDE est capable d'écrire cette partie du code à ta place pourquoi est ce que le compilateur ne saurait pas le faire ? Ça permet de ne pas avoir à se taper des IDE qui bouffent des ressources monstres et de permettre aux développeurs de choisir leur méthode de développement. Par exemple sur mon ordinateur (un netbook), eclipse refuse de se lancer et netbeans est extrêmement lent. J'utilise des build.xml et ça compile très vite (et je peux accepter des tant de compilation bien plus long sans problème).
Si on veut perdre l'image de langage usine à gaz, lourd et rapide comme un pachyderme, faut un peu se pencher sur la manière de développer des programmeurs et arrêter de prendre comme postulat que le développeur a internet et une machine puissante.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Qu'en est-il...
Posté par Antoine . Évalué à 1.
Je ne comprends vraiment pas cette phrase...
Normal, l'orthographe et la grammaire ne servent à rien quand tu utilises un IDE.
[^] # Re: Qu'en est-il...
Posté par tyoup . Évalué à 2.
c'est l'hôpital que se fout de la charité
[^] # Re: Qu'en est-il...
Posté par windu.2b . Évalué à 4.
"OTAN, suspend ton vol !"
"Taon va la cruche à l'eau... "
[^] # Re: Qu'en est-il...
Posté par barmic . Évalué à 2.
Tu prend un cas concret, j'ai actuellement un projet java que je développe sur mon netbook. La compilation prend 7 secondes avec ant. Ça ne me dérangerais pas énormément d'avoir 10 secondes de compilation (c'est un petit projet) ou en tout cas ça me dérange moins que d'avoir 15 secondes pour lancer l'IDE, 4 secondes quand j'ouvre un fichier ou que je change de fichier et 3 secondes quand j'enregistre un fichier.
Ce que je dis c'est que je préfère déplacer la complexité au niveau du compilateur que de l'IDE quand cela est possible. Parce que mon IDE je m'en sers en continue pendant des heures alors que le compilateur je l'utilise de manière ponctuel.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Qu'en est-il...
Posté par collinm (site web personnel) . Évalué à -1.
ça s'applique pour tous les langages qui possède des IDE
il s'en suit que tu as vraiment pas compris l'utilité de tel produit
www.solutions-norenda.com
[^] # Re: Qu'en est-il...
Posté par timid . Évalué à 2.
Sinon si un IDE est capable d'écrire cette partie du code à ta place pourquoi est ce que le compilateur ne saurait pas le faire ?
Malheureusement ca n'est pas possible, il y a des fois où tu vas être amené à écrire ce code à la main.
[^] # Re: Qu'en est-il...
Posté par Thomas Douillard . Évalué à 2.
Il faudrait que tu codes dans ton code l'équivalent du "écris cette partie du code à ma place" ou encore "lance telle commande de refactoring sur mon code" pour que le compilateur l'interprête et tout.
Or c'est pas le rôle du compilateur d'écrire du code, il fait de la transformation de code dans un autre code ... Tu peux t'attendre probablement à un ralongement des temps de compilation, ou à lancer d'autres commandes qui sont faites pour.
[^] # Re: Qu'en est-il...
Posté par tyoup . Évalué à 2.
pourquoi générer du code ? c'est perdre de l'information, la dévaloriser !
pourquoi abuser du copier/coller ? à moins d'en vouloir aux gens qui vont relire...
le but d'un langage c'est quand même d'avoir le maximum d'information tout en ayant le minimum à exprimer
[^] # Re: Qu'en est-il...
Posté par Gniarf . Évalué à 2.
genre perl, ou APL ?
alors oui, mais non...
[^] # Re: Qu'en est-il...
Posté par lasher . Évalué à 2.
[^] # Re: Qu'en est-il...
Posté par barmic . Évalué à 2.
Transformer du code d'un langage à un autre c'est générer du code.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Qu'en est-il...
Posté par Thomas Douillard . Évalué à 2.
C'est pas leur boulot à priori. Contrairement à un IDE comme eclipse qui garde le code sous forme de code, une représentation un peu plus manipulable en interne, et un "mapping" entre les deux (enfin j'imagine) ce qui lui permet de faire entre autre du refactoring et la compilation "à la volée" de juste ce qui a été modifié dans le code.
Bref, en schématisant, un compilateur c'est "texte" -> "représentation intermédiaire" -> "représentation de plus bas niveau" tandis qu'eclipse c'est "texte" <-> "représentation intermédiaire" -> "bas niveau" si je raconte pas trop de conneries.
[^] # Re: Qu'en est-il...
Posté par barmic . Évalué à 2.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Qu'en est-il...
Posté par Antoine . Évalué à 3.
Non, ça s'applique pour les programmeurs médiocres qui font du code en écriture seule (write-only). Le code informatique doit être avant tout facile à lire (par un collègue, par un contributeur, ou par toi-même dans six mois). Ton IDE rend le code facile à écrire, mais certainement pas facile à lire (puisque l'IDE est ici une excuse pour laisser passer des constructions lourdes, verbeuses et malcommodes).
[^] # Re: Qu'en est-il...
Posté par Victor . Évalué à 7.
Un IDE c'est du refactoring facile (pour rendre le code plus clair, plus élégant, plus factorisé), c'est de la navigation facile dans le code (pour le relire justement), c'est de l'intégration avec des outils de gestion de versions, de rapport de bugs, de documentation, c'est de l'aide au debuggage, profiling, etc...
Ça commence à bien faire de toujours cracher sur les IDEs quand on est passé à côté de leur intérêt !
[^] # Re: Qu'en est-il...
Posté par Matthieu . Évalué à 2.
Qu'il soit moins facile à lire parce que plus verbeux, faudra me le prouver. Je préfère un code verbeux, explicite qu'un code avec pleins de raccourcis implicites
if (toto == 1){
titi = 2;
} else {
titi = 4;
}
est pour moi plus verbeux mais plus facile à lire que :
toto = 1 ? titi=2 : titi=3;
De même que
if (toto== true)
est plus compréhensible pour moi que :
if (toto)
En résumé, ce n'est pas parce que le code est plus court qu'il est plus compréhensible rapidement. Mais il est vrai qu'un code trop long est difficile également à lire.
[^] # Re: Qu'en est-il...
Posté par tyoup . Évalué à 7.
titi = toto == 1 ? 2 : 3; // soleil
et indenter son code et ne pas oublier les commentaires
[^] # Re: Qu'en est-il...
Posté par Matthieu . Évalué à 2.
Pour l'indentation, la touche tab ne fonctionne pas comme je voudrais quand j'écris mon commentaire, j'espère que cela me servira d'excuse. PS : merci de ne pas partir sur indentation tab vs indentation espace.
[^] # Re: Qu'en est-il...
Posté par houra . Évalué à 5.
if (toto==true)
C'est une lapalissade, ou alors t'as rien compris au concept des boucles conditionnelles.
Sedullus dux et princeps Lemovicum occiditur
[^] # Re: Qu'en est-il...
Posté par Blackknight (site web personnel, Mastodon) . Évalué à 2.
if (toto)
{
//c'est la qu'on passe
}
else
{
//neverland
}
Mouais, j'ai rien du comprendre aux boucles en fait.
[^] # Re: Qu'en est-il...
Posté par Sufflope (site web personnel) . Évalué à 4.
[^] # Re: Qu'en est-il...
Posté par Antoine . Évalué à 3.
Ce n'est pas seulement une question de verbosité, c'est aussi une question d'expressivité.
Par exemple, dans un langage à fermetures, certaines choses s'expriment beaucoup plus naturellement que dans un langage sans fermetures.
Plus concrètement : prends le code d'un programme Python et écris le code équivalent en C, par exemple.
[^] # Re: Qu'en est-il...
Posté par alice . Évalué à 5.
Avec un langage avec fermeture, on code comme l'éclair?
[^] # Re: Qu'en est-il...
Posté par alice . Évalué à 2.
Un langage simple et des outils puissants permettent au développeur de facilement:
- se former.
- comprendre le codes des autres.
- ne pas hésiter à faire du refactoring, de la gestion de version, de l'analyse de code ou de l'intégration continue.
C'est ce que je constate dans mon entreprise : les développeurs Java sont plus heureux et ont le poil plus brillant.
Pour ma part, j'ai toujours aimé les langages un peu plus couillus et je lorgne vers Scala :-)
[^] # Re: Qu'en est-il...
Posté par Antoine . Évalué à 1.
Je n'ai pas l'impression que Java est un langage simple. C'est un langage qui a fait le choix de développer la bureaucratie plutôt que l'expressivité.
La grammaire de Java :
http://www.flickr.com/photos/nicksieger/280662707/
Les grammaires de C et Python :
http://www.flickr.com/photos/nicksieger/281055530/
http://www.flickr.com/photos/nicksieger/281055485/
[^] # Re: Qu'en est-il...
Posté par alice . Évalué à 5.
Je ne sais pas, mais je ne connais aucun développeur qui trouve C plus simple que Java.
[^] # Re: Qu'en est-il...
Posté par El Titi . Évalué à 4.
Je préfère un langage qui fait la différence entre des champs privés publics ou protégé et qui ne réfugie pas derrière des astuces d'implémentation.
Je préfère un langage qui ne recourt pas à des idiomes pour que sa grammaire tienne dans une image réduite de flickr
while True:
do_something()
if condition():
break
Je préfère un langage qui fait supporte pleinement l'héritage ou le multi-héritage à du duck-typing qui te pète à la tronche en prod au lieu de la compil.
Je préfère un langage qui ne pète pas tout ton code à chaque réindentation
...
[^] # Re: Qu'en est-il...
Posté par alice . Évalué à 3.
Oui, le duck typing ça fait coin.
[^] # Re: Qu'en est-il...
Posté par El Titi . Évalué à 2.
*PAN*
[^] # Re: Qu'en est-il...
Posté par barmic . Évalué à 2.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.