Vala,Java的远亲还是近邻

原创
开发 后端
Java的地位在动摇,Scala、Vala和Go言语都有可能成为编程语言里的新明星,尤其是Vala语言:基于C的对象语言,但又被赋予了C++的强大和Java的成功……

【51CTO经典译文】大卫·梅吉森(Dave Megginson)***写了一篇文章:Java已死。(许多使用Java的XML程序员应该很熟悉,他推动了SAX API的开发)。

作为一种编程语言(而不是平台),Java与众不同,这应归因于Sun公司拒绝通过声誉良好的独立标准组织将其标准化(虽然做了很多努力,一次试图让Java通过ECMA,一次是ISO,但Sun公司都最终退出,并推出让人非常不满的JCP体系,既Java Community Process)。Sun缺少对Java作出巨大改动的能力和意愿(某些方式与其意愿不符),Java不得不面对两个主要的对手(微软的J++以及后来的C#,还有IBM的SWT),这两个对于主要的组件(图形库)提出了异议。Java成于中间件,但却失败于未能利用桌面浏览器的崛起之势:他们的HTML解析器在上世纪九十年代非常出色,但被有意地忽视,而至于无用之地。对此,很难不将其视为Sun公司有意为之:将浏览器市场留给它的对手和合作者。我的确曾非常喜欢Java,在某种意义上,甚至拿我的公司作为赌注压在Java上:今天我绝不会再这样做。

51CTO推荐专题:走向混合编程时代

对于桌面领域(我明白所有人都知道,在万维网时代和即将来临的iPad+Android时代,这一领域已是万劫不复地死去),同类语言有什么替代者?我把时间花在什么样的XML处理方式上?我一直留意较多的是Scala:它集成到JVM中,具有类似的基于C语言的语法,并且能够将类Java程序升级为拥有更多函数的DSL程序。然而,我还有三点疑虑。***,存在很多种函数式编程,它们使用了XSLT,对于XML处理,XSLT比Scala具有更好的优化性。第二,使用JVM让Scala处于不利地位,可能引起Oracle的诉讼(或许这种情况只是杞人忧天?)。第三,许多Scala的资料都写得比较学术化,或者是由偏门语言的拥护者编写。(不管是谁,在讨论某项技术的优势时,如果使用了monad这种专业术语,自我看来,其流行程度就会直线跳水。)

51CTO推荐专题:Scala编程语言

另一个竞争者是Vala,不过没有上述三种问题。某种程度上,这是一种真正的回归,回到上世纪八十年代:基于C的对象语言,但又被赋予了C++的强大和Java的成功。下面是Vala网站上的宣传介绍:

Vala是一种新的编程语言,其目标是为GNOME开发者提供现代化的编程语言功能,同时没有额外的运行时要求,并且相对于C语言编写的应用程序和库,无需使用不同的ABI。

Vala是基于GNOME的GObject系统,提供了那种你期望的类功能。与Scala一样,在语言级别上,它具有与Java Beans的get*()和set*()等同的属性,但是,对于属性更改通知和监听器(listener),它也能够提供了语言级别上的支持。它不具备很强的XML处理能力,只是一个迷你型的解析器,不过看起来它的确具有很好的Unicode功能(字符串为UTF-8,string.getch()可返回16位的unichar字符。)在功能级别上,Vala与Java***的不同之处应该是对象回收(de-allocation)的引用计数系统(reference-counting),相对于Java的GC,这一系统能够提供更多确定的实时行为,不过也为某些编程错误打开了一扇窗户。在这个时代,Vala的另一个古怪之处在于,对于阵列访问不进行边界检查,所以它比Java对规则的要求更为严格(不过可以推测,比C语言要宽松很多)。

我很期待有人对Vala产生兴趣,比如有人在考虑编写新的C或C++应用程序,或者使用C、C++、C#或者不断抱怨不满的Java程序员,想要拜托大企业的控制,同时在其背后有一个经过证实的(保持操作系统中立?)强大平台,这样的人能够去使用Vala。我想,与Scala一样,在大型项目上使用之前,你当然想要检查一下是否具有适当的IDE支持。

在服务器端,Google公司推出的Go编程语言是很有前途的:它更少面向对象,但同时具有C语言领域内的效率。他们的宣传介绍如下:

快速……并行……安全……有趣……开源

Go语言为功能强大的gorountines提供另一个关键字go,可封装各种fibre/线程/进程/多核类型的并行计算。

我很想看到Go和Vala联姻生子,带来一种更可爱的语言。我认为Vala和Scala还没有很好地发挥多核CPU的优势。

原文名称:Vale Java? Scala Vala palava and Go too

原文地址:http://broadcast.oreilly.com/2010/08/vale-java-scala-vala-palava.html

[[14971]]

原文作者:Rick Jelliffe

【51CTO译稿,非经授权谢绝转载,合作媒体转载请注明原文出处、作者及51CTO译稿和译者!】

【编辑推荐】

  1. “Scala” 一个有趣的语言
  2. 编程思想碰撞 Scala不是改良的Java
  3. 1月编程榜发布:Google Go意外夺得年度编程语言
  4. Google Go语言的快乐编程因素  
  5. 再论Java已死 基于JVM的语言已成Java***威胁
责任编辑:佚名 来源: 51CTO独家译稿
相关推荐

2009-01-11 09:25:00

局域网网上邻居访问效率

2023-11-30 09:55:27

鸿蒙邻分类器

2013-01-15 10:50:42

2009-06-30 15:22:00

Java还是.NET

2022-11-22 08:00:00

开源工具数据集

2011-08-12 09:35:27

Java 7

2020-07-16 08:05:15

JavaGo

2020-06-30 07:00:00

推荐算法推荐系统

2021-06-09 16:00:05

近邻算法数据

2016-12-20 15:35:52

Java堆本地内存

2022-07-29 08:05:31

Java值传递

2012-02-03 14:39:12

Java

2012-12-07 09:41:39

2009-05-27 13:25:56

erpIT服务

2018-10-09 15:26:19

JavaPython语言

2021-01-13 14:55:54

JavaPython开发

2018-09-26 14:17:00

编程语言JavaPython

2017-06-08 09:53:52

免密支付移动智能终端网络安全

2019-11-01 10:27:48

GoJava语言

2019-10-31 17:06:59

开发技能代码
点赞
收藏

51CTO技术栈公众号