1710

Tout un article plein d'alarmisme, et quelques paragraphes finaux qui disent qu'en fait, rien ne va changer. Et puis ça ne concerne que Java EE, pas Java lui-même (Java SE).
Le problème c'est que depuis quelques années c'est JavaEE, qui maintient Java :
- JavaME a juste disparu depuis l'avènement de iOS et d'Android.
- Java SE pour les applets n'a jamais décollé est il est désormais complètement marginalisé suite aux problèmes de sécurité. Maintenant le HTML5/JavaScript permet de réaliser la plupart des choses que permetaient les Applets, sans plugins.
- JavaSE pour les applications desktop reste anecdotique, et Oracle ne fait plus trop d'efforts dessus depuis quelques années.
Les implémentations libres de Java EE sont très connues et s'en sortiront très bien même dans l'éventualité où ils devraient arrêter de s'appeler "Java EE".
La seule implémentation Libre vraiment bonne de est OpenJDK qui est totalement contrôlée par Oracle, et la seule qui aurait pu lui faire de l'ombre était Harmony, que Oracle a justement condamné a mort.

Le soucis des implémentations libres, c'est que Oracle garde une épée de Damoclès dessus. En effet, il reste maitre du kit de certification Java qui lui est tout sauf libre. Oracle en est le seul maitre et il y accorde l'accès de manière tout a fait discriminatoire. C'est comme cela qu'il a signé l'arrêt de mort du projet Apache Harmony qui n'a pas pu être certifié et donc été abandonné par son plus gros controbuteur IBM, car ça mettait les utilisateurs à la merci des brevets de Sun/Oracle.

Il y a certes l'OpenJDK, mais pour y contribuer, il faut céder la propriété du code a Oracle qui l'utilisera pour sa version propriétaire.
Par contre si on forke, on retrouve à nouveau dans la situation de Harmony : on ne sera probablement jamais certifié et on est donc exposé a une attaque en justice d'Oracle, ce qui est dissuasif pour toute entreprise sérieuse.
Bref c'est de la GPL, mais pas vraiment libre pour autant
avatar

1711

Uther (./1710) :
Tout un article plein d'alarmisme, et quelques paragraphes finaux qui disent qu'en fait, rien ne va changer. Et puis ça ne concerne que Java EE, pas Java lui-même (Java SE).
Le problème c'est que depuis quelques années c'est JavaEE, qui maintient Java :
- JavaME a juste disparu depuis l'avènement de iOS et d'Android.
- Java SE pour les applets n'a jamais décollé est il est désormais complètement marginalisé suite aux problèmes de sécurité. Maintenant le HTML5/JavaScript permet de réaliser la plupart des choses que permetaient les Applets, sans plugins.- JavaSE pour les applications desktop reste anecdotique, et Oracle ne fait plus trop d'efforts dessus depuis quelques années.
De nombreuses applications Java développées dans les entreprises sont du Java SE. Ce n'est pas parce qu'on est une entreprise qu'on a forcément besoin de l'EE. Et quand on fait du Java EE, on fait du Tomcat/TomEE, du JBoss, etc., et on s'en fout s'il y a écrit "Java EE" dessus ou non. Et personne n'utilise l'intégralité de Java EE, on n'utilise que les morceaux intéressants, par exemple: les servlets web (Tomcat ou équivalent), la persistence JPA (Hibernate, développé par l'équipe de JBoss), etc.
Les implémentations libres de Java EE sont très connues et s'en sortiront très bien même dans l'éventualité où ils devraient arrêter de s'appeler "Java EE".
La seule implémentation Libre vraiment bonne de est OpenJDK qui est totalement contrôlée par Oracle, et la seule qui aurait pu lui faire de l'ombre était Harmony, que Oracle a justement condamné a mort.
Là, tu parles des implémentations de Java SE. Oracle n'arrête pas de développer Java SE et OpenJDK. Moi, je parle des implémentations libres de Java EE (qui s'utilisent par dessus OpenJDK): TomEE du projet Tomcat, JBoss, …
Le soucis des implémentations libres, c'est que Oracle garde une épée de Damoclès dessus. En effet, il reste maitre du kit de certification Java qui lui est tout sauf libre. Oracle en est le seul maitre et il y accorde l'accès de manière tout a fait discriminatoire. C'est comme cela qu'il a signé l'arrêt de mort du projet Apache Harmony qui n'a pas pu être certifié et donc été abandonné par son plus gros controbuteur IBM, car ça mettait les utilisateurs à la merci des brevets de Sun/Oracle.

