阅读更多

47顶
6踩

编程语言

转载新闻 关于下一代大型JVM语言的思考

2010-09-28 08:41 by 见习记者 songfantasy 评论(28) 有16816人浏览
近日在旧金山举行的JavaOne 2010大会上,OpenGamma的技术工程师兼Joda Time开源API项目组长斯蒂芬·科尔伯恩与Artima比尔·文纳斯就“下一代大型 JVM语言”展开了一场对话。在这一对话中,史提芬表达了对于下一代大型语言的思考。

你认为哪种语言将成为下一代大型JVM语言?

首先,我认为,想一想 Java 给予我们的教训对这个问题是有帮助的。Java哪里做错了?哪里做对了?以后我们要怎么做?在这种语境下,其他主要的替代语言(Groovy, Scala, Clojure、Fantom)是否有可能成为下一代大型JVM语言?

那么,我们从 Java 得到的教训是什么?如果我们可以重新来过,我们会回避许多东西,如暴露的基本数据类型(exposed primitives)、暴露的整列以及检查型异常(checked exception),我们不会把这些东西放到语言中。

然后,是一些我们想要在新语言中实现的东西。很明显,一种更优秀的模块化方案是其中之一。但是,Java 中的模块化,我们一直在说这事,并不是真正我们想要的。事实上,我们可以不再编译至类文件,而是只编译至模块。编译器不再输出类文件,而只输出模块。我们有时可以在模块系统中添加一项行得通的功能,确定版本 1.1 是否与版本 1.2 兼容。模块系统检查所有我们所用的方法的字节码,并作出判断, 因为你所用的全部方法的字节码没有变化,因此 1.1 和 1.2 对于你来说是完全兼容的。虽然还有好多事需要做,但是有些这些事情需要一点反思。

现在,我们有4 门主要的语言可供选择:Groovy, Scala, Clojure、Fantom,这些语言怎么样呢?

Clojure所用Lisp语法。这对Java开发者带来了很大的困难,所以,看起来它不可能成为下一代大型语言,即使它有一些很棒的创意。

Groovy是一个不同的小语种,它在功能方面填补了Java对于脚本语言的需求。构建脚本方面,Groovy将会扮演一个角色,尤其是结合 Gradle。也许在web应用程序方面也会有重要的作用。

其他两门语言:Scala 和Fantom,有些类似,他们都是静态类型的,但他们处理类型系统的方式完全相反。从某种程度上,Scala 已经一路奔向类型系统了;如果我理解的没错,你可以在Scala 泛型内作出一种图灵完备性(Turing-complete)的语言。更多关于Scala语言的介绍可以参考51CTO专题:Scala编程语言。

Fantom 走向了另一个方向,弱化了类型系统。对于这两种语言,我的结论是:Scala 过于复制。它添加了太多的东西,绳子太长,结果把自己束缚起来了。这就是我对Scala 的顾虑。Fantom 拥有一些很好的功能,而且易于学习,很快就可以上手,但是,弱化的类型系统以及几个额外类也许还不足以让它成为下一代大型语言。

所以,我最终还是回到这个想法——如果Java 是下一代大型语言将会怎样?

问题在于,添加的越多,再添加东西就变得越困难,因为这门已经被填得慢慢的了。不过,与其跳出来和Oracle说:“让这门语言添加闭包;让这门语言添加属性”,假如我们可以为Java做一个向后兼容版本,将会怎样?假如我们提供一款工具,可以将 JDKn+1 转换为JDKn+2,如果你喜欢,还可以在Java 两个版本之间转换,你觉得如何?这是你的向后兼容的想法:你可以在两个版本之间进行转换。如果是 JKD8 呢?如果不是在JDK8 中使用极客的方式处理闭包和模块,而是延迟发布一年,使其向后不兼容,将会怎样呢? 这样,我们就可以正确地处理闭包和属性,还有其他一些东西。

