Le quartier de Java se sent très bien ces jours-ci

introduction

J'utilise Java de façon continue dans ma carrière d'ingénieur, mais je pense que c'est beaucoup plus facile à utiliser qu'avant. Aussi, en écoutant des conférences à JJUG, JSUG, etc., je pense personnellement que la zone Java récente est très progressive et bonne.

Pendant ce temps, j'ai vu des tweets disant que "Java a une grande population et il n'y a aucun mérite à l'adopter spécialement" et "Java est un héritage et une faible productivité", alors j'aimerais écrire mes pensées avec ce contre-argument. Je vais.

De plus, certains des contenus décrits ci-dessous indiquent que ** Java est meilleur qu'un framework spécifique, mais ce n'est pas qu'il s'agit simplement de "voisinage" de Java **.

Ce que j'aime de Java ces jours-ci

  1. Amélioration des spécifications linguistiques et des bibliothèques standard
  2. À quelle vitesse le projet démarre
  3. Utilisation de la sécurité des moisissures
  4. Prise en charge de l'architecture des micro-services
  5. Amélioration des performances

1. Amélioration des spécifications linguistiques et des bibliothèques standard

Cela fait longtemps, mais je pense que l'efficacité et la précision de la programmation se sont considérablement améliorées depuis l'introduction des expressions lambda et de l'API Stream. J'ai aussi le sentiment que la bibliothèque standard est en train de passer d'une idée autrefois extrêmement minimaliste à une idée positive vers la réalité que «ce que les développeurs utilisent souvent est inclus dans la bibliothèque standard». De plus, le cycle de publication a été revu depuis JDK9, et on peut s'attendre à ce que la vitesse d'évolution du langage augmente. (Il y a un problème sur ce qu'il faut faire avec la version JDK, mais je vais le laisser pour l'instant)

2. À quelle vitesse le projet démarre

Dans Spring Framework, vous pouvez créer instantanément une application Web avec Spring Initializer ou le plug-in Eclipse. Si vous utilisez le serveur intégré, vous pouvez démarrer le serveur à partir de la fonction principale sans rien préparer. Référence: Comment créer un hinadan pour un projet Spring Boot à l'aide de SPRING INITIALIZR

Il existe un grand nombre de bibliothèques associées, et il est facile à utiliser simplement en écrivant une dépendance dans pom.xml.

3. Sécurité des moisissures

Je pense qu'il y a des avantages et des inconvénients à la saisie statique, mais je pense que la récente communauté Java a fait ressortir le bon côté. Stream API Par exemple, l'API Stream fonctionne bien avec le typage statique, et même si vous écrivez un code assez long à la fois, il fonctionnera presque comme prévu s'il se compile, et si vous le maîtrisez, vous pouvez le coder très efficacement. Spring Boot Le Spring Framework peut désormais être de type sécurisé avec des annotations, au lieu de l'ancienne configuration XML. Je pense que cela a considérablement amélioré la facilité de définition et de maintenance des haricots. Référence: Comprendre le fonctionnement de la configuration automatique de Spring Boot Il y a plusieurs avantages à définir un tel bean, mais par exemple, l'automatisation des tests devient plus facile et le coût de mise à niveau du langage et du cadre peut être réduit.

DBFlute J'ai un très bon mappeur O / R appelé DBFlute qui est mon framework préféré et résiste aux changements de base de données. La sécurité de type est maintenue en lisant les métadonnées du schéma et en générant automatiquement le code source Java. Avec lui, vous pouvez facilement implémenter l'accès aux données avec un code Java concis et lisible, et s'il se compile, SQL sera exécuté presque comme prévu, vous pouvez donc vous attendre à une productivité extrêmement élevée si vous le maîtrisez.

4. Prise en charge de l'architecture des micro-services

Différentes bibliothèques sont fournies sous le nom Spring Cloud pour l'architecture de microservice. Bien que je ne l'ai pas abordé dans la pratique, mon approche des microservices utilisant Spring fait souvent l'objet de conférences.

