java

Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen.
1
Antwort

Maven-Profil für einzelnes Modul

Ich habe ein Multi-Modul Maven-Projekt, das erfolgreich baut, ich möchte nur eines der Module bauen, die ich habe. Wie würde ich das mit Profilen machen? Ich könnte es von der Konsole auf zwei Arten tun, eine Möglichkeit ist das Kind-Modul u...
08.03.2010, 11:41
3
Antworten

Ruhezustand: Eltern / Kind-Beziehung in einer Einzeltabelle

Ich sehe kaum einen Zeiger auf das folgende Problem im Zusammenhang mit Hibernate. Dies bezieht sich auf das Implementieren der Vererbung unter Verwendung einer einzelnen Datenbanktabelle mit einem Eltern-Kind-Element Beziehung zu sich selbst. Z...
11.03.2010, 05:55
4
Antworten

Verwendung von ThreadLocal

Was ist der typische Einsatz von ThreadLocal in Java? Wann benutzt man es? Ich konnte keine Bewerbungsdetails aus diesem Artikel zu java docs finden.     
18.10.2010, 07:01
4
Antworten

Java: T obj; Typ von obj.getClass () ist Klasse? und nicht Klasse? erweitert T. warum?

In einer solchen Funktion: %Vor% Der Typ von obj.getClass() ist Class<?> und nicht Class<? extends T> . Warum? Der folgende Code funktioniert einwandfrei: %Vor% Also scheint die Signatur von T#getClass() ein Cl...
24.10.2010, 23:11
1
Antwort

So erfassen Sie Text mit Mauszeiger und Tastenkombinationen?

Ich möchte Text aus geöffneten Fenstern mit Mauszeiger und Tastaturkürzel mit C # oder Java erfassen  (wie babylon ), also Was muss ich wissen und umsetzen? Welche Bibliotheken brauche ich? oder kann ich winapi verwenden?     
25.10.2010, 13:43
4
Antworten

Wie kann Socket Connection Timeout auf Linux angezeigt / geändert werden?

Beim Erstellen eines Sockets in Java: %Vor% Der Socket-Konstruktor versucht, eine Verbindung zu host: port herzustellen, bevor er zurückkehrt. Bei Windows schlägt dies fast sofort bei nicht erreichbaren Hosts fehl, aber bei Linux kann es b...
25.06.2009, 20:09
3
Antworten

___ qstntxt ___

Vor etwa einem Jahr bin ich über eine nette Funktion in Java gestolpert, die ich nicht für das Leben von mir wieder finden kann.

Durch eine magische Schnittstelle war es offensichtlich möglich, einige Klassen oder Funktionen zur Laufzeit austauschbar zu machen.
Ich fand ein gutes Beispiel für jemanden, der ein einfaches Programm mit einer bestimmten Nachricht erstellt hat. Dann hat er das Programm mit einer Methode aktualisiert, an die ich mich nicht mehr erinnern kann, und plötzlich hat das Programm diese alte Druckfunktion durch eine neue ersetzt.

Ich habe versucht, durch die Java-API zu schauen, um sowohl mein Gedächtnis als auch das Googlen zu erzeugen, aber ohne Erfolg. Kann hier jemand helfen?

    
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123runtime ___ Runtime ist die Zeit, in der ein Programm läuft (ausgeführt wird) ___ answer3079298 ___

Verschiedene App-Container können dies tun.

Grundsätzlich müssten Sie die Klasse in einem neuen %code% neu laden (es sei denn, Sie sprechen darüber unter dem Debugger, in diesem Fall gibt es völlig andere APIs verfügbar).

Meiner Meinung nach lohnt sich die Sache nur selten: Alles so zu gestalten, dass es neu geladen werden kann, ist wesentlich schwieriger als das Entwerfen, sodass es in einem neuen Prozess komplett neu gestartet werden kann. Es ist auch einfacher sicher zu sein, welcher Code gerade ausgeführt wird, wenn nur eine Version in den Prozess geladen wird.

Es ist eine nette Sache, eine Demo zu erstellen, aber für meisten Anwendungen lohnt es sich nicht. Alles meiner Meinung nach natürlich:)

Beachten Sie, dass eine wichtige Ausnahme die Möglichkeit ist, Web-UI-Layer neu zu laden, ohne den Container neu zu starten: das kann das Leben viel erleichtern.

    
___ answer3079358 ___

Das ist normalerweise die Art von Funktionalität, die ich der Infrastruktur gerne hinterlasse, da es schwierig ist, richtig und leicht falsch zu geraten. Wie Jon oben erwähnt, die meisten Anwendungen brauchen es nicht und für diejenigen, die es brauchen Infrastruktur ist verfügbar.

Die meisten Anwendungsserver erlauben heutzutage eine Hot-Deployment, und ebenso sind die meisten Anwendungsserver einbettbar und erlauben es, diese zu entfernen, um Features zu entfernen, die Sie nicht benötigen.

Wenn es hauptsächlich für die Entwicklung ist, sollten Sie einen JRebel suchen, der diese Funktionalität transparent bereitstellt. Ich habe gehört, dass sie an einer Runtime-Lösung arbeiten, aber ich weiß nicht, ob sie zur Primetime bereit ist.

Wenn Sie wirklich motiviert sind, dies zum Laufen zu bringen, sollten Sie OSGi verwenden. Es hat eine steile Lernkurve, aber wenn man es erst einmal gemacht hat, macht es die meisten Dinge richtig und funktioniert sehr gut. Ich fand die Pax-Tools als guten Ausgangspunkt, aber die Eclipse-Toolchain bietet auch eine gute Unterstützung dafür.

    
___ answer3079401 ___

Die HotSwap -Technologie wurde zu Java 1.4 hinzugefügt und aktiviert zur Laufzeit die Klassendatei replacement . Die Funktion wird über die %code% Methode der Instrumentierung Paket. Ich denke, Sie können dies auch über die JPDA -Schnittstelle tun.

Hier ist auch ein Verweis auf das, was ich glaube, ist die Forschungsarbeit, die den HotSwap-Mechanismus zuerst beschreibt:

Ansonsten können Sie Classloader verwenden, wie in der anderen Erwähnung, aber nur dynamisches Laden von Klassen , nicht Ersatz. Dieselbe Klasse, die zweimal geladen wird, wird als zwei verschiedene Arten betrachtet. Kombiniert mit einer Schnittstelle und / oder ein wenig Reflektion, kann es jedoch Möglichkeiten bieten, die Anwendung zur Laufzeit zu aktualisieren.

Hier ist ein Verweis auf ein tolles Paper über Klassenlader und dessen Verwendung:

Ich werde nicht darauf eingehen, ob das gut oder schlecht ist, weil es nicht Ihre Frage war, aber ich finde es großartig, Unterstützung für die Laufzeit-Softwareentwicklung zu haben - schade, dass JSR-117 hat es nie geschafft!

    
___

Vor etwa einem Jahr bin ich über eine nette Funktion in Java gestolpert, die ich nicht für das Leben von mir wieder finden kann. Durch eine magische Schnittstelle war es offensichtlich möglich, einige Klassen oder Funktionen zur Laufzeit aust...
20.06.2010, 12:48
3
Antworten

Lucene: Ergebnisberechnung mit einer PrefixQuery

Ich habe ein Problem mit der Score-Berechnung mit einer PrefixQuery. Um das Ergebnis jedes Dokuments zu ändern, habe ich beim Hinzufügen eines Dokuments in den Index setBoost verwendet, um den Boost des Dokuments zu ändern. Dann erstelle ich Pre...
17.06.2010, 10:02
1
Antwort

Was ist die Logik eines fehlersicheren Iterators?

Wenn der fehlersichere Iterator eine separate Kopie erstellt und daran arbeitet, woher weiß er, dass Änderungen am Original vorgenommen wurden? %Vor% Die Ausgabe ist: %Vor%     
13.07.2016, 00:59
1
Antwort

Spring Boot @ Autowired verstehen

Ich verstehe nicht, wie Spring Boots Annotation @Autowired korrekt funktioniert. Hier ist ein einfaches Beispiel: %Vor% - %Vor% Wenn ich diesen Code ausführe, bekomme ich die Logs init App und init Starter , also erstelle diese O...
20.07.2016, 08:46