Das Leben im digitalen Zeitalter ist ebenso ein Segen wie eine Frustration. Wenn Computer und Anwendungen reibungslos funktionieren, sind sie für uns eine Selbstverständlichkeit. Wenn ein Computer einfriert oder eine Anwendung einen Laptop oder ein mobiles Gerät blockiert, erhöht eine schlechte Leistung den Stress.
Unabhängig davon, ob Sie ein Entwickler sind, der Zugriff auf Quellcode hat, oder nur ein Endbenutzer, der versucht, eine irritierend langsame Java-Anwendung zu beschleunigen, wir haben gute Nachrichten: Sie können Maßnahmen ergreifen, um die Leistung zu verbessern.
Contents
- 1 Ist Java dasselbe wie JavaScript??
- 2 Ursachen für schlechte Anwendungsleistung
- 3 So verbessern Sie die Leistung von Java-Anwendungen - 9 Schritte
- 3.1 1. Führen Sie eine Profilerstellung und einen Belastungstest durch
- 3.2 2. Bereinigen Sie den Code und überarbeiten Sie die Algorithmen
- 3.3 3. Vermeiden Sie nach Möglichkeit eine Rekursion
- 3.4 4. Aktualisieren Sie die Systemhardware
- 3.5 5. Erhöhen Sie die LAN- und WAN-Bandbreite
- 3.6 6. Bereinigen Sie Ihr Betriebssystem
- 3.7 7. Setzen Sie StringBuilder ein, um die Effizienz zu verbessern
- 3.8 8. Nutzen Sie das Caching, um die Leistung zu verbessern
- 3.9 9. Ziehen Sie den Stapel dem Haufen vor
- 4 Abschließende Gedanken
Ist Java dasselbe wie JavaScript??
Kurz gesagt, nein; Java und JavaScript sind zwei völlig unterschiedliche Technologien. Obwohl beide Technologien objektorientiert sind, ist Java eine Entwicklungsumgebung, in der Programmierer Anwendungen programmieren können, die so konzipiert sind, dass sie lokal im Arbeitsspeicher eines Systems ausgeführt werden.
JavaScript hingegen wurde für die Erstellung von Webanwendungen entwickelt und fällt häufig mit anderen Webtechnologien wie HTML und CSS zusammen. Heute werden wir nach den besten Möglichkeiten suchen, um die Leistung von in Java, jedoch nicht in JavaScript geschriebenen Anwendungen zu verbessern.
Ursachen für schlechte Anwendungsleistung
Die Ursachen für eine unterdurchschnittliche Anwendung sind enorm, obwohl die Hauptursachen eine kleine Handvoll von Problemen sind. Die ersten beiden Ursachen sind natürlich schlechtes Design und unterdurchschnittliche Codierung.
Obwohl IDEs und Code-Editoren Tests und Objekte hervorheben, um sie besser lesbar zu machen, besteht eine Kommunikationslücke zwischen Computern und Menschen. Beim Erstellen einer Anwendung werden Sie Fehler machen - daran führt kein Weg vorbei.
Der Computer versteht Ihre Absicht manchmal nicht. Sie führt vielmehr nur die ihr erteilten Anweisungen aus. Neben Algorithmus- und Codierungsfehlern sind Ressourcendefizite eine weitere häufige Ursache.
Lokale Hardware wie RAM- und CPU-Zyklen sowie andere Ressourcen wie die Netzwerkbandbreite wirken sich auf die Anwendungsleistung aus. Beachten Sie außerdem, dass lokale Betriebssystemprobleme häufig die Anwendungsleistung beeinträchtigen.
So verbessern Sie die Leistung von Java-Anwendungen - 9 Schritte
Bevor wir näher auf die einzelnen Schritte eingehen, möchten wir Ihnen einen allgemeinen Überblick darüber geben, wie Sie die Leistung von Java-Anwendungen wie folgt verbessern können:
- Führen Sie eine Profilerstellung und einen Belastungstest durch - Durch die Profilerstellung Ihrer Java-Anwendung können Sie Schwachstellen und Engpässe aufdecken.
- Bereinigen Sie den Code und überarbeiten Sie die Algorithmen - sauberer Code ist einfacher zu pflegen, zu bearbeiten, zu lesen und zu verfeinern; Durch die Überarbeitung Ihrer Algorithmen werden tautologische Funktionsaufrufe reduziert.
- Vermeiden Sie nach Möglichkeit eine Rekursion - Rekursion ist in einigen Fällen ein notwendiges Übel, sollte aber sparsam eingesetzt werden.
- Aktualisieren Sie die Systemhardware - Eine schlechte Anwendungsleistung ist möglicherweise nicht auf schlechten Code und Algorithmen zurückzuführen. Stattdessen hängt die zugrunde liegende Ursache möglicherweise mit dem System zusammen, auf dem die Anwendung ausgeführt wird.
- Erhöhen Sie die LAN- und WAN-Bandbreite - Nicht alle Funktionen interagieren mit lokaler Hardware. Wenn Ihre Anwendung mit Remote-Systemen kommuniziert, kann dies an Ihrer Netzwerkinfrastruktur liegen.
- Räumen Sie Ihr Betriebssystem auf - Unordentliche Betriebssysteme müssen gewartet werden, damit die Anwendungen so gut wie möglich ausgeführt werden können.
- Setzen Sie StringBuilder ein, um die Effizienz zu steigern - Strings sind in den meisten Anwendungen fast unvermeidbar, aber die Operation „+ =“ ist äußerst ineffizient.
- Nutzen Sie das Caching, um die Leistung zu verbessern - Caching ist eine der besten Möglichkeiten, um redundante Objektinstanziierungen und Funktionsaufrufe zu reduzieren.
- Bevorzugen Sie den Stapel gegenüber dem Haufen - Der Stack ist effizienter in Bezug auf Systemressourcen, da er sich selbst verwaltet und den Speicher freigibt, den nicht mehr vorhandene Objekte belegen.
Nachdem dies gesagt wurde, wollen wir uns eingehender mit den einzelnen Methoden befassen, um die Leistung von Java-Anwendungen zu verbessern.
1. Führen Sie eine Profilerstellung und einen Belastungstest durch
Der erste Schritt zur Verbesserung der Leistung von Java-Anwendungen besteht darin, Bereiche zu identifizieren, in denen Verbesserungen erforderlich sind. Ohne zu wissen, wo die größten Probleme liegen, ist der Versuch, eine Anwendung zu beschleunigen, so, als würde man mit verbundenen Augen einen Pfeil auf eine Dartscheibe werfen. Glücklicherweise gibt es Softwaretools, die Daten zur Anwendungsleistung erfassen.
Das erste Tool, das wir empfehlen würden, ist Java-Profiling-Software. Ein solches Beispiel ist YourKit, Dies ist eine Lösung, die sowohl für Unternehmen als auch für einzelne Benutzer geeignet ist. YourKit bietet eine Vielzahl von Lizenzen an, z. B. für Unternehmen, Hochschulen, Open Source und pro Arbeitsplatz.
Seine Funktionen umfassen, ohne darauf beschränkt zu sein, Folgendes:
- CPU-Leistungsprofil
- Memory Performance Profiling
- Speicherleckerkennung
- Threads und Synchronisationsanalyse
- Testen der Web-, Datenbank- und E / A-Leistung
Dieses Tool wurde entwickelt, um auf lokalen Systemen, Remote-Systemen, in der Entwicklung befindlichen Projekten und sogar auf Produktionssoftware verwendet zu werden. YourKit ist jedoch nicht der einzige hochwertige Java-Profiler und hat starke Konkurrenz durch andere Lösungen wie EJ-Technologies, die erstellt die JProfiler.
Dieses Tool ist sehr ähnlich zu YourKit und bietet Testoptionen für lokale und Remote-Sitzungen, Offline-Trigger, Snapshot-Vergleiche, Anforderungsverfolgung (HTTP, RMI, Webservice, EJB, AWT-Ereignisse, Thread-Starts usw.) und die Erstellung von benutzerdefinierten Tests sowie viele andere Funktionen. zuletzt, JProfiler verfügt auch über Tools für Hardware-, Thread-, Telemetrie- und Datenbankprofilerstellung.
2. Bereinigen Sie den Code und überarbeiten Sie die Algorithmen
Software-Quellcode ist wie der erste Entwurf eines Romans - er ist nach der ersten Iteration nie mehr perfekt und erfordert erhebliche Überarbeitungen, bevor er endgültig aufpoliert wird. In erster Linie sollten Sie sich bemühen, sauberen Code zu schreiben, der mit Kommentaren gesättigt ist, damit Sie durch Ihren Text navigieren und sich leicht daran erinnern können, warum jedes Objekt instanziiert wurde und warum jede Funktion aufgerufen wurde.
Wenn Sie Ihren Code sauber halten, beschleunigt dies eine Java-Anwendung zwar nicht von sich aus, hilft Ihnen jedoch dabei, unnötigen Code effizienter zu bereinigen und nach Schwachstellen und Redundanzen in Ihren Algorithmen zu suchen. Clean Code macht den Debugging-Prozess ebenfalls reibungsloser und hilft Ihnen, Fehler (wie Speicherlecks) zu korrigieren, die Sie nach der Profilerstellung und dem Auslastungstest Ihrer Software festgestellt haben.
3. Vermeiden Sie nach Möglichkeit eine Rekursion
Rekursion ist eine grundlegende Programmierstrategie, bei der eine Funktion sich selbst aufruft, um ein Problem zu lösen. Rekursion ist nicht unbedingt böse, es ist jedoch ein zweischneidiges Schwert. Es hat Vorteile und praktische Verwendungen. Beispielsweise macht die Rekursion den Code übersichtlicher und kompakter und reduziert tautologische Iterationen von Schleifen und Funktionen.
Da die Rekursion die Komplexität und das Volumen des Codes verringert, erleichtert dies die Wartung einer Java-Anwendung. Diese Vorteile gehen leider zu Lasten der Anwendungsleistung. Rekursions- und Funktionsaufrufe sind in Bezug auf Geschwindigkeit und Leistung teuer, da sie Pop- und Push-Funktionen auf dem Stack erfordern.
Eine effizientere Lösung für die Rekursion ist dagegen die Schleifenbildung. Schleifenoperationen sind möglicherweise schwerer zu lesen und bestehen aus mehr Zeichen und Quellcode als Rekursion. Sie sind jedoch vorzuziehen, wenn die Anwendungsleistung maximiert werden muss. Es ist möglicherweise nicht immer praktisch, auf eine Rekursion zu verzichten. Wenn Sie diese jedoch so weit wie möglich reduzieren, können Sie die Leistung von Java-Anwendungen verbessern.
4. Aktualisieren Sie die Systemhardware
An der Oberfläche scheint es, dass eine unterdurchschnittliche Java-Anwendung durch ein Softwareproblem verursacht werden muss. Obwohl dies möglicherweise nicht intuitiv zu sein scheint, kann die Grundursache für schlechte Leistung ein Hardwareproblem sein. Unabhängig davon, ob Sie eine Java-Anwendung lokal oder remote ausführen, verfügt das System, auf dem die Java-Anwendung ausgeführt wird, möglicherweise nicht über genügend Systemressourcen, um den Code zufriedenstellend auszuführen.
Die am einfachsten zu aktualisierende Komponente, die sich in der Regel direkt auf die Softwareleistung auswirkt, ist RAM. Durch die Erweiterung des Arbeitsspeichers auf Ihrem Computer wird die Wahrscheinlichkeit verringert, dass auf dem System nicht mehr genügend Speicherplatz für Anwendungsdaten zur Verfügung steht und die Festplatte wieder als spontanen Arbeitsspeicher verwendet werden muss. Diese Vorgehensweise wird als Auslagerungsdatei bezeichnet. Auslagerungsdateien sind für Hochleistungsanwendungen jedoch unerwünschter als RAM, da der Lese- und Schreibvorgang auf einer Festplatte erheblich langsamer ist.
Wenn Ihre Java-Anwendung erheblich mit der Festplatte interagiert (z. B. eine Datensicherung oder eine Synchronisierungsanwendung), kann ein Upgrade der Festplatte die Systemleistung verbessern. Sie können beispielsweise ein Upgrade auf ein Laufwerk mit höheren Drehzahlen durchführen, um die Lese- und Schreibvorgänge zu beschleunigen. Beachten Sie jedoch, dass die schnellsten Festplatten SSDs (Solid State Drives) sind und keine beweglichen Teile enthalten. Schließlich können einige Systeme, aber nicht alle, auch die CPU erweitern, obwohl das Aufrüsten nicht so einfach ist wie das Aufrüsten des Arbeitsspeichers.
5. Erhöhen Sie die LAN- und WAN-Bandbreite
Lokale und Server-Hardware ist zwar eine Schlüsselkomponente von Java-Anwendungen - einschließlich Java-Webanwendungen -, sie ist jedoch nicht der einzige potenzielle Engpass. Unabhängig davon, ob Sie Java-Webanwendungen lokal in einem LAN, in einem Intranet oder remote hosten, spielt die Bandbreite eine entscheidende Rolle für die Verfügbarkeit und Leistung Ihrer Anwendungen - insbesondere in Zeiten hoher Auslastung.
Im Allgemeinen ist die LAN-Bandbreite in der Regel ausreichend und kostengünstig, während die WAN-Bandbreite teuer und knapp ist. Nichtsdestotrotz kann das lokale Netzwerk, mit dem der Server mit Java-Webanwendungen verbunden ist, durch anderen LAN-Verkehr überlastet werden. Dieses Problem kann auf zwei Arten gelöst werden.
Zunächst können Sie Switches und lokale Netzwerkinfrastruktur auf eine Gigabit-Ethernet- oder 10Gigabit-Ethernet-Lösung aktualisieren, um Netzwerküberlastungen zu vermeiden. Alternativ können Sie eine QoS-Richtlinie (Quality of Service) implementieren, die den Datenverkehr zum und vom Server, auf dem Java-Anwendungen gehostet werden, vor anderen Datenverkehrstypen priorisiert.
Zusätzlich zur Erhöhung der WAN-Bandbreite (für die möglicherweise ein anderer ISP ausgewählt werden muss) können Sie einen Lastenausgleich implementieren, um redundante ISP-Verbindungen besser nutzen zu können. Denken Sie daran, dass schlecht funktionierende Java-Anwendungen nicht unbedingt auf Softwareprobleme zurückzuführen sind und von einer Überlastung des Netzwerks betroffen sein können.
6. Bereinigen Sie Ihr Betriebssystem
Betriebssysteme erfordern Wartung und Instandhaltung, um die bestmögliche Leistung zu erzielen und die Systemressourcen effizient zu nutzen. Ein ungepflegtes Betriebssystem neigt dazu, langsamer zu werden und sich träge zu fühlen. Beispielsweise werden möglicherweise viele unsichtbare Prozesse im Hintergrund ausgeführt, von denen Sie noch nichts wussten.
Darüber hinaus wird bei der Installation vieler Anwendungen automatisch neue Software zur Liste der Anwendungen hinzugefügt, die beim Start gestartet werden. Diese Anwendungen führen nicht nur dazu, dass ein System langsamer gestartet wird, sondern sie belasten auch wichtige Systemressourcen wie RAM- und CPU-Zyklen, die ansonsten zum Ausführen einer Java-Anwendung verwendet werden könnten.
Das Bereinigen notwendiger und unerwünschter Prozesse und Anwendungen sowie das Ausführen eines Registry Cleaners auf Windows-Systemen tragen zum Aufräumen Ihres Betriebssystems bei. Ein Registry Cleaner kann DLL-Fehler und Laufzeitfehler verringern und beseitigen, indem er fehlerhafte Einträge in der Registry entfernt und Indexstrukturen neu generiert.
Darüber hinaus defragmentiert eine andere, sparsam zu verwendende Haushaltsaufgabe Ihre Festplatte. Im Laufe der Zeit können Dateien, die kontinuierlich auf eine Festplatte geschrieben und von dieser gelöscht werden, zu einem weitläufigen, chaotischen Durcheinander werden. Ein Defragmentierungstool fasst alle Ihre Daten zusammen und schreibt sie in zusammenhängende Blöcke, wodurch die Zeit für das Lesen von Informationen auf der Festplatte verkürzt wird.
Aber seien Sie gewarnt: Der Defragmentierungsprozess ist sehr anstrengend und belastet die Festplatte. Wenn Sie es täglich, wöchentlich oder sogar monatlich defragmentieren, verkürzen Sie die Lebensdauer Ihrer Festplatte drastisch. Eine vernünftigere und praktischere Häufigkeit ist etwa zwei- bis dreimal pro Jahr.
7. Setzen Sie StringBuilder ein, um die Effizienz zu verbessern
Zeichenfolgen sind in den allermeisten Anwendungen ein häufiger Datentyp. Sie sind nur schwer zu vermeiden oder zu ignorieren. Leider ist die Verkettung von Zeichenfolgen ebenso ineffizient wie häufig. Es mag scheinen, als ob die beste Methode zum Verketten von Zeichenfolgen die Operation "+ =" ist, aber dies ist eine überlastete Operation, die äußerst ineffizient ist.
Das Problem besteht darin, dass die Operation "+ =" bei jeder Verwendung eine völlig neue Zeichenfolge zuweist, wodurch viele redundante und unnötige Zeichenfolgendaten erstellt werden können. Wenn Sie diese Operation ab und zu verwenden, kommt Ihre Java-Anwendung zwar nicht zum Stillstand, aber jede kleine Operation summiert sich. Stellen Sie sich vor, wie oft diese Ineffizienz in einer Schleife vergrößert werden könnte?
Glücklicherweise gibt es eine effizientere Alternative. Das StringBuilder object wurde als effiziente Alternative zu grundlegenden Verkettungsoperationen entwickelt. Gewöhnen Sie sich an, diesen Datentyp zu verwenden, anstatt die faule Kurzform der Operation "+ =" zu verwenden, wenn Sie die Leistung von Java-Anwendungen verbessern möchten.
8. Nutzen Sie das Caching, um die Leistung zu verbessern
Caching ist eine der effektivsten Methoden zur Steigerung der Effizienz von Java-Anwendungen. Das Kernkonzept der Zwischenspeicherung besteht darin, mehrere Aufrufe und Funktionen in einer wiederverwendbaren Ressource zu konsolidieren. Obwohl es viele Arten von Caching gibt, ist die Datenbanktechnologie das erste, woran die meisten Leute hier denken, wenn sie das Wort "Caching" verwenden.
Die in einer Datenbank enthaltenen Daten können nicht nur lokal zwischengespeichert werden, um Bandbreite zu sparen, sondern auch das hohe Volumen an Datenbankverbindungen, die ansonsten eine Anwendung verlangsamen würden. Beachten Sie jedoch, dass das Caching nicht übermäßig genutzt werden darf. Sie könnten intuitiv denken, dass alles zwischengespeichert werden sollte, falls Sie es in naher Zukunft erneut verwenden müssen. Sie müssen jedoch sicherstellen, dass die von Ihnen zwischengespeicherten Daten und Verbindungen zahlreich genug sind, um einen Leistungsgewinn zu erzielen.
9. Ziehen Sie den Stapel dem Haufen vor
Um die Leistung von Java-Anwendungen zu verbessern, speichern Sie Ihre Daten auf dem Stapel anstatt auf dem Heap. Warum fragst du? Weil es den Speicher effizienter nutzt und Daten entfernt, die bereits ihren Zweck erfüllt haben. Der Stack nutzt Ressourcen nicht nur effizienter, sondern hält auch den Overhead in Schach. Der beste Weg, den Stack gegenüber dem Heap zu bevorzugen, besteht darin, das Instanziieren von Wrapper-Klassen zu vermeiden.
Genau wie die Verwendung von Rekursion ist es nicht immer möglich, auf die Verwendung einer Wrapper-Klasse zu verzichten. Als allgemeine Faustregel sollten Sie jedoch primitive Datentypen wie "int" anstelle von "Integer" verwenden. Die Anzahl der Leistungssteigerungen, die Sie mit dieser Taktik erzielen können, hängt von einer Vielzahl von Faktoren ab. Die Bevorzugung des Stacks ist jedoch eine gute Anleitung, um den Weg zum schlanksten und effizientesten Java-Code zu finden.
Es gibt Tools auf dem Markt, mit denen Sie Java-Patches erfolgreich aktualisieren können. Ein solches Werkzeug ist SolarWinds Patch Manager.
Sie können eine voll funktionsfähige herunterladen 30 Tage kostenlos testen
SolarWinds Patch Manager 30 Tage KOSTENLOSE Testversion herunterladen
Verwandte: Beste Patch-Management-Tools
Außerdem solltest du das überprüfen SolarWinds Java Monitoring Tool für Anwendungsserver mit Server & Anwendungsmonitor um die Leistung zu verbessern. Sie können eine voll funktionsfähige herunterladen 30 Tage kostenlos testen.
SolarWinds Java Monitoring Tool für Anwendungsserver mit 30-tägiger KOSTENLOSER SAMDownload-Testversion
Abschließende Gedanken
Wenn eine langsame, krabbelnde Java-Anwendung Ihr Blut zum Kochen bringt, atmen Sie tief durch und achten Sie darauf, dass Sie nicht mit den Fäusten auf die Tastatur schlagen - es wird alles nur noch schlimmer machen. Atmen Sie stattdessen tief ein und verwenden Sie eine der oben genannten Methoden, um die Leistung von Java-Anwendungen zu beschleunigen.
Wenn Sie persönliche Geschichten oder Anekdoten zur Beschleunigung von Java-Anwendungen haben, laden wir Sie ein, diese im Folgenden zu kommentieren.