Prise en compte du risque de «changement de politique Java»

"Je me demande si je devrais jeter Java et le secouer en C #" quelqu'un m'a demandé "Le JS n'est-il pas encore meilleur avec les nœuds? Ou plutôt, que se passe-t-il lorsque le résultat de la fuite d'Oracle va à MS?" Après avoir répondu, j'ai pensé qu'il valait mieux réfléchir un peu plus, alors j'y pense.

Bien que l'auteur soit une race qui a eu beaucoup de travail sur Java pour diverses raisons, il n'aime fondamentalement pas Java et n'aime pas Oracle [^ 1], il y a donc une forte possibilité que la considération soit fortement biaisée. Je vais ajouter.

TL; DR

Les atouts de Java

"Quelles sont les forces de Java?" Peut-être que les premiers jours de Java étaient plus «orientés objet». En raison du problème de spécification de la machine, la charge de la JVM était relativement lourde. Les langages qui utilisent des runtimes doivent surmonter le problème "les runtimes eux-mêmes sont lourds", mais les JVM étaient particulièrement pénibles. A cette époque, le regretté Sun Microsystems disait "Ecrire une fois, exécuter n'importe où", ce qui n'était qu'une excuse pour "lent mais pardonne".

Alors, que se passe-t-il si vous répondez à cette question maintenant? Inutile de réfléchir. "Écrivez une fois, exécutez partout". Certainement ça. À proprement parler, c'est «l'infrastructure Java VM» qui détient cela. Les mises à niveau des spécifications informatiques qui accompagnent les progrès de la technologie des semi-conducteurs ne sont plus un fardeau comme les JVM. Java est maintenant une sorte de conteneur de VM et le mécanisme d'infrastructure qui en est basé, comme Docker.

Tout code s'exécutera sur une machine virtuelle Java tant qu'il s'agit de Java. Java VM est fourni à n'importe quelle machine. C'est aussi gratuit. Donc Java fonctionne partout. "Écrivez une fois, exécutez partout".

Ce n'est peut-être pas exact parce que je ne l'ai pas examiné en détail, mais c'est probablement la raison pour laquelle Oracle s'est disputé avec Google. Même si c'est un désordre autour d'une série de VM Java qui a commencé avec Apache Hermony, c'est quelque chose qui "prend le dessus" de l'approvisionnement des VM, ou détruit d'une autre manière une situation de VM unique et la rend "difficile". C'était un problème fatal.

Pourquoi est-ce mortel? ** Java n'a plus de force que VM ** (et les ressources existantes) ** …… Parce que les langages orientés objet sont monnaie courante aujourd'hui. On ne peut rien y faire.

Faiblesses de Java

En raison de la structure de Java, Java VM est indispensable. La différence entre Java VM et les autres environnements d'exécution est qu'ils sont séparés dans la mesure où ils s'appellent eux-mêmes «VM», et ce qu'ils lisent est du code d'octet Java, c'est-à-dire un langage machine pour JVM.

Cette méthode

D'autre part

Il présente également l'inconvénient de.

Parmi les inconvénients, le problème d'alimentation de la machine a été résolu à temps. La puissance de la machine elle-même a été améliorée, la machine virtuelle a évolué et l'optimisation du code est devenue plus puissante. Bien sûr, c'est la même chose pour les langues qui utilisent des interprètes, mais la vitesse n'est toujours pas vaincue. Comparé aux langages "vraiment rapides" comme C / C ++, c'est comme un tigre léger contre un chasseur à réaction, mais au contraire, c'est plus facile.

Soit dit en passant, que ce soit Sun ou Oracle, c'est une entreprise de renom mais commerciale. ** Comment allez-vous gagner de l'argent avec ça? ** **

La force de Java est l'infrastructure elle-même appelée Java VM. Cependant, les habitants de certaines nations insulaires qui ont souffert du grand tremblement de terre immédiatement après le changement de gouvernement ont réduit les coûts d'infrastructure le savent bien. Rien ne coûte plus que le développement des infrastructures.