Il y a certes l'OpenJDK, mais pour y contribuer, il faut céder la propriété du code a Oracle qui l'utilisera pour sa version propriétaire.
Par contre si on forke, on retrouve à nouveau dans la situation de Harmony : on ne sera probablement jamais certifié et on est donc exposé a une attaque en justice d'Oracle, ce qui est dissuasif pour toute entreprise sérieuse.Bref c'est de la GPL, mais pas vraiment libre pour autant
Oracle n'a aucune chance en justice si le travail est une œuvre dérivée de code qu'ils ont publié sous GPL. La GPL permet explicitement d'utiliser les brevets que détient l'auteur qui a placé le code sous GPL quand le code sous GPL les utilise. Le procès contre Google n'a été possible que parce que Dalvik n'est pas basé sur OpenJDK (ça porte sur les APIs "plagiées"), et ils ont l'air de perdre là aussi, heureusement (et j'espère que l'appel confirmera la décision). Ce serait catastrophique pour tous les développeurs de logiciels de ne pas pouvoir créer des implémentations indépendantes compatibles d'une API, ça irait beaucoup plus loin que le Java!

Bref, l'attitude d'Oracle envers le libre est certes pourrie, mais ce n'est pas ça qui va faire disparaître le Java.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

1712

Haaaa si java pouvais disparaitre, le monde s'en porterais tellement mieux!
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

1713

Ah non, je pense que penpen disparaitrait avec sad

1714

Non c'est un penguin d'eau chaude, aucun risque!
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

1715

Godzil (./1712) :
Haaaa si java pouvais disparaitre, le monde s'en porterais tellement mieux!
J'ai bien peur que le remplacement ne serait pas mieux. sad Ce serait probablement le C#. sick
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

1716

le C# LUI est OpenSource et pas encombré d'une boite de merde et de brevets et le C# est bien plus stable et bien mieux ecrit et fini que n'est le Java, le java a toujours été une boite a emmerdes que ca soit a travers les innombrables trous de sécurité, conso mémoire, CPU etc.. Au point qu'une application poussé en java comme Minecraft est incapable de tourner sur des machines récente mais peu puissante, alors que les "clones" écrit dans un vrai language eux tournent très bien sur cette meme machine, avec pourtant des fonctionnalité similaires.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

1717

Godzil (./1716) :
pas encombré d'une boite de merde et de brevets
rotfl
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

1718

De plus, le Java est vraiment multiplateforme, en C#, une grande partie de la bibliothèque de classes est Windows-only. roll

Je ne suis pas fan du Java, mais par rapport au C#, même le Java est la panacée.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

1719

De nombreuses applications Java développées dans les entreprises sont du Java SE. Ce n'est pas parce qu'on est une entreprise qu'on a forcément besoin de l'EE. Et quand on fait du Java EE, on fait du Tomcat/TomEE, du JBoss, etc., et on s'en fout s'il y a écrit "Java EE" dessus ou non. Et personne n'utilise l'intégralité de Java EE, on n'utilise que les morceaux intéressants, par exemple: les servlets web (Tomcat ou équivalent), la persistence JPA (Hibernate, développé par l'équipe de JBoss), etc.
En effet, de ce que j'ai vu, la grande majorité de l'utilisation en entreprise est pour faire des applications web pour lesquelles Tomcat suffit.
Ça fait trait longtemps que je n'ai pas vu des applications JavaSE uniquement, mais une JVM JavaSE reste un pré-requis a tout environnement JavaEE même minimal. Et puis au delà de l'implémentation (la majorité des implémentations de JavaEE sont pas de Oracle) le rôle de Oracle est indispensable pour faire avancer le standard.
Oracle n'a aucune chance en justice si le travail est une œuvre dérivée de code qu'ils ont publié sous GPL. La GPL permet explicitement d'utiliser les brevets que détient l'auteur qui a placé le code sous GPL quand le code sous GPL les utilise.
La GPLv3 permet ça, mais Oracle a pris soin de choisir la GPLv2 exactement pour éviter cela.
avatar

1720

