`

谁是下个JVM王者语言?

阅读更多
                                                          The next big JVM language?

There’s an interesting thread of comments related to a blog post by Stephen Colebourne, who is giving a talk at this year’s JavaOne entitled “Next Big JVM language.” In particular, he and others note that the Fantom language could be the answer (I find this interesting as Fantom really wasn’t even on my radar. Until now.). Moreover, many of the threads claim Scala to be the next big language. It seems people still prefer static typing over dynamic-ness. Either way, I got the distinct impression, based upon those individuals that left comments, which, by no means reflects the community at large, that Groovy isn’t it.

Principally, the arguments against Groovy can be summarized as its lack of performance (compared to Scala, for instance). Not to be outdone, a few folks brought up Groovy++ (which attempts to add a bit of static-ness to Groovy ostensibly to increase performance). Nevertheless, the comments are quite interesting to read if for anything that Fantom is gaining mind share perhaps at the cost of other more mainstream alternatives like Groovy.

 

    这几年,关于谁是下一个JVM上的王者语言之争已经不是新鲜事情了。看了上面的文章,您是不是又所感慨呢?

 

笔者对部分上述语言接触过,下面发表一下意见:

 

Groovy:在这些上述语言中,我认为它是最接近于Java的语言,并且提供了闭包和动态类型等特性。学习曲线不陡峭,并且学习资源很多。可惜性能让人失望,因此,一直不被笔者考虑作为实现语言。当年的GoG就是模仿RoR来实现快速Web开发,方便地解析XML文件,集成Spring和ORM,这些让SSHer欣喜不易。本人虽然没有深入研究,不过规约大于配置的开发模式,着实让我眼前一亮。不过,动态语言Groovy并没有让我看到它的光明的未来。说到Groovy的未来,当然还看SpringSource发展路线。也许正如上文所说,Groovy++才是正确的方向。

 

Scala:这门函数型语言能够让Groovy发明者后悔,能够让twitter放弃Ruby(至少部分放弃),转而拥抱它。这些足以证明Scala是一门优秀语言,静态类型安全,提供闭包功能,简化并发编程,弥补Java的不足。不过它的语法确实比较晦涩,我想这就是它最大的伤痛。Scala前途还是比较光明的。

 

Fantom:实际上,笔者还没有接触过,只是看了下:http://fantom.org/doc/docIntro/WhyFantom.html 。它给我第一个感觉是,像雾像雨又像风(C++、Java和其他语言的混合体)。先不说它是否简单,不过它还是有特斯色的。当年,Java号称跨平台的语言,虽然目前.NET可以跨平台(如果您的是HelloWorld工程的话,不必担心风险)。可是Fantom确实跨语言加跨平台的,这个是很强大啦。目前,Java和.NET的跨语言不过是建立在JVM和CLR平台上。Java和.NET两大平台通讯还是需要靠第三方协议(比如WebServices)。Fantom其他的方面没有什么特色,并且学习资源太少。

 

Clojure:第一次知晓这门语言,是通过看庄周梦蝶 的Clojure的blog。本人正在学习中,这门语言让我想起了“伊波兰式”(操作符号在操作数之前),并且执行语句皆在"()"里面,真如其名-封闭(其实没有这个英文单词,只有closure)。尽管这门函数语言,语法上非常不贴近于Java,但是简洁的代码足以替代臃肿的Java代码,即使和Scala比较,也不是同一个级别的。不过和Scala一样,提供优雅的函式和并发编程,不过纠结的语法确实不适合传统C语言系的开发人员。不过我还是比较看好它,试想一旦掌握后,那是多么“暴力”的语言。

 

JavaScript:从感情和熟悉程度上,笔者偏好JS。众所周知,JS作为浏览器内建语言,提供了灵活的前端页面控制。语法上,从普通的函数编程发展到prototype和闭包,并且通俗易懂;功能上,从DOM操作,到Ajax,再到目前的WebSocket;实现上,从客户端程序到服务端程序。目前的Node.js(在V8平台)可以实现服务端I/O操作,那么,实现Web服务端不在话下。在Web2.0时代,熟悉JS的人要比熟悉Java人还要多。同时,Java 6.0提供了JavaScript解释引擎,.NET就更不用说了。综上分析,下一个JVM王者语言很有可能就是JavaScipt。

 

Java:这么多年来,Java是最成功的语言之一。无论哪门语言都有缺点,然而越是出名,越是招骂。Java 7的闭包、模块化和GC优化等功能能不能成功地拯救Java,就看JVM产商的啦。我相信,大家都期待Java能过王者回归。

 

似乎上述语言都有希望称为JVM的王者语言。从JVM实现来看,JVM还是非常强大的。

 

下文推崇Groovy和JRuby,以供参考:

 

                                                                                  Top five scripting languages on the JVM
   Groovy and JRuby lead a strong field, with Scala, Fantom, and Jython following behind

 

   Anyone who has followed software development tools during the last decade knows that the term "Java" refers to a pair of technologies: the Java programming language and the Java Virtual Machine (JVM). The Java language is compiled into bytecodes that run on the JVM. Through this design, Java delivers its vaunted portability.

The language and the JVM, however, have been increasingly moving in opposite directions. The language has grown more complex, while the JVM has become one of the fastest and most efficient execution platforms available. On many benchmarks, Java equals the performance of binary code generated by compiled languages such as C and C++. The increasing complexity of the language and the remarkable performance, portability, and scalability of the JVM have created an opening for a new generation of programming languages. These languages lack Java's syntax overload (often referred to disparagingly as its "ceremony") -- that is, the amount of excess code that needs to be cranked out before the code that does the actual work can be written -- but take advantage of the JVM.

......

 

 

PS:笔者学识和技术有限,不足的地方请指正。

 

分享到:
评论
31 楼 heoxsoft 2010-08-17  
  Clojure is a dynamic programming language that targets the Java Virtual Machine. It is designed to be a general-propose language, combine the approachability and interactive development of a scripting language with an efficient and robust infrastructure of multithread programming. Clojure is a compliled language - it compiles directly to JVM bytecode. yet remains completely dynamic. Every feature supported by Clojure is supported at runtime. Clojure provides easy access to Java frameworks, with optional type hints and type inference. to ensure calls to Java can avoid reflection.
  Clojure is a dialect lisp, and shares with Lisp the code-as-data philosophy and a powerful of macro system. Clojure is predominatantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded design.


Regards
Limux
30 楼 sirxenofex 2010-08-17  
scala根本就不是什么语法晦涩,只是函数式编程不流行造成的。如果每个程序员都懂面向对象+函数式,那估计很多人直接就去用Scala了
29 楼 mercyblitz 2010-08-17  
lkj107 写道

javascript跟jvm有关系?

JavaScript可以在JVM上运行,并且调用Java丰富的类库和JRuby一样。


28 楼 lkj107 2010-08-17  
依然看好java

javascript跟jvm有关系?

我们正在朝着web1.0努力挺进
27 楼 mercyblitz 2010-08-17  
<div class="quote_title">mathgl 写道</div>
<div class="quote_div">
<p> </p>
twitter用scala 似乎是和mina一起配合解决message 传递的性能问题。不是抛弃ror..这两个现在都用。
<p> </p>
</div>
<p> </p>
<p> </p>
<p>呵呵,我是说部分放弃!</p>
26 楼 mathgl 2010-08-17  
<div class="quote_title">mercyblitz 写道</div>
<div class="quote_div">
<div class="quote_title">
<a href="http://thediscoblog.com/2010/08/11/the-next-big-jvm-language/" target="_blank">http://thediscoblog.com/2010/08/11/the-next-big-jvm-language/</a>
写道</div>
<div class="quote_div" style="text-align: left;">                                                          The next big JVM language?<br><br>
There’s an interesting thread of comments related to a blog post by Stephen Colebourne, who is giving a talk at this year’s JavaOne entitled “Next Big JVM language.” In particular, he and others note that the Fantom language could be the answer (I find this interesting as Fantom really wasn’t even on my radar. Until now.). Moreover, many of the threads claim Scala to be the next big language. It seems people still prefer static typing over dynamic-ness. Either way, I got the distinct impression, based upon those individuals that left comments, which, by no means reflects the community at large, that Groovy isn’t it.<br><br>
Principally, the arguments against Groovy can be summarized as its lack of performance (compared to Scala, for instance). Not to be outdone, a few folks brought up Groovy++ (which attempts to add a bit of static-ness to Groovy ostensibly to increase performance). Nevertheless, the comments are quite interesting to read if for anything that Fantom is gaining mind share perhaps at the cost of other more mainstream alternatives like Groovy. </div>
<p> </p>
<p>    这几年,关于谁是下一个JVM上的王者语言之争已经不是新鲜事情了。看了上面的文章,您是不是又所感慨呢?</p>
<p> </p>
<p>笔者对部分上述语言接触过,下面发表一下意见:</p>
<p> </p>
<p>Groovy:在这些上述语言中,我认为它是最接近于Java的语言,并且提供了闭包和动态类型等特性。学习曲线不陡峭,并且学习资源很多。可惜性能让人失望,因此,一直不被笔者考虑作为实现语言。当年的GoG就是模仿RoR来实现快速Web开发,方便地解析XML文件,集成Spring和ORM,这些让SSHer欣喜不易。本人虽然没有深入研究,不过规约大于配置的开发模式,着实让我眼前一亮。不过,动态语言Groovy并没有让我看到它的光明的未来。说到Groovy的未来,当然还看SpringSource发展路线。也许正如上文所说,Groovy++才是正确的方向。</p>
<p> </p>
<p>Scala:这门函数型语言能够让Groovy发明者后悔,能够让twitter放弃Ruby(至少部分放弃),转而拥抱它。这些足以证明Scala是一门优秀语言,静态类型安全,提供闭包功能,简化并发编程,弥补Java的不足。不过它的语法确实比较晦涩,我想这就是它最大的伤痛。Scala前途还是比较光明的。</p>
<p> </p>
<p>Fantom:实际上,笔者还没有接触过,只是看了下:<a title="Why Fantom" href="http://fantom.org/doc/docIntro/WhyFantom.html" target="_self">http://fantom.org/doc/docIntro/WhyFantom.html</a>
。它给我第一个感觉是,像雾像雨又像风(C++、Java和其他语言的混合体)。先不说它是否简单,不过它还是有特斯色的。当年,Java号称跨平台的语言,虽然目前.NET可以跨平台(如果您的是HelloWorld工程的话,不必担心风险)。可是Fantom确实跨语言加跨平台的,这个是很强大啦。目前,Java和.NET的跨语言不过是建立在JVM和CLR平台上。Java和.NET两大平台通讯还是需要靠第三方协议(比如WebServices)。Fantom其他的方面没有什么特色,并且学习资源太少。</p>
<p> </p>
<p>Clojure:第一次知晓这门语言,是通过看<a title="庄周梦蝶" href="http://dennis-zane.iteye.com/" target="_self">庄周梦蝶</a>
的Clojure的blog。本人正在学习中,这门语言让我想起了“伊波兰式”(操作符号在操作数之前),并且执行语句皆在"()"里面,真如其名-封闭(其实没有这个英文单词,只有closure)。尽管这门函数语言,语法上非常不贴近于Java,但是简洁的代码足以替代臃肿的Java代码,即使和Scala比较,也不是同一个级别的。不过和Scala一样,提供优雅的函式和并发编程,不过纠结的语法确实不适合传统C语言系的开发人员。不过我还是比较看好它,试想一旦掌握后,那是多么“暴力”的语言。</p>
<p> </p>
<p>JavaScript:从感情和熟悉程度上,笔者偏好JS。众所周知,JS作为浏览器内建语言,提供了灵活的前端页面控制。语法上,从普通的函数编程发展到prototype和闭包,并且通俗易懂;功能上,从DOM操作,到Ajax,再到目前的WebSocket;实现上,从客户端程序到服务端程序。目前的Node.js(在V8平台)可以实现服务端I/O操作,那么,实现Web服务端不在话下。在Web2.0时代,熟悉JS的人要比熟悉Java人还要多。同时,Java 6.0提供了JavaScript解释引擎,.NET就更不用说了。综上分析,下一个JVM王者语言很有可能就是JavaScipt。</p>
<p> </p>
<p>Java:这么多年来,Java是最成功的语言之一。无论哪门语言都有缺点,然而越是出名,越是招骂。Java 7的闭包、模块化和GC优化等功能能不能成功地拯救Java,就看JVM产商的啦。我相信,大家都期待Java能过王者回归。</p>
<p> </p>
<p>似乎上述语言都有希望称为JVM的王者语言。从JVM实现来看,JVM还是非常强大的。</p>
<p> </p>
<p>下文推崇Groovy和JRuby,以供参考:</p>
<p> </p>
<div class="quote_title"> <a title="Top five scripting languages on the JVM" href="http://www.infoworld.com/d/developer-world/top-five-scripting-languages-the-jvm-855?page=0,0" target="_blank">http://www.infoworld.com/d/developer-world/top-five-scripting-languages-the-jvm-855?page=0,0</a>写道</div>
<div class="quote_div">                                                                                  Top five scripting languages on the JVM<br>   Groovy and JRuby lead a strong field, with Scala, Fantom, and Jython following behind
<p> </p>
<p>   Anyone who has followed software development tools during the last
decade knows that the term "Java" refers to a pair of technologies: the
Java programming language and the Java Virtual Machine (JVM). The Java
language is compiled into bytecodes that run on the JVM. Through this
design, Java delivers its vaunted portability.</p>
<p>The language and
the JVM, however, have been increasingly moving in opposite directions.
The language has grown more complex, while the JVM has become one of the
fastest and most efficient execution platforms available. On many
benchmarks, Java equals the performance of binary code generated by
compiled languages such as C and C++. The increasing complexity of the
language and the remarkable performance, portability, and scalability of
the JVM have created an opening for a new generation of programming
languages. These languages lack Java's syntax overload (often referred
to disparagingly as its "ceremony") -- that is, the amount of excess
code that needs to be cranked out before the code that does the actual
work can be written -- but take advantage of the JVM.</p>
<p>......</p>
<p> </p>
<p>twitter用scala 似乎是和mina一起配合解决message 传递的性能问题。不是抛弃ror..这两个现在都用。</p>
</div>
<p> </p>
<p> </p>
<p>PS:笔者学识和技术有限,不足的地方请指正。</p>
<p> </p>
</div>
<p> </p>
25 楼 mercyblitz 2010-08-17  
wjywjy678 写道
灵活才会带来创造性啊.



同时带来了多种表达语义的途径,更加接近自然语言。
24 楼 wjywjy678 2010-08-17  
灵活才会带来创造性啊.
23 楼 mercyblitz 2010-08-17  
Arden 写道
我相信nodejs会是web2.0应用的主力军,现在的nodejs就象06年的rails一样,会很火~~

应该说是Web3.0的,2.0的时代快结束了,WebSocket的交互时代即将来临。不知是技术的进步,还是回归!
22 楼 mercyblitz 2010-08-17  
aws 写道
JAVA最强在什么地方,在于一方面其严谨,规范,也许也包括死板,极具可读性,可维护性
但是另一方面,同样也可以十分灵活,同样可以让你看不懂
java可以让一个牛人和一个初哥同台编写程序
一方面可以很方便的进行大规模项目开发,而不是只做一些玩具级的东西,另一方面,如果java采取玩具级的开发方式,一样可以很快很好很灵活

这点么,那些过于灵活而缺乏规矩的那些动态语言,是没有资格跟java比的,现在很多动态语言跟java的比较都是拿一些玩具级的东西进行比较,然后说采取严谨模式开发的java这个不好那个不好,那些玩具级语言这个好那个好,这个其实是没有意义的。



关键的一点,目前这些语言不成熟,没有普遍被接收,这都是必然的过程,没有尝试怎么知道是否能够成功呢。不得不说,一门语言的流行,不关是技术上吸引人,还有公关能力!
21 楼 mercyblitz 2010-08-17  
phz50 写道
工作时间一直使用java,业余时间玩玩scala。
不知道lz为什么不提JRuby


JRuby和Jython虽然可以在JVM上面执行,但是这两门语言和Java的同一个时代的产物。故而,不做比较。
20 楼 Arden 2010-08-17  
我相信nodejs会是web2.0应用的主力军,现在的nodejs就象06年的rails一样,会很火~~
19 楼 Arden 2010-08-17  
非常看好scala和nodejs~
18 楼 netfishx 2010-08-17  
scala的灵活性有些过了,这比语法问题大多了
17 楼 zdmcjm 2010-08-17  
jruby跟groovy是同一类的动态语言,所以就不提了,是吧,楼主?
16 楼 phz50 2010-08-17  
工作时间一直使用java,业余时间玩玩scala。
不知道lz为什么不提JRuby
15 楼 unika_ly12 2010-08-17  
aws 写道
JAVA最强在什么地方,在于一方面其严谨,规范,也许也包括死板,极具可读性,可维护性
但是另一方面,同样也可以十分灵活,同样可以让你看不懂
java可以让一个牛人和一个初哥同台编写程序
一方面可以很方便的进行大规模项目开发,而不是只做一些玩具级的东西,另一方面,如果java采取玩具级的开发方式,一样可以很快很好很灵活

这点么,那些过于灵活而缺乏规矩的那些动态语言,是没有资格跟java比的,现在很多动态语言跟java的比较都是拿一些玩具级的东西进行比较,然后说采取严谨模式开发的java这个不好那个不好,那些玩具级语言这个好那个好,这个其实是没有意义的。

同意,实际上JAVA的严谨和规范正是其成为工业级语言的主要原因。
14 楼 aws 2010-08-17  
JAVA最强在什么地方,在于一方面其严谨,规范,也许也包括死板,极具可读性,可维护性
但是另一方面,同样也可以十分灵活,同样可以让你看不懂
java可以让一个牛人和一个初哥同台编写程序
一方面可以很方便的进行大规模项目开发,而不是只做一些玩具级的东西,另一方面,如果java采取玩具级的开发方式,一样可以很快很好很灵活

这点么,那些过于灵活而缺乏规矩的那些动态语言,是没有资格跟java比的,现在很多动态语言跟java的比较都是拿一些玩具级的东西进行比较,然后说采取严谨模式开发的java这个不好那个不好,那些玩具级语言这个好那个好,这个其实是没有意义的。



13 楼 unika_ly12 2010-08-17  
我就不明白了,这么好的帖子也投隐藏?
12 楼 chunquedong 2010-08-17  
这里的人就是傲慢,喜欢给别人投新手或者隐藏。

相关推荐

    王者归来之java面试题大全最新经典-葵花宝典.rar

    《王者归来之Java面试题大全最新经典——葵花宝典》是针对Java程序员面试的一份综合性的学习资料,由IT教学总监单兴华编撰。这份文档旨在帮助Java开发者准备面试,涵盖了大量的Java核心技术以及面试常见问题,是提升...

    王者荣耀java源码-TechnicalArticles:技术文章

    王者荣耀java源码 标题 分类 内容 备注 架构 MySQL MQ 服务器 算法 JVM CODE JVM 缓存 使用redis改善数据库压力并更加实际情况定制 MQ 算法 缓存 缓存 解决缓存一致性3种方案 缓存 饿了么hotkey解决方案 IO 流程图及...

    开发Java游戏项目【王者荣耀】24小时搞定.zip

    在本项目"开发Java游戏项目【王者荣耀】24小时搞定.zip"中,开发者采用Java编程语言,构建了一个基于“王者荣耀”主题的游戏应用。这表明该项目可能是对原版游戏的一种模拟或者改编,旨在提供类似的玩家体验。Java...

    深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)周志明1

    Java技术体系主要包括三个关键部分:支撑Java程序运行的虚拟机,提供各种开发领域接口支持的Java类库,以及Java编程语言本身。自Java诞生以来,其虚拟机经历了多次迭代和创新,如经典的Sun Classic/Exact VM,市场...

    杀王者

    "杀王者"可能是指一个与游戏《王者荣耀》相关的项目或者工具,由于提供的信息较少,我将基于“Java”这一标签来展开讨论,分享一些关于Java编程语言和在游戏开发中的应用的知识。 Java是一种广泛使用的面向对象的...

    Java_Web整合开发 王者归来002

    - **JVM**:了解Java虚拟机的工作原理及其内存模型。 #### 2. Web基础 - **HTTP协议**:理解HTTP请求/响应模型、状态码含义等。 - **HTML/CSS/JavaScript**:掌握基本网页设计技能。 - **前端框架**:如Bootstrap、...

    王者归来之良葛格java学习笔记JDK6课件和课本代码.rar

    【Java学习笔记与JDK6】是针对初学者和进阶者的重要资源,由知名IT作者单兴华编写的“王者归来之良葛格”系列教程。本压缩包包含丰富的Java编程教学材料,旨在帮助用户深入理解JDK6版本中的核心概念和技术。以下是...

    韩顺平_Scala语言核心编程 .zip

    Scala是一种强类型、静态类型的编程语言,由Martin Odersky在2003年创建,它的名字来源于“Scalable Language”的缩写。Scala的设计目标是融合面向对象编程(OOP)和函数式编程(FP)的概念,为开发者提供一个高效、...

    java1.24加速版

    Java作为一个广泛使用的编程语言,其性能优化对于开发者和用户都至关重要。 1. **Java版本迭代**:Java的版本迭代通常会带来新的特性和性能改进。1.24作为Java的一个版本,相较于早期版本,可能会包含更多的bug修复...

    jdk-8u201-windows-x64.exe

    在【压缩包子文件的文件名称列表】中提到的“JDK”可能意味着这个压缩包内包含了完整的JDK内容,如bin目录下的可执行文件(如javac和java),lib目录下的类库,doc目录下的API文档,以及conf目录下的配置文件等。...

    服务计算作业4-21

    WALA是一个强大的分析框架,可以用于Java和其他JVM语言的程序。它可以帮助你理解代码结构,例如找出类之间的调用链,从而识别可能的复制和复制相关的功能。通过分析这些类的调用依赖,你可以评估服务的可靠性、性能...

    Java优势依然 甲骨文爆十年规划

    在云计算方面,JVM为安全的运行多个程序提供多租户功能,及每个线程/线程组之间的资源处理和管理。Java 9:将新增一些语言上的特性,包括大数据的支持、64位的大数组备份。异种计算模型新增了Java语言对GPU的支持、...

    不错的线程总结(全面上)1

    在Java编程语言中,多线程是实现并发执行任务的关键机制。本文将全面总结Java中的线程概念,以及如何创建和管理线程。线程允许程序中的不同部分同时执行,从而提高了程序的效率和响应性。 Java提供了两种创建线程的...

Global site tag (gtag.js) - Google Analytics