Java est, à tous égards, une dette ridicule pour Oracle.

C'est pourquoi il s'agit d'un changement de politique, ce qu'on appelle le «paiement». Les routes sur lesquelles tout le monde court, l'air que tout le monde respire, et il est évident que si vous payez pour cela, vous ferez un profit quoi qu'il arrive. C'est mauvais du côté qui a pénétré aussi loin. Vous ne devriez pas dire cela de toute façon parce que l'autre partie le fait aussi pour le profit, mais si c'est approprié, le prix devrait être payé.

En d'autres termes, la plus grande faiblesse de Java est sa dépendance vis-à-vis de l'infrastructure Java VM. ** La plus grande force de Java, «une infrastructure utilisable partout» Java VM est sa plus grande faiblesse, qui est sa dépendance à Java VM et, par extension, à Oracle **. ... ou plutôt, * c'est pourquoi ça fait beaucoup de bruit maintenant *. En fait, le fait que Java soit chargé est lourd. C'est parce que l'avantage de "gratuit, vous pouvez utiliser une infrastructure qui fonctionne relativement bien sans penser aux choses difficiles" est perdu.

Cependant, on disait souvent que Java, en particulier la conception standard de l'API, était démodée et moisie [^ 4]. En fait, bien que les spécifications du langage Java et d'autres caractéristiques soient à jour à l'époque, c'est maintenant une antiquité qui a été dépassée par d'innombrables adeptes. Java 8/9/10/11 a été affiné, et bien que les parties gênantes et stériles aient été améliorées les unes après les autres, le problème de ne pas pouvoir jeter l'antiquité fondamentale a causé divers problèmes. Cela fait longtemps [^ 5].

Que devons-nous faire

** Aucun langage ne peut remplacer complètement Java ** [^ 6]. Quelle que soit la rapidité avec laquelle la programmation évolue

...... Il n'y a probablement pas de langue au monde qui réponde à toutes ces exigences. Cela peut être naturel. Pour Java, Java VM était aussi puissant. Mais pour cette question, * nous étions tellement dépendants d'Oracle *.

** Nous devons tuer l'illusion que nous pouvons gérer presque tout dans une seule langue **. Faut-il jeter Java? Ce n'est pas. ** Sur quel domaine se concentrer ou non, sur quel domaine réfléchir, dans quelle langue faire et dans quelle mesure **.

Donc, je voudrais énumérer quelques langages qui sont susceptibles d'être des alternatives «partiellement» à Java. Heureusement, la plupart des éléments utilisés aujourd'hui sont faciles à convertir, grâce à la grande puissance de Java (et en un sens de son prédécesseur C / C ++ et de son ancêtre ALGOL).

C#[^9] On peut dire que c'est devenu le chef-d'œuvre qui a commencé à écrire cet article. Fabriqué par Microsoft. À l'origine, il fut un temps où il s'appelait C # .net ainsi qu'autour de VB.net, et la rumeur dit qu'il était réellement prêt à C # non seulement dans la zone .net [^ 10].

Comme je l'ai mentionné au début, les inconvénients sont que ** s'échappe d'Oracle et se fait prendre par MS **, et que ** Xamarin est toujours étroitement disponible **. Après tout, la maison de .net est Windows. J'entends qu'il n'est pas incompatible avec Sharepoint etc. comme le même produit MS. Cependant, le problème est que ces «options» sont terriblement subtiles, chères et lourdes en premier lieu. Sharepoint? Bureau? Alors, combien cela coûte-t-il de résoudre un problème?

Si vous migrez de Java vers C #, il y a une raison: ** C # est plus proche de Java **. Selon une théorie, on dit que c'est dû au sang des versions MS Java et J #, mais il en va de même dans le sens où il confie sa vie à une grande entreprise. Inversement, si vous allez être enveloppé dans une entreprise aussi énorme, cela peut être une option de fourmi.

Ruby Un langage de script orienté objet qui est également connu pour être domestique. À l'origine, il était censé être utilisé dans le shell, et en fait, tout ce qui a même une implémentation intégrée est un langage fourmi. …… Mais il va sans dire qu'il est connu pour le Web.