Même sous la GPLv2, une permission explicite de reproduire l'œuvre est donnée (sections 1-3), et il est interdit d'imposer des conditions supplémentaires (section 6), donc ça couvre implicitement aussi les brevets nécessaires. Seul les brevets tiers peuvent poser problème, c'est le but de la section 7. Le langage est plus clair dans la GPLv3, mais ça devrait être suffisamment clair dans la GPLv2; du moins, il n'y a eu aucun cas en justice où ça a été mis en doûte.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

1721

Godzil > je suis assez d'accord avec toi, mais pour le cas de Minecraft, y'a aussi le fait que Notch code comme un pied tongue
avatar
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 Turbo

1722

Mesdames et Messieurs, j'ai l'honneur, en ce premier dimanche soir de juillet, et avec le temps pourri qu'il fait, de vous servir ma QPT(*) du soir.

La question est donc la suivante : Que pensez-vous de l'imbrication des appels de méthode dans les langages objet ?
Pour vous, est-ce "non, jamais ça, mieux vaut 10 lignes propres qu'une bordélique !", ou plutôt "Un caractère à ne pas taper, c'est un gain de productivité, et donc de l'argent gagné !", ou pensez-vous qu'il y ait un juste milieu ?

Pour donner un exemple, préférez-vous lire ça :
        QFileInfo finfo(dlg.sound());
        QString name = finfo.completeBaseName();
        QTableWidgetItem* item = new QTableWidgetItem(name);
        ui->tableTimers->setItem(row, COLUMN_SOUND, item);
