阅读更多

47顶
6踩

编程语言

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

2010-09-28 08:41 by 见习记者 songfantasy 评论(28) 有16888人浏览
近日在旧金山举行的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 条 请登录后发表评论
8 楼 kooen.chen 2010-09-28 12:22
Scala 个人感觉程序运行起来很慢,很担心性能。
7 楼 netfishx 2010-09-28 11:01
hubo888168 写道
scala的语法太鬼畜了...

完全同意
6 楼 treblesoftware 2010-09-28 10:22
看到些广告,我彻底的笑了。哈哈哈哈哈哈哈哈哈哈~继续忽悠吧,忽悠无醉,忽悠万穗~
5 楼 hubo888168 2010-09-28 10:21
scala的语法太鬼畜了...
4 楼 sirxenofex 2010-09-28 09:19
Scala并不复杂。Scala可以纯面向对象,同样可以纯函数式。但是当两种都了解,而结合起来的时候,就无比强大了。
3 楼 runshine 2010-09-28 08:59
假如我们提供一款工具,可以将 JDKn+1 转换为JDKn+2,如果你喜欢,还可以在Java 两个版本之间转换
---------------------------------------------
这不就是我一直在想的东西嘛...孤芳自赏ing
2 楼 Norther 2010-09-28 08:55
Scala 过于复制...

这拼音打字也太毛糙了吧?
1 楼 fantasybei 2010-09-28 08:54
删除检查型异常,-_-,支持

发表评论

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

相关推荐

  • 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)。它们的关系...

  • 《永磁无刷直流电机控制系统与软件综合研究-集成电机计算软件、电机控制器及电磁设计软件的创新设计与实践》,永磁无刷直流电机计算与控制软件:高效电机控制器与电磁设计工具,永磁无刷直流电机计算软件,电机控

    《永磁无刷直流电机控制系统与软件综合研究——集成电机计算软件、电机控制器及电磁设计软件的创新设计与实践》,永磁无刷直流电机计算与控制软件:高效电机控制器与电磁设计工具,永磁无刷直流电机计算软件,电机控制器,无刷电机设计软件,电机电磁设计软件 ,永磁无刷直流电机计算软件; 电机控制器; 无刷电机设计软件; 电机电磁设计软件,无刷电机设计专家:永磁无刷直流电机计算与控制器设计软件

  • 新能源汽车VCU开发模型及策略详解:从控制策略到软件设计全面解析,新能源汽车VCU开发模型及策略详解:从控制策略到软件设计全面解析,新能源汽车VCU开发模型及控制策略,MBD电控开发 新能源汽车大势所

    新能源汽车VCU开发模型及策略详解:从控制策略到软件设计全面解析,新能源汽车VCU开发模型及策略详解:从控制策略到软件设计全面解析,新能源汽车VCU开发模型及控制策略,MBD电控开发 新能源汽车大势所向,紧缺VCU电控开发工程师,特别是涉及新能源三电系统,工资仅仅低于无人驾驶、智能驾驶岗位。 ——含控制策略模型 整车控制策略详细文档 通讯协议文档 接口定义 软件设计说明文档 等(超详细,看懂VCU电控策略开发就通了) 内容如下: 新能源汽车整车控制器VCU学习模型,适用于初学者。 1、模型包含高压上下电,行驶模式管理,能量回馈,充电模式管理,附件管理,远程控制,诊断辅助功能。 2、软件说明书(控制策略说明书) 3、模型有部分中文注释 对想着手或刚开始学习整车控制器自动代码生成或刚接触整车控制器有很大帮助。 ,新能源汽车VCU开发模型; 控制策略; MBD电控开发; 模型学习; 代码生成; 整车控制器; 能量回馈; 诊断辅助功能,新能源汽车电控开发详解:VCU控制策略模型及学习手册

  • Python读取Excel文件的方法详解及应用场景

    内容概要:本文详细介绍了两种利用 Python 读取 Excel 文件的不同方法,分别是基于 pandas 和 openpyxl。对于想要利用Python 处理 Excel 数据的读者来说,文中不仅提供了简洁明了的具体代码片段以及执行效果展示,还针对每个库的应用特性进行了深度解析。此外,文档提到了一些进阶应用技巧如只读特定的工作薄、过滤某些列等,同时强调了需要注意的地方(像是路径设置、engine 参数调整之类),让读者可以在面对实际项目需求时做出更加明智的选择和技术选型。 适合人群:对 Python 有基本掌握并希望提升数据读取能力的开发人员。 使用场景及目标:适用于任何涉及到批量数据导入或是与 Excel 进行交互的业务流程。无论是做初步的数据探索还是深入挖掘隐藏于电子表格背后的故事,亦或是仅为了简化日常办公自动化任务都可以从中受益。最终目标帮助使用者熟悉两大主流 Excel 解决方案的技术特性和最佳实践。 阅读建议:本文既是一份详尽的学习指南也是一份方便随时查阅的手册。因此初学者应当认真研究所提供的示例,而有一定经验者也可以快速定位到感兴趣的部分查看关键要点。

  • 毕设springboot基于springboot的医护人员排班系统.zip

    # 医护人员排班系统 ## 1. 项目介绍 本系统是一个基于SpringBoot框架开发的医护人员排班管理系统,用于医院管理医护人员的排班、调班等工作。系统提供了完整的排班管理功能,包括科室管理、人员管理、排班规则配置、自动排班等功能。 ## 2. 系统功能模块 ### 2.1 基础信息管理 - 科室信息管理:维护医院各科室基本信息 - 医护人员管理:管理医生、护士等医护人员信息 - 排班类型管理:配置不同的排班类型(如:早班、中班、晚班等) ### 2.2 排班管理 - 排班规则配置:设置各科室排班规则 - 自动排班:根据规则自动生成排班计划 - 排班调整:手动调整排班计划 - 排班查询:查看各科室排班情况 ### 2.3 系统管理 - 用户管理:管理系统用户 - 角色权限:配置不同角色的操作权限 - 系统设置:管理系统基础配置 ## 3. 技术架构 ### 3.1 开发环境 - JDK 1.8 - Maven 3.6 - MySQL 5.7 - SpringBoot 2.2.2 ### 3.2 技术栈 - 后端框架:SpringBoot - 持久层:MyBatis-Plus - 数据库:MySQL - 前端框架:Vue.js - 权限管理:Spring Security ## 4. 数据库设计 主要数据表: - 科室信息表(keshixinxi) - 医护人员表(yihurengyuan) - 排班类型表(paibanleixing) - 排班信息表(paibanxinxi) - 用户表(user) ## 5. 部署说明 ### 5.1 环境要求 - JDK 1.8+ - MySQL 5.7+ - Maven 3.6+ ### 5.2 部署步骤 1. 创建数据库并导入SQL脚本 2. 修改application.yml中的数据库配置 3. 执行maven打包命令:mvn clean package 4. 运行jar包:java -jar xxx.jar ## 6. 使用说明 ### 6.1 系统登录 - 管理员账号:admin - 初始密码:admin ### 6.2 基本操作流程 1. 维护基础信息(科室、人员等) 2. 配置排班规则 3. 生成排班计划 4. 查看和调整排班 ## 7. 注意事项 1. 首次使用请及时修改管理员密码 2. 定期备份数据库 3. 建议定期检查和优化排班规则

  • MATLAB仿真的夫琅禾费衍射强度图:圆孔、圆环、矩形孔定制研究,MATLAB仿真:夫琅禾费衍射强度图的可定制性-以圆孔、圆环及矩形孔为例的研究分析,MATLAB夫琅禾费衍射强度图仿真 圆孔,圆环

    MATLAB仿真的夫琅禾费衍射强度图:圆孔、圆环、矩形孔定制研究,MATLAB仿真:夫琅禾费衍射强度图的可定制性——以圆孔、圆环及矩形孔为例的研究分析,MATLAB夫琅禾费衍射强度图仿真 圆孔,圆环,矩形孔可定制。 ,MATLAB; 夫琅禾费衍射; 强度图仿真; 圆孔; 圆环; 矩形孔; 可定制。,MATLAB仿真夫琅禾费衍射强度图:定制孔型(圆孔/圆环/矩形)

  • 商道融绿ESG评级20241231.xlsx

    详细介绍及样例数据:https://blog.csdn.net/samLi0620/article/details/145652300

Global site tag (gtag.js) - Google Analytics