< prev index next >
doc/panama_foreign.html
Print this page
*** 1,150 ****
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
- <head>
- <meta charset="utf-8" />
- <meta name="generator" content="pandoc" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
- <title>Using Panama “foreign” JDK</title>
- <style type="text/css">
- code{white-space: pre-wrap;}
- span.smallcaps{font-variant: small-caps;}
- span.underline{text-decoration: underline;}
- div.column{display: inline-block; vertical-align: top; width: 50%;}
- </style>
- <style type="text/css">
- a.sourceLine { display: inline-block; line-height: 1.25; }
- a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
- a.sourceLine:empty { height: 1.2em; }
- .sourceCode { overflow: visible; }
- code.sourceCode { white-space: pre; position: relative; }
- div.sourceCode { margin: 1em 0; }
- pre.sourceCode { margin: 0; }
- @media screen {
- div.sourceCode { overflow: auto; }
- }
- @media print {
- code.sourceCode { white-space: pre-wrap; }
- a.sourceLine { text-indent: -1em; padding-left: 1em; }
- }
- pre.numberSource a.sourceLine
- { position: relative; left: -4em; }
- pre.numberSource a.sourceLine::before
- { content: attr(data-line-number);
- position: relative; left: -1em; text-align: right; vertical-align: baseline;
- border: none; pointer-events: all; display: inline-block;
- -webkit-touch-callout: none; -webkit-user-select: none;
- -khtml-user-select: none; -moz-user-select: none;
- -ms-user-select: none; user-select: none;
- padding: 0 4px; width: 4em;
- color: #aaaaaa;
- }
- pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
- div.sourceCode
- { }
- @media screen {
- a.sourceLine::before { text-decoration: underline; }
- }
- code span.al { color: #ff0000; font-weight: bold; } /* Alert */
- code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
- code span.at { color: #7d9029; } /* Attribute */
- code span.bn { color: #40a070; } /* BaseN */
- code span.bu { } /* BuiltIn */
- code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
- code span.ch { color: #4070a0; } /* Char */
- code span.cn { color: #880000; } /* Constant */
- code span.co { color: #60a0b0; font-style: italic; } /* Comment */
- code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
- code span.do { color: #ba2121; font-style: italic; } /* Documentation */
- code span.dt { color: #902000; } /* DataType */
- code span.dv { color: #40a070; } /* DecVal */
- code span.er { color: #ff0000; font-weight: bold; } /* Error */
- code span.ex { } /* Extension */
- code span.fl { color: #40a070; } /* Float */
- code span.fu { color: #06287e; } /* Function */
- code span.im { } /* Import */
- code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
- code span.kw { color: #007020; font-weight: bold; } /* Keyword */
- code span.op { color: #666666; } /* Operator */
- code span.ot { color: #007020; } /* Other */
- code span.pp { color: #bc7a00; } /* Preprocessor */
- code span.sc { color: #4070a0; } /* SpecialChar */
- code span.ss { color: #bb6688; } /* SpecialString */
- code span.st { color: #4070a0; } /* String */
- code span.va { color: #19177c; } /* Variable */
- code span.vs { color: #4070a0; } /* VerbatimString */
- code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
- </style>
- <link rel="stylesheet" href="../make/data/docs-resources/resources/jdk-default.css" />
- <!--[if lt IE 9]>
- <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
- <![endif]-->
- </head>
- <body>
- <header>
- <h1 class="title">Using Panama “foreign” JDK</h1>
- </header>
- <nav id="TOC">
- <ul>
- <li><a href="#using-panama-foreign-jdk">Using Panama “foreign” JDK</a><ul>
- <li><a href="#embedding-python-interpreter-in-your-java-program-mac-os">Embedding Python interpreter in your Java program (Mac OS)</a><ul>
- <li><a href="#jextract-a-jar-file-for-python.h">jextract a Jar file for Python.h</a></li>
- <li><a href="#java-program-that-uses-extracted-python-interface">Java program that uses extracted Python interface</a></li>
- <li><a href="#running-the-java-code-that-calls-python-interpreter">Running the Java code that calls Python interpreter</a></li>
- </ul></li>
- <li><a href="#embedding-python-interpreter-in-your-java-program-ubuntu-16.04">Embedding Python interpreter in your Java program (Ubuntu 16.04)</a><ul>
- <li><a href="#jextract-a-jar-file-for-python.h-1">jextract a Jar file for Python.h</a></li>
- <li><a href="#compiling-and-running-python-java-example">Compiling and Running Python Java example</a></li>
- </ul></li>
- <li><a href="#using-blas-library">Using BLAS library</a><ul>
- <li><a href="#installing-openblas-mac-os">Installing OpenBLAS (Mac OS)</a></li>
- <li><a href="#installing-openblas-ubuntu-16.04">Installing OpenBLAS (Ubuntu 16.04)</a></li>
- <li><a href="#jextracting-cblas.h-macos">jextracting cblas.h (MacOS)</a></li>
- <li><a href="#jextracting-cblas.h-ubuntu-16.04">jextracting cblas.h (Ubuntu 16.04)</a></li>
- <li><a href="#java-sample-code-that-uses-cblas-library">Java sample code that uses cblas library</a></li>
- <li><a href="#compiling-and-running-the-above-cblas-samples">Compiling and running the above cblas samples</a></li>
- </ul></li>
- <li><a href="#using-lapack-library-ubuntu">Using LAPACK library (Ubuntu)</a><ul>
- <li><a href="#jextracting-clapack.h-ubuntu-16.04">jextracting clapack.h (Ubuntu 16.04)</a></li>
- <li><a href="#java-sample-code-that-uses-lapack-library">Java sample code that uses LAPACK library</a></li>
- <li><a href="#compiling-and-running-the-above-lapack-sample">Compiling and running the above LAPACK sample</a></li>
- </ul></li>
- <li><a href="#using-lapack-library-mac-os">Using LAPACK library (Mac OS)</a><ul>
- <li><a href="#jextracting-lapacke.h">jextracting lapacke.h</a></li>
- <li><a href="#java-sample-code-that-uses-lapack-library-1">Java sample code that uses LAPACK library</a></li>
- <li><a href="#compiling-and-running-the-above-lapack-sample-1">Compiling and running the above LAPACK sample</a></li>
- </ul></li>
- <li><a href="#using-libproc-library-to-list-processes-from-java-mac-os">Using libproc library to list processes from Java (Mac OS)</a><ul>
- <li><a href="#jextract-a-jar-file-for-libproc.h">jextract a jar file for libproc.h</a></li>
- <li><a href="#java-program-that-uses-libproc-to-list-processes">Java program that uses libproc to list processes</a></li>
- <li><a href="#running-the-java-code-that-uses-libproc">Running the Java code that uses libproc</a></li>
- </ul></li>
- <li><a href="#using-readline-library-from-java-code-mac-os">Using readline library from Java code (Mac OS)</a><ul>
- <li><a href="#jextract-a-jar-file-for-readline.h">jextract a jar file for readline.h</a></li>
- <li><a href="#java-code-that-uses-readline">Java code that uses readline</a></li>
- <li><a href="#running-the-java-code-that-uses-readline">Running the java code that uses readline</a></li>
- </ul></li>
- <li><a href="#using-unistd.h-from-java-code-linux">Using unistd.h from Java code (Linux)</a><ul>
- <li><a href="#jextract-a-jar-file-for-unistd.h">jextract a jar file for unistd.h</a></li>
- <li><a href="#java-code-that-calls-getpid">Java code that calls getpid</a></li>
- <li><a href="#running-the-java-code-that-uses-getpid">Running the Java code that uses getpid</a></li>
- </ul></li>
- <li><a href="#using-opengl-graphic-library-ubuntu-16.04">Using OpenGL graphic library (Ubuntu 16.04)</a><ul>
- <li><a href="#installing-opengl-ubuntu-16.04">Installing OpenGL (Ubuntu 16.04)</a></li>
- <li><a href="#jextracting-opengl-ubuntu-16.04">jextracting OpenGL (Ubuntu 16.04)</a></li>
- <li><a href="#java-sample-code-that-uses-the-opengl-library">Java sample code that uses the OpenGL library</a></li>
- <li><a href="#running-the-java-code-that-uses-opengl">Running the Java code that uses OpenGL</a></li>
- </ul></li>
- <li><a href="#using-tensorflow-c-api-mac-os">Using TensorFlow C API (Mac OS)</a><ul>
- <li><a href="#installing-libtensorflow">Installing libtensorflow</a></li>
- <li><a href="#jextracting-libtensorflow-c_api.h">jextracting libtensorflow c_api.h</a></li>
- <li><a href="#java-sample-code-that-uses-tensorflow-library">Java sample code that uses tensorflow library</a></li>
- <li><a href="#compiling-and-running-the-above-tensorflow-sample">Compiling and running the above TensorFlow sample</a></li>
- </ul></li>
- </ul></li>
- </ul>
- </nav>
<h1 id="using-panama-foreign-jdk">Using Panama “foreign” JDK</h1>
<p>There are two ways to get a panama foreign branch JDK.</p>
<ol type="1">
<li>Locally build “foreign” branch of panama repo <a href="http://hg.openjdk.java.net/panama/dev/" class="uri">http://hg.openjdk.java.net/panama/dev/</a></li>
<li>Download pre-built panama “foreign” early access binaries from <a href="http://jdk.java.net/panama/" class="uri">http://jdk.java.net/panama/</a></li>
--- 1,5 ----
*** 160,170 ****
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><a class="sourceLine" id="cb1-1" data-line-number="1"></a>
<a class="sourceLine" id="cb1-2" data-line-number="2"><span class="ex">jextract</span> -l python2.7 \</a>
<a class="sourceLine" id="cb1-3" data-line-number="3"> -rpath /System/Library/Frameworks/Python.framework/Versions/2.7/lib \</a>
<a class="sourceLine" id="cb1-4" data-line-number="4"> --exclude-symbols .*_FromFormatV<span class="dt">\|</span>_.*<span class="dt">\|</span>PyOS_vsnprintf<span class="dt">\|</span>.*_VaParse.*<span class="dt">\|</span>.*_VaBuild.*<span class="dt">\|</span>PyBuffer_SizeFromFormat<span class="dt">\|</span>vasprintf<span class="dt">\|</span>vfprintf<span class="dt">\|</span>vprintf<span class="dt">\|</span>vsprintf \</a>
<a class="sourceLine" id="cb1-5" data-line-number="5"> -t org.python \</a>
! <a class="sourceLine" id="cb1-6" data-line-number="6"> /usr/include/stdio.h /usr/include/stdlib.h /usr/include/python2.7/Python.h \</a>
<a class="sourceLine" id="cb1-7" data-line-number="7"> -o python.jar</a></code></pre></div>
<h3 id="java-program-that-uses-extracted-python-interface">Java program that uses extracted Python interface</h3>
<div class="sourceCode" id="cb2"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb2-1" data-line-number="1"></a>
<a class="sourceLine" id="cb2-2" data-line-number="2"><span class="co">// import java.foreign packages</span></a>
<a class="sourceLine" id="cb2-3" data-line-number="3"><span class="kw">import</span><span class="im"> java.foreign.Libraries;</span></a>
--- 15,25 ----
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><a class="sourceLine" id="cb1-1" data-line-number="1"></a>
<a class="sourceLine" id="cb1-2" data-line-number="2"><span class="ex">jextract</span> -l python2.7 \</a>
<a class="sourceLine" id="cb1-3" data-line-number="3"> -rpath /System/Library/Frameworks/Python.framework/Versions/2.7/lib \</a>
<a class="sourceLine" id="cb1-4" data-line-number="4"> --exclude-symbols .*_FromFormatV<span class="dt">\|</span>_.*<span class="dt">\|</span>PyOS_vsnprintf<span class="dt">\|</span>.*_VaParse.*<span class="dt">\|</span>.*_VaBuild.*<span class="dt">\|</span>PyBuffer_SizeFromFormat<span class="dt">\|</span>vasprintf<span class="dt">\|</span>vfprintf<span class="dt">\|</span>vprintf<span class="dt">\|</span>vsprintf \</a>
<a class="sourceLine" id="cb1-5" data-line-number="5"> -t org.python \</a>
! <a class="sourceLine" id="cb1-6" data-line-number="6"> /usr/include/python2.7/Python.h \</a>
<a class="sourceLine" id="cb1-7" data-line-number="7"> -o python.jar</a></code></pre></div>
<h3 id="java-program-that-uses-extracted-python-interface">Java program that uses extracted Python interface</h3>
<div class="sourceCode" id="cb2"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb2-1" data-line-number="1"></a>
<a class="sourceLine" id="cb2-2" data-line-number="2"><span class="co">// import java.foreign packages</span></a>
<a class="sourceLine" id="cb2-3" data-line-number="3"><span class="kw">import</span><span class="im"> java.foreign.Libraries;</span></a>
*** 196,206 ****
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><a class="sourceLine" id="cb4-1" data-line-number="1"></a>
<a class="sourceLine" id="cb4-2" data-line-number="2"><span class="ex">jextract</span> -l python2.7 \</a>
<a class="sourceLine" id="cb4-3" data-line-number="3"> -rpath /usr/lib/python2.7/config-x86_64-linux-gnu \</a>
<a class="sourceLine" id="cb4-4" data-line-number="4"> --exclude-symbols .*_FromFormatV<span class="dt">\|</span>_.*<span class="dt">\|</span>PyOS_vsnprintf<span class="dt">\|</span>.*_VaParse.*<span class="dt">\|</span>.*_VaBuild.*<span class="dt">\|</span>PyBuffer_SizeFromFormat<span class="dt">\|</span>vasprintf<span class="dt">\|</span>vfprintf<span class="dt">\|</span>vprintf<span class="dt">\|</span>vsprintf \</a>
<a class="sourceLine" id="cb4-5" data-line-number="5"> -t org.python \</a>
! <a class="sourceLine" id="cb4-6" data-line-number="6"> /usr/include/stdio.h /usr/include/stdlib.h /usr/include/python2.7/Python.h \</a>
<a class="sourceLine" id="cb4-7" data-line-number="7"> -o python.jar</a></code></pre></div>
<h3 id="compiling-and-running-python-java-example">Compiling and Running Python Java example</h3>
<p>Follow the instructions from the Mac OS section</p>
<h2 id="using-blas-library">Using BLAS library</h2>
<p>BLAS is a popular library that allows fast matrix and vector computation: <a href="http://www.netlib.org/blas/" class="uri">http://www.netlib.org/blas/</a>.</p>
--- 51,61 ----
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><a class="sourceLine" id="cb4-1" data-line-number="1"></a>
<a class="sourceLine" id="cb4-2" data-line-number="2"><span class="ex">jextract</span> -l python2.7 \</a>
<a class="sourceLine" id="cb4-3" data-line-number="3"> -rpath /usr/lib/python2.7/config-x86_64-linux-gnu \</a>
<a class="sourceLine" id="cb4-4" data-line-number="4"> --exclude-symbols .*_FromFormatV<span class="dt">\|</span>_.*<span class="dt">\|</span>PyOS_vsnprintf<span class="dt">\|</span>.*_VaParse.*<span class="dt">\|</span>.*_VaBuild.*<span class="dt">\|</span>PyBuffer_SizeFromFormat<span class="dt">\|</span>vasprintf<span class="dt">\|</span>vfprintf<span class="dt">\|</span>vprintf<span class="dt">\|</span>vsprintf \</a>
<a class="sourceLine" id="cb4-5" data-line-number="5"> -t org.python \</a>
! <a class="sourceLine" id="cb4-6" data-line-number="6"> /usr/include/python2.7/Python.h \</a>
<a class="sourceLine" id="cb4-7" data-line-number="7"> -o python.jar</a></code></pre></div>
<h3 id="compiling-and-running-python-java-example">Compiling and Running Python Java example</h3>
<p>Follow the instructions from the Mac OS section</p>
<h2 id="using-blas-library">Using BLAS library</h2>
<p>BLAS is a popular library that allows fast matrix and vector computation: <a href="http://www.netlib.org/blas/" class="uri">http://www.netlib.org/blas/</a>.</p>
*** 484,498 ****
<div class="sourceCode" id="cb18"><pre class="sourceCode sh"><code class="sourceCode bash"><a class="sourceLine" id="cb18-1" data-line-number="1"></a>
<a class="sourceLine" id="cb18-2" data-line-number="2"><span class="ex">javac</span> -cp libproc.jar LibprocMain.java</a>
<a class="sourceLine" id="cb18-3" data-line-number="3"></a>
<a class="sourceLine" id="cb18-4" data-line-number="4"><span class="ex">java</span> -cp libproc.jar:. LibprocMain</a></code></pre></div>
<h2 id="using-readline-library-from-java-code-mac-os">Using readline library from Java code (Mac OS)</h2>
<h3 id="jextract-a-jar-file-for-readline.h">jextract a jar file for readline.h</h3>
<div class="sourceCode" id="cb19"><pre class="sourceCode sh"><code class="sourceCode bash"><a class="sourceLine" id="cb19-1" data-line-number="1"></a>
<a class="sourceLine" id="cb19-2" data-line-number="2"><span class="ex">jextract</span> -l readline -rpath /usr/local/opt/readline/lib/ \</a>
<a class="sourceLine" id="cb19-3" data-line-number="3"> -t org.unix \</a>
! <a class="sourceLine" id="cb19-4" data-line-number="4"> /usr/include/readline/readline.h /usr/include/_stdio.h \</a>
<a class="sourceLine" id="cb19-5" data-line-number="5"> --exclude-symbol readline_echoing_p -o readline.jar</a></code></pre></div>
<h3 id="java-code-that-uses-readline">Java code that uses readline</h3>
<div class="sourceCode" id="cb20"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb20-1" data-line-number="1"></a>
<a class="sourceLine" id="cb20-2" data-line-number="2"><span class="kw">import</span><span class="im"> java.foreign.*;</span></a>
<a class="sourceLine" id="cb20-3" data-line-number="3"><span class="kw">import</span><span class="im"> java.foreign.memory.*;</span></a>
--- 339,354 ----
<div class="sourceCode" id="cb18"><pre class="sourceCode sh"><code class="sourceCode bash"><a class="sourceLine" id="cb18-1" data-line-number="1"></a>
<a class="sourceLine" id="cb18-2" data-line-number="2"><span class="ex">javac</span> -cp libproc.jar LibprocMain.java</a>
<a class="sourceLine" id="cb18-3" data-line-number="3"></a>
<a class="sourceLine" id="cb18-4" data-line-number="4"><span class="ex">java</span> -cp libproc.jar:. LibprocMain</a></code></pre></div>
<h2 id="using-readline-library-from-java-code-mac-os">Using readline library from Java code (Mac OS)</h2>
+ <h3 id="note-this-sample-fails-because-of-too-big-utf-8-string-in-nativeheader-annotation">Note: This sample fails because of too big UTF-8 String in NativeHeader annotation</h3>
<h3 id="jextract-a-jar-file-for-readline.h">jextract a jar file for readline.h</h3>
<div class="sourceCode" id="cb19"><pre class="sourceCode sh"><code class="sourceCode bash"><a class="sourceLine" id="cb19-1" data-line-number="1"></a>
<a class="sourceLine" id="cb19-2" data-line-number="2"><span class="ex">jextract</span> -l readline -rpath /usr/local/opt/readline/lib/ \</a>
<a class="sourceLine" id="cb19-3" data-line-number="3"> -t org.unix \</a>
! <a class="sourceLine" id="cb19-4" data-line-number="4"> /usr/include/readline/readline.h \</a>
<a class="sourceLine" id="cb19-5" data-line-number="5"> --exclude-symbol readline_echoing_p -o readline.jar</a></code></pre></div>
<h3 id="java-code-that-uses-readline">Java code that uses readline</h3>
<div class="sourceCode" id="cb20"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb20-1" data-line-number="1"></a>
<a class="sourceLine" id="cb20-2" data-line-number="2"><span class="kw">import</span><span class="im"> java.foreign.*;</span></a>
<a class="sourceLine" id="cb20-3" data-line-number="3"><span class="kw">import</span><span class="im"> java.foreign.memory.*;</span></a>
*** 782,788 ****
<h3 id="compiling-and-running-the-above-tensorflow-sample">Compiling and running the above TensorFlow sample</h3>
<div class="sourceCode" id="cb33"><pre class="sourceCode sh"><code class="sourceCode bash"><a class="sourceLine" id="cb33-1" data-line-number="1"></a>
<a class="sourceLine" id="cb33-2" data-line-number="2"><span class="ex">javac</span> -cp tf.jar TensorFlowExample.java</a>
<a class="sourceLine" id="cb33-3" data-line-number="3"></a>
<a class="sourceLine" id="cb33-4" data-line-number="4"><span class="ex">java</span> -cp tf.jar:. TensorFlowExample</a></code></pre></div>
- </body>
- </html>
--- 638,642 ----
< prev index next >