me()));ou ça : ui->tableTimers->setItem(row, COLUMN_SOUND, new QTableWidgetItem(QFileInfo(dlg->sound()).completeBaseNaMerci bien pouv vos avis. smile

(*)Question Potentiellement Trollatoire

On sait que derrière tout troll se cache une vérité, et en l'occurence, j'aimerais savoir ce que vous en pensez à l'usage, en tant que pro, pour ajouter ça à mon catalogue de bonnes pratiques, tout simplement. smile

1723

Clairement la première option smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

1724

réponse 1), avec des noms de variables bien explicites
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

1725

Première option, plus facilement débuggable.

Possibilité de poser un breakpoint, un watch, comparaison d'évolution du code, meilleur refactoring, whatever.

Ca ne coute rien en code source, c'est la lisibilité, la maintenance et le code compilé qui prime.

1726

./1722: Pas lu les réponses, mais la seconde option n'est utilisable que si les nom de fonction et la ligne complete ne fait pas 42 ligne avec le wordwrap, la c'est vraiment limite.

L'énorme avantage de l'option 1 c'est quand tu viens pour utiliser un debugger, tu as au moins accès clairement aux valeurs que chaque fonction retourne, et en plus en bonux, si tu utilise un compilateur pas trop idiot, le code généré sera.. le meme smile

Mais comme tu dit, tout n'est ni noir ni blanc

Un

myMarvelousButton.setBGColor(myTheme.btn.bg.red(), myTheme.btn.bg.red(), theme.btn.bg.red());

par exemple est tout a fait acceptable
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

1727

Godzil (./1726) :
myMarvelousButton.setBGColor(myTheme.btn.bg.red(), myTheme.btn.bg.red(), theme.btn.bg.red());
par exemple est tout a fait acceptable
Ha non ! (3 fois)
avatar

1728

Godzil (./1712) :
Haaaa si java pouvais disparaitre, le monde s'en porterais tellement mieux!
Remplacer Java par le langage de votre choix. Parce que je suis d'accord pour trouver plein de défauts a Java, mais on peut en dire tout autant de tous.
Et personnellement s'il y a bien un langage omniprésent a faire disparaître en priorité, je dirais qu'il s'agit du C++.
[b]Godzil (./1716) : le java a toujours été une boite a emmerdes que ca soit a travers les innombrables trous de sécurité, conso mémoire, CPU etc.. Au point qu'une application poussé en java comme Minecraft est incapable de tourner sur des machines récente mais peu puissante, alors que les "clones" écrit dans un vrai language eux tournent très bien sur cette meme machine, avec pourtant des fonctionnalité similaires.[/spoiler]
Ce qui pose des problèmes de sécurité, c'est avant tout les applets, comme tous les système de plugins. Depuis que les applets sont tombées en désuétude, Flash a pris la relève et souffre des mêmes problèmes, tout comme ActiveX avant eux.
Le langage Java en lui même, s'il peut avoir des performances en retrait, a énormément, énormément, énormément moins de problèmes de sécurité que les langages de bas niveau comme le C, C++, ou ObjectiveC.

Et face aux langage de niveau comparable, il n'a généralement pas a rougir de ces performances.

Utiliser Minecraft comme exemple est vraiment idiot car c'est le modèle même du programme mal optimisé.
avatar

1729

Pourquoi le C++ ? Parce que c'est inutilement alambiqué ?

J'aimais bien le Pascal/Delphi, assez joli dans son typage et son expressivité.

Sinon le C est déjà pas mal pour faire des choses complexes.

Autrement je suis tout à fait d'accord sur un VM bytecodée.

Tu améliore la VM, tu améliore automatiquement les programmes.

Genre passage automatique en multi-core voire GPGPU si applicable.

Sans besoin d'avoir accès au code source original, ni recompilation.

Ca garanti la durée de vie des programmes, genre ScummVM par ex.

1730

> ou pensez-vous qu'il y ait un juste milieu ?
ui->tableTimers->setItem(
	row,
	COLUMN_SOUND,
	new QTableWidgetItem( QFileInfo( dlg->sound() ).completeBaseName() )
);
et la le mec il le pécho par le bras et il lui dit '

1731

Folco (./1722) :
Pour donner un exemple, préférez-vous lire ça :
        QFileInfo finfo(dlg.sound());
        QString name = finfo.completeBaseName();
        QTableWidgetItem* item = new QTableWidgetItem(name);
        ui->tableTimers->setItem(row, COLUMN_SOUND, item);
me()));ou ça : ui->tableTimers->setItem(row, COLUMN_SOUND, new QTableWidgetItem(QFileInfo(dlg->sound()).completeBaseNa
Franchement, tu mets ce qui est plus lisible pour toi.

La variable intermédiaire (première version) est obligatoire si tu as besoin de la valeur plus d'une fois, sinon, tu appelles la fonction plusieurs fois = pessimisation. Dans les autres cas, ça devrait produire le même code normalement (il faudrait juste voir s'il n'y a pas un appel au constructeur de copie QString::QString si tu utilises une variable intermédiaire pour ce genre de types valeur; normalement, le compilateur a le droit d'optimiser ça), donc c'est un tradeoff entre code compact ou code plus explicit.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

1732

Uther (./1728) :
Et personnellement s'il y a bien un langage omniprésent a faire disparaître en priorité, je dirais qu'il s'agit du C++.
Nooooon!!! eek
Faire disparaître la STL et la remplacer par Qt serait une bonne idée, mais le langage C++ en lui-même est très bien.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

1733

Uther: je sais, mais les applications java, en general, souffrent de pas mal de problemes comme lenteurs, consommation de mémoire excessives. Oui la plupart ne sont probablement pas due complemtent au language, mais surtout au programmeurs qui on fait ces applications cars il n'ont pas vraimetn de notion de comment fonctionnent les choses en dessous de leur VM, et c'est bien dommage.

C'est mon principal probleme avec le Java.

Pour Minecraft je ne suis pas vraiment d'accord, c'est je trouve un tres bon exemple, et je doute que le jeu soit si mal optimisé, ca fait des années que Mojang travail a l'optimisation de ce jeu dans la version Java, et avec un succes relatif. La ou les version dn C/C++ qu'on retrouve sur les iOS/Android/Windows 10 et les version consoles n'ont pas ces problemes de performances. C'est pour moi un bon exemple du fait que Java n'est pas vraiment adapté a ce genre d'application, car entre l'allocation mémoire, et les problèmes de lenteurs avec le binding natif font que ce n'est vraimetn pas l'idéal pour un jeu qui utilise de maniere intensive les resources de ta machine. L'exemple est tres parlant si tu alloue la valeur par defaut pour le pool mémoire dans ce jeu (512M) des que le jeu arrive a 100% de mémoire consommé et cherche a allouer des objets en plus, tu te mange des putain de ralentissement. Des que tu augmente (en relancant bien sur parceque la VM java est vraimetn bien foutut avec ca...) tu n'a plus ces ralentissements du au GC.

Pour moi le fait que java cherche a gerer entierement sa mémoire a sa sauce en forcant l'attribution d'un pool mémoire est une absurditée sans nom. Plutot que d'avoir la possibilité, comme n'importe quelle application native, d'acceder a toute la mémoire systeme au besoin, on va creer un pool d'une taille souvent ridicule par défaut.

Je suis bien d'accord pour le C++, sur le language a proprement parler le Java est probablement meilleurs que le foutoir qu'est le C++ (bonjour les templates!), mais par contre l'environnement du language et le fonctionnement de la VM, la foultitude de parametres a la con qu'on peux passer a la VM a l'instentiation est, je pense, une énorme erreur de conception du Java. Le .Net a mon sens est mieux foutut sur ce point, probablement pas parfait, mais bien mieux.



Folco: pour revenir sur mon explication sur l'optimisation

Si tu ecrit ce code en C:
int funcB(void) { ... return X; } void funcA(int c) { ... } main() { funcA(funcB()) }
basiquement ton compilateur va faire ca:
_main: call _funcB push d0 ; let says that funcB return value into d0 call _funcA ret
Si tu ecrit main de la facon suivante:
main() { int v = funcB(); funcA(v) }
Une version non optimisé va probablement ressembler a ca : _main: call _funcB mov d0, a6[V_IN_STACK] push a6[V_IN_STACK] call _funcA ret
Mais des que les optimisation sont la il va se rendre compte que V n'est jamais utilisé autrement que mov d0,a6[..] et push a6[..].

Que va faire le compilo? remplacer les deux instruction par un simple push d0, et au final tu as le meme code.

Donc l'option 1 n'a aucune ou quasi aucune incidence sur la qualité du code généré, au pire ca te fait un peu plus de code C a taper (mais pas tant que ca), mais au mieux ton code est un peu plus lisible, et surtout, plus facilement debuggable! et ca ben ce n'est pas rien smile
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

1734

Ok, merci Godzil et tous les autres. smile
robinHood (./1730) :
> ou pensez-vous qu'il y ait un juste milieu ?
ui->tableTimers->setItem(
	row,
	COLUMN_SOUND,
	new QTableWidgetItem( QFileInfo( dlg->sound() ).completeBaseName() )
);
C'est le juste milieux côté inconvénient ça ? Le code prend de la place, et toujours pas de breakpoint/watch dans cette instruction cheeky

1735

Folco (./1734) :
Ok, merci Godzil et tous les autres. smile
robinHood (./1730) :
> ou pensez-vous qu'il y ait un juste milieu ?
ui->tableTimers->setItem(
	row,
	COLUMN_SOUND,
	new QTableWidgetItem( QFileInfo( dlg->sound() ).completeBaseName() )
);
C'est le juste milieux côté inconvénient ça ? Le code prend de la place, et toujours pas de breakpoint/watch dans cette instruction cheeky
Ca depend, ca permet de ne pas creer des variables pour rien, tout en gardant un truc lisible, j'ai bien comme ca perso.

1736

Comme les autres ont dit, pour le debugging c'est quand-même mieux. Breakpoints, mais aussi possibilité de suivre le contenu des variables... après, il y a quelques petites situations (quand les paramètres ne sont pas trop longs, quand les arguments sont triviaux ou 1000 fois passés en paramètre, ou que la méthode est très courante donc qu'il n'y a pas de souci de lecture et peu de chance de s'être planté...) où, perso, je me le permets.
avatar

