64位Java应用程序:是64位操作系统,64位JRE和64位应用程序吗?

问题描述:

这个问题通常是关于64位Java应用程序的,尽管我是因为使用Netbeans/Eclipse而出现的。我正在使用64位处理器和64位操作系统(Windows 7)。我想用超过4GB的堆内存(即使用Xmx标志)运行Netbeans/Eclipse,但我遇到了一些困惑。似乎并没有Netbeans的64位版本,虽然其他操作系统的Eclipse有64位版本,但没有Windows版本。此外,我找不到最新的JRE/JDK的64位版本(我读过的网站提到了这些内容的存在,所以我不确定Sun是否暂时将它们删除)。64位Java应用程序:是64位操作系统,64位JRE和64位应用程序吗?

现在,我已经解释了我的情况,我的问题如下:

  1. 什么软件,我需要比堆内存4GB的多个运行NetBeans/Eclipse中/(随机Java应用程序)?是否有足够的64位操作系统?我是否还需要64位JRE?
  2. 我认为Java源代码和Java字节码是独立于体系结构的,因为在使用32位64位JDK编译的Java程序中,可以在不同的机器上运行32位或64位JRE。如果这是真的,为什么Eclipse有一个32位版本和一个64位版本(我意识到他们没有一个用于Windows,但他们有一个用于Linux)?这是否意味着Eclipse可能具有本地库,对此,32位与64位有什么关系?

由于提前,
red.october

更新1:
好了,它原来有就是Eclipse for Windows的64位版本,但它深埋出于某种原因(至少它没有看到它从主页面链接到哪里)。在搜索了很长时间之后,我发现了一个blog post,其中声明您可以在Eclipse Downloads处获得适用于Windows的64位Eclipse。该链接指向一个包含许多不同发行版本链接的页面 - 我只是选择了最新的稳定版本(本文发布时为3.5.1)。第二页列出了Eclipse 3.5.1的各种下载,并且对于每次下载,您都可以选择多种体系结构(32位和64位)和操作系统(例如Windows,Linux)。我个人选择了Eclipse SDK下载 - 这包括“Eclipse平台,Java开发工具和插件开发环境,包括源代码以及用户和程序员文档”。我不确定是否需要源代码或文档,但我想我以后可以随时删除它。

是的,你需要一个64位的JVM来利用你所有的内存。我没有及时了解你能为Windows获得什么,所以我会让其他人回答这个问题。

但是,我认为你无法找到64位netbeans的主要原因是它是100%纯java和独立于体系结构。 Eclipse提供了一个具有更原生外观和感觉(SWT)的替代GUI框架,并将其用于开发环境本身。 将您的java应用程序链接到本地​​库后,您需要为正确的架构分发这些库,因此需要依赖eclipse发行版(第二项)。

+0

酷 - 感谢您清理那个。 – 2009-10-30 00:33:31

+0

这是否意味着分发我需要在相应架构的eclipse中开发的java应用程序? – Chris 2011-01-13 22:36:33

+0

@Chris:不,完全没有。您只需确保平台二进制文件随产品一起提供并正确加载。有很多页面描述了如何做,我相信它也在SWT常见问题解答中(http://www.eclipse.org/swt/faq.php) – Fredrik 2011-01-16 12:39:20

您可以在Windows 7中运行64位JDK或JRE,现在我正在运行它们。

Java SE Development Kit 6u16

Java SE Runtime Environment 6u16

选择向下您有Windows 32或64位的选择哪种OS从下拉。

+0

我应该把这个问题分开 - 弗雷德里克回答了我的一般问题,但你回答了我如何获得64位JDK6(所以我给出了两个答案+1)。事实证明,我的问题是我试图下载JDK + Netbeans组合EXE,并且自动附带JDK的32位版本。谢谢。 – 2009-10-30 00:39:33

有没有这样的事情作为一个64位Java'应用程序'。 Java编译的类都是java字节码,句点。在64位JVM上执行程序(反过来需要64位操作系统)可以访问更多的内存,但是由于所有对内存操作的访问都是隐藏的,并且所有数据类型都相同,所以程序看不到这些差异。

另请参见this question

+0

@Jherico:在这种情况下,我觉得你的答案是语义pap,他希望获得超过32b JVM限制的内存量,并且打破你没有这种想法的想法,他可以使用Long来表示每个变量,它确实是一个64位Java应用程序。 (毫无意义,但可能。) – 2009-10-30 01:35:24

+0

@sudo noob:我认为Jherico正确回答了我的问题。没有本地代码的Java应用程序没有32位或64位版本(这正是我所问的) - 你编写和编译一次,而诸如它可以访问多少内存等事情依赖于JVM和硬件平台。我不认为64位应用程序中的64位意味着所有数据类型的长度都是64位(我认为char在64位C应用程序中仍然是8位长)。 – 2009-10-30 05:17:47