J'utilise eclipse pour développer une application web. Aujourd'hui encore, j'ai mis à jour ma version de Struts en modifiant le fichier JAR. Je reçois des avertissements à certains endroits indiquant que les méthodes sont obsolètes, mais le code fonctionne correctement.
Je veux savoir des choses
Est-il incorrect d'utiliser des méthodes ou des classes obsolètes en Java?
Et si je ne change aucune méthode et exécute mon application avec les avertissements que j'ai, cela créera-t-il un problème de performances.
java
methods
deprecated
Umesh Aawte
la source
la source
1955 Volkswagen Beetle
même si on vous offreCorvette Stingray
, gratuitement? (0:4
autres: Gotcha! (0;1955 Volkswagen Beetle
et1956 Volkswagen Beetle
avec des pneus neufs dont vous ne savez pas quand ils casseront!Réponses:
D'après la définition de obsolète :
La méthode est conservée dans l'API à des fins de compatibilité descendante pendant une période non spécifiée et peut être supprimée dans les versions futures. Autrement dit, non, ce n'est pas faux , mais il existe une meilleure façon de le faire, qui est plus robuste contre les changements d'API.
Très probablement non. Il continuera à fonctionner comme avant la dépréciation. Le contrat de la méthode API ne changera pas. Si une structure de données interne change en faveur d'une nouvelle méthode meilleure, il pourrait y avoir un impact sur les performances, mais c'est assez improbable.
La dépréciation la plus amusante de l'API Java est imo, le
FontMetrics.getMaxDecent
. Raison de l'abandon: erreur d'orthographe.la source
Vous pouvez toujours utiliser du code obsolète sans que les performances soient modifiées, mais le but de la désapprobation d'une méthode / classe est de faire savoir aux utilisateurs qu'il existe désormais une meilleure façon de l'utiliser et que dans une prochaine version, le code obsolète sera probablement supprimé.
la source
Terminologie
Extrait du glossaire officiel Sun:
Dans le guide comment et quand désapprouver:
L'
@Deprecated
annotation est allée plus loin et met en garde contre le danger:Références
Vrai ou faux?
La question de savoir s'il est bon ou mauvais d'utiliser des méthodes obsolètes devra être examinée sur une base individuelle. Voici TOUS les guillemets où le mot "obsolète" apparaît dans Effective Java 2nd Edition :
Donc, au moins avec toutes les méthodes ci-dessus, il est clairement erroné de les utiliser, du moins selon Josh Bloch.
Avec d'autres méthodes, vous devrez considérer les problèmes individuellement et comprendre POURQUOI ils ont été déconseillés, mais de manière générale, lorsque la décision de désapprouver est justifiée, il aura tendance à pencher vers le mal plutôt que vers le bien pour continuer à les utiliser.
Questions connexes
la source
Outre toutes les excellentes réponses ci-dessus, j'ai trouvé une autre raison de supprimer les appels d'API obsolètes.
En cherchant pourquoi un appel est obsolète, je me surprends souvent à apprendre des choses intéressantes sur Java / l'API / le Framework. Il y a souvent une bonne raison pour laquelle une méthode est obsolète et la compréhension de ces raisons conduit à des informations plus approfondies.
Donc, du point de vue de l'apprentissage / de la croissance, c'est aussi un effort qui en vaut la peine
la source
Cela ne crée certainement pas de problème de performance - obsolète signifie qu'à l'avenir, il est probable que la fonction ne fera plus partie de la bibliothèque, vous devriez donc éviter de l'utiliser dans un nouveau code et changer votre ancien code pour arrêter de l'utiliser, donc vous ne rencontrez pas de problèmes un jour lorsque vous mettez à niveau les jambes de force et constatez que la fonction n'est plus présente
la source
It certainly doesn't create a performance issue
; c'est trop subjectif pour le dire.Ce n'est pas faux, ce n'est tout simplement pas recommandé. Cela signifie généralement qu'à ce stade, il existe une meilleure façon de faire les choses et que vous feriez du bien si vous utilisez la nouvelle méthode améliorée. Certains éléments obsolètes sont vraiment dangereux et doivent être évités. La nouvelle méthode peut donner de meilleures performances que la méthode obsolète, mais ce n'est pas toujours le cas.
la source
Vous avez peut-être entendu le terme «humour autodestructeur». C'est l'humour qui minimise votre importance. Une classe ou une méthode obsolète est comme ça. Ce n'est plus important. Il est si peu important, en fait, qu'il ne devrait plus être utilisé du tout, car il cessera probablement d'exister à l'avenir.
Essayez de l'éviter
la source
deprecated
méthodes tant que vous avez un bon plan d'urgence pour éviter tout problème si / quand ces méthodes disparaissent de la bibliothèque que vous utilisez. Avec l'API Java elle-même, cela ne se produit jamais, mais avec à peu près tout le reste, cela signifie qu'elle va être supprimée. Si vous prévoyez spécifiquement de ne pas mettre à niveau ( bien que vous devriez probablement le faire à long terme ) les bibliothèques de support de votre logiciel, il n'y a aucun problème à utiliser lesdeprecated
méthodes.la source
Oui, c'est faux.
Les méthodes ou classes obsolètes seront supprimées dans les futures versions de Java et ne doivent pas être utilisées. Dans chaque cas, il devrait y avoir une alternative disponible. Utiliser ça.
Il existe quelques cas où vous devez utiliser une classe ou une méthode obsolète pour atteindre un objectif de projet. Dans ce cas, vous n'avez vraiment pas d'autre choix que de l'utiliser. Les futures versions de Java peuvent casser ce code, mais si c'est une exigence, vous devez vivre avec cela. Ce n'est probablement pas la première fois que vous devez faire quelque chose de mal pour répondre aux exigences d'un projet, et ce ne sera certainement pas la dernière.
Lorsque vous mettez à niveau vers une nouvelle version de Java ou une autre bibliothèque, une méthode ou une classe que vous utilisiez devient parfois obsolète. Les méthodes obsolètes ne sont pas prises en charge, mais ne devraient pas produire de résultats inattendus. Cela ne veut pas dire qu'ils ne le feront pas, alors changez votre code dès que possible.
Le processus de dépréciation est là pour s'assurer que les auteurs ont suffisamment de temps pour changer leur code d'une ancienne API à une nouvelle API. Profitez de ce temps. Changez votre code au plus vite.
la source
Ce n'est pas faux, mais certaines des méthodes obsolètes sont supprimées dans les futures versions du logiciel, vous risquez donc de vous retrouver avec du code qui ne fonctionne pas.
la source
Removed
? Voir la définition stackoverflow.com/questions/2941900/…Pas mal en tant que tel, mais cela peut vous éviter des problèmes. Voici un exemple où il est fortement déconseillé d'utiliser une méthode obsolète:
http://java.sun.com/j2se/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html
Il ne devrait y avoir aucun problème en termes de performances. L'API standard est conçue pour respecter une certaine compatibilité descendante afin que les applications puissent être progressivement adaptées aux nouvelles versions de Java.
la source
Est-il incorrect d'utiliser des méthodes ou des classes obsolètes en Java? Ce n'est pas «faux», fonctionne toujours mais évitez-le autant que possible.
Supposons qu'une faille de sécurité soit associée à une méthode et que les développeurs déterminent qu'il s'agit d'une faille de conception. Ils peuvent donc décider de désapprouver la méthode et d'introduire la nouvelle méthode.
Donc, si vous utilisez toujours l'ancienne méthode, vous avez une menace. Soyez donc conscient de la raison de la dépréciation et vérifiez si cela vous affecte.
et si ne changez aucune méthode et exécutez mon application avec les avertissements que j'ai, cela créera-t-il un problème de performance.
Si la dépréciation est due à un problème de performances, vous souffrirez d'un problème de performances, sinon il n'y a aucune raison d'avoir un tel problème. Encore une fois tiens à souligner, soyez conscient de la raison de la dépréciation.
la source
En Java, c'est @Deprecated, en C # c'est [Obsolete].
Je pense que je préfère la terminologie de C #. Cela signifie simplement qu'il est obsolète. Vous pouvez toujours l'utiliser si vous le souhaitez, mais il existe probablement un meilleur moyen.
C'est comme utiliser Windows 3.1 au lieu de Windows 7 si vous pensez que Windows 3.1 est obsolète. Vous pouvez toujours l'utiliser, mais il y a probablement de meilleures fonctionnalités dans une version future, plus les futures versions seront probablement prises en charge - la version obsolète ne le sera pas.
Idem pour @Deprecated de Java - vous pouvez toujours utiliser la méthode, mais à vos risques et périls - à l'avenir, il pourrait avoir de meilleures alternatives, et pourrait même ne pas être pris en charge.
Si vous utilisez du code obsolète, c'est généralement bien, tant que vous n'avez pas à passer à une API plus récente - le code obsolète peut ne pas y exister. Je suggère si vous voyez quelque chose qui utilise du code obsolète, de mettre à jour pour utiliser les nouvelles alternatives (ceci est généralement indiqué sur l'annotation ou dans un commentaire obsolète Javadoc).
Edit: Et comme l'a souligné Michael, si la raison de la dépréciation est due à une faille dans la fonctionnalité (ou parce que la fonctionnalité ne devrait même pas exister), alors évidemment, il ne faut pas utiliser le code obsolète.
la source
Bien sûr que non - puisque tout Java est en train de devenir @Deprecated :-) vous pouvez vous sentir libre de les utiliser aussi longtemps que dure Java. De toute façon, je ne remarquerai aucune différence, à moins que ce soit quelque chose de vraiment cassé. Signification - avoir à lire et ensuite décider.
Dans .Net cependant, quand quelque chose est déclaré [Obsolète], lisez-le immédiatement même si vous ne l'avez jamais utilisé auparavant - vous avez environ 50% de chances qu'il soit plus efficace et / ou plus facile à utiliser que le remplacement :-))
Donc en général, il peut être très avantageux d'être techno-conservateur de nos jours, mais vous devez d'abord faire votre corvée de lecture.
la source
Je pense que la méthode obsolète signifie; il existe une autre méthode disponible, meilleure à tous égards que la méthode existante. Mieux vaut utiliser la bonne méthode que l'ancienne méthode existante. Pour des raisons de compatibilité descendante, les anciennes méthodes sont abandonnées.
la source