Alors pourquoi s'est-il répandu en tant que langage pour le Web? C'est définitivement Probablement en raison de la popularité de Ruby on Rails, également connu sous le nom de RoR. L'argument de vente était que les Rails pouvaient être développés à une vitesse incroyable tant qu'ils étaient conformes à son style et à sa pensée. Il est devenu populaire dans le monde entier lorsqu'il a été récompensé par Google à l'époque comme "un bon hack".

Et en conséquence, la communauté Rails s'est rapidement détériorée.

Il y a des blagues terribles comme "Rails is a ghetto" de Zed Shaw en 2008, ou "Ruby n'est pas l'invention de Matz, c'est l'original de DHH [^ 11]". Comme [^ 12], la qualité de la communauté elle-même est morte. En raison du fait que de nombreuses personnes s'éloignent de Rails et de Ruby, le joyau rouge qui a balayé le monde, bien que temporairement, revient rapidement aux habitants du Japon - ce qui est clairement une exagération, mais , La communauté Ruby d'outre-mer semble elle-même s'affaiblir [^ 13].

Si vous passez de Java à Ruby, c'est probablement le cas lorsque vous vous concentrez sur le Web. Lorsque vous choisissez Ruby pour faire autre chose que le Web, la question peut être de savoir comment trouver le matériel. En premier lieu, il est possible que vous obteniez une réaction du type "Qu'est-ce que le non-Web dans Ruby?" Cependant, s'il est basé dans une région très limitée (en particulier, la préfecture de Shimane), il peut être politiquement puissant dans certains cas [^ 14].

JavaScript Écrit par Brendan Eich, Netscape Communications. Neske, également connu sous le nom de Netscape Navigator, est probablement le langage de script que la plupart des gens modernes ont le plus de chance de toucher au système de traitement [^ 15]. Après la standardisation par ECMA et l'avancée côté serveur par Node, on peut dire qu'il est finalement passé du «langage pour navigateurs» au «langage généraliste».

Node est actuellement très puissant et possède une grande variété de modules. Je ne peux pas nier le sentiment que le Web est mon activité principale parce que je viens du Web, mais maintenant que tout est connecté au Web, cela peut même être un avantage. De plus, le balisage, JSON, qui élargit son champ d'activité depuis son apparition, est à l'origine une notation JavaScript, et peut être désérialisé simplement par eval [^ 16].

Si vous passez de Java à JavaScript, c'est probablement la direction du Web, mais comme il est également utilisé dans d'autres domaines, il est possible de l'étendre dans plusieurs directions. J'ai même vu (ou même ressenti comme) une bibliothèque pour DL. La présence d'Electron est particulièrement importante. Le côté client en JavaScript (ou il peut être préférable de simplement le mettre dans une "application GUI") est actuellement Electron (surtout pour PC). L'existence de «grands» comme VS Code et Discord ne fait pas de mal, même si cela aide.

Cependant, JavaScript a un gros problème de vitesse d'exécution. Peu importe ce que vous faites, c'est lent. Inversement, si vous résolvez le problème de vitesse par certains moyens (comme l'architecture sans serveur sur le Web), vous pouvez l'utiliser comme une balle de plomb sans aller à une solution miracle.

Résumé

Q. N'est-il pas préférable de jeter Java? R. Vous devriez le jeter. Mais ce n'est pas nouveau et vous devez être prêt à le jeter à grands risques. Cependant, compte tenu de la possibilité que le client ne l'aime pas, il peut s'agir de tonton. Q. Que dois-je utiliser à la place de Java? R. Il n'y a pas de langage qui puisse remplacer complètement Java, il est extrêmement difficile de tout faire avec un seul, et c'est un risque élevé car cela provoque une situation comme celle-ci. De nombreuses langues doivent être utilisées à des fins différentes. Par exemple, utilisez Python pour l'apprentissage automatique. Q. Cependant, il est difficile de continuer à prendre en charge de nombreux domaines. R. Si vous osez y penser, C #, JavaScript et Ruby sont les plus prometteurs. Mais si la raison pour laquelle vous souhaitez vous concentrer sur un seul langage est, par exemple, les coûts de formation, il est plus rapide de continuer à utiliser Java en premier lieu. Surtout, la différence entre Java et C # est petite, et il existe un moyen d'utiliser un langage à faible coût d'apprentissage et une grammaire similaire telle que JavaScript.

[^ 1]: C'est la religion. S'il vous plaît, pardonnez-moi. [^ 2]: Comme vous le savez, la réalité n'est pas ainsi. Eh bien, avoir un seul démarrage binaire partout est une menace suffisante. [^ 3]: S'il s'agit d'un interpréteur, il est toujours facile de l'éviter si vous dérangez la procédure d'interprétation, mais si vous supprimez le code d'octet, ce ne sera pas le cas. [^ 4]: La plupart sont vraiment vieux, donc je ne pense pas que je devrais leur pardonner, mais quand je les utilise, je veux les frapper sans jouer avec Mashiyama. C'est déraisonnable. [^ 5]: Le meilleur exemple serait les génériques ou l'effacement. Est-ce autour de l'omble? [^ 6]: Si c'est le cas, j'y suis déjà passé, et je vais dans un endroit où je peux travailler avec. [^ 7]: Cependant, la plupart des langages de script récents font de l'optimisation JIT, donc la différence de vitesse s'est considérablement réduite. [^ 8]: Qui utilise une langue que personne ne connaît? [^ 9]: Pour une raison quelconque, l'évasion ne fonctionne pas ... [^ 10]: La réalité n'est pas (ry, cependant, cela est indirectement réalisé en étendant .net lui-même, comme Mono et Xamarin, et il est probablement juste aligné avec les autres en premier lieu. [^ 11]: David Heinemeier Hansson, en bref, l'auteur de RoR. [^ 12]: L'heure est inconnue. [^ 13]: Eh bien, avant et après le "désastre" de Rails, cela pourrait même être rentable. Cela a peut-être été bon. [^ 14]: Matz est de Tottori mais vit dans la ville de Matsue, préfecture de Shimane, et a reçu une citoyenneté honorifique. Je suis sûr que je fournissais un soutien pour une raison quelconque, mais je me demande si je le fais toujours. [^ 15]: un navigateur Web moderne. À moins que vous ne le fassiez exprès, il n'est pas exagéré de dire que navigateur = système de traitement JavaScript. [^ 16]: une fonction qui évalue ou exécute le code spécifié. Abunai a ensuite été conçu pour lire et écrire correctement JSON.

Recommended Posts

Prise en compte du risque de «changement de politique Java»
[Java] Présentation de Java
Collection expirée de java
Caractéristiques prévues de Java
[Java] Importance de serialVersionUID
NIO.2 examen de Java
Avis sur Java Shilber
java --Unification des commentaires
Histoire des annotations Java
java (mérites du polymorphisme)
Modifier la qualité de stockage des images JPEG en Java
Examen NIO de Java
[Java] Trois fonctionnalités de Java
Résumé du support Java 2018
À propos des instances Java
[Java] Utilisation de Mirage-Basic de SQL
[Java] Compréhension débutante de Servlet-②
[Java11] Résumé du flux -Avantages du flux-
Principes de base de l'utilisation des caractères (Java)
[Java] Création d'annotations originales
java learning day 4
[Java] Compréhension débutante de Servlet-①
Java fin du mois plusMonths
[Java] Résumé des opérateurs (opérateur)
[Java] Implémentation du réseau Faistel
Résumé des bases du langage Java
Résumé de la classe Java Math
Changer la version java sur CentOS
Énumération de toutes les combinaisons Java
java (héritage du principe is-a)
Avantages et inconvénients de Java
Avantages de la méthode statique Java
[Java] Résumé de la syntaxe de contrôle
Implémentation Java de tri-tree
Résumé du traitement des erreurs Java
[Java] Résumé des modèles de conception
[Java] Résumé des opérations mathématiques