web-dev-qa-db-ja.com

JVM言語を他の言語よりもCと統合するのが難しいというのは本当ですか?

多くのライブラリがpythonまたはluaのような言語で高レベルのAPIを提供しているのを見てきました。例:

  1. 線形代数ライブラリ「Trilinos」はpython APIを提供します。
  2. ディープラーニングフレームワーク「torch」はluaAPIを提供します。

ただし、Java/Jython/Scalaまたはその他のJVM言語用のAPIを提供するC/C++/CUDAライブラリはほとんど見つかりません。もちろん、例外もあります。 OpenCVは、pythonとJavaの両方にAPIを提供します。

言語以外で知りたいのですが(たとえば、pythonは分析や小さなスクリプトに適しています)、stop CライブラリがJVM言語のAPIを提供する他の理由はありますか?

個人的には、スクリプトにscalaを使用するのはPythonと同じくらい便利だと思います。しかし、scalaをサポートするCライブラリはそれほど多くありません。おそらく十分に人気がありません。

JVMの設計により、それを行うのは困難ですか?

1
worldterminator

選択した言語を統合することを選択します。それは本当にその推論の線で行くことができる限りです。

Pythonは現在非常に人気があります。 Python統合は、製品を販売できる機能の一種です。したがって、Python統合には大きな関心が寄せられており、当然のことながら、大きな統合が見られます。 Python統合を提供するライブラリの数。それは非常にヘビが自分の尻尾を食べています。

Luaは、実際には非常に簡単に統合できるため、ユニークです。これは、CまたはC++アプリケーションに簡単に統合できるように最初から設計された言語です。したがって、この場合、はい、Luaが選択されます。これは、JNIがLua統合よりもはるかに難しいためですが、それはJNIについての記述ではなく、Lua開発者がどれだけうまく仕事をしたかについての記述です。

個人的には、JNIのメモリモデルの難しさはPythonオブジェクトの管理と同等です。しかし、ソフトウェアをPythonに公開すると、多くの人がとても満足しています。JNIで公開すると、人が少なくなります。喜ぶ。

2
Cort Ammon