如果java"无处不在",为什么会出现针对Windows的eclipse/netbeans版本

Gab*_*iel 0 java eclipse windows netbeans

我是java编程的初学者,研究过"一次编写,随处运行"的事情,但我注意到当我下载Eclipse或Netbeans IDE(用Java编写)时,有一个版本用于Windows,其他版本用于其他操作系统.

如果一个java程序"在任何地方运行",那么就不应该有"版本"(我首先想到的).我搜索并发现它是因为(至少是Eclipse,不了解Netbeans)程序使用的是一个不兼容的GUI库.

所以我的问题是:

1)为什么要使用一个脱掉java中最强大功能的库?它更快/更漂亮吗?
2)除了使用该库之外,还有其他方法可以使java程序不能交叉平台吗?

提前致谢.

oll*_*llo 5

当我下载Eclipse或Netbeans IDE(用Java编写)时,有一个适用于Windows的版本和适用于其他操作系统的其他版本.

如果一个java程序"在任何地方运行",那么就不应该有"版本"(我首先想到的).

日食

Eclipse使用SWT,它使用本 GUI库,因此您需要为每个OS /平台提供一个版本.

NetBeans的

与Eclipse相比,NetBeans使用标准java Swing for GUI,因此不需要本机GUI库.

这里你不正确:你可以下载一个特定于操作系统的版本(例如Windows/Linux/Mac OS),但你不必这样做!

要下载,请选择"OS independed Zip"作为平台.您将获得一个ZIP存档,您可以在每个支持的平台上提取和运行.但是,在Windows上你必须运行exe,在Linux上运行shell来启动IDE(检查bin目录).

特定于os的版本的主要特性是它们的安装程序,由此产生的NetBeans最常见.

1)为什么要使用一个脱掉java中最强大功能的库?它更快/更漂亮吗?

只需搜索SWT/Swing比较(以及有关优缺点的讨论).

2)除了使用该库之外,还有其他方法可以使java程序不能交叉平台吗?

是的,一切都取决于具体的平台.

例子:

  • JNA/JNI(java本机调用)
  • 路径(C:/whatever在Linux上不起作用,而/home/whatever在Windows上不起作用)
  • 信封.变量等
  • 调用其他程序

只需寻找像"如何保持Java跨平台"之类的东西,并采取与推荐相反的方式.

一般来说,java在这里做得很好,但有足够的不良意图,你可以杀死任何"跨平台"开发;-)