Tout ce que vous avez entendu parler de Java 8 est centré sur les expressions de Lambda. Mais cela fait partie de Java 8. Java 8 a de nombreuses nouvelles fonctionnalités - certaines nouvelles classes et syntaxes puissantes, et d'autres choses qui auraient dû avoir dès le début.
Je vais présenter 10 fonctionnalités essentielles que je pense que la peine d'être connues. Au moins un ou deux d'entre eux seront également là pour que vous puissiez essayer, alors commençons!
1. Méthode par défaut
Une fonction nouvellement ajoutée du langage Java est que vous pouvez ajouter des corps de méthode (appelés méthodes par défaut) aux méthodes d'interfaces. Ces méthodes seront implicitement ajoutées à la classe qui implémente cette interface.
Cela vous permet d'ajouter de nouvelles fonctionnalités aux bibliothèques existantes sans casser votre code. C'est évidemment une amélioration. Mais d'un autre côté, cela obscurcit les frontières entre les interfaces et les classes, car les interfaces sont utilisées pour définir les contrats, tandis que les classes sont utilisées pour définir des implémentations concrètes. Du côté positif, il rend l'interface plus intelligente d'une manière élégante et évite la duplication et l'extension des bibliothèques. Mais du mauvais côté, nous verrons plus tard que la méthode d'interface le demande et la convertit en classes de béton. Frisson….
2. Traitement du processus
Le démarrage d'un processus externe est la moitié de ce que vous faites - lorsque le processus se bloque, accroche ou consomme 100% de CPU, vous devez revenir en arrière et le déboguer. La classe de processus est désormais équipée de deux nouvelles méthodes pour vous aider à contrôler les processus indisciplinés.
Le premier est Isalive (), qui vous permet de vérifier si le processus est toujours en cours d'exécution sans attendre que le processus se termine. La deuxième méthode plus puissante est de détruire pour (), qui vous permet de forcer les processus de mise à mort qui sont chronométrés ou qui ne sont plus nécessaires.
3. Stampedlocks
Il y a quelque chose d'excitant maintenant. Personne n'aime synchroniser le code. C'est le coupable de réduire le débit de votre application (en particulier les applications évolutives), ou de raccrocher la demande. Pourtant, à un moment donné, vous n'avez pas le choix.
Il existe de nombreuses façons de limiter l'accès aux ressources critiques de manière synchrone multithread. Les plus célèbres d'entre eux sont les serrures en lecture (ReadWritelock) et les implémentations qui y sont liées. Il réduit la concurrence des ressources en permettant à plusieurs threads d'accéder à la même ressource mais de bloquer les threads fonctionnant sur la ressource. Cela semble bon en théorie, mais en fait, ce verrou est assez lent, surtout lorsqu'il y a un grand nombre de fils d'écriture.
Remarque: Le verrouillage de lecture-écriture divise les visiteurs des ressources en deux catégories: lecteur et écrivain. Le lecteur effectue des opérations en lecture seule sur la ressource, et l'écrivain peut utiliser la ressource.
Java 8 présente un tout nouveau serrure en lecture appelée StampEdlock. Ce verrou est non seulement plus rapide, il fournit un ensemble puissant de verrous d'optimisme, à travers lequel vous pouvez obtenir un verrou de lecteur au coût minimum, et même ne veulent pas d'écrire des opérations pendant la sélection. Une fois la sélection terminée, vous pouvez interroger le verrou pour voir s'il y a une opération d'écriture pendant la sélection, auquel cas vous pouvez choisir de réessayer, de mettre à jour le verrou ou d'abandonner.
Ce verrou est un outil très puissant et a besoin d'un article spécial pour le décrire. J'étais tellement excité par cette nouvelle chose que j'étais étourdi et bien fait!
Pour plus de détails, veuillez consulter ici
4. Adders simultanés
Il s'agit d'un autre petit bébé pour ceux qui travaillent dans des applications multithread. Il s'agit d'une nouvelle API simple et efficace pour les compteurs multithread, ce qui est plus rapide que d'utiliser ATOMICInteger. Tellement cool!
5. Valeurs facultatives
Oh, pointeur nul, un cauchemar pour tous les développeurs Java. Dès le début (ou du moins en 1965), c'était probablement l'exception la plus populaire.
Dessin de Scale et Hashell, Java 8 a un nouveau modèle appelé Facultatif pour encapsuler des références qui peuvent être nuls. Il n'est en aucun cas une solution miracle pour terminer null, c'est un moyen de laisser le concepteur d'API indiquer à partir du niveau de code (plutôt que le niveau de document) qu'une valeur nulle peut être transmise dans une méthode ou renvoyée d'une méthode pour préparer l'appelant à la valeur nulle. Par conséquent, cela ne peut fonctionner que sous la nouvelle API, et en supposant que l'appelant ne laisse pas la référence échapper à l'encapsulation entraînant des déréférences dangereuses.
Je dois dire que je suis très en conflit avec cette fonctionnalité. D'une part, il y a un gros problème avec Null, donc j'ai tendance à tout faire bien avant que Null ne se produise. Mais d'un autre côté, je doute que cela réussira. En effet, l'utilisation facultative nécessite des efforts constants de l'ensemble de l'entreprise, mais il n'a aucune valeur directe. À moins qu'il ne soit décisif, il est susceptible d'être abandonné.
Pour plus d'informations sur Facultatif, veuillez cliquer ici
6. Annoter n'importe quoi
Une autre petite amélioration du langage Java est que les annotations peuvent désormais être ajoutées à presque tout dans votre code. Dans le passé, les annotations ne pouvaient être ajoutées qu'à la classe ou à la déclaration de méthode. Des annotations utilisant Java 8 peuvent être ajoutées aux déclarations variables et de paramètres, non seulement lors du passage d'une valeur à un type spécifié, mais même lors de l'allocation de l'espace à un nouvel objet. Cela fait partie de la réalisation de la langue Java plus amicale et plus concentrée (ainsi que des outils de documentation Java et des améliorations d'API) grâce à une analyse statique et à des outils d'Assistant tels que Findbugs. C'est une grande caractéristique, mais plus une chose comme invokedynamique introduite dans Java 7, et sa valeur réelle est ce que la communauté en fait.
7. Fonctionnement de débordement
Voici maintenant une série de méthodes qui devraient être incluses dans la bibliothèque de base dès le début. L'une de mes habitudes préférées est de déboguer des débordements lorsque Int dépasse 2 ^ 32, puis de continuer à créer ce tristement célèbre bug au hasard (comme "Comment ai-je obtenu cette valeur étrange?").
Il n'y a pas de solution miracle cette fois, mais il existe une série de fonctions qui fonctionnent des nombres qui lancent des exceptions lorsque le débordement se produit d'une manière plus tolérante que l'opérateur standard + / * qui provoque implicitement le débordement. Si c'était moi, je le définirais comme le mode par défaut de l'opérateur JVM, en utilisant des fonctions explicites.
8. Traversal du dossier
Le contenu des arbres d'annuaire d'itération est apparu très tôt sur les recherches Google (dans ce cas, vous pouvez utiliser Apache.Fileutils). Java 8
Ajout de 10 nouvelles méthodes pour les fichiers. Mon préféré est Walk (), qui crée un flux paresseux (important pour les grands systèmes de fichiers) pour itérer
Contenu de la structure du répertoire.
9. Génération de nombres aléatoires forts
La parole d'aujourd'hui sur la vulnérabilité des mots de passe et des clés est un must. La sécurité du programme est un problème difficile et il est facile de faire des erreurs. C'est aussi ce que j'aime
La raison de la nouvelle méthode SecureRandom.getInstancestrong () qui peut sélectionner automatiquement le générateur de nombres aléatoires le plus fort de JVM. Ça réduit
Les chances d'une panne de générateur ou d'un générateur faible sont obtenues par défaut, ce qui entraîne une chance que la clé ou la valeur de chiffrement soit facilement fissurée.
10. Date.tOnstant ()
Java 8 présente une toute nouvelle API Date Heure. Parce que l'API existante n'est pas bonne, cela est tout à fait compréhensible. Maintenant, Joda a concentré et pénétré l'API Java Date Heure pendant de nombreuses années. Cependant, même avec la nouvelle API, il y a encore un gros problème - il y a des tonnes de code et de bibliothèques qui utilisent l'ancienne API.
Nous savons tous que face à ce problème, alors que devons-nous faire?
Parce que Java 8 a fait de manière assez élégante, une nouvelle méthode Toinstant () a été ajoutée à la classe Date pour la convertir en une nouvelle API. Même en utilisant l'ancienne API de date (identique dans un avenir prévisible), il vous permettra de passer rapidement à la nouvelle API.
Que pensez-vous que l'article a d'autres caractéristiques qui ne devraient pas être mentionnées, ou n'êtes-vous pas d'accord avec notre analyse? Veuillez nous commenter - c'est le but de la publication!
Ce qui précède est une compilation des informations sur les nouvelles fonctionnalités de Java 8. Nous continuerons d'ajouter des informations pertinentes à l'avenir. Merci pour votre soutien pour ce site Web!