天天看点

Fantom:设计为“更好的Java” [JVM的盗版]

你相信鬼吗? 我们保证,这不是一个恐怖的故事。 当JVM生态系统中有太多语言时,为什么要选择Fantom? Brian的创建者Brian和Andy Frank在博客中透露了这种编程语言在设计过程中是如何成为现实的,他们希望解决他们认为Java和C#存在的一些实际问题。

我们创建Fantom的主要原因是编写可以在Java VM和.NET CLR上无缝运行的软件。 现实情况是,许多软件组织都致力于使用这些平台中的一个。 甚至Python和Ruby之类的动态语言也都托管在这些VM之一上。 无论您的业务是内部软件还是构建要出售给其他公司的软件组件,您都倾向于选择一个阵营或另一个阵营。 我们从头开始构建Fantom,以解决这些VM之间的可移植性。
Fantom:设计为“更好的Java” [JVM的盗版]

点击地图以查看整个信息图

创建者声称Fantom是“真正的下一代编程语言”,但是让我们让Brian Frank说服您尝试一下。

Fantom —背景信息

JAXenter: 与Fantom合作的动机是什么? Fantom必须提供哪些其他语言无法提供的功能?

Fantom:设计为“更好的Java” [JVM的盗版]

Brian Frank: Fantom最初是在1.5刚刚发布时被设计为“更好的Java”的。 从一开始,Fantom就被设计为针对多个运行时:Java VM,.NET CLR和浏览器中JavaScript(尽管CLR支持从未使其达到生产质量)。 Fantom的最大特色也许是从第一天开始就设计了整个运行时库,以便在这些环境之间移植。 例如,在Java VM和浏览器中,使用Strings,Uris,DateTimes等都可以100%相同地工作。

Fantom还支持类型系统内置的具有不变性的,基于角色的强大并发模型。 并发模型提供了确保线程之间永不共享可变状态的保证。

JAXenter:您能描述语言的核心原理吗?

Brian Frank: Fantom的核心原则是一种语言,它由熟悉Java的开发人员轻松编写和阅读,但具有对不变性和函数式编程的一流支持。 我们一直将主要精力放在一个优雅的跨平台运行时库上。 以下是一些简单的示例:

// create HTTP basic base64 authorization header
"${user}:${pass}".toBuf.toBase64
 
// read file, parse each line as an Integer
file.readAllLines.map |Str line->Int| { line.toInt }
 
// immutable class
const Point
{
  new make(Int x, Int y) { this.x = x; this.y = y }
  const Int x
  const Int y
}           

JAXenter:带Fantom的典型程序是什么样的?

布莱恩·弗兰克(Brian Frank): Fantom看起来非常类似于Java,除了闭包语法使用了受Ruby启发的样式语法“ | arg1,arg2-> return |”。 我们还设计了一些巧妙的技术来将闭包用于声明式编程。 以下是使用某些CSS样式来操作DOM的代码段:

Elem("div")
{
  // manipulate CSS of this element
  it.style->border = "1px solid black"
  it.style->background = "#ddd"
 
  // add some child elements
  Elem("div") { it.text = "Hello world!" },
  Elem("div") { it.text = "Bit of DOM" },
}           

JAXenter:Fantom适用于哪种应用程序/用例? 对于哪些不是呢?

Brian Frank: Fantom是Web应用程序开发的理想解决方案,在Web应用程序中,服务器和浏览器端代码都需要一种语言。 Fantom已用于开发基于Web的可视化工具,网站,数据库和嵌入式IoT应用程序。 它适用于Java适用的相同领域。

Fantom的下一步是什么

JAXenter:语言的当前状态是什么?

布莱恩·弗兰克(Brian Frank): 该语言已在生产中使用了十多年。 如今,大多数开发都与运行时库相关。

JAXenter:您对Fantom的计划如何?

布莱恩·弗兰克(Brian Frank): 我们对Fantom的计划是使其成为一种实用的语言,用于跨平台(JVM和浏览器)开发。

JAXenter:对Fantom感兴趣的人如何开始?

Brian Frank:他们可以访问fantom.org并探索各种文档和入门资源。

Brian Frank是Fantom Language的设计师和SkyFoundry的总裁。

不要忘记查看JVM系列的Pirates 。

Fantom:设计为“更好的Java” [JVM的盗版]
Fantom:设计为“更好的Java” [JVM的盗版]

您是否熟悉JVM Universe中的所有编程语言? 你都发现了吗?

如果答案是“否”,那么我们将不遗余力地寻求知识。 因此,JVM信息图的盗版者随附了一系列文章,其中我们重点介绍了您可能知道或可能不知道的语言。

  • Golo —世界不需要另一种JVM语言。 所以他们又建造了一个
  • Clojure —将代码视为数据[JVM的盗版]
  • Eclipse Xtend —紧凑,静态,非常适合代码生成[JVM的盗版]
  • Frege-将纯函数式编程引入JVM! [JVM的盗版]
  • Gosu-嘿,看! 它是JVM的一种实用语言。 一种简单的语言
  • Jython:适用于Java平台的Python [JVM的盗版]
  • 函数编程变得简单:Eta来了
  • Lux – Haskell和Clojure的完美结合
翻译自: https://jaxenter.com/fantom-pirates-jvm-134054.html