

CoffeeScript → JavaScript

のように Javaを別の言語で書いて、コンパイルしたときにJavaのコードでコンパイルされるというものを探しています。

○○ → Java

こういう感じをイメージしているのですが、近いものでも良いのであれば教えていただけないでしょうか。
あと、今回、検索の仕方がわからなかったので、そういうものを調べるときのワードなども教えていただけると幸いです。


CC BY-SA 3.0
2014-12-24T06:08:17.143
2473
2015-10-15T08:56:05.437
2014-12-24T08:56:17.147
4978
5648
question
java compiler
CoffeeScript → JavaScript の Java版はありますか?


有名なところでは Clojure, Groovy, Scala あたりでしょうか。
ただJavaのコードではなくJVMのバイトコードが出力されますね。その意味ではちょっとズレてます。

検索する際は「JVM言語」もしくは「JVM上で動くプログラミング言語」みたいなキーワードを使うと良いでしょう。


CC BY-SA 3.0
2014-12-24T06:19:16.150
2477
2014-12-24T06:19:16.150
208
2473
answer


Objective-CをJavaに変換するObjc2jというものがあるようです。 <https://code.google.com/p/objc2j/>


CC BY-SA 3.0
2014-12-24T06:23:34.537
2478
2014-12-24T06:23:34.537
760
2473
answer


Java以外の言語と言っている部分が、回答として正しいかが微妙なところですが、 [Xtend](http://eclipse.org/xtend/)
などが求めているものに近いものなのかな？と思います。

(一応Javaコードを吐き出してコンパイルするので)

なお[「 C# to java convertor 」
で検索](https://www.google.co.jp/webhp?sourceid=chrome-
instant&ion=1&espv=2&ie=UTF-8#q=c%23+to+java+converter)すると、C#からJavaへ変換してくれるものなどが出てきましたよ
([CS2Jというツールがあるのを知りました](http://www.twigletsoftware.com/))


CC BY-SA 3.0
2014-12-24T06:32:49.973
2479
2014-12-24T06:32:49.973
2923
2473
answer


リスト型質問の気もしますが`Haxe`も`Java`コードを出力してくれます。

[Haxe/Java 入門 - Haxe](http://old.haxe.org/doc/start/java?lang=jp)

こういう情報は英語の方が多いので`generator`や`compile A into
B`みたいな感じで検索すると引っかかるかもしれません。単純に`converter`でも(厳密には違う気もするけど)検索キーワードとしては引っかかる気がします。


CC BY-SA 3.0
2014-12-24T06:38:03.330
2480
2014-12-24T06:38:03.330
3313
2473
answer


質問ではソースコードからソースコードへのコンパイル (いわゆる、 transpiler) のことを指して
おられると思いますので、ここでは私が知るいくつかのトランスパイラの紹介と、 他に JVM 上で動く言語リストを挙げます。

CoffeeScript に一番近いのは、 [XTend](http://eclipse.org/xtend/)
ではないかと考えます。わかりやすく、効率化の目的も似ています。Eclipse のサポートも硬いので試しやすいはずです。

もし、 Java 縛りで限界突破クエストへご挑戦の途中であられますのなら、わたしからは、実用重視で [Project
Lombok](http://projectlombok.org/) をお勧めします。お試しください。

### "Sourcecode-to-Sourcecode" コンパイラ

  * [XTend](http://eclipse.org/xtend/)
  * [Project Lombok](http://projectlombok.org/)
  * [JSP (Java Server Pages)](http://www.oracle.com/technetwork/java/javaee/jsp/index.html)
  * [Haxe](http://haxe.org/)
  * [Processing](https://processing.org/)

[XTend](http://eclipse.org/xtend/) は、Java 言語使用の欠点を埋めることに重点を置いた、 Java
ソースコードの方言的なものになります。無理なく関数型の処理を記述でき、ソースコードの削減につながる特徴を多く持ちます。Eclipse
環境でのサポートが厚く、Class ファイルの生成前に、 Java のソースコードが生成される仕組みになっています。

[Project Lombok](http://projectlombok.org/) は、Java
の仕様にのっとった追加のアノテーション集ですが、コンパイル前に Java
ソースコード生成フェイズが入るような特殊なアドオンを持っています。アクロバティックにわかりやすいソースコード生成をしてくれますので、ありきたりな繰り返しブロックを自動生成に回せます。
Getter/Setterでお悩みなら一考の価値ありです。一時期 Lambok にはお世話になりました。

良く知られている [JSP (Java Server
Pages)](http://www.oracle.com/technetwork/java/javaee/jsp/index.html)
は、発想としては、 HTML ページにJava コードを埋め込むものです。 Web
サーバでコンパイルされる際に、内部的に醜いJavaソースコードへの変換を経ています。

[Haxe](http://haxe.org/) は、モバイルアプリを主ターゲットにした開発ツールですが、出力に Java ソースコードを持ちます。

[Processing](https://processing.org/) は、Java
言語の簡易版と言え、平べったいコードで、CGデモを書いたり、Arduino を制御できます。
プログラミングの初心者用に作られた高級言語であり、これも、コンパイル前に一度 Java のソースコードを通します。

### "Sourcecode-to-Bytecode" コンパイラ

また、Java ソースコードにこだわらず、 JVM の上で動く言語であれば何でもよい ということであれば、質の高い、多くの候補があります。

  * [JRuby](http://jruby.org/) / [Mirah](http://www.mirah.org/) (Ruby)
  * [Scala](http://www.scala-lang.org/)
  * [Groovy](http://groovy.codehaus.org/)
  * [Clojure](http://clojure.org/) (Lisp系)
  * [Jython](http://www.jython.org/) (Python)
  * [Kotlin](http://kotlinlang.org/)
  * [Ceylon](http://ja.wikipedia.org/wiki/Ceylon)
  * [Rhino](https://developer.mozilla.org/ja/docs/Rhino) (Javascript)

バイトコードへの変換はオフトピックになりそうですから、紹介だけで説明は省きます。


CC BY-SA 3.0
2014-12-24T08:16:18.667
2483
2014-12-24T08:22:13.817
2014-12-24T08:22:13.817
4978
4978
2473
answer


IBMが開発したREXX言語から派生したNetRexxが、ソースをJavaソースに変換してJavaでコンパイルして 動作します。

<http://www.netrexx.org/>


CC BY-SA 3.0
2014-12-25T14:16:57.340
2581
2014-12-25T14:16:57.340
5758
2473
answer


Fregeという言語がJavaへのソースコードトランスレータです。

<http://uehaj.hatenablog.com/entry/2013/12/21/065929>

Fregeは以下の特徴を持っています。  
\- 純関数型言語  
\- 非正格評価(いわゆる遅延評価)  
\- Hindley-Milner型推論に基づく静的型言語

[こちら](http://try.frege-
lang.org/)にあるオンラインのREPLでお気軽に試すことができます。その際に、「:java」で生成されたJavaソースを見ることができます。


CC BY-SA 3.0
2015-10-15T08:56:05.437
17680
2015-10-15T08:56:05.437
12792
2473
answer