实际上,做减法也是适合的:删除检查型异常,删除一些功能,如:除非是 Nullable 类型引用可为 null。做一些这样的删除工作可以带来很大的变化。按照这种思路走下去,将会怎样呢?
来自: 51cto
47
6
评论 共 28 条 请登录后发表评论
28 楼 txdnet 2010-11-01 22:36
Javascript挺不错的 什么时候能成为JVM上的语言呢
27 楼 ksmjava 2010-10-14 15:14
为什么要用Java,JVM是其中的一个优势。语言的更新换代是必然的,是适应时代的选择,他的易用性和性能等等因素的选择的,有很多程序员对固定自己学的语言了,甚至害怕语言的更新,的确也是这样,但是对于整个时代,语言更新换代是必然的,唯思想不变这是永恒定律。
26 楼 ttianyaren 2010-10-13 17:44
lonelybug 写道
外国有一种技术人员,总是最终让科学技术的东西慢慢走向了一种宗教的领域,他们他技术的为人用,科技以人为本慢慢地变成了,基督徒的传教,慢慢的吧学术上的客观比较变成了宗教派别的厮杀。

在这点上,apple的jobs吧用户的信仰投射在了最终“魔幻”办得产品上。这个是一种营销策略,是一种好的“宗教化”。而现在国外很多技术阵营的“宗教化”是把人类宗教历史的决斗搬到了虚拟世界里。

你们自己看看他说的模块化之类的东西,这些是在于设计者的能力范畴,而他们为了宗教化自己的语言阵营,却如此的剥夺设计师的思想。就好比建筑师的思想才是决定建筑物合理布局的关键,而不是钢筋水泥这些建筑材料。本末倒置四个字对这个人的思想再合适不过了。

25 楼 huhu359819176 2010-10-11 16:00
那是相當高深,有點暈暈滴!
24 楼 彬彬AtdayOfMay 2010-10-10 00:02
LightUpHeaven 写道
好高深

我也觉得
23 楼 fallen_lord 2010-10-09 11:44
calvinlyc 写道
但是Java本身的特色严谨,而且稳定,兼容,并且利于测试

Java哪点利于测试了。。。。用动态语言做下mock再回头来用Java,哎。。。
22 楼 Silverside 2010-10-09 09:11
lonelybug 写道
外国有一种技术人员,总是最终让科学技术的东西慢慢走向了一种宗教的领域,他们他技术的为人用,科技以人为本慢慢地变成了,基督徒的传教,慢慢的吧学术上的客观比较变成了宗教派别的厮杀。

在这点上,apple的jobs吧用户的信仰投射在了最终“魔幻”办得产品上。这个是一种营销策略,是一种好的“宗教化”。而现在国外很多技术阵营的“宗教化”是把人类宗教历史的决斗搬到了虚拟世界里。

你们自己看看他说的模块化之类的东西,这些是在于设计者的能力范畴,而他们为了宗教化自己的语言阵营,却如此的剥夺设计师的思想。就好比建筑师的思想才是决定建筑物合理布局的关键,而不是钢筋水泥这些建筑材料。本末倒置四个字对这个人的思想再合适不过了。

顶!!!!!!!!!!!!!!!!!!
21 楼 lonelybug 2010-10-09 01:24
外国有一种技术人员,总是最终让科学技术的东西慢慢走向了一种宗教的领域,他们他技术的为人用,科技以人为本慢慢地变成了,基督徒的传教,慢慢的吧学术上的客观比较变成了宗教派别的厮杀。

在这点上,apple的jobs吧用户的信仰投射在了最终“魔幻”办得产品上。这个是一种营销策略,是一种好的“宗教化”。而现在国外很多技术阵营的“宗教化”是把人类宗教历史的决斗搬到了虚拟世界里。

你们自己看看他说的模块化之类的东西,这些是在于设计者的能力范畴,而他们为了宗教化自己的语言阵营,却如此的剥夺设计师的思想。就好比建筑师的思想才是决定建筑物合理布局的关键,而不是钢筋水泥这些建筑材料。本末倒置四个字对这个人的思想再合适不过了。
20 楼 LightUpHeaven 2010-10-08 18:11
好高深
19 楼 izat 2010-09-29 11:09
nick19982008 写道
Java 8000

笑喷了。。。。
18 楼 Leon.Wood 2010-09-29 08:59
icanfly 写道
netfishx 写道
hubo888168 写道
scala的语法太鬼畜了...

完全同意

要是用接近java的语法,我想scala会发展得更好。

一楼说的好 GOG粉顶一个
17 楼 pochonlee 2010-09-29 08:57
这个应该是个广告贴。哈哈哈哈...
16 楼 icanfly 2010-09-29 08:08
netfishx 写道
hubo888168 写道
scala的语法太鬼畜了...

完全同意

要是用接近java的语法,我想scala会发展得更好。
15 楼 calvinlyc 2010-09-29 03:42
下一代JVM语言。。 Java活的好好的,叫Java要死了那么久还不是活的那么好,开源社区如Apache基金, SpringSource,包括google的力量那么强大,就算Java本身版本更新缓慢,但是开源项目的不断更新出炉本身就是对这一种语言最大的支持,Java确实本身不合适开发小型网站,但是Java本身的特色严谨,而且稳定,兼容,并且利于测试. 所以还是开发企业级网站的最好的几个语言之一。 就算Oracle对Java不够重视或者对其本身的开源社区不够友好,但是毕竟Java命运是掌握在JCP手中而非Oracle一家公司手里.更何况Oracle花了那么多钱就是为了把一个成熟稳定,而且普及率巨大的语言给毁掉? Java能带给Oracle的利润肯定巨大,不然Larry Elission这个老奸商会做亏本生意的话,他也排不到美国富豪榜第3了
14 楼 jamesqiu 2010-09-28 20:58
kooen.chen 写道
Scala 个人感觉程序运行起来很慢,很担心性能。


你说他复杂可以,编译慢也行;但Scala的运行绝对不慢。
13 楼 ganlisxn 2010-09-28 19:27
fantasybei 写道
删除检查型异常,-_-,支持

12 楼 kevintop 2010-09-28 17:22
Scala 不是个好东西,炒作。。。
11 楼 青青雨露 2010-09-28 15:37
  
10 楼 faylai 2010-09-28 15:15
又在抑郁了,新闻的质量粗糙
9 楼 nick19982008 2010-09-28 14:41
Java 8000

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • java未来发展——JVM7

    近日在旧金山举行的javaone2010大会上,openGamma的技术工程师兼JodaTime开源API项目组长蒂芬....文纳斯就下一代大型jvm语言举行了一场对话,在这场对话中,斯蒂芬表达了对于下一代大型语言的思考。

  • JVM垃圾收集和优化

    这篇文章是要在背景信息上进行注释,并在此工作中要注意一些要点,这些工作要专门针对基于Java的实现,因为深入了解JVM行为在此过程中非常有益。 Java语言通过在很大程度上照顾内存管理,从而将重点放在其余逻辑...

  • JVM第一弹 - 超3w字超详细解析

    GC日志是JVM在进行垃圾回收时输出的日志信息。分析GC日志可以帮助我们了解程序的内存使用情况和垃圾回收的效率。

  • JVM 平台上的各种语言的开发指南

    尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的JVM语言么? 如今借助来自像Xtext和ANTLR这样的工具的支持,创建一种新的语言比以前容易多了。个体编码者和群体受突破和改进现存JVM语言,以及...

  • JVM核心知识体系

    1.问题 1、如何理解类文件结构布局? 2、如何应用类加载器的工作原理进行将应用辗转腾挪? ... 3、热部署与热替换有何区别,如何隔离类冲突?... 4、JVM如何管理内存,有何内存淘汰机制?... 8、JVM...

  • JVM 平台上的各种语言的开发指南[z]

    在2013年你可以有50中JVM语言的选择来用于你的下一个项目。尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的JVM语言么? 如今借助来自像Xtext和ANTLR这样的工具的支持,创建一种新的语言比以前...

  • JVM调优总结

    参考网上大牛写的很全面的JVM调优总结,搬过来如下(每个链接对应的都是原文地址): 一、基础概念 二、基本垃圾回收算法 三、垃圾回收面临的问题 四、分代垃圾回收 五、典型配置 六、新一代垃圾回收...

  • JVM总结

    1、请你谈谈你对JVM的理解?Java8的虚拟机有什么更新? 2、什么是OOM?什么是StackOverFlowError?有哪些方法分析? 3、JVM的常用参数调优你知道哪些? 4、内存快照抓取和MAT分析DUMP文件知道吗? 5、堆里面的分区:...

  • JVM基础知识与调优

    转载: JVM调优总结(一)-- 一些概念 转载: JVM调优总结(二)-- 一些概念 转载: JVM调优总结(三)-- 基本垃圾回收算法 转载: JVM调优总结(四)-- 垃圾回收面临的问题 转载: JVM调优总结(五)-- 分代垃圾回收详述...

  • JVM调优

    JVM调优 (一)-- 一些概念  Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,...

  • jvm调优总结

    “对于一个开发人员来说,还是有必要了解一下底层的原理,虽然一下子理解不透,没关系,但发现,当你看过几次的时候来说,还是有一定的收获的,本篇文章介绍的不错的,相对其他文章,本文要更加通俗易懂,所以转载了...

  • jvm大全

    深入理解JVM1 Java技术与Java虚拟机说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如...

  • 浅谈领域特定语言

    这些领域专家不是计算机科班出身,但是他们对自己的领域研究非常深入,他们非常期待能有一门面向领域的编程语言来帮助他们屏蔽计算机底层的复杂度,聚焦自己的领域,高效的进行编程。 在这样的背景下,.

  • 深入理解JVM

    深入理解JVM1 Java技术与Java虚拟机 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系...

  • 离散数学课后题答案+sdut往年试卷+复习提纲资料

    离散数学课后题答案+sdut往年试卷+复习提纲资料

  • 智能点阵笔项目源代码全套技术资料.zip

    智能点阵笔项目源代码全套技术资料.zip

  • 英文字母手语图像分类数据集【已标注,约26,000张数据】

    英文字母手语图像分类数据集【已标注,约26,000张数据】 分类个数【28】:a、b、c等【具体查看json文件】 划分了训练集、测试集。存放各自的同一类数据图片。如果想可视化数据集,可以运行资源中的show脚本。 CNN分类网络改进:https://blog.csdn.net/qq_44886601/category_12858320.html 【更多图像分类、图像分割(医学)、目标检测(yolo)的项目以及相应网络的改进,可以参考本人主页:https://blog.csdn.net/qq_44886601/category_12803200.html】

  • (31687028)PID控制器matlab仿真.zip

    标题中的“PID控制器matlab仿真.zip”指的是一个包含PID控制器在MATLAB环境下进行仿真的资源包。PID(比例-积分-微分)控制器是一种广泛应用的自动控制算法,它通过结合当前误差、过去误差的积分和误差变化率的微分来调整系统输出,以达到期望的控制效果。MATLAB是一款强大的数学计算软件,而Simulink是MATLAB的一个扩展模块,专门用于建模和仿真复杂的动态系统。 描述中提到,“PID控制器——MATLAB/Simulink仿真以及性能比较与分析”表明这个资源包不仅提供了PID控制器的模型,还可能包括对不同参数配置下的性能比较和分析。博主分享的是“最新升级版框架的Simulink文件”,意味着这些文件基于最新的MATLAB版本进行了优化,确保了与不同版本的MATLAB(从2015a到2020a共11个版本)的兼容性,这为用户提供了广泛的应用范围。 标签中的“PID”、“matlab”、“simulink”、“博文附件”和“多版本适用”进一步细化了内容的关键点。这表示该资源包是博客文章的附加材料,专门针对PID控制器在MATLAB的Simulink环境中进行仿真实验。多

  • MATLAB代码:考虑P2G和碳捕集设备的热电联供综合能源系统优化调度模型 关键词:碳捕集 综合能源系统 电转气P2G 热电联产 低碳调度 参考文档:Modeling and Optimiza

    MATLAB代码:考虑P2G和碳捕集设备的热电联供综合能源系统优化调度模型 关键词:碳捕集 综合能源系统 电转气P2G 热电联产 低碳调度 参考文档:《Modeling and Optimization of Combined Heat and Power with Power-to-Gas and Carbon Capture System in Integrated Energy System》完美复现 仿真平台:MATLAB yalmip+gurobi 主要内容:代码主要做的是一个考虑电转气P2G和碳捕集设备的热电联供综合能源系统优化调度模型,模型耦合CHP热电联产单元、电转气单元以及碳捕集单元,并重点考虑了碳交易机制,建立了综合能源系统运行优化模型,模型为非线性模型,采用yalmip加ipopt对其进行高效求解,该模型还考虑了碳排放和碳交易,是学习低碳经济调度必备程序 代码非常精品,注释保姆级 这段代码是一个用于能源系统中的综合能源系统(Integrated Energy System)建模和优化的程序。它使用了MATLAB的优化工具箱和SDP(半定规划)变量来定义决策变

  • 中国飞行器设计大赛圆筒权重文件

    中国飞行器设计大赛圆筒权重文件

Global site tag (gtag.js) - Google Analytics