1737

Kevin Kofler (./1732) :
Nooooon!!! eekFaire disparaître la STL et la remplacer par Qt serait une bonne idée, mais le langage C++ en lui-même est très bien.
Qt corrige certes une partie des défauts de C++ en apportant une bibliothèque vraiment agréable, du niveau de ce que propose Java.
Mais ça reste un rafistolage d'une construction pourrie qui apporte encore plus de lourdeur a l'édifice avec ses "moc" qui viennent se rajouter a un système de header déjà horribles.
Godzil (./1733) :
Pour Minecraft je ne suis pas vraiment d'accord, c'est je trouve un tres bon exemple, et je doute que le jeu soit si mal optimisé, ca fait des années que Mojang travail a l'optimisation de ce jeu dans la version Java, et avec un succes relatif. La ou les version dn C/C++ qu'on retrouve sur les iOS/Android/Windows 10 et les version consoles n'ont pas ces problemes de performances.
Je suis pas convaincu qu'il aient fait tant d'effort que ça d'optimisation. Il suffit de voir les gains qu'apportent des patchs fait par des amateurs comme Optifine pour se redre compte que les capacité d'optimisation sont certainement considérables.
En ce qui concerne les versions consoles, même si un langage plus bas niveau à pu jouer, je pense que ce qui fait vraiment la différence, c'est que ces versions de Minecraft ont été reconstruites sur une base neuve, sans aucune contrainte de compatibilité et en bénéficiant de l'expérience de l'ancien Minecraft
Godzil (./1733) :
C'est pour moi un bon exemple du fait que Java n'est pas vraiment adapté a ce genre d'application, car entre l'allocation mémoire, et les problèmes de lenteurs avec le binding natif font que ce n'est vraimetn pas l'idéal pour un jeu qui utilise de maniere intensive les resources de ta machine. L'exemple est tres parlant si tu alloue la valeur par defaut pour le pool mémoire dans ce jeu (512M) des que le jeu arrive a 100% de mémoire consommé et cherche a allouer des objets en plus, tu te mange des putain de ralentissement. Des que tu augmente (en relancant bien sur parceque la VM java est vraimetn bien foutut avec ca...) tu n'a plus ces ralentissements du au GC.
Attention je n'ai jamais dit que Java était le bon langage pour tout. Je ne recommanderais certainement pas Java pour un moteur de jeu et plus globalement, tout ce qui exige une optimisation ultra poussée ou tout ce qui ne peut se permettre les poses d'un GC.
Je disais juste que dire que le langage doit mourir est vraiment abusif.
Godzil (./1733) :
Pour moi le fait que java cherche a gerer entierement sa mémoire a sa sauce en forcant l'attribution d'un pool mémoire est une absurditée sans nom. Plutot que d'avoir la possibilité, comme n'importe quelle application native, d'acceder a toute la mémoire systeme au besoin, on va creer un pool d'une taille souvent ridicule par défaut.
Je suis bien d'accord pour le C++, sur le language a proprement parler le Java est probablement meilleurs que le foutoir qu'est le C++ (bonjour les templates!), mais par contre l'environnement du language et le fonctionnement de la VM, la foultitude de parametres a la con qu'on peux passer a la VM a l'instentiation est, je pense, une énorme erreur de conception du Java. Le .Net a mon sens est mieux foutut sur ce point, probablement pas parfait, mais bien mieux.
C'est un choix : on échange du contrôle contre une relative simplicité et sécurité. Bien sur si tu as vraiment besoin de contrôler ce qui ce passe à bas niveau, Java va vite devenir un boulet pour toi. Il n'est juste pas fait pour ça.
Il n'en reste pas moins qu'une très grande partie des applications a beaucoup plus besoin de simplicité de développement et de sécurité que de contrôle des performances. Et là, Java remplit très bien son rôle.
avatar