Référence: Bases de Spring Cloud à comprendre rapidement Référence: [[Spring Fest 2018 Report] Journey to In-house Production of Payment System-Cloud Native System Development with Spring et PCF](https://dev.classmethod.jp/etc/spring-fest-2018-sf_h1 /)

En outre, il existe une bibliothèque appelée micromètre qui stocke et fournit des données pour la mesure métrique, et a été présentée dans plusieurs conférences au JSUG 2018. Après être devenu la série Spring Boot 2, juste en décrivant la dépendance dans pom.xml, il fonctionnera en arrière-plan au démarrage et il semble facile de personnaliser la cible de mesure. Référence: [Mesurer et envoyer des métriques à l'aide d'un micromètre avec Spring Boot] (https://k11i.biz/blog/2018/03/24/spring-boot-with-micrometer/)

5. Considérations relatives aux performances

Avec le récent Framework Spring, je pense qu'il y a beaucoup de travail en cours pour s'adapter à l'environnement où les performances sont sévèrement requises.

WebFlux Avec WebFlux, qui est la principale fonctionnalité de Spring5, vous pouvez gérer un grand nombre de requêtes avec un petit nombre de threads et utiliser efficacement les ressources. Référence: Comprendre la présentation de Spring WebFlux

Cependant, pour l'instant, JDBC ne prend pas en charge Reactive, donc il y a encore des restrictions considérables sur son utilisation dans la pratique, mais il semble que Spring travaille également sur cela (j'ai envie de le faire autant). Référence: R2DBC a été annoncé à Spring One

Originaire de

Il semble que GraalVM puisse être utilisé pour nativeiser des applications Java. Dans une démo à JSUG 2018 Keynote, j'ai vu GraalVM nativeiser une application Spring qui prendrait normalement plus d'une seconde pour se lancer en millisecondes. Actuellement, il semble que cela ne puisse être appliqué que dans une situation assez limitée, mais j'ai entendu dire que nous viserions un soutien total à terme (même si je ne suis pas confiant car il s'agissait d'une conférence en anglais). Référence: SPRING FEST 2018

en conclusion

Essayons une série de mauvaises phrases qui ne sont pas très bien organisées.

À propos de la lenteur des progrès de Java et de la forte «idée»

Je pense que Java est un langage qui a une «idée» forte malgré les transitions de l'époque. Je pense également que de nombreux frameworks Java ont également une idée forte. Il y a peut-être une différence entre les goûts et les aversions, et parfois cela se transforme en conflit.

Sentiments de goûts et de dégoûts particuliers envers Oracle en réponse à l'article "Pourquoi j'ai plus d'épaules Oracle que Google dans les poursuites relatives à l'API Java" Je n'ai pas, mais je suis d'accord avec le contenu.

Discutez attentivement et ouvertement afin de ne pas perturber l'équilibre général, comme indiqué dans "Can Java be Great Again with the Power of the Community" Le processus de détermination des spécifications à plusieurs reprises peut sembler lent et peu progressif à certains téléspectateurs. Cependant, je pense que cela a beaucoup de sens d'être totalement cohérent avec ce genre de prudence (même si je ne suis pas complètement insatisfait de la spécification Java).

Que ce soit un langage ou un cadre, je pense qu'il est important de comprendre «l'idée» pour bien l'utiliser. D'un autre côté, si vous ne pouvez pas lire l'idée ou si vous pouvez voir un compromis à mi-chemin, vous pourriez ne pas savoir comment l'utiliser ou ne pas l'aimer.

À propos du typage statique

J'aime aussi écrire du JavaScript relativement, donc je pense être bien conscient des avantages des langages statiquement non typés. Lors du passage de JavaScript à Java, la quantité de description peut être frustrante. Je sais donc que je ressens un contrecoup contre le système robuste de type statique de Java.

Cependant, comme mentionné ci-dessus, je pense que cela peut être une arme puissante en fonction de la façon dont elle est utilisée. J'imagine que la maintenance sera difficile sans typage statique lorsque l'échelle du logiciel se développera.

Discutez calmement des avantages et des inconvénients

Java est vieux et a quelques défauts en termes de spécifications de langage, mais je pense qu'il cherche désespérément une évolution tout en maintenant la rétrocompatibilité et l'équilibre général. D'un autre côté, ceux qui rejettent «Java est obsolète et improductif» se demandent quel type de technologie pointue ils utilisent. Par exemple, existe-t-il un framework qui adopte une approche de type Spring pour l'architecture des microservices (bien que je ne puisse rien dire car je ne suis pas familier avec les autres frameworks)?

En fin de compte, je pense que cela se résumera à des goûts et des aversions quant au langage et au cadre à adopter, mais je pense que ce serait bien si nous pouvions discuter calmement des avantages et des inconvénients après avoir connu les circonstances récentes.

Merci de rester avec nous jusqu'à la fin.

PostScript du 11/11/2018

Il y avait une description dans l'article qui disséquait une langue spécifique, mais elle a été supprimée car le nombre de vues était plus important que prévu et l'écart par rapport au sujet principal était important. (Si vous souhaitez le vérifier, veuillez consulter la section des commentaires.) Je n'ai pas l'intention de le brûler, je voudrais donc éviter de critiquer une langue spécifique à l'avenir.

PostScript 17/11/2018

Il y avait pas mal d'opinions et de préoccupations concernant le JDK, alors j'ai écrit mes propres pensées. Cela peut être erroné, mais veuillez vous y référer si vous le souhaitez. Organiser l'état actuel de Java et envisager l'avenir

Recommended Posts

Le quartier de Java se sent très bien ces jours-ci
Le démon rit. Le quartier de Java 2018 ose le choix.
La comparaison d'énumération est ==, et equals est bonne [Java]
[Java] Obtenez la date 10 jours plus tard avec la classe Calendar