您的位置: 旅游网 > 社会

JAVA应用扩展:Scala、Clojure和Groovy

发布时间:2019-10-19 05:39:16

对Web应用来说,扩展能力很重要,随着用户群和工作量的增加,处理器在增加,它应该能够进行扩展。对于JAVA应用来说,扩展更复杂,不只是简单的购买和安装20个新的处理器就可以的。然而,JAVA平台能够也确实支持应用扩展,通过外围设备语言,例如Scala、Clojure和Groovy.利用JAVA编程语言,开发者很难使JAVA应用进行线性扩展。除去最初的那些处理器外,每当系统中新添加一个处理器后,你会发现它不能接近或等同于总体性能。这个问题在于,JAVA实现并发性的编写使用的是线程和锁,所以随着处理器数量的增多,JAVA程序会花费大量的时间在锁上,即使是没有底层数据争用问题。这是事实,随着使用的处理器的增多,开始扩展程序,就产生了不可避免的瓶颈。

JAVA扩展悖论

这是一个悖论。JAVA平台可以无限扩展,或者至少限制了一个现代机器能把多少个处理器塞进服务器里。你知道,扩展是最受JAVA程序语言本身的限制,但从整体来看这不是JAVA平台的局限性。事实上,当编写的程序能很好的利用底层JAVA平台时,线性扩展就不再是问题。我们都知道,现阶段编写的大多数WEB应用都能很好地利用JAVA平台的无限扩展性。你怎样看?嗯,现在的问题是使用除JAVA外的语言。

外围编程语言来解救

JAVA的扩展问题已经不再新鲜。事实上,为了处理这个问题已经做了很多工作,其中最成功的项目中有两种编程语言:Scala和Clojure.

使用像映射和消息传递之类的概念,会让人想起旧的,高效的并行编程语言Erlang和Scala,它们正在寻找方法,以解决JAVA语言的问题线程和锁范式。此外,Scala 和Clojure都使用不变的”方式管理状态数据。大家知道,使用JAVA应用可以改变对象容器的大量属性。正因为这些属性可以改变,所以访问这些属性就一定要锁定,这样数据才不会陷入矛盾状态。

有Scala和Clojure在手,数据有了不变的趋势。因为不变,所以不会被更改;因为不会被更改,所以就没有必要永久锁定数据。与其改变或编辑对象属性,如果一定要做更改的话,与其编辑,不如创建一个拥有新属性的全新的,不变的对象,加上一个时间戳,和一个可以表明这个新数据块的实时快照的等价物。[page]

不是改变对象的状态,那么不变是什么意思?比如一个银行帐户记录,你是拷贝状态,而不是创建一个新银行帐户记录。如果你有一个collection对象需要修改,通过修正它你得到了一个新的collection对象,而旧的对象仍然在那里。”James Strachan说,他FuseSource资深会员和Groovy编程语言的发明者。

有了高并发列表,你可以指出数列中的任一个特定阶段,而且你所指向的对象不会改变。它将永远是那个静态对象。但是未来的修改是有可能发生的,因为每当修改了对象,你就会得到一个较新版本的对象,有一个新的时间戳。你可以指向对象的任意版本,而且每一个版本都反映了列表那个时间的状态。Strachan把每一个对象比作是同一时间的一个快照。

当你照着这种方式做的话,关于锁的问题就消失了,” Strachan说。现在不用锁,不用信号,没有行为者,也没有任何奇怪的人员,读的行为都可以永久保存collection对象。我们都应该向不变努力,因为这样就可以不必为读出加锁了,只需要给写入加锁就可以了。”

通过把数据变成不变的,可能会给内存和数据管理带来压力,但却可以通过简单地给系统增加处理器来获得了巨大的,线性的性能。

Scala、Clojure和Groovy的互操作性

关于Scala、Clojure或Groovy的另外一件好事是,它们不仅能运行在JAVA平台下的JAVA虚拟机(JVM)上,也可以和一般的JAVA应用一起运行,甚至是和JAVA应用进行交互,与标准JAVA库链接,或者更甚者是允许程序编写JAVA可以访问的代码和库,这些都是源于Scala和Clojure源代码级别。其实,当前的标准JAVA应用所使用和访问的‘函数语言’都是由外围JVM语言编写的,并允许标准JAVA应用利用Scala和Groovy程序的好处,这时它最有意义。

事实上,JAVA编程语言本身并没有享受到兆、多核系统的好处,虽然这些变得越来越实惠,但这也并不意味着JAVA平台没有能力提供你所需的程序和扩展性。如果大规模的扩展是你需要的,你可以一直利用像Scala和Clojure这样的外围JVM语言,而且它也不需要你一头扎进去,不管别的。通过编写Groovy或Clojure来使用函数语言或链接现有的库,允许你在这一领域慢慢地进行测试,从而发现从这些语言中获得的哪种性能可以发送到你的程序中。

宜春治疗癫痫病方法

宜春治疗癫痫病费用

宜春治疗癫痫病医院

宜春治疗癫痫病医院哪家好

运城妇科

小儿咽喉肿痛
小孩流鼻血
孩子流鼻血
小孩上火吃什么
猜你会喜欢的
猜你会喜欢的