2008-09-22 4 views

Antwort

8

Ich würde so viel wie möglich versuchen, die Entwicklung so nah wie möglich an der Produktion zu halten. Die JDKs von Ibm und Sun erfüllen zwar beide die SDK-Zertifizierung, sind aber keineswegs identisch. Ihre Instrumentierung und Speicherverwaltung unterscheiden sich zumindest geringfügig. Nicht zuletzt werden die Fehler im JDK anders sein, sodass Ihr Code nur in einem Szenario über das andere stolpern kann. Es wird auch wahrscheinlich nur um 4 Uhr morgens geschehen, und wenn der Mond voll ist, besonders wenn Sie Gesellschaft haben.

Ich kann Ihnen nicht sagen, wo Sie jdk von IBM bekommen, aber wenn Sie eine Lizenz für websphere in Ihrem Unternehmen haben, sollten Sie einen Kontakt bei IBM haben, um einen Link zu diesem JDK zu erhalten.

Viel Glück, und immer versuchen, Unterschiede möglichst zu minimieren.

4

Es sollte keinen Unterschied machen. Es wird wahrscheinlich nicht genau die gleiche binäre, sondern 100% kompatibel sein. Ich nehme an, dass Sie externe Bibliotheken wie Log4j oder möglicherweise Hibernate oder was auch immer verwenden und diese nicht mit dem IBM JDK erstellt werden.

Es gibt jedoch Unterschiede in den JREs. Ich erinnere mich beispielsweise daran, dass ich bei der Auflistung von Methoden oder Feldern einer Klasse, die Reflektion verwendeten, von IBM JRE in einer anderen Reihenfolge als die Sun angegeben wurde.

3

Ich würde das gleiche JDK verwenden, um zu erstellen, das verwendet wird, wenn die Anwendung bereitgestellt wird (wenn Sie die Kontrolle darüber haben).

Die Binärdateien können unterschiedlich sein, wenn der Compiler anders ist, aber sie sollten semantisch identisch sein. Ich weiß nicht, ob IBM einen eigenen Compiler geschrieben hat. Das JRockit JDK verwendet tatsächlich den Sun Compiler, aber die JVMs sind unterschiedlich. Bei JRockit sind die Binärdateien identisch.

Wenn die Anwendung zur Laufzeit mit verschiedenen JDKs verwendet wird, würde ich immer noch mit demjenigen bauen, von dem Sie denken, dass er die meiste Zeit zur Bereitstellungszeit verwendet wird und einige Laufzeittests mit verschiedenen JDKs durchführen.

0

Sie sollten auf die gleiche Bytecode-Spezifikation kompilieren, obwohl sie verschiedene Bytecode kompilieren können (ähnlich wie verschiedene C-Compiler unterschiedlichen Maschinencode erzeugen). Ich glaube nicht, dass es Probleme beim Ausführen des resultierenden Codes geben würde - Ich habe Java 1.4 auf einem Mac kompiliert und dann ohne Probleme auf IBMs J9 auf einem PocketPC implementiert (das war bevor J9 mit Java 5 Bytecode umgehen konnte) .

Unabhängig davon, würde ich definitiv Ihre Compilation-Plattform einen Aufzählungspunkt auf Ihrer Readme-Datei machen, so dass Ihr Client sehen kann, ob es ein Problem ist.

Alternativ können Sie mit ANT erstellen und bereitstellen und Suns JDK mit ANT verwenden.

2

Kompilieren mit jedem JDK sollte kein Problem verursachen, es sei denn, Sie beziehen sich auf Klassen außerhalb der Java. * Und javax. * Pacakges (was Sie nicht sein sollten.) Natürlich besteht immer die Möglichkeit, dass es eine Diskrepanz zwischen gegeben gibt Hersteller JDK und die Spezifikation, die einige wirklich seltsame Laufzeitfehler verursachen könnte, die schwer zu finden sind, aber ich habe noch nie zuvor in meiner Erfahrung gesehen.

Ich würde empfehlen, alle Testsuiten auszuführen, die Sie mit der Ziel-JRE verwenden, da sich das Laufzeitverhalten bei den Anbietern wesentlich häufiger unterscheidet als bei der Kompilierungssemantik.

2

JDKs kompilieren Ihren Code zu einem Bytecode und nicht direkt zu Maschinencode. Es wird erwartet, dass Compiler verschiedener Hersteller herstellerübergreifenden Code generieren. Zum Beispiel erzeugt der IBM Compiler für JDK1.5 Code, der ohne Probleme auf SUNs JDK 1.5 und höher läuft.

Ein weiteres Problem ist, wie Compiler den Bytecode optimieren, habe ich keine Informationen, dass einige Compiler bessere Optimierung als andere durchführen. Der größte Teil der Optimierung wird während der Laufzeit von JVM ausgeführt (zum Beispiel JIT (Just-in-Time) oder AOT (Vor-der-Zeit) -Strategien).

1

Nachdem Sie lange mit WebSphere gearbeitet haben, ist die Version des JDK sehr wichtig. WebSphere 6.1 wird mit einem IBM JDK 1.5 ausgeliefert (oder ist es 5). Wenn Sie WebSphere patchen, gibt es auch entsprechende Patches für das JDK. Obwohl es mit einer anderen Version des JDK (vielleicht sogar einem anderen Anbieter) funktioniert, bezweifle ich, dass Sie von IBM viel Unterstützung erhalten werden, wenn etwas schief geht.

Wenn Sie eine 64-Bit-JVM benötigen, würde ich vorschlagen, dass es wahrscheinlich eine 64-Bit-Build gibt, während ich Windows nicht kommentieren kann, kann ich Ihnen sagen, es gibt eine 64-Bit-Version von WebSphere 6.1 für AIX und Linux.

Die beste Antwort ist, mit dem Verkäufer zu überprüfen, ob sie Ihre Konfiguration unterstützen. Was Sie nicht tun möchten ist, dass es funktioniert, dann haben Sie ein Problem in Live, rufen Sie Support auf und finden Sie heraus, dass Sie eine nicht unterstützte Umgebung haben.

3

Das IBM JDK wird mit J9 VM und SUN JDK wird auf Hotspot VM ausgeliefert, die unterschiedliche Algorithmen haben, um zu funktionieren. Ihre Anwendung wird möglicherweise nicht gleich ausgeführt, wenn Sie SUN JDK bereitstellen und optimieren und Ihre Produktion IBM JDK für WAS verwendet. Erkundigen Sie sich bei den Anbietern und öffnen Sie ein Ticket, lassen Sie uns wissen, wie es geht.

Verwandte Themen