Erlang能超越Java吗?
Post By : 遙子以逍
2008-06-11提起Erlang语言,相信许多人都会摇头,因为它实在是太陌生了。在2008年6月由TIOBE Programming Community提供的程序语言排名中,Erlang占有率仅为
现在网络上Erlang的语言也大势兴起,有人认为Erlang会成为下一代的Java,其理由是:如果有了大公司的支持,它甚至可能成为下一个Java。因为它是个开源项目,非常适合多核处理、Web服务等领域。事实上,它也是编写在多核机器上运行的高可靠性系统的唯一成熟语言。这种想法的确是不无道理,有大公司的支持的确成推动程序语言的发展,但是光靠大公司的支持就能居世界之首,我想这也有些......
下面我们来看看Erlang的特性:
Erlang是一种函数式语言,使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。使用Erlang来编写分布式应用比其它语言简单许多,因为它的分布式机制是透明的,即对于程序而言并不知道自己是在分布式运行。Erlang运行环境是一个虚拟机,有点类似于 Java虚拟机,代码一经编译,同样可以随处运行。它的运行时系统甚至允许代码在不被中断的情况下更新。另外如果需要更高效的话,字节代码也可以编译成本地代码运行。
◆并发性,Erlang具有超强的轻量级进程,这种进程对内存的需求是动态变化的,并且它没有共享内存和通过异步消息传送的通讯。Erlang支持超大量级的并发线程,并且不需要操作系统具有并发机制。
◆ 分布式,Erlang被设计用于运行在分布式环境下。一个Erlang虚拟机被成为Erlang节点。一个分布式Erlang系统是多个Erlang节点组成的网络(通常每个处理器被作为一个节点)。一个Erlang节点能够创建运行在其它节点上的并行线程,而其它节点可以使用其余的操作系统。线程依赖不同节点之间的通讯,这完全和它依赖于单一节点一样。
◆ 软实时性 Erlang支持可编程的“软”实时系统,这种系统需要反应时间在毫秒级。而在这种系统中,长时间的垃圾收集(garbage collection)延迟是无法接受的,因此Erlang使用了递增式垃圾收集技术。
◆ 热代码升级 一些系统不能由于软件维护而停止运行。Erlang允许程序代码在运行系统中被修改。旧代码能被逐步淘汰而后被新代码替换。在此过渡期间,新旧代码是共存的。这也使得安装Bug补丁、在运行系统上升级而不干扰系统操作成为了可能。
◆ 递增式代码装载 用户能够控制代码如何被装载的细节。在嵌入式系统中,所有代码通常是在启动时就被完全装载。而在开发系统中,代码是按需装载的,甚至在系统运行时被装载。如果测试到了未覆盖的Bug,只需替换具有Bug的代码即可。
由这些特性可以看到,它在Web语言中的确有很大的优势,但是成为下一代的Java却是“无其心,也无其力”,若Erlang发展之壮大,之迅猛,那么它将被Java所吞噬,为Java所用。我觉得Java的强大之处不仅仅在于它强大的语言本身,还有无穷的包容之心,海纳百川。以上在下的愚见,多多包涵!

