【CSDN 编者按】Java最初被吹捧为"杀手级"的桌面语言 , 但在21世纪初 , 它逐渐走向默默无闻 。 这篇文章是Java开发者所写的回顾桌面Java历史的系列文章的首篇 。 他认为Java是现代桌面应用程序的一个引人注目的平台 , 并且解释了他创建jDeploy(一个对开发者友好的Java桌面部署工具)的原因 。
原文地址:https://jdeploy.substack.com/p/the-decline-and-fall-of-java-on-the
译者 | 章雨铭 责编 | 屠敏
出品 | CSDN(ID:CSDNnews)
还记得我在90年代末上大学时 , Java 是我们计算机课程中必学的官方首选语言 。 当时 , 虽然有部分课程使用的是 C、C++ , 但大多数基础内容都是用 Java 来演示的 。 而且有的课程作业要求必须要用Java完成 。 (到了高年级可以自由选择其他语言完成作业)
那时 , 我对Java的接触仅限于Applets , 对于它的地位和相比于之前改进的地方 , 我一概不知 。 因为没有更深的了解 , 我感觉像是被欺骗了 , 我认为Java只是一种“toy language”(toy language是指一种用于一般指令目的的编程语言 , 但在实际执行程序时通常是不充分的) , 而所有"真正的"开发都是用C++等语言完成的 。
Java很慢
我想可能任何曾经使用过Java GUI应用程序或带有小程序的网页的人 , 都会觉得"Java很慢"吧 。 那个时代唯一用Java编写的桌面应用程序是开发工具(我想到的是ArgoUML和NetBeans) , 它们不仅有很多bug , 而且速度很慢 , 从滚动到打开菜单都有延迟 。
有些教授仍然相信Java的潜力 , 并且坚持认为 , 由于它的即时编译功能 , Java实际上是相当快的——而且 , "理论上 "一旦编译了代码路径 , 就会和C++运行得一样快(甚至更快) 。 但是在我看来 , 这就像皇帝的新衣 。
Java应用程序不是"真正的"应用程序
另外一点是我们用Java写的应用程序不是本地的应用程序 , 这让Java显得很“次等” 。 在"构建 "了应用程序之后 , 会得到一堆.class后缀文件 , 或者得到一个.jar后缀文件 , 这些只有在计算机安装了Java之后才能运行 。 而我在BCIT的同学和朋友所做的项目 , 是现实生活中的可执行文件 。 双击就可以运行 , 就像一个真正的专业应用程序——在窗口或屏幕的顶部有所有应该有的菜单 , 这让我感到有点眼红 。
于是 , 我询问了我的一个教授能否制作本地可执行文件 , 他不明白我为什么想这么做:"这将否定Java所有的跨平台优势 。 一旦你把它编译成一个本地可执行文件 , 它就不再是跨平台的了" 。
但是他还是给了我一些建议 , 让我研究一下Java WebStart , 它可以让Mac和Windows的用户更容易安装我的应用程序 , 而不是将其作为一个本地捆绑程序 。 WebStart听起来很有趣 , 但我还是觉得 , 这不是我想要的 。 即使WebStart允许我发布应用程序 , 也还是需要用户安装Java后才能使用 。 (尽管在2001年左右的这个时候 , Java已经预装在大多数电脑上了) , 而且对于那些习惯于下载后只需双击就能打开的用户来说 , 这似乎很陌生 。
在试验了几个WebStart应用程序后 , 其结果充其量只能算是平庸的 。 这些应用程序在下载更新时打开速度总是很慢 , 而且它们不能很好地与操作系统结合 , 这让我感到很失望 。
但我没有放弃 , 当时有一些第三方工具把Java应用打包成本地可执行文件 , 但它们价格不菲 , 而且 "只适用于Windows" 。 然后 , 我又把希望寄托于GCJ , GNU的Java编译器声称能够将Java编译成机器码 , 但它只适用于一个API子集 , 而且不支持Swing——所以GUI也不行 , 除非你想使用本地GUI工具包 。
当时的我认为 , 对于桌面开发来说 , Java是一个死胡同 , 除非我想把应用设计成一个小程序——那时 , 与Flash等更轻、更快的技术相比 , Applets已经不行了 。
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
