Java ist Plattform-unabhängig, sollte man meinen. Leider stellt sich die Sache in der Realität nicht ganz so einfach dar. Während die Sprache selbst Plattform-unabhängig ist, sind es die Bugs diverser JVMs nicht. Hier finden Sie aktuelle Hinweise zur Verträglichkeit von AMETAS mit verschiedenen Kombinationen aus VM-Versionen und Betriebssystemen.
Hinweis:Seit Version 2.6 erfordert AMETAS die Verwendung der Java-2-Laufzeitumgebungen.
AMETAS wurde bisher unter folgenden Systemen erfolgreich getestet:
Betriebssysteme:
Java Virtual Machines:
Probleme traten bisher unter Linux und Solaris mit JDK-Versionen 1.2.2 auf. Diese JDKs werden jedoch seit langem nicht mehr von Sun in den Verkehr gebracht.
Ein grundlegendes Problem kann durch die Nativthread-Implementierung auf Basis von Linux-Threads (auch bei anderen als den oben genannten VMs) entstehen: Das Thread-Modell unter Linux sieht vor, jeden Thread mit einem eigenen Prozesstabelleneintrag zu versehen. Wenn AMETAS läuft, wird die Prozesstabelle überraschend schnell lang werden; dies ist aber kein Fehler!
Jedoch kann es sein, dass die Prozesstabelle zu klein gewählt ist. Dies ist eine wählbare Kerneleinstellung, sodass man durch Neukompilieren des Kernels Abhilfe schaffen kann.
Wie in der aktuellen Java-API-Beschreibung zu lesen ist, sind einige Thread-Methoden, wie z.B. stop, suspend und resume als veraltet (deprecated) erklärt worden. Das bedeutet, das Sun diese Methoden in einer zukünftigen Release entfernen kann. Als Grund hierfür gibt man an, dass diese Methoden inhärent Deadlock-gefährdet sind, da sie einen Thread gewaltsam beenden.
Dies mag auf den ersten Blick wie eine Bevormundung der Java-Entwickler aussehen; indes stellt man schnell fest, dass man einen ThreadDeath - wenn man es darauf anlegt - auch prima fangen und entsorgen kann, dass also die bestehenden Mechanismen keinen sicheren Schutz vor Agenten bieten, die sich zu terminieren weigern.
Die derzeitige AMETAS-Version 2.6 verwendet noch immer diese Methoden zum Stoppen von Threads, sodass sie mit einer späteren Java-Version, die diese Methoden nicht mehr anbietet, nicht mehr lauffähig sein wird.
Wir arbeiten zurzeit an einer entsprechenden Änderung, die möglicherweise zum nächsten großen Versionssprung auf AMETAS 3 verfügbar sein wird.