|
|
1
8
我会尽可能使开发工作尽可能接近生产。Ibm和Sun的JDK当然都满足SDK认证,但它们绝不相同。它们的检测和内存管理至少略有不同。如果没有其他问题,JDK中的bug将是不同的,您的代码可能只会在一个场景与另一个场景中绊倒。它也可能只发生在凌晨4点,当月亮是满月的时候,尤其是当你有客人的时候。 我不能告诉您在哪里可以获得IBM的jdk,但是如果您在您的公司获得了websphere许可证,您应该与IBM联系,以获得指向该jdk的链接。 祝你好运,尽量减少差异。 |
|
|
2
4
这不应该有任何区别。它可能不是完全相同的二进制文件,但100%兼容。我假设您正在使用外部库,比如log4j或者hibernate或者其他什么,而这些库不是使用ibmjdk构建的。 然而,JRE之间存在差异。例如,我记得当我使用反射列出一个类的方法或字段时,IBMJRE通常以与Sun不同的顺序将它们提供给我。 |
|
|
3
3
我将使用与部署应用程序时使用的JDK相同的JDK进行构建(如果您可以控制的话)。 如果编译器不同,则二进制文件可能不同,但它们在语义上应该相同。我不知道IBM是否编写了自己的编译器。JRockit JDK实际上使用Sun编译器,但JVM不同。因此,使用JRockit时,二进制文件是相同的。 如果应用程序在运行时与不同的JDK一起使用,我仍然会使用您认为在部署时大部分时间都会使用的JDK进行构建,并使用不同的JDK进行一些运行时测试。 |
|
|
4
3
|
|
|
5
2
使用任何JDK编译都不会产生问题,除非您引用的是java.*和javax.*pacakges之外的类(您不应该这样做)。当然,给定供应商的JDK和规范之间总是可能存在差异,这可能会导致一些很难跟踪的非常奇怪的运行时错误,但在我的经历中,我从未见过这种情况。 我建议您使用目标JRE运行所有测试套件,因为供应商之间的运行时行为差异要比编译语义差异大得多。 |
|
|
6
2
JDK正在将您的代码编译为 而不是直接向 . 预计不同供应商的编译器会生成跨供应商兼容的代码。例如,用于JDK1.5的IBMs编译器将生成在SUN的JDK1.5及更高版本上运行的代码,而不会出现任何问题。
|
|
|
7
1
长期使用WebSphere之后,JDK的版本非常重要。WebSphere6.1附带了IBMJDK1.5(或者是5)。当您修补WebSphere时,JDK也有相应的修补程序。虽然它可能与不同版本的JDK(甚至是不同的供应商)一起工作,但如果出现问题,我怀疑您是否会得到IBM的大量支持。 如果您需要一个64位JVM,我建议可能有一个64位的构建,但我不能具体评论windows,我可以告诉您,AIX和Linux都有一个64位WebSphere6.1构建。
|
|
|
8
0
它们应该编译为相同的字节码规范,尽管它们可能编译不同的字节码(就像不同的C编译器生成不同的机器代码一样)。我认为运行生成的代码不会有任何问题——我已经在Mac上编译了Java 1.4,然后部署到IBM的J9上,在PocketPC上运行,没有问题(这是在J9能够处理Java 5字节码之前)。 不管怎样,我肯定会把编译平台作为自述文件中的一个要点,这样你的客户就可以看到它是否有问题。 或者,您可以使用ANT构建和部署,并使用Sun的JDK和ANT。 |