设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

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

2013-7-9 14:16| 发布者: 红黑魂| 查看: 3165| 评论: 0|来自: 51CTO

摘要: Groovy“Groovy有超过Java将能够提供的甜点,例如它具有轻易地在宿主程序中嵌入并编译,以提供定制业务规则的能力,还有它如何为领域特定语言(Domain-Specific Language)提供优雅,简洁并且可读性好的语法的能力.” ...

这样我们就能够为接下来为对那个的IO操作存储套接字对象(socket),而我们不需要再去传递任何不可变的消息了.顺便获得的好处是,这样代码看起来更好了。

函数(Functions)& 闭包(Closures)

Fantom是一种面向对象的语言,它像许多其他的现代编程语言一样,将函数做为了头等公民。下面的例子展示了如何创建一个Actor,我们将含蓄指定一个接收函数向其发送几次消息。

pool := ActorPool()
a := Actor(pool) |msg|
{
 count := 1 + (Int)Actor.locals.get("count", 0)
 Actor.locals["count"] = count
 return count
}

100.times { a.send("ignored") }

echo("Count is now " + a.send("ignored").get)

Fantom’s的语法十分的友好,与其他语言没太大出入。我们大概已经发现,它用":="来进行变量的赋值,这对我来说是一种灾难(对这样的小的语法细节,我并不十分喜欢)。然而IDE对此支持得十分友好,每当你犯此错误的时候,它都会提醒你。 

一些小东东

在我们研究Fantom的整过过程中,一些促使这门语言更加棒的小东东会令我们惊喜.例如,支持null的类:它们是能够声明一个接受或者不接受null作为参数的方法的一种类型.

Str // never stores null
Str? // might store null

通过这种方式,代码不会受到空(null)检查的污染,并且同Java的互操作变得更加的简单了.

值得一提的还有另外一种特性.那就是带有变量插值(Variable interpolation)的多行字符串(Multi-line String):

header :=
      "HTTP/1.1 $returnCode $status
      Server: Fantom HTTP Server 1.0
      Date: ${DateTime.now}
      Content-type: ${contentType}
      Content-length: ${content.size}
      ".toBuf

参数可以有默认值,支持混合和声明式编程,还有运算符重载.每一样东西都各得其所.

只有一件东西我们没有看到并感到是一种缺陷,那就是元组(tuples).然而我们只在想要多返回(mutilple return)时才需要那个东西,因此使用一个列表(list)就足够了.

Clojure

“我着手创建一种语言,意在应对我在使用Java和C#编写的一些类型的应用程序——像广播自动化、调度以及选举系统之类那些东西——它们许多都需要解决 的并发问题.我发现只用面向对象编程和用那些语言的并发方法,对于处理这些类型的问题并不怎么够好——它们太难了。我是List的拥护者,还有其它的函数 式语言,而我想要做的就是解决那些问题,创造一种立足于实际的语言,再也不用拿Java来编程了.”

Rich Hickey
Clojure创始人在2009年InfoQ访谈中

 Clojure 入门

Clojure 第一次出现在2007年 。和一些成熟的语言相比,它相对是新的。Rich Hickey创造了它。它作为Lisp方言在JVM上面。版本1.0出现在2009年。它的名字是一个双关语在C(C#), L (Lisp) and J (Java)。当前Clojure的1.4。Clojure是开源的(发布在Eclipse 公共许可证 v1.0—EPL)

当你开始阅读Clojure的文档的之后,我们决定开始配置环境变量。我们使用Leiningen(它是一个为Clojure准备的构建工具) 。对 Clojure来说,Leiningen (或者缩写Lein) 能够执行大部分任务。它能够执行我们期待的来自Maven相关的例如: 

  • 创造一个项目骨架 (想一想: Maven 原型)
  • 操作依赖
  • 编译 Clojure代码到JVM classes类
  • 运行测试
  • 发布构件到一个中央仓库

假如你使用过Maven, 你会感觉使用Lein非常的舒适。事实上,Lein 甚至支持Maven的依赖。然而两者的主要不同点在于 Lein的项目文件由 Clojure写成。然而Maven使用XML(pom.xml)。尽管有可能去开发用Clojure没有其它的,我们不得不承认Lein是一个非常受欢迎的增加物。它真得是某些事情变得更加简单。

开始得到项目骨架,你能够做像下面这样:

$ lein new clojure-http-server

集成开发环境(IDE)的支持

准备好基本的项目结构以后,就可以开始编辑代码了.如果你是Eclipse的长期使用者,你首先要做的一件事情就是找到一个可以处理 Clojure 的Eclipse插件.它应该在一个成熟的工作空间中提供语法高亮和代码补全功能.幸运的是Eclipse中有了一个叫做 CounterClockWise的Clojure插件.只要安装了这个插件,就可以在Eclipse中新建Clojure项目了.

这样很不错,我们不需要再去管将我们已经使用过的,前面章节提到的Lein,在命令行中创建的Clojure项目然后导入到 Eclipse中这种麻烦事了。我们预计CounterClockWise插件提供了像Eclipse的Maven插件有的在pom.xml和 EclipseGUI之间两种交互方式,所提供的功能.


酷毙
2

雷人

鲜花

鸡蛋
1

漂亮

刚表态过的朋友 (3 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部