每个人都知道Java和Scala,但C ++和Scala之间存在多少互操作性。一个类中的类可以被另一个使用吗,例如?
答案 0 :(得分:21)
根本不那么简单。 Java和Scala在同一个虚拟机上工作,而scala的设计与java兼容。
C ++生成本机代码,甚至每个编译器都有自己的方式来生成本机代码。这意味着使用Visual Studio编译的某些类将无法与使用gcc编译的另一个类轻松交互。
如果您需要与C ++交互,则需要使用JNI http://en.wikipedia.org/wiki/Java_Native_Interface的一些粘合剂。我相信将它与scala一起使用应该是直截了当的。 使用Swig http://www.swig.org/
可以使交互更加舒适答案 1 :(得分:1)
为了实现这种互操作性,两种实现都必须针对相同的中间语言(即Java字节码,.Net IL,LLVM)进行编译。 Scala.Net和C ++ / CLI是最接近的组合 - 都为.Net生成代码。但即便如此,它也不是那么简单,因为Scala中的一个类和C ++中的一个类代表了稍微不同的东西。
通常,Scala代表Scala for Java VM,而C ++代表C ++代替本机代码,所以一般的答案应该是“不比其他两种随机选择的语言更多”。
答案 2 :(得分:1)
我会查看JNAerator。它构建了从C / C ++ / Obj-C头文件到Java接口的桥梁。