Operating system 跨平台Java应用程序所需的本机代码组合的最小数目

Operating system 跨平台Java应用程序所需的本机代码组合的最小数目,operating-system,jvm,cross-platform,native,32bit-64bit,Operating System,Jvm,Cross Platform,Native,32bit 64bit,我有一个Java应用程序,它使用一些本机代码。此应用程序需要在最大的一组机器操作系统JVM平台组合上运行,但以下是我最初针对的主要组合: 机器类型:32位和64位 操作系统:Windows、Linux和Mac JVM:32位和64位 问题1:以下哪些组合本身有效(甚至没有将我的应用程序带到图片中)?除了知道组合无效之外,还应该知道组合无效的一个原因 ==================================== hw os jvm valid? ==

我有一个Java应用程序,它使用一些本机代码。此应用程序需要在最大的一组机器操作系统JVM平台组合上运行,但以下是我最初针对的主要组合:

  • 机器类型:32位和64位
  • 操作系统:Windows、Linux和Mac
  • 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
    ====================================
    
    通过“valid”,我希望应用程序不仅可以运行,还可以完美地运行——甚至不会出现间歇性的崩溃、挂断、缓慢等情况


    问题2:我知道我可以使用Java的系统属性来确定上述参数(硬件、操作系统和jvm)的值,然后动态加载本机代码的相应版本。但我想知道我可以提供的应用程序的最低组合版本数,鉴于我的应用程序不需要使用扩展内存,也不需要使用64位平台提供的任何潜在速度改进。

    通常,硬件的宽度必须大于或等于操作系统的宽度,操作系统的宽度必须大于或等于应用程序的宽度。此外,应用程序通常不知道硬件的最大宽度,因此只有三种配置是重要的:

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


    现在,如果应用程序是32位的,那么如果操作系统是64位的,这通常并不重要。(如果您使用的是驱动程序或操作系统内部的东西,则可能会出现这种情况),因此每个平台需要一个32位和一个64位版本。所以总共有六个版本。

    对于问题一,作为一般规则,hw>=os>=jvm所以2,3,4,6是无效的。然而,从应用程序的角度来看,1和5是相同的。这是一个惊人的信息!请考虑把它作为回应,如果没有更好的回应,我会把它标记为最终的。谢谢,+1。