Wir sind ein Software-Shop, der viel Java-Code schreibt. Die meisten unserer Java-App-Server sind CentOS-Boxen, die in einem Remote-Rechenzentrum gehostet werden.
Immer wenn wir auf diese Maschinen zugreifen und sie durchsuchen müssen, verwenden wir PuTTY.
Ich wurde kürzlich gebeten, unsere JVM mit dem Memory Profiler zu überwachen jvisualvm
, einem umfangreichen GUI-Tool, das viele Grafiken und Diagramme mit hübschen Farben verwendet. Als ich meinen technischen Leiter fragte, wie ich ein solches GUI-Tool über ein zeichenbasiertes Befehlstool wie PuTTY anzeigen könnte, sagte er mir, ich solle stattdessen etwas namens Reflection X verwenden.
Dies veranlasste mich dazu, mich über Reflection X und X Windows im Allgemeinen zu informieren (mit denen ich nie Kontakt hatte).
Ich verstehe jetzt, dass „X“ eine Hardware-Abstraktionsschicht ist, sodass Sie GUI-orientierten Code schreiben und ihn auf jeder Hardware bereitstellen können, auf der X ausgeführt werden kann. In dieser Hinsicht ist es (thematisch) identisch mit der Java Virtual Machine.
Was ich binnichtWas ich verstehen muss, ist die Beziehung zwischen meinem Windows-PC, Reflection X, der CentOS-Maschine, auf der die App läuft, die ich profilieren muss, und dem jvisualvm
Tool selbst:Wer macht was?
Läuft Reflection X auf meinem Rechner oder ist es auf dem Linux-Server installiert? Was ermöglicht mir Reflection X die Fernanzeige jvisualvm
?
Dank im Voraus!
Antwort1
Das Programm jvisualvm wird meistens auf Ihrer CentOS-Box ausgeführt. Auf dieser Box läuft der X-Server-Host und Reflection X ist nur ein X-Server-Client. Das bedeutet, dass Sie im Wesentlichen einen ferngesteuerten Desktop ausführen. Alles, was Ihr Windows-Rechner mit Reflection X tut, ist, sich mit der CentOS-Box zu verbinden, damit Sie die dort laufenden Apps sehen und mit ihnen interagieren können.
Antwort2
X unterscheidet sich sehr von Java. Es ist keine VM, keine Hardware-Abstraktionsschicht oder ähnliches – es ist eineNetzwerkprotokoll, derzeit in der Version X11, die Programme zur Kommunikation mit einem X11-Server verwenden. Solche Programme können praktisch in jeder Sprache geschrieben werden, solange sie über die erforderlichen Funktionen verfügt.
DerX11-Serverläuft normalerweise auf Ihrem eigenen Computer und führt die Aufgabe aus, Grafiken auf dem Bildschirm anzuzeigen und Tastatur- und Mausereignisse an die Programme zurückzusenden. Programme (X11-Clients) stellen lokal über solche IPC-Methoden (Unix-Sockets) oder über das Netzwerk eine Verbindung damit her – über direktes TCP/IP (selten) oder getunnelt innerhalb einer SSH-Verbindung (die Option „X11-Weiterleitung“ in PuTTY).
Reflexion Xist ein kommerzieller X11-Server für Windows. Open-Source-Alternativen sindCygwin/X(eine Portierung von Xorg) sowieXming. Fast jeder Linux- oder BSD-PC läuftXorgals Hauptgrafiksystem.
Wenn Sie Reflection X auf Ihrem Computer ausführen, wartet es einfach auf Verbindungen. Wenn Sie es auf der CentOS-Maschine ausführen jvisualvm
, stellt der Profiler eine Verbindung zum X11-Server her (getunnelt über dieselbe SSH-Verbindung, die PuTTY verwendet) und verwendet das X11-Protokoll, um ein Fenster zu öffnen und darin zu zeichnen.
Antwort3
- Reflection X scheint ein X-Server zu sein, der unter MS Windows läuft. Eine kostenlose Alternative wäreXming
- X-Server bedienen GUI-Client-Anfragen und zeigen sie auf dem Host-Rechner an, auf dem der X-Server läuft.
- Auf Ihrer Linux-Box müssen Sie DISPLAY so einstellen, dass es auf Ihren X-Server verweist, sobald dieser auf Ihrem Windows-Rechner läuft. Anschließend können Sie die GUI-App von Ihrem Linux-Server aus starten und sie wird auf Ihrem Windows-Desktop angezeigt.
Schick, oder?
Wenn es sich bei der Linux-Box um eine VMware-VM handelt, können Sie alternativ VMware-Tools installieren und deren Unity-App verwenden, um etwas Ähnliches zu tun.