1738

Uther (./1737) :
Kevin Kofler (./1732) :
Nooooon!!! eekFaire disparaître la STL et la remplacer par Qt serait une bonne idée, mais le langage C++ en lui-même est très bien.
Qt corrige certes une partie des défaut de C++ en apportant une bibliothèque vraiment agréable, du niveau de ce que propose Java. Mais ça reste un rafistolage d'une construction pourrie qui apporte encore plus de lourdeur a l'édifice avec ses "moc" qui viennent se rajouter a un système de header déjà horribles.
Oui, c'est amusant de conclure que C++ est « très bien » en citant un framework qui d'un côté s'interdit d'utiliser des fonctionnalités du langage (exceptions, rtti, bibliothèque standard) et de l'autre est obligé de l'étendre via un préprocesseur pour rajouter de l'introspection (en faisant une autre forme de rtti), des propriétés dynamiques, etc... A la limite, on pourrait dire qu'il existe un sous-ensemble du C++ qui est presque bien. grin
So much code to write, so little time.

1739

C'est souvent dit d'ailleurs, le C++ est bien tant qu'on en utilise pas tout ^^
A mes yeux, Qt est bien plus agréable à utiliser que la STL, écrire des templates est une plaie, mais les utiliser aussi.

1740

nitro (./1738) :
A la limite, on pourrait dire qu'il existe un sous-ensemble du C++ qui est presque bien. grin
Ouais, il paraît même que ça s'appelle le C cheeky polom polom
avatar
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 Turbo