生成跨语言的类型声明和接口绑定的工具(Djinni )

Djinni 是一个用来生成跨语言的类型声明和接口绑定的工具,主要用于 C++ 和 Java 以及 Objective-C 间的互通。

示例接口定义文件:

 1 # Multi-line comments can be added here. This comment will be propagated
 2 # to each generated definition.
 3 my_enum = enum {
 4     option1;
 5     option2;
 6     option3;
 7 }
 8
 9 my_record = record {
10     id: i32;
11     info: string;
12     store: set<string>;
13     hash: map<string, i32>;
14
15     values: list<another_record>;
16
17     # Comments can also be put here
18
19     # Constants can be included
20     const string_const: string = "Constants can be put here";
21     const min_value: another_record = {
22         key1 = 0,
23         key2 = ""
24     };
25 }
26
27 another_record = record {
28     key1: i32;
29     key2: string;
30 } deriving (eq, ord)
31
32 # This interface will be implemented in C++ and can be called from any language.
33 my_cpp_interface = interface +c {
34     method_returning_nothing(value: i32);
35     method_returning_some_type(key: string): another_record;
36     static get_version(): i32;
37
38     # Interfaces can also have constants
39     const version: i32 = 1;
40 }
41
42 # This interface will be implemented in Java and ObjC and can be called from C++.
43 my_client_interface = interface +j +o {
44     log_string(str: string): bool;
45 }

使用方法:

1 @import "relative/path/to/filename.djinni"

github地址:https://github.com/dropbox/djinni

时间: 2024-11-02 03:33:31

生成跨语言的类型声明和接口绑定的工具(Djinni )的相关文章

Golang、Php、Python、Java基于Thrift0.9.1实现跨语言调用

目录: 一.什么是Thrift? 1) Thrift内部框架一瞥 2) 支持的数据传输格式.数据传输方式和服务模型 3) Thrift IDL 二.Thrift的官方网站在哪里? 三.在哪里下载?需要哪些组件的支持? 四.如何安装? 五.Golang.Java.Python.PHP之间通过Thrift实现跨语言调用 1) Golang 客户端和服务端的实现及交互 2) python 客户端的实现与golang 服务端的交互 3) php 客户端的实现与golang 服务端的交互 4) java

mybatis 接口绑定方案及多参数传递

接口绑定 MyBatis 中, 提供了一套接口绑定方案. 程序员可以提供一个接口, 然后提供对应接口的一个mapper.xml 文件. MyBatis 会自动将接口和 xml 文件进行绑定. 实际上就是MyBatis 会根据接口和对应的 xml文件创建接口的实现类. 其原理是使用了JDK动态代理Proxy来实现接口,代理类使用 反射调用mapper.xml生成的原生 sql 方法 优点 通过调用接口对象的方法就可以操作 mapper.xml 中编写的 sql 调用方法明确,因为我们调用的是接口中

【C语言】复杂类型声明

原文地址: http://blog.csdn.net/wangweixaut061/article/details/6549768 原文不让转载,但实在是有用,就拷贝了一小部分过来.全文请点开链接. C语言所有复杂的指针声明,都是由各种声明嵌套构成的.如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法.不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法.C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的.右左

汉高澳大利亚sinox接口捆绑经典winxp,全面支持unicode跨语言处理

用qtconfig(或者qtconfig-qt4)设置字体后,汉澳sinox视窗界面以跟winxp媲美的界面出现,爽心悦目. 并且视窗使用非常稳定.非常少出现死机无响应现象,堪称完美. 引入unicode编码.实现跨语言的文本处理和转换,也就是说对世界上存在的各种语言处理没有问题,包含藏文,彝文等. 汉澳sinox视窗默认启动unicode编码.实现了汉澳sinox最初设计目标,支持多国语言同一时候处理,输入法也没有问题. Unicode是国际组织制定的能够容纳世界上全部文字和符号的字符编码方案

比较跨语言通讯框架:Apache Thrift和Google Protobuf

前两天想在微博上发表一个观点:在现在的技术体系中,能用于描述通讯协议的方式很多,xml,json,protobuf,thrift,如果在有如此众多选择的基础上,在设计系统时,还自造协议,自己设计协议类型和解析方式,那么我只能说,您真的落后了,不是技术上,而是思想上.对于xml,和json我们不做过多描述了,参考相关文档就可以了.特别是json,如今在 web系统,页游系统的前后台通讯中,应用非常广泛.本文将重点介绍两种目前在大型系统中,应用比较普遍的两种通讯框架,thrift和Protobuf,

(转)使用Thrift0.9.1实现跨语言调用Golang、Php、Python、Java

问题导读:什么是Thrift?Thrift的官方网站在哪里?Golang.Java.Python.PHP之间如何通过Thrift实现跨语言调用? 一.什么是Thrift Thrift是一种可伸缩的跨语言服务的发展软件框架.它结合了功能强大的软件堆栈的代码生成引擎,以建设服务. Thrift是facebook开发的,07年4月开放源代码,08年5月进入apache孵化器.创造Thrift是为了解决facebook系统中各系统间大数据量的传 输通信以及系统之间语言环境不同需要跨平台的特性.所以thr

Java跨语言调用,使用JNA访问Java外部接口

1. JNA简单介绍 先说JNI(Java Native Interface)吧,有过不同语言间通信经历的一般都知道,它允许Java代码和其他语言(尤其C/C++)写的代码进行交互,只要遵守调用约定即可.首先看下JNI调用C/C++的过程,注意写程序时自下而上,调用时自上而下. 可 见步骤非常的多,很麻烦,使用JNI调用.dll/.so共享库都能体会到这个痛苦的过程.如果已有一个编译好的.dll/.so文件,如果使用JNI技 术调用,我们首先需要使用C语言另外写一个.dll/.so共享库,使用S

Apache Thrift 跨语言服务开发框架

Apache Thrift 是一种支持多种编程语言的远程服务调用框架,由 Facebook 于 2007 年开发,并于 2008 年进入 Apache 开源项目管理.Apache Thrift 通过 IDL 来定义 RPC 的接口和数据类型,然后通过代码生成工具来生成针对不同编程语言的代码,目前支持 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCa

动手打造自己的跨语言异构模块通信解决方案

目前主流的跨语言异构模块通信方案有很多种,比如: 1.跨语言的RPC调用(Apache Thrift):它是Facebook贡献给Apache基金会的开源项目,旨在构建跨语言平台的通信方案.目前它支持非常多种语言,其中当然包括C/C++和Java.Thrift内置一个语言编译器,可以根据Thrift的语法规范,编译生成指定语言的RPC调用模块,功能也是非常的强大.Thrift的语法规范里面定义了数据类型.数据模块结构,有点类似WebService里面的WSDL文件.通过Thrift,我们就可以实