推荐JVM的9款编程语言杀手开发利器
随着各种各样的编程语言铺地盖地向我们涌来,软件世界似乎变得有点疯狂了。JVM的帝国在不断地壮大,它已经不满足于只作为Java语言的运行平台。它勇敢地将自己的触角伸向了JRuby,Groovy等等,未来会对更多的动态语言提供支持。这里我为大家亮剑JVM的9款编程语言杀手,分别包括 Groovy、JRudy、Jython、Clojure、Clojure、Kotlin、Rhino、Ceylon。
|
JVM越来越被当作一个具有丰富类库支撑的通用平台,而不仅仅是Java语言的运行平台。在未来,会越来越多的看到,应用JVM而不使用Java的情况,一开始可能是JRuby,Groovy等等,当未来支持更多的动态语言必将是下一步的趋势。
1、Groovy
Groovy是一门基于Java虚拟机的面向对象的敏捷动态语言,它凭借一种精巧、现代的语法,让Java编程员可以使用似乎变化无穷的庞大库和底层稳若 磐石的虚拟机。在开发Web,GUI,数据库或控制台程序时 通过减少框架性代码 大大提高了开发者的效率。由于Groovy在语法上与Java很相似,为Java开发者提供了现代最流行的编程语言特性,这使得Java的开发人员学习 Groovy会比较容易上手。Groovy的编译器为单纯的Java语法提供了很好的支持,Java开发人员不需要学习新语法就可以直接适应 Groovy。
|
Groovy
Groovy使用到了类型推断,在开发者没有明确信息的时候,可以推断出变量的类型,因此在代码编程上要相对简单。Groovy无缝集成了所有已经存在的 Java对象和类库,还提供了高级别的开发框架来处理一些标准的任务,比如字符串的处理、生成XML文件、单元测试等等,所有这些都可以为开发人员节省时 间。
2、JRudy
JRuby是一个Ruby语言的Java端口,与Groovy相比, JRuby是一个纯Java实现的Ruby解释器。通过JRuby,用户可以开发在JVM上直接运行的Ruby程序,调用Java的类库。它结合了 Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。Rails彻底加快及简化了Web应用的开发,不过它让人觉得不够成熟,特别是在高端企业级功能方面。另一方面,Java平台及其虚拟机、库和 应用服务器的速度、稳定性和功能方面却一直在提升,现在已被公认为是开发高端服务器应用的领先平台。不过如果Java平台不与Ruby等新兴语言联系在一 起,就有可能落后于流行趋势。
|
JRuby
3、Jython
Jython是一种针对JVM发布的脚本编程语言之一,它集成了Python的一小部分,提供了对Java字节码的动态编译,从而实现了性能上的提高。 Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。 Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所 有的Java类。这使其有一个巨大的资源库。Jython从CPython中继承了很多优点,与Java的无缝集成。Jython能使任何部署了Java 应用和框架的公司受益而不需要额外的工作。
|
Jython
Jython没有提供Java中的public、private 和protected存取符,这样就给程序员提供了快速开发所需要的灵活性,并将注意力集中在程序逻辑上。Jython不用明显的静态的类型定义,故程序员不需要从程序逻辑转移到类型定义上来。
4、Clojure
作为当今最主流的运算平台JVM,把函数式编程语言引入JVM也是很多人尝试的方向,Clojure就是其中之一。Clojure是一种 LISP风格的语言,运行在JVM上。 Clojure是一个在JVM平台运行的动态函数式编程语言,Clojure在JVM平台运行的时候,会被编译为 JVM的字节码进行运算。Clojure设计的初衷是作为一种通用的编程语言,它其实关注的重点是微软的CLR和JavaScript。Clojure可 以直接编译成Java字节码,保留动态性,能够直接访问Java框架。
|
Clojure
Clojure的一大特色就是其并发机制,它支持不可变的数据结构(Clojure是来自于可持久化的数据结构)。Clojure还有一个特色是软件事务 存储(Software Transactional Memory,STM),其支持用事务代替锁和互斥器来更新共享内存。STM还是一个有争议的技术,还需要更好的证明自己,一个简单的办法就是访问一个 JVM上的实现。
5、Scala
在通常情况下,Scala可以被理解成一门multiparadigm编程语言,因为它集合了不同的编程理念。从内核的角度上看,它是一门面向对象的编程 语言,具有强大的功能。与传统的编程语言相比,它的优势非常明显,它可以方便并行开发应用程序。它与JVM的其它编程语言有所不同,它集成了并行应用程序 框架。这门语言运行起来和本地Java一样快。
|
Scala
6、Kotlin
Kotlin是一门动态类型通用的编程语言,可以编译成Java字节码和JavaScript。作为一个基于 JVM 的新的编程语言,Kotlin可谓是Java的强势劲敌,JetBrains 宣布将其 Kotlin 编程语言开源,这是一个针对 Java 和 JavaScript 平台的现代编程语言,该语言的设计目的是成为 Java 语言的替代品。它致力于提高重点性能,编译速度能够与Java相媲美。
|
Kotlin
Kotlin兼容Java语言,比Java更安全,能够静态检测常见的陷阱,比如引用空指针。Kotlin比Java更简洁,通过支持variable type inference,higher-order functions (closures),extension functions,mixins and first-class delegation等实现。此外,它比最成熟的竞争对手Scala语言更加简单。
7、Rhino
Rhino是一个用Java语言编写的开源JavaScript引擎,它具有JavaScript内核,可以执行脚本,经常被嵌入到Java应用程序中, 为终端用户提供脚本。Rhino中的JavaAdapters允许JavaScript嵌入任何一种Java接口,还可以扩展Java类。
|
Rhino
Java是一种面对对象的编译型语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实 现了“一次编译、到处执行”的跨平台特性。而 JavaScript是一种动态、弱类型、基于原型的客户端脚本语言。JavaScript 包括一个基于对象的 API,称为文档对象模型(Document Object Model)或 DOM,用以访问和操作 Web 页面的内容,给HTML网页添加动态功能。
Rhino则是一个介于Java与JavaScript之间的语言。它的基础是 Java 语言,这使得它简单易学,但相比于JavaScript脚本语言来说,它又太过复杂。不过,Rhino 的主要缺点也正是它的强大之处,Rhino 是一种轻量级的、功能强大的脚本语言。Rhino 使用原型而不是类,这使它比很多脚本语言更适合开发 GUI 应用程序,在考虑性能和风格等因素时更是如此。
8、Ceylon
Ceylon是一个通用的、命令式的、面向对象的静态类型的编程语言。它深受Java的影响,主要用于大型项目的团队开发 Red Hat的Ceylon似乎是一些语言功能的一个很有意思的组合,它使用了大家熟知的C风格的语法,但是除了强调简洁之外,还提供了面向对象和一些很有用的 函数方面的支持。Ceylon不仅仅是一款编译器,它有更远大的目标,通过创建新的Ceylon SDK来取代Java SDK。
|
Ceylon
9、Fantom
Fantom 前身是 (Fan) 是一个基于 Java 和 .NET 平台的编程脚本引擎,用来在运行时产生 JVM 和 .NET 平台的字节码,该语言是面向对象的,跟 Groovy 和 JRuby 有点类似,可通过特定的接口来集成 Java 的类库。Fantom通过自己的扩展库弥补了不足,同时还包括了一些对并发性的内置支持。
|
总而言之,这9款适用于JVM平台上的编程语言都非常强劲,类似于武林高手之间的一场华山论剑。当然,每一款编程语言都各有所长,只有当开发者运用灵活自如了,开发的修炼境界才能炉火纯青。原文地址: http://cnobs.com/html/content/2012031912419.shtml
推荐JVM的9款编程语言杀手开发利器的更多相关文章
- 教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
Sublime Text 是一款非常强大的文本编辑器, 下面我们介绍如何将 Sublime Text 3 打造成一款 Python/Django 开发利器: 1. 安装 Sublime Text 3 ...
- Sublime 3 打造成 Python/Django IDE开发利器
Sublime Text 是一款非常强大的文本编辑器, 下面我们介绍如何将 Sublime Text 3 打造成一款 Python/Django 开发利器: 1. 安装 Sublime Text ...
- 《程序员的呐喊》:一个熟悉多种语言的老程序员对编程语言、开发流程、google的战略等的思考,比较有趣。 五星推荐
作者熟悉二三十种编程语言,写了20多年代码.本书是作者对编程语言.开发流程.google的战略等的思考.比较有趣. 前面部分是作者对编程语言的一些思考.作者鄙视C++, Java,面向对象.比较有趣的 ...
- 35款加速网站开发的 CSS 开发工具
网络有很很多的 CSS 工具和教程可用,它可以帮助设计人员和开发人员轻松.快速地学习 CSS 技术.这些工具中在高效开发 Web 应用程序中发挥重要作用. 在这篇文章中,我们收集了35个最好的 CSS ...
- 15款加速 Web 开发的 JavaScript 框架
JavaScript 可以通过多种方式来创建交互式的网站和 Web 应用程序.利用 JavaScript,可以让你移动 HTML 元素,创建各种各样的自定义动画,给你的访问者更好的终端用户体验. 对于 ...
- 开发者必知的8款App快速开发工具
开发者必知的8款App快速开发工具 “我有一个好创意,就差一个CTO……” “原生APP开发难度大,周期长,成本高,还没上线市场已经被占领了.” “APP版本迭代更新,都是企业的一道难关,没有一个一劳 ...
- 推荐超实用的8款jQuery插件
这里有8款超实用的jQuery插件供大家参考使用,除了jQuery特效的详细使用方法以外,我们还有在线演示和下载及教程,希望对大家有所帮助! 超棒的视差效果jQuery插件 - FractionSli ...
- 十款开发者常用的Chrome插件,让chrome成为开发利器!
Chrome浏览器无论是作为浏览器市场的NO1还是其强大的跨平台能力以及丰富的扩展插件,一直是许多开发者的首要选择的浏览器.chrome浏览器也因为其丰富的Chrome插件,帮助开发者们在开发流程中极 ...
- DbUtils是Apache出品一款简化JDBC开发的工具类
DbUtils - DbUtils是Apache出品一款简化JDBC开发的工具类 - 使用DbUtils可以让我们JDBC的开发更加简单 - DbUtils的使用: ...
随机推荐
- 删除CentOS / RHEL的库和配置文件(Repositories and configuraiton files)
1 删除库配置文件 以root权限执行以下的命令: # cd /etc/yum.repos.d/ 列出全部库(repo) #ls CentOS-Base.repo epel.repo mirrors- ...
- Javascript中闭包的作用域链
作用域定义了在当前上下文中能够被访问到的成员,在Javascript中分为全局作用域和函数作用域,通过函数嵌套可以实现嵌套作用域. 闭包一般发生在嵌套作用域中.闭包是JavaScript最强大的特性之 ...
- ssh登录命令(转)
转:http://blog.csdn.net/edward_qing_lee/article/details/23133331 常用格式:ssh [-l login_name] [-p port] [ ...
- js操作iframe框架时应该屡清楚的一些概念
1.获取iframe的window对象 存在跨域访问限制. iframeElement.contentWindow 兼容 2.获取iframe的document对象 存在跨域访问限制. chrome: ...
- android开发工具类总结(一)
一.日志工具类 Log.java public class L { private L() { /* 不可被实例化 */ throw new UnsupportedOperationException ...
- React-Native post和get请求
post: fetchData (title) { fetch(REQUEST_URL, { method: 'POST', headers: { 'Accept': 'application/jso ...
- PHP学习笔记五【方法】
<?php $num1=34; $num2=90; $oper="+"; $res=0; switch($oper) { case "+": $res=$ ...
- javascript 高级程序设计学习笔记(面向对象的程序设计) 2
在调用构造函数时会为实例添加一个指向最初原型的指针,我们可以随时为原型添加属性和方法,并且能在实例中体现出来,但如果是重新了原型对象,那就会切断构造函数与最初原型的联系. function Dog ( ...
- mysql导出数据到excel表中
mysql> select b.username,a.subject,a.money,FROM_UNIXTIME(a.ctime) from shop_pay a INNER JOIN ...
- asp.net 获取当前url地址
设当前页完整地址是:http://www.jb51.net/aaa/bbb.aspx?id=5&name=kelli "http://"是协议名 "www.jb5 ...