java

位置:IT落伍者 >> java >> 浏览文章

Java用于开发桌面应用的优劣分析


发布日期:2023年12月03日
 
Java用于开发桌面应用的优劣分析

我承认即使在JavaFX出现之前Java已经在桌面领域做出了一些重大的提升比如Swing中的提升我们现在也有了很棒的OpenGLDirectX也有了很大的提升启动时间也显着提升了没错Java在去年做了很多显着而有效的工作

然而不得不说的是除此之外其他的仍是一塌糊涂比如Java sound实际上并不好用被遗弃的JavaD又如何呢?最近甚至JOGL也被Sun遗弃包括很久之前的SwingLabJAI(用作图片处理)多年未真正升级过看起来也没有在什么地方得到利用它迫切需要性能上的巨大提升以适应来临的多核GPU时代所有这些应用于桌面领域的Java产品不是被遗弃就是成为鸡肋

而且很关键一点是尽管我们可以用Java创建出桌面应用但只要我们想开发真正的富桌面应用我们就无法真正使用Java而使用JNIC/C++和平台依赖的libraries等

使用Java构建桌面应用更多的是困难和麻烦比如即便想要在Java应用内创建一个高效的优良的web浏览器都是一件难事而且没有用Java编写的图片处理应用没有一个纯粹的Java web浏览器没有数字音频应用没有D建模器没有矢量图形编辑器没有先进的光栅编辑器Java今日在桌面端所到达的高度只能满足那些服务器开发者因为他们只需要在远程服务时使用电脑桌面上的简单界面

过去我们一直说这是因为Java太慢无法在一个慢的平台上开发出如此复杂的应用但我们这样说是错的原因有两点Java从来就没有慢过即便有些部分曾经慢过但没有人怀疑当它需要被用到服务器端时它会迅速地得到提升比如JITsGCs等这一点也正是Java语言卓越的地方由于Java平台的天然特性Java应用总是第一个利用市场上新硬件和新操作系统的应用一旦JVM被配置到了一个新系统中几乎不需要任何编辑和调试Java应用就可以在上面全速运行比如你在位的操作系统上开发了一个应用它就可以全速运行在Windows 或者Solaris的位JVM上所以所谓的Java太慢根本不能成为Java在桌面端碌碌无为的借口

而且如果你是一个终端用户你甚至不需要从网站上重新下载应用这意味着不仅终端用户和开发者得到了速度提升甚至应用的执行性能的前边也得到了速度提升今天JIT在runtime为本地操作优化代码已经做得很棒了这意味着你可以挖掘出你运行的硬件的全部的能力这是一个静态编译语言永远也无法竞争过的性能只是这个性能如果可以运用到桌面端和游戏领域就好了

我们总是说由于Sun总是一个服务器端公司的原因Java在桌面端一直没有真正的机会而Oracle的收购让这种境况看起来不会有什么改变希望这不要再继续下去为了SunOracle和Java自身的利益Oracle内部的知名人士应该提醒公司来让他们知道如果缺乏了在桌面端的能力和效率必将影响Java的普及率甚至它在服务器端的占有率

我们一直以来习惯着Sun主要提供服务器端服务因而想象着未来更多的处理能力还是出现在服务器端而客户端不过是连接服务器的简单服务这种情况已被证明是绝对错误的因为未来的桌面应用将服务应用与硬件所有的运算能力相结合大量的数据和解码声音图像视频被开发者处理而且用并行编程的方式来实现既保证了丰富的性能又保证了速度对开发者来说未来的服务既需要他们在客户端处理也需要在服务器端处理执行复杂的搜索图像视频以及虚拟D环境需要服务器端的技术而远程服务如医学分析远程教育和远程会议等则需要客户端能力

只是令我们感到失望的是历史又一次地重复了因为至今Java中还没有什么大的动作

armin Ehrenreich 在回复中说道说的好我完全认同

确实迫切需要跨平台的桌面应用技术而且我不认为C++结合Qt是个好的选择你说阐述的问题之所以没有引起很多的共鸣我想是文化上的问题许多Java社区的人们包括Sun内部的负责人无法理解你所说的所以我断言Oracle也不会对Java做出什么大的改变

客户端现在基本上被微软和Apple包揽到Cocoa论坛中会发现他们谈论的是GUI的可用性响应性终端户如何处理桌面应用等而我们的论坛呢大部分人认为应用的未来在服务器端这就是文化上的差异

但是桌面技术需要做很多工作Swing很慢很慢地进化连同Netbeans平台JavaD JOGL等应用勉强成为了桌面端的一个选择但Sun置此境遇于不顾只是模仿Flash发布了一款新的脚本语言但是那些API只有使用JavaFX才可用

Jeff Martin回复道正确的观点但我有一点不同Sun真正的问题是他应该吃自己的饭用自己的力量来用Java写一些实在的桌面应用这可以证明他们关于Java在桌面端的承诺证明他们可以写出应用提升框架和工具我不认为另一个框架会帮助Java

James Sugrue回复道我同意作者观点我也很支持桌面端开发看看现在处于开发中的Eclipse e中的一些项目它们为桌面和浏览器提供了一个解决方案所以我想还是有一些希望的但我认为我们不需要过分聚焦于桌面端JavaFX是正确方向上的一个迈进只是无法在Swing和JavaD/JOGL中看到应用提升

Osvaldo Doederlein回复道我认为JOGL的支持没有那么糟糕毕竟它是JavaFX Desktop Runtime的一个依赖实际上我们可以写一个非JavaFX的小程序而且不需要请求本地代码的许可性就可以配置

编辑自

上一篇:java smslib发送短信

下一篇:Java中的闭包与回调