Berücksichtigung des Risikos "Änderung der Java-Richtlinie"

"Ich frage mich, ob ich Java wegwerfen und es auf C # schütteln sollte." Ich wurde gefragt "Ist JS mit Knoten nicht noch besser? Oder was passiert, wenn das Ergebnis der Flucht aus Oracle an MS geht?" Nachdem ich geantwortet hatte, dachte ich, es wäre besser, ein bisschen mehr nachzudenken, also denke ich darüber nach.

Obwohl der Autor eine Rasse ist, die aus verschiedenen Gründen viel Java-Arbeit geleistet hat, mag er Java und Oracle grundsätzlich nicht [^ 1], so dass die Wahrscheinlichkeit groß ist, dass die Überlegung stark voreingenommen ist. Ich werde hinzufügen.

TL; DR

Javas Stärken

"Was sind Javas Stärken?" Vielleicht waren die Anfänge von Java "objektorientiert". Aufgrund des Problems der Maschinenspezifikation war die Belastung der JVM relativ hoch. Sprachen, die Laufzeiten verwenden, müssen das Problem überwinden, dass "die Laufzeiten selbst schwer sind", aber JVMs waren besonders schmerzhaft. Zu dieser Zeit sagte das verstorbene Sun Microsystems "Einmal schreiben, überall laufen", was nur eine Entschuldigung für "langsam, aber verzeihend" war.

Was passiert also, wenn Sie diese Frage jetzt beantworten? Unnötig zu denken. "Einmal schreiben, überall laufen". Auf jeden Fall das. Genau genommen ist es die "Java VM-Infrastruktur", die dies hält. Die mit den Fortschritten in der Halbleitertechnologie einhergehenden Upgrades der Computerspezifikationen sind keine Belastung mehr wie bei JVMs. Java ist jetzt eine Art VM-Container und der darauf basierende Infrastrukturmechanismus wie Docker.

Jeder Code wird auf einer Java-VM ausgeführt, solange es sich um Java handelt. Java VM wird an jeden Computer geliefert. Es ist auch kostenlos. Java funktioniert also überall. "Einmal schreiben, überall laufen".

Es ist möglicherweise nicht genau, weil ich es nicht im Detail untersucht habe, aber dies ist wahrscheinlich der Grund, warum Oracle einen Kampf mit Google gespielt hat. Obwohl es sich um ein Durcheinander einer Reihe von Java-VMs handelt, die mit Apache Hermony begonnen haben, "übernimmt" es die Versorgung mit VMs oder zerstört auf andere Weise eine einzelne VM-Situation und macht es "schwierig". Es war ein fatales Problem.

Warum ist es tödlich? ** Java hat jetzt keine andere Stärke als VM ** (und vorhandene Assets) **. …… Weil objektorientierte Sprachen heutzutage alltäglich sind. Es ist nun mal so.

Java-Schwächen

Aufgrund der Struktur von Java ist Java VM unverzichtbar. Der Unterschied zwischen Java VM und anderen Laufzeiten besteht darin, dass sie in dem Maße getrennt sind, in dem sie sich "VM" nennen, und dass sie Java-Bytecode lesen, dh eine Maschinensprache für JVM.

Diese Methode

Auf der anderen Seite

Es hat auch den Nachteil von.

Unter den Nachteilen wurde das Problem der Maschinenleistung rechtzeitig behoben. Die Maschinenleistung selbst wurde verbessert, die VM wurde erweitert und die Codeoptimierung wurde leistungsfähiger. Dies gilt natürlich auch für Sprachen, die Dolmetscher verwenden, aber die Geschwindigkeit wird immer noch nicht beeinträchtigt. Im Vergleich zu "sehr schnellen" Sprachen wie C / C ++ ist es wie ein leichter Tiger gegen einen Düsenjäger, aber im Gegenteil, es ist einfacher.

Übrigens, ob Sun oder Oracle, es ist ein bekanntes, aber kommerzielles Unternehmen. ** Wie wirst du damit Geld verdienen? ** ** **

Die Stärke von Java ist die Infrastruktur selbst, die als Java VM bezeichnet wird. Die Bewohner einiger Inselstaaten, die unmittelbar nach dem Regierungswechsel das große Erdbeben erlitten haben, werden die Infrastrukturkosten kennen. Nichts kostet mehr als die Entwicklung der Infrastruktur.

Java ist in jeder Hinsicht eine lächerliche Schuld für Oracle.

Aus diesem Grund handelt es sich um eine Richtlinienänderung, die sogenannte "Zahlung". Die Straßen, auf denen jeder fährt, die Luft, die jeder atmet, und es ist offensichtlich, dass Sie, wenn Sie dafür bezahlen, auf jeden Fall einen Gewinn erzielen. Das ist schlecht auf der Seite, die so weit eingedrungen ist. Sie sollten dies sowieso nicht sagen, da die andere Partei dies ebenfalls mit Gewinn tut, sondern wenn es angemessen ist, sollte der Preis bezahlt werden.

Mit anderen Worten, die größte Schwäche von Java ist die Abhängigkeit von der Java VM-Infrastruktur. ** Javas größte Stärke, "Infrastruktur, die überall verwendet werden kann" Java VM ist seine größte Schwäche, abhängig von Java VM und im weiteren Sinne von Oracle **. ... oder besser gesagt, * deshalb macht es jetzt viel Lärm *. In der Tat ist die Tatsache, dass Java aufgeladen wird, schwer. Dies liegt daran, dass der Vorteil von "kostenlos, Sie können eine Infrastruktur nutzen, die relativ gut funktioniert, ohne über schwierige Dinge nachzudenken" verloren geht.

Es wurde jedoch oft gesagt, dass Java, insbesondere das Standard-API-Design, altmodisch und schimmelig sei [^ 4]. Obwohl Javas Sprachspezifikationen und andere Merkmale zu dieser Zeit auf dem neuesten Stand waren, ist es heute eine Antiquität, die von unzähligen Anhängern überholt wurde. Java 8/9/10/11 und die Verfeinerung wurden fortgesetzt, und obwohl die unbequemen und unfruchtbaren Teile nacheinander verbessert wurden, verursacht die Falte des Problems, dass das grundlegende Alter nicht weggeworfen werden kann, verschiedene Probleme. Es ist lange her [^ 5].

Was wir tun sollten

** Es gibt keine Sprache, die Java vollständig ersetzen kann ** [^ 6]. Egal wie schnell sich die Programmierung entwickelt

...... Es gibt wahrscheinlich keine Sprache auf der Welt, die all diese Anforderungen erfüllt. Es kann natürlich sein. Für Java war Java VM so stark. Aber im Übrigen * waren wir so abhängig von Oracle *.

** Wir müssen die Illusion zerstören, dass wir mit fast allem in einer einzigen Sprache umgehen können **. Ob Java wegwerfen? Es ist nicht. ** Welche Sprache in welchem Bereich zu berücksichtigen ist und wie viel in welcher Sprache zu tun ist oder nicht in welchem Bereich **.

Daher möchte ich einige Sprachen auflisten, die wahrscheinlich "teilweise" Alternativen zu Java sind. Glücklicherweise sind viele der heute verwendeten Dinge dank der großen Leistung von Java (und in gewissem Sinne seines Vorgängers C / C ++ und seines Vorfahren ALGOL) einfach zu konvertieren.

C#[^9] Man kann sagen, dass es das Meisterwerk wurde, das mit dem Schreiben dieses Artikels begann. Hergestellt von Microsoft. Ursprünglich gab es eine Zeit, in der er sich C # .net sowie VB.net nannte, und es wird gemunkelt, dass er tatsächlich bereit war, C # nicht nur im .net-Bereich [^ 10].

Wie ich eingangs erwähnt habe, sind die Nachteile, dass ** vor Oracle entkommen und von MS erwischt werden ** und dass ** Xamarin immer noch knapp verfügbar ist **. Die Heimat von .net ist schließlich Windows. Ich habe gehört, dass es nicht mit Sharepoint usw. wie das gleiche MS-Produkt inkompatibel ist. Das Problem ist jedoch, dass diese "Optionen" in erster Linie furchtbar subtil, teuer und robust sind. Sharepoint? Büro? Wie viel kostet es, ein Problem zu lösen?

Wenn Sie von Java nach C # migrieren, gibt es einen Grund: ** C # ist näher an Java **. Einer Theorie zufolge soll dies auf das Blut der MS-Versionen Java und J # zurückzuführen sein, aber es ist auch in dem Sinne dasselbe, dass es sein Leben einem großen Unternehmen anvertraut. Umgekehrt kann es eine Ameisenoption sein, wenn Sie in ein so großes Unternehmen verwickelt werden.

Ruby Eine objektorientierte Skriptsprache, die auch als häuslich bekannt ist. Ursprünglich sollte es in der Shell verwendet werden, und tatsächlich ist alles, was sogar eine eingebettete Implementierung hat, eine Ameisensprache. …… Aber es versteht sich von selbst, dass es für das Web bekannt ist.

Warum verbreitete es sich als Sprache für das Web? Das ist definitiv Wahrscheinlich aufgrund der Popularität von Ruby on Rails, auch bekannt als RoR. Das Verkaufsargument war, dass Rails mit einer enormen Geschwindigkeit entwickelt werden konnte, solange es seinem Stil und Denken entsprach. Es wurde auf der ganzen Welt populär, als es zu dieser Zeit von Google als "guter Hack" ausgezeichnet wurde.

Infolgedessen hat sich die Rails-Community rapide verschlechtert.

Es gibt schreckliche Witze wie Zed Shaws "Rails is a Ghetto" im Jahr 2008 oder "Ruby ist nicht Matz 'Erfindung, es ist das Original von DHH [^ 11]". Als [^ 12] ist die Qualität der Gemeinschaft selbst gestorben. Infolge der Abkehr vieler Menschen von Rails und Ruby kehren die roten Juwelen, die die Welt eroberten, wenn auch nur vorübergehend, schnell zu den Einheimischen Japans zurück - was eindeutig eine Übertreibung ist, aber Die Ruby-Community in Übersee selbst scheint sich zu schwächen [^ 13].

Wenn Sie von Java zu Ruby wechseln, ist dies wahrscheinlich der Fall, wenn Sie sich auf das Web konzentrieren. Wenn Sie Ruby für etwas anderes als das Web auswählen, kann die Frage sein, wie Sie das Material finden. Erstens besteht die Möglichkeit, dass Sie eine Reaktion wie "Was ist Nicht-Web in Ruby?" Erhalten. Wenn es sich jedoch in einer sehr begrenzten Region befindet (insbesondere in der Präfektur Shimane), kann es in einigen Fällen politisch mächtig sein [^ 14].

JavaScript Geschrieben von Brendan Eich, Netscape Communications. Neske, das als Funktion von Netscape Navigator erschien, ist wahrscheinlich die Skriptsprache, mit der moderne Menschen das Verarbeitungssystem am meisten berühren können [^ 15]. Nach der Standardisierung durch ECMA und der Weiterentwicklung auf der Serverseite durch Node kann gesagt werden, dass es endlich von "Sprache für Browser" zu "Allzwecksprache" hochgefahren ist.

Node ist derzeit sehr leistungsfähig und verfügt über eine Vielzahl von Modulen. Ich kann das Gefühl nicht leugnen, dass das Web mein Hauptgeschäft ist, weil ich aus dem Web komme, aber jetzt, da alles mit dem Web verbunden ist, kann es sogar von Vorteil sein. Darüber hinaus ist das Markup JSON, das seit seinem Erscheinen sein Tätigkeitsfeld erweitert hat, ursprünglich eine JavaScript-Notation und kann nur durch Auswertung deserialisiert werden [^ 16].

Wenn Sie von Java zu JavaScript wechseln, ist dies wahrscheinlich die Webrichtung. Da sie jedoch auch in anderen Bereichen verwendet wird, können Sie sie in mehrere Richtungen erweitern. Ich habe sogar eine Bibliothek für DL gesehen (oder fühlte mich sogar danach). Von besonderer Bedeutung ist das Vorhandensein von Elektronen. Die Client-Seite aus JavaScript (oder es ist besser, sie einfach in eine "GUI-Anwendung" zu stellen) ist derzeit Electron (insbesondere für PC). Die Existenz von "großen Jungs" wie VS Code und Discord tut nicht weh, auch wenn es hilft.

JavaScript hat jedoch ein großes Problem mit der Ausführungsgeschwindigkeit. Egal was Sie tun, es ist langsam. Umgekehrt können Sie das Geschwindigkeitsproblem, wenn Sie es auf irgendeine Weise lösen (z. B. serverlose Architektur im Fall des Web), als Bleikugel verwenden, ohne zu einer Silberkugel zu gehen.

Zusammenfassung

F. Ist es nicht besser, Java wegzuwerfen? A. Sie sollten es wegwerfen. Aber das ist nicht neu, und Sie sollten bereit sein, es mit großem Risiko wegzuwerfen. In Anbetracht der Möglichkeit, dass der Kunde es nicht mag, kann es sich jedoch um Tonton handeln. F. Was soll ich anstelle von Java verwenden? A. Es gibt keine Sprache, die Java vollständig ersetzen kann, es ist äußerst schwierig, alles mit einer zu tun, und es ist ein hohes Risiko, weil es eine solche Situation verursacht. Viele Sprachen sollten für unterschiedliche Zwecke verwendet werden. Verwenden Sie beispielsweise Python zum maschinellen Lernen. F. Es ist jedoch schwierig, weiterhin viele Bereiche zu unterstützen. A. Wenn Sie es wagen, darüber nachzudenken, sind C #, JavaScript und Ruby am vielversprechendsten. Wenn der Grund, warum Sie sich auf eine einzelne Sprache konzentrieren möchten, beispielsweise die Schulungskosten sind, ist es schneller, Java überhaupt weiter zu verwenden. Insbesondere ist der Unterschied zwischen Java und C # gering, und es gibt eine Möglichkeit, eine Sprache mit geringen Lernkosten und ähnlicher Grammatik wie JavaScript zu verwenden.

[^ 1]: Das ist die Religion. Bitte verzeih mir. [^ 2]: Wie Sie wissen, ist die Realität nicht so. Nur einen einzigen binären Boot überall zu haben, ist eine Bedrohung genug. [^ 3]: Wenn dies ein Interpreter ist, ist es immer noch leicht, ihn zu vermeiden, wenn Sie mit dem Interpretationsverfahren herumspielen, aber wenn Sie den Bytecode löschen, ist dies nicht der Fall. [^ 4]: Die meisten von ihnen sind wirklich alt, deshalb denke ich nicht, dass ich ihnen vergeben sollte, aber wenn ich sie tatsächlich benutze, möchte ich sie schlagen, ohne mit Mashiyama zu spielen. Es ist unvernünftig. [^ 5]: Das beste Beispiel wäre Generics oder Erasure. Geht es um Saibling? [^ 6]: Wenn ja, habe ich bereits darauf umgestellt und gehe an einen Ort, an dem ich damit arbeiten kann. [^ 7]: Die meisten neueren Skriptsprachen führen jedoch eine JIT-Optimierung durch, sodass sich der Geschwindigkeitsunterschied erheblich verringert hat. [^ 8]: Wer benutzt eine Sprache, die niemand kennt? [^ 9]: Aus irgendeinem Grund funktioniert die Flucht nicht ... [^ 10]: Die Realität ist dies nicht (dies wird jedoch indirekt durch die Erweiterung von .net selbst wie Mono und Xamarin erreicht und ist wahrscheinlich in erster Linie nur auf andere ausgerichtet. [^ 11]: David Heinemeier Hansson, kurz der Autor von RoR. [^ 12]: Die Zeit ist unbekannt. [^ 13]: Nun, vor und nach der "Katastrophe" von Rails könnte es sogar rentabel sein. Das mag gut gewesen sein. [^ 14]: Matz stammt aus Tottori, lebt aber in Matsue City, Präfektur Shimane, und hat die Ehrenbürgerschaft erhalten. Ich bin mir sicher, dass ich aus irgendeinem Grund Unterstützung geleistet habe, aber ich frage mich, ob ich das noch mache. [^ 15]: Ein moderner Webbrowser. Wenn Sie dies nicht absichtlich tun, ist es keine Übertreibung zu sagen, dass browser = JavaScript-Verarbeitungssystem. [^ 16]: Eine Funktion, die den angegebenen Code auswertet oder ausführt. Abunai wurde später dazu gebracht, JSON richtig zu lesen und zu schreiben.

Recommended Posts

Berücksichtigung des Risikos "Änderung der Java-Richtlinie"
[Java] Übersicht über Java
Abgelaufene Java-Sammlung
Voraussichtliche Funktionen von Java
[Java] Bedeutung der serialVersionUID
NIO.2 Überprüfung von Java
Bewertung von Java Shilber
Java - Vereinigung von Kommentaren
Geschichte der Java-Annotationen
Java (Verdienste des Polymorphismus)
Ändern Sie die Speicherqualität von JPEG-Bildern in Java
NIO Bewertung von Java
[Java] Drei Funktionen von Java
Zusammenfassung der Java-Unterstützung 2018
Über Java-Instanzen
[Java] Mirage-Basic-Verwendung von SQL
[Java] Anfängerverständnis von Servlet-②
[Java11] Stream-Zusammenfassung - Vorteile von Stream -
Grundlagen der Zeichenoperation (Java)
[Java] Erstellen von Originalanmerkungen
Java-Lerntag 4
[Java] Anfängerverständnis von Servlet-①
Java Ende des Monats plusMonate
[Java] Zusammenfassung der Operatoren (Operator)
[Java] Implementierung des Faistel-Netzwerks
Zusammenfassung der Grundlagen der Java-Sprache
Zusammenfassung der Java Math Klasse
Ändern Sie die Java-Version unter CentOS
Aufzählung aller Kombinationen Java
Java (Vererbung von is-ein Prinzip)
Vor- und Nachteile von Java
Vorteile der statischen Java-Methode
[Java] Zusammenfassung der Steuerungssyntax
Java-Implementierung von Tri-Tree
Zusammenfassung der Java-Fehlerverarbeitung
[Java] Zusammenfassung der Entwurfsmuster
[Java] Zusammenfassung der mathematischen Operationen