web-dev-qa-db-ja.com

Javaに対するCeylonの利点は何ですか?

最近ネットで強力なプログラミング言語を探していると、セイロンに出会いました。私は ceylon-lang.org に立ち寄りました、そしてそれは言う:

CeylonはJavaの影響を強く受けています。ご存知のように、私たちはJavaのファンですが、その限界を完全に理解しています。 CeylonはJavaの最良の部分を保持しますが、私たちの経験で煩わしく、退屈で、イライラさせられ、理解するのが難しい、またはバグが発生しやすいものを改善します。

Javaに対するCeylonの利点は何ですか?

11
Anuj Balan

Ceylonはとても楽しい言語のようですが、Javaに比べて「利点」は比較的少ないと私は思います。

私はそれがより良い構文といくつかのより「現代的な」言語機能を持っていると思います-これは主観的であり、私はプログラミング言語を選択する上で比較的マイナーな要素であるべきだと主張します。

深刻なプロジェクトのために言語/プラットフォームを選択する際の、はるかに重要な要素:

  • それはあなたがあなたの与えられた問題のためにより良いパラダイムで開発することを可能にしますか? (いいえ-セイロンは明らかに混み合った静的に型付けされたJavaのような別の言語ですOOPスペース。例えば、関数型言語スペースをターゲットにしているClojureや非常に動的なGroovyと対照的ですOOP JVM言語なので、さまざまなニッチに対応しています)
  • より良いライブラリエコシステムを持っていますか? (偶然ではありません..。Javaは他に類を見ません。せいぜい、おそらくJavaライブラリを使用するだけです)
  • より熟練した開発者を獲得できますか? (おそらく、現在Ceylonを使用している人はほとんどいません。たとえ使用したとしても、登るのに大きな学習曲線が必要になるでしょう)
  • より良いツールはありますか? (いいえ-Javaツールは非常に包括的で成熟しています)
  • それはあなたの生産性を高めますか? (議論の余地があります-それはいくつかの素晴らしい生産的な言語機能を持っていますが、学習曲線とツール効果と組み合わされて、実際には遅れる可能性があります)
  • より良いパフォーマンスを提供しますか? (いいえ-JVMはJava用に非常によく最適化されています。他のJVM言語がそれを打ち負かすのは難しい要求です。Scalaが近づいていますが、それは長年の微調整の後です... )
  • より多くのターゲットプラットフォームをサポートしていますか? (いいえ-これはJVM言語なので、Javaとまったく同じです)
  • コードはより保守しやすいでしょうか? (おそらくない-Javaは、比較的安定しており、成熟しており、将来のメンテナを混乱させる可能性のある高度な言語機能が多くないため、ここでのテストに耐えてきました)
  • 大きくて活発で役立つコミュニティはありますか? (いいえ、少なくともJavaまたはScala、Clojure、Groovyなどの他の大きなJVM言語と比較されていません)

全体的に私は確かに人々にセイロンを実験し、学習の観点から楽しんでもらうことをお勧めします。

しかし、現時点では、多くの人がそれに切り替えたくなるような魅力的な利点はありません(または、Clojure、Scala、JRuby、Groovyなどの他のJVM言語よりも先に選択したい)。

27
mikera

Javaにはない素晴らしい機能がいくつかあります。

  1. ジェネリックジェネリック
  2. 型推論
  3. Mixins(これはJDK8で提供される予定ですが)
  4. Union型とIntersection型(これは本当にクールで、多くの言語では見られません)
  5. 「高次関数」(ファーストクラスのオブジェクトとして機能するわけではありません)
  6. クロージャー(JDK8にも含まれる)
3
MebAlone

私が気付いた限り、セイロンと他の「趣味で作成された」JVM言語の最大の違いの1つは、Red Hat/JBossによってサポートされることです。したがって、JBoss Tools/Developer Studioに統合された本当に素晴らしいツールセット、JBoss AS/Gatein PortalおよびすべてのMidleware/JEE 6/BRMSとの良好な相互作用が得られます。したがって、いくつかの点で、JSFで本格的なCeylonアプリケーション、PHP "変更および更新サイクル"を備えた非常に生産性の高いポートレットなどを開発することができます。

ほとんどのJVMベースの言語として、私はそれをJavaの代わりに巨大なコードベースを必要とするプロジェクトではなく、特に中小規模のプロジェクト、特に非常にモジュール化されている場合) (CRUD集約型、ポートレットなどのように)Webの世界では、特にJBossのファンからは非常に好評だと思います。

2

セイロンはいろいろな面で興味深いと思います。そして、おそらくJavaの問題を残したい場合は、いくつかの方法でJavaから離れる必要がある方法でそれらは正しいです。セイロンはScalaのように、コンパイラが遅くなることを願っています。さらに悪いことに、ビルド時間はコードサイズに比例しないため、 Two Scala体験フィードバック の年。Ceylon開発チームのペースは非常に印象的です。

Kotlinはまだ0.6であり、昨年の開発スピードから判断すると、1.0から1年ほど離れていると思います。 Ceylonのような多くの言語機能はありません(しかし、重要な機能はJava特性や拡張メソッドのように欠けています)ので、より多くの種類のScala =問題はありません。スケーラブルなビルド時間は問題にならないと思います。しかし、Kotlinは、Groovyのように、より優れたJavaでしかありません。 Java XML依存関係の商品プログラミング、ボイラープレートコード、バイトコード操作など。これは、JavaおよびScalaのようなものです。コトリンとセイロンのどちらが違いを生むことができるかはまだわからないままですが、どちらの試みも努力する価値があると思います。

1
OlliP