有没有Java内核/桌面应用程序?

Jic*_*hao 7 java cross-platform desktop-application

在Windows/Linux平台上,我作为一个普通的计算机用户,几乎找不到任何用Java编写的软件.

  • 两个操作系统(Windows和Linux)都是用C编写的.
  • 两个Web浏览器(IE和Firefox)都是用C++编写的.
  • 两个Web服务器(IIS和Apache)是用C++编写的.
  • 大多数数据库管理系统都是用C/C++编写的.

而且我找不到在桌面应用程序领域用Java编写的软件.程序员似乎更喜欢使用跨平台的Widgets(Qt,wxWidgets等)而不是Java.

我的问题是:

  1. 为什么Java不适合做内核应用?如果原因是它的速度慢,那么它比C/C++慢多少?
  2. 尽管Java提供了一致且优秀的API库,但为什么程序员更喜欢使用C/C++进行桌面应用程序.我认为使用Java而不是C/C++开发大多数桌面应用程序(例如纸牌游戏)应该需要更少的代码,而开发的应用程序可能是轻松部署到其他平台.
  3. 用户方面是否有使用Java完成的任何着名应用程序(意味着我们每天都使用它)?

谢谢.

Joe*_*oey 7

  1. 至少有一些用Java实现的操作系统,即JNode,JOSJX.当然,在Java发布之前,您不会看到任何以该语言实现的操作系统.此外,对操作系统内核的托管语言似乎存在长期偏差; 有一些研究项目,比如奇点,尝试这种方法的可行性,但我们还远远没有准备好"正常"使用.但是,您将始终需要一个内核"核心",它在汇编或其他低级语言中完成,这使您可以访问通常不具备的部分.但这可以保持很小.

  2. Java API是一致的还是优秀的可能是值得商榷的,但对于许多环境而言,首选语言是C(主要是UNIX喜欢,Windows API的许多部分),Objective-C(Mac OS X)或C++等衍生产品(基于COM的Windows,KDE,Qt编程.这并不意味着您不能用另一种语言执行此操作,但文档通常假定您坚持使用首选语言.您显然需要考虑的另一个重要因素是您需要在目标系统上使用JVM.我所知道的唯一一个本地使用Java的操作系统是Mac OS X.所以你会打扰用户有额外的依赖.像微软这样的公司也非常不愿意考虑发布他们无法用Windows控制的第三方软件,所以你永远不会看到JVM随着操作系统发布.(是的,曾经有一个Java 1.1,iirc,但那些日子早已过去,不会再回来.而且那个是由微软自己提供的.)

  3. 大多数Java开发人员可能每天至少使用一个,例如Eclipse和Netbeans是用Java编写的.和其他一些软件开发工具一样,例如MavenAnt.另一个受欢迎的程序是例如Vuze(以前的Azureus)BitTorrent客户端.但至少对我来说,目前我甚至没有多少Java桌面应用程序每周使用.

    但是,对于Web应用程序来说,这是完全不同的,因为你无法真正地告诉他们从外部写入了什么.


Eda*_*aor 6

1.
Java不利于内核开发.主要原因是控制.这不仅仅与速度有关(尽管这是速度的一部分).Java不会给程序员提供与内存相同的控制权,而不是代码的执行方式.在C/C++中,您通常可以根据代码确切地猜测将创建哪个汇编代码.在Java中不是这样.

注意:对于C以及C++ 的部分内容都是如此:如果您在C++中使用了许多更高级别的功能,那么您显然会失去相同的控制权.但是C++提供了两种选择.

2.
出于多种原因,C/C++比Java更适用于桌面.可能其中一些是历史的(它们已被使用了长时间),可能其中一些是"外观和感觉"的问题,这基本上意味着Java程序往往看起来像Java程序,而不是像大多数程序一样用户的机器(有解决方案,但过去几乎所有的Java程序都是如此,这使得程序员远离它们).

但是,我认为最重要的是,C和C++现在用于GUI的次数要少得多.显然它们仍在使用,但很多程序员正在转向其他语言,比如C#和其他语言.

3.
如果你在谈论着名的桌面应用程序,我认为最着名的(当然是程序员)是Eclipse.它也是一个非常棒的应用程序,当然看起来很棒,这只是向您展示Java 可以用于良好的自然外观桌面应用程序.

我真的不知道其他任何人.

  • 关于#3 - 有关其他示例,请参阅http://stackoverflow.com/questions/521110/examples-of-good-java-desktop-applications.我个人可以说IntelliJ IDEA是一个很棒的桌面Java应用程序. (2认同)