2017-03-29 11 views
2

JavaコードにclojureライブラリAPIを公開しているように見えます(少なくとも公開されたAPIがOOの場合はAOTコンパイルを使用する必要があります)。もし私がそれについて間違っていれば、私は改訂されてうれしいです。過去には、AOTには複数の問題があり、それに頼っていることが少し不器用または不安定に思えたかもしれません。ClojureのAOTの制限は何ですか?

その中の現在の状態は何ですか? 安全な練習ですか?

OO APIをJavaアプリケーションに公開する手段として、これを使用しますか?

答えて

3

AOTを使用して、Javaライブラリーとしてのクラスターを渡すバイトコードを生成することができます。しかし、あなたやJavaプログラマのために、それほど楽しいことではありません。JavaDocはどこですか?なぜジェネリックではなくObjectを使用していますか?他の同様の不愉快な質問。

代わりに、私の好ましい方法は、ClojureコードをJavaに優しくしないことです。それを通常のClojure varsとして公開します。それだけです。次に、ClojureベースのAPIを使用し、必要なJavaコンストラクトの観点からパッケージを再パッケージする、同じライブラリにJavaコードを自分で記述します。

一例として、私のthrift-genライブラリを参照してください。 Clojureからそれを使用して、マップを入力として受け取り、シーケンスを生成する関数を取得します。 Javaからそれを使用すると、マップではなく構成用のビルダー・パターンが得られ、出力としてList<? extends T>が得られます。私はreadmeの使用方法のドキュメントが十分だと感じていたので、JavaDocはありませんでしたが、これを真剣に考えていれば、JavaDocを簡単に追加するための実際の.javaソースファイルがあります。

関連する問題