64位Java应用程序:是否需要64位操作系统、64位JRE和64位应用程序?

9
这个问题是关于64位Java应用程序的,虽然我是因为使用Netbeans / Eclipse而遇到它的。我正在使用一台64位处理器和64位操作系统(Windows 7)。我想要使用超过4GB的堆内存运行Netbeans / Eclipse(即使用Xmx标志),但我遇到了一些困惑。似乎没有Netbeans的64位版本,虽然其他操作系统有Eclipse的64位版本,但Windows没有。此外,我找不到最新JRE / JDK的64位版本(我读过提到这些存在的网站,所以我不确定Sun是否只是暂时将它们下架了)。
现在我已经解释了我的情况,我的问题如下:
  1. 我需要什么软件才能运行Netbeans/Eclipse/(随机Java应用程序)使用超过4GB的堆内存?只有64位操作系统是否足够?我是否还需要64位JRE?
  2. 我以为Java源代码和Java字节码是与体系结构无关的,也就是说,使用32位或64位JDK编译的Java程序可以在具有32位或64位JRE的不同计算机上运行。如果这是真的,为什么Eclipse有32位版本和64位版本(我知道它们没有Windows版本,但它们有Linux版本)?这是否意味着Eclipse可能有本地库,32位与64位会有所不同?

提前感谢,
red.october

更新1:
好的,事实证明在Windows上有64位版本的Eclipse,但由于某些原因它被深深地埋藏了起来(至少我没有看到它从主页链接到哪里)。在寻找了很长时间后,我发现一个博客文章,其中说明你可以在Eclipse下载获取64位的Windows版Eclipse。该链接指向一个页面,其中列出了许多不同版本的发布链接-我只选择了最新的稳定版本(此帖发布时为3.5.1)。这第二个页面列出了Eclipse 3.5.1的各种下载选项,对于每个下载,您都可以选择广泛的架构(32位和64位)和操作系统(例如,Windows,Linux)。我个人选择了Eclipse SDK下载-这包括“Eclipse平台,Java开发工具和插件开发环境,包括源代码以及用户和程序员文档”。我不确定我是否需要源代码或文档,但我想我随时可以将其删除。

3个回答

9
是的,您需要使用64位的JVM来利用所有内存。由于我对Windows上可以获取什么并不了解,所以我会让其他人回答这个问题。
然而,我认为找不到64位NetBeans的主要原因是它是100%的纯Java和体系结构无关的。Eclipse提供了一种替代GUI框架,具有更本地的外观和感觉(SWT)并将其用于开发环境本身。 一旦您将Java应用链接到本机库,您需要分发适用于正确体系结构的库,因此Eclipse分发具有体系结构依赖性(您的第二个项目)。

这是否意味着我需要在相应架构的Eclipse中开发才能分发Java应用程序? - Chris
@Chris:不,完全不需要。你只需要确保平台二进制文件随产品一起提供,并正确加载即可。有很多页面描述了如何做到这一点,我相信 SWT FAQ 中也有相关内容(http://www.eclipse.org/swt/faq.php)。 - Fredrik
感谢您的澄清,也感谢提供链接。在过去的几年中,我花了很多时间在服务器端,有时会忘记为客户端打包。 - Chris

2

我应该把这个问题分开说 - Fredrik回答了我关于一般性问题的疑问,而你回答了我如何获得64位的JDK6(所以我给了两个回答+1)。事实证明,我的问题在于我尝试下载了JDK+Netbeans组合的EXE文件,而那个自动带有32位版本的JDK。谢谢。 - red.october

1

不存在64位Java“应用程序”这样的东西。 Java编译类是以Java字节码形式存在的,就是这样。 在64位JVM上执行程序(这又需要64位操作系统)可以让它们访问更多的内存,但对程序来说,这种差异是不可见的,因为所有对内存操作的访问都是隐藏的,所有数据类型都是相同的。

另请参见this question


@Jherico:在这种情况下,我认为你的答案是语义上无意义的废话,他想访问超出32b JVM限制的内存数量,为了驳斥你所说的“没有这样的事情”,他可以为每个变量使用Long类型,这确实可以成为一个64b Java应用程序。(毫无意义,但却是可能的。) - Ande Turner
@sudo noob:我认为Jherico正确回答了我的问题。没有本地代码的Java应用程序没有32位或64位版本(这就是我所问的)-您只需编写和编译一次,诸如可以访问多少内存之类的事情取决于JVM和硬件平台。我不认为64位应用程序中的64意味着现在所有数据类型都是64位长(我认为char在64位C应用程序中仍然是8位长)。 - red.october

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接