From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 63E2F7FF37 for ; Tue, 2 Aug 2016 12:56:46 +0200 (CEST) IronPort-PHdr: 9a23:zDXcyhcr9iantylrxhbzzk0elGMj4u6mDksu8pMizoh2WeGdxc68Yh7h7PlgxGXEQZ/co6odzbGH6+a/CSdYsd6oizMrSNR0TRgLiMEbzUQLIfWuLgnFFsPsdDEwB89YVVVorDmROElRH9viNRWJ+iXhpQAbFhi3DwdpPOO9QteU1JXvkb/isMWDKyxzxxOFKYtoKxu3qQiD/uI3uqBFbpgL9x3Sv3FTcP5Xz247bXianhL7+9vitMU7q3cYk7sb+sVBSaT3ebgjBfwdVWx+cjN92Mq+nAPHQA3HzXwMGjEfiB5FBQPC/Dn1W57wtm3xse8riweAOsijaLkwUjOm6u9OQQPhjCQOf2o89WjLg8hzhYpUpRugo1p0xIuCM9LdD+Z3Yq6IJYBSfmFGRMsEEnUZWo4= Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=mmatalka@gmail.com; spf=Pass smtp.mailfrom=mmatalka@gmail.com; spf=None smtp.helo=postmaster@mail-wm0-f49.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of mmatalka@gmail.com) identity=pra; client-ip=74.125.82.49; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="mmatalka@gmail.com"; x-sender="mmatalka@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of mmatalka@gmail.com designates 74.125.82.49 as permitted sender) identity=mailfrom; client-ip=74.125.82.49; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="mmatalka@gmail.com"; x-sender="mmatalka@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-wm0-f49.google.com) identity=helo; client-ip=74.125.82.49; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="mmatalka@gmail.com"; x-sender="postmaster@mail-wm0-f49.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0DCAACfe6BXhjFSfUpchQgPuyaGHQKBNTsRAQEBAQEBAQERAQEBCAsLCRkvgjIEARMBghQBBAESLgEbHQEDAQsGBQsWJQ8BBA0CEQEFASITGweHdAEDDwgEox+BMj4xjSWCWgWGTgoZJw1Ug0ABAQEBAQEEAQEBAQEBGQIGEIQPgguETYJDh1gFmH80jEqCNYlFhXqIK4Y9MIEPNIJDgVduiBcBAQE X-IPAS-Result: A0DCAACfe6BXhjFSfUpchQgPuyaGHQKBNTsRAQEBAQEBAQERAQEBCAsLCRkvgjIEARMBghQBBAESLgEbHQEDAQsGBQsWJQ8BBA0CEQEFASITGweHdAEDDwgEox+BMj4xjSWCWgWGTgoZJw1Ug0ABAQEBAQEEAQEBAQEBGQIGEIQPgguETYJDh1gFmH80jEqCNYlFhXqIK4Y9MIEPNIJDgVduiBcBAQE X-IronPort-AV: E=Sophos;i="5.28,459,1464645600"; d="scan'208";a="228756142" Received: from mail-wm0-f49.google.com ([74.125.82.49]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 02 Aug 2016 12:56:45 +0200 Received: by mail-wm0-f49.google.com with SMTP id i5so284061949wmg.0 for ; Tue, 02 Aug 2016 03:56:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=s9BS1jLsvAWlidsszayZ0k7/J+uyvC5ClhoaTrxID+Y=; b=os7Ein+7Ni9VLR9dG1xmnLYtiWtE0g7o8wqpGd2GSd+Uek/StVOsM5o+XgfYc9DtsU HmrUNhaWgq6dtFMgMzZg242kDWycGoWDWy8AlCq2u+8Pm2A2QG3BKf1aFfcYmM4B3hcG OCyBqagixWdIDK4XlYvl8ZNOoQsxBdFksxF09Lum9LZdIdtjcg1nhh6Qkq4djwescHz3 m8bvNw74cw45havFrWdb7rEwD1H+P3RjaH7KradQRq7QPAYr0inlDVFrXzNxXg9cplys QD7habpm0a6xJOAzvOafueBbhFMnJTKV1Cp3kRxZ4QktrA1KU6cfmoYxMQd7Pze03mac zu/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=s9BS1jLsvAWlidsszayZ0k7/J+uyvC5ClhoaTrxID+Y=; b=A80807NNWUsL56d16gF0cEpDbGEGX9ELWmGUYk6JC4nuUwDbc7BYU0EETyfC3jpoWX MbwrI7Q+7RnCBI+8iRK8BWdvwMd9iroACIDMQDdkv8mK77rhXee4AquH2M1ISbjPi75q hZDrTT5E/XsYQ06HwTMMUy3XAKsB6GBOGnzw007iKX4qYcCVRIW4bEE3ZD+JaAw71rqe UshXWyGaphOUb+bK7EJVfq7uPR0GxJtrBfZzKPynrTZwlOVAF5bKTE+tnJUZtnFdIOTj 0kW2hYV8/71VozCkVa3XBh+1KZ5buiSw3WavexOmYA5VwJxAqHB1d7IdFV4G+zNUXvm3 9h+w== X-Gm-Message-State: AEkoouvpkCzqYXcQe3DiAo5tM4SKB+2JJgkO5QGP96ZKjjVNMbDwoahnKirUeU7uO+5NOg== X-Received: by 10.28.228.132 with SMTP id b126mr19374108wmh.93.1470135404677; Tue, 02 Aug 2016 03:56:44 -0700 (PDT) Received: from localhost ([37.153.108.22]) by smtp.gmail.com with ESMTPSA id q23sm2426539wme.17.2016.08.02.03.56.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 Aug 2016 03:56:43 -0700 (PDT) From: Malcolm Matalka To: Arlen Cox Cc: caml-list@inria.fr References: Date: Tue, 02 Aug 2016 10:56:42 +0000 In-Reply-To: (Arlen Cox's message of "Tue, 2 Aug 2016 00:02:19 -0400") Message-ID: <86a8gvjv6d.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [Caml-list] Make OCaml library available to Java You could also make an executable written in Ocaml that communicates over stdin/stdout. Arlen Cox writes: > Hi all, > > I'm trying to figure out what the best way is to make an OCaml library > available to a Java program. I can think of several ways to do this > each with pros and cons: > > 1. OCaml-Java: This is the most obvious solution that translates the > OCaml code directly to Java. > + Simple interface to OCaml code > + Portable Java-compatible code > + Can easily call back into Java > - OCaml-Java is a bit buggy > - Code runs slower > > 2. js_of_ocaml: Translate OCaml to JavaScript and then use the new > "fast" JavaScript engine in Java 8 to execute the JS. > + Portable Java-compatible code > + Can call back into Java (albeit, less easily than OCaml-Java) > - Not type safe interface > - Possible massive slowdowns or at least unpredictable performance > > 3. JNI with C Library: Wrap OCaml code in a C library and then call > into that with JNI > + Native OCaml performance > - Complex GC interaction > - Not type safe > - Not portable (need different .so for each platform) > - No tools to help in doing this (CamlJava is both unsupported and > seemingly unidirectional) > - No easy call back into Java > > Does anyone have any experience with doing this or have any > suggestions on what to do in this situation? > > Thanks, > Arlen