2014-02-25 36 views
0

我有一个使用某些本地代码的Java应用程序。此应用程序需要在大套机-OS-JVM平台组合上运行,但这里是主要的,我最初靶向:跨平台Java应用程序所需的最低原生代码组合数

  1. 机器类型: 32位和64位
  2. 操作系统:的Windows,Linux和Mac
  3. 的JVM: 32位和64位

问题1:下列哪些组合是自己有效的(甚至没有将我的应用程序带入图片)?除了知道它们是无效的以外,知道无效组合的单线原因也很棒。

==================================== 
    hw  os  jvm  valid? 
==================================== 
1. 32  32  32  yes 
2. 32  32  64  
3. 32  64  32 
4. 32  64  64 
5. 64  32  32 
6. 64  32  64 
7. 64  64  32 
8. 64  64  64  yes 
==================================== 

通过“有效”,我想到的是,不仅应用程序应该运行,它也应该完美运行 - 甚至没有间断性死机,挂断,缓慢等

问题2:我知道我可以使用Java的System属性来确定上述参数(hw,os和jvm)的值,然后动态加载适当版本的本机代码。但是由于我的应用程序不需要使用扩展内存,也没有64位平台提供的任何潜在的速度改进,所以我想知道我可以将应用程序发布的组合版本的最小数量。

+1

问题一作为一般规则hw> = os> = jvm所以2,3,4,6都是无效的。然而,从应用程序1和5的角度来看,它们是相同的。 – user1937198

+0

这是一个惊人的信息!请考虑将其张贴为回复,如果没有其他更好的回复,我会考虑将其标记为最终回复。谢谢,+1。 – Harry

回答

2

一般来说,硬件的宽度必须大于或等于os的宽度,该宽度必须大于或等于应用程序的宽度。还应用程序通常是无视硬件的最大宽度,从而仅存在三个CONFIGS说事:

32位操作系统 - 的32位应用程序 64位操作系统 - 的32位应用程序 64位操作系统 - 的64位应用程序

现在,如果应用程序是32位,它通常无关紧要,如果操作系统是64位。 (如果你正在使用驱动程序或者在os内部工作的话,那么它可以)所以你需要一个32位和一个64位版本的平台。总共有六个版本。