首页 | 路由技术 | 交换技术 | 接入技术 | 综 合布线 | 网络管理 | 网络安全 | 操作系统 | 实用技巧 | 业界动态
最 新咨询 | 网络编程 | 软件编程 | 脚本技术 | 网页制作 | 网站技巧 | 数据库  | 精品收藏 | 免费资源 | 在线书店
当前位置: 首页 >天空618-IT技术 >网络编程 >Javascript >正文
关键字: 模糊搜索:

Java程序员的迷失—论“虚拟机”

发布时间:08-08-13 09:25:10      来源:天空618-IT技术     作者:admin
最新报道

Java出现之前我一直是Smalltalk(注:Smalltalk被公认为历史上第二个面向对象的程序设计语言,和第一个真正的集成开发环境。)的爱好者。从Smalltalk转向Java的经历,到现在依然让我记忆犹新,从一门语言转向另一门语言并不是一件轻松的事情。我依然记得当你真正掌握这门新语言时所到达的临界状态,掌握一门新语言往往需要花费数月甚至数年的时间,经过这段时间的历练,你才能做出真正优秀的设计,以及知道如何最好的应用它的哪一个模式,如何避免错误发生,以及如何进行性能调优等等。

    最近因为工作需要,我要回过头来看一些以前的Smalltalk代码,这时我发现,在经历过这一段学习Java编程的阶段后,我已经很难清晰的理解过去自己所编写的Smalltalk代码,很明显,我肯定不能再称自己是一个合格的Smalltalk程序员。

    说这些只是为了表达我的一个观点:我认为每个人只可能精通一门编程语言,换句话说,如果你什么都精通,其实也就说你什么都精通。我喜欢一个只有一门语言、漂亮简单的“扁平结构”世界。在这样一个世界中,程序员之间交流会变得更加轻松,每个人可以彼此分享共同的经验,而且不也不用来回的在不同的语言之间跳来跳去。

    当Java第一次面世的时候,曾经有些虚拟机方面的家伙进行一些没有前途的尝试:让Java运行在Smalltalk虚拟机上。尽管他们拥有一个非常酷的叫做通用虚拟机(Universal Virtual Machine,UVM)的技术,但是归根到底,这实际上还是一个保护Smalltalk地盘的反抗行为。从理论上说这可能是一个好的思路,人们不再用必须学习一种新的语法就可以体验新语言的好处;但是实际上并非如此,使用Java本地接口JNI编程来使两者联系起来是一件令程序员非常痛苦的事情,这简直就是一场噩梦,程序员在编程的时候要陷入很多麻烦,例如在不同语言类型之间存在很多数据类型转化的问题。

    要想在Java下进行Smalltalk编程,或者在Smalltalk下进行Java编程,你需要非常精通两种语言,而且你需要拥有一个非常发达的大脑来调试虚拟机注册表和大量设置DOS堆栈的个数。

    数年以来,微软的家伙一直在抨击Java程序的速度慢,它们认为Java程序是解释型字节码,而不是完全编译好的,这也是人们怀疑Java性能的一个主要借口,而多数微软的语言则都被编译为解释好的p-code.然而现在微软又开始鼓吹它的通用语言运行时(CLR),将其称为编程的圣杯。这一点和Smalltalk/Java混合UVM非常相似。实际上,CLR上似乎只运行微软的语言,自从其问世以来并没有引起太多其他语言的程序员倒戈。

    现在有一种现象令我感到非常忧虑,“虚拟机可以完成一切”的观点正在逐渐复苏。人们的精力不再集中在Java和这个语言向前发展所需要的改进上,人们把精力都投入到让Java虚拟机JVM去运行Ruby、PHP或其它同类流行语言上,还有让Java虚拟机支持Java FX这个几乎和Java语法无关的技术上。如果这一切都实现了,留给我们的又是什么呢?

    我们拥有了一个不仅仅可以运行Java还可以运行其它语言的虚拟机;我们拥有了很多不使用Java编写但可以编译为Java的语言;我们拥有一些失去了自身价值定位的东西。换言之,我们迷失了自己的方向,失去了准确的定位。

    对于我们这些编程序的人来说,我依然认为熟练掌握多种语言实际上是行不通的,我们最终会变为二流程序员,只能编写性能糟糕和设计恶劣的程序,更不用说随着环境和语言的切换,调试方面的噩梦随处可见。

    那么为什么人们对虚拟机的热情如此高涨呢?你或许会说,其它语言是动态的而Java是静态的;或者其它

9 7 3 1 2 4 8 :


·上一篇文章:
·下一篇文章:
[ 返回上一页 ]字体[  ] [ 打印 ] [ 发送好友:发送给好友 ][ 加入收藏:加入收藏夹 ]
 
发表评论 ?
  相关文章
相关文章

无相关新闻

最新文章
· Java程序员的迷失—论“虚拟机”
· 杀毒软件市场怪现象之 误杀、暗杀
· 解决系统疑难杂症 用户必备工具S
· 实战:三顾茅庐 用DD-WRT突破网络
· 北京2008年奥运会直播
· sem,seo ,ppc 是什么意思
· checkbox实现全选的多种方法
· javascript 输入框提示列表效果
· Div Select挡住
· div层跨越iframe帧显示在上面
· asp读取xml文件
· 错误类型:Provider (0x80004005
· asp截取字符串的两种应用
· 通过脚本调用迅雷自动下载 迅雷A
· 数字奥运引发建站热 主机市场供求
· 开个外贸网站--选择天下数据
· BBS网站在奥运期间将封闭
· 国外诈骗电子邮件大全
· 奥运期间互联网视频流量的激增
· 全新日本免费空间