ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
インストール
ブラウザよりも高速アクセス!
 

Java Native Interface

索引 Java Native Interface

Java Native Interface (JNI) は、Javaプラットフォームにおいて、Javaで記述されたプログラムと、他の言語(たとえばCやC++など)で書かれた、実際のCPUの上で動作するコード(ネイティブコード)とを連携するためのインタフェース仕様である。Java言語からネイティブコードを利用するためのABIと、逆にネイティブコードからJavaバイトコードを動作させるためのバーチャルマシンを利用するためのAPIの2つから成る。 JNIを使うことで、Java言語のバーチャルマシンで動作させるには処理速度の面で不利とされる計算量の多いプログラムを部分的にネイティブコードに置き換えて高速化したり、標準クラスライブラリからはアクセスできないオペレーティングシステムの機能を利用するプログラムを、あたかも通常のJavaクラスのように呼び出したりできるようになる。Java言語以外のJava VM上で動作する言語からも利用可能である。 JNIによる、Javaバーチャルマシンからネイティブコードの呼び出しは、バーチャルマシンの実行環境の一貫性を保つために、通常のJavaプログラムの実行時とは異なる例外的なメモリ管理や排他制御を必要とする場合があり、しばしばプログラムの実行速度の低下を招くことがある。そのため、単純にJNIを利用することでアプリケーション性能を改善できるというわけではない。.

23 関係: Application Binary Interface仮想機械プログラム (コンピュータ)プログラム意味論アプリケーションプログラミングインタフェースアプリケーションソフトウェアインタフェース (情報技術)オペレーティングシステムC++C言語CPU記憶装置Foreign function interfaceJavaJava Native AccessJavaバイトコードJavaプラットフォームJavaクラスライブラリP/InvokeSWIG排他制御機械語.NET Framework

Application Binary Interface

Application Binary Interface(アプリケーション・バイナリー・インタフェース、ABI)とは、アプリケーション(ユーザ)プログラムとシステム(OSやライブラリ)との間の、バイナリレベルのインタフェースである。また、アプリケーション相互間や、それらの部品(プラグイン等)とのバイナリインタフェースもある。 ABIはアプリケーションプログラミングインタフェース (API) とは異なる。APIはソースコードとライブラリ間のインタフェースを定義したものであり、同じAPIをサポートしたシステム間では同じソースコードをコンパイルして利用できる。一方、ABIはオブジェクトコードレベルのインタフェースであり、互換ABIをサポートするシステム間では同じ実行ファイルを変更無しで動作させることができる。.

新しい!!: Java Native InterfaceとApplication Binary Interface · 続きを見る »

仮想機械

仮想機械(かそうきかい、仮想マシン、バーチャルマシン、virtual machine、VM)とは、コンピュータの動作をエミュレートするソフトウェアやフレームワークである。また、エミュレートされた仮想のコンピュータそのものも仮想機械という。仮想機械によって、1つのコンピュータ上で複数のコンピュータやOSを動作させたり、別のアーキテクチャ用のソフトウェアを動作させることができる。.

新しい!!: Java Native Interfaceと仮想機械 · 続きを見る »

プログラム (コンピュータ)

ンピュータプログラム(英:computer programs)とは、コンピュータに対する命令(処理)を記述したものである。コンピュータが機能を実現するためには、CPUで実行するプログラムの命令が必要である。 コンピュータが、高度な処理を人間の手によらず遂行できているように見える場合でも、コンピュータは設計者の意図であるプログラムに従い、忠実に処理を行っている。実際には、外部からの割り込み、ノイズなどにより、設計者の意図しない動作をすることがある。また設計者が、外部からの割り込みの種類を網羅的に確認していない場合もある。.

新しい!!: Java Native Interfaceとプログラム (コンピュータ) · 続きを見る »

プログラム意味論

プログラム意味論(program semantics)とは、計算機科学(特に理論計算機科学と分類されることもある)の一分野で、プログラミング言語の意味と計算モデルに関する分野である。形式的なものは、プログラミング言語の形式意味論とも呼ばれる。標準規格等では形式的でなく意味論を与えているものも多い。.

新しい!!: Java Native Interfaceとプログラム意味論 · 続きを見る »

アプリケーションプログラミングインタフェース

アプリケーションプログラミングインタフェース(、)とは、広義の意味ではソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様である。 APIには、サブルーチン、データ構造、オブジェクトクラス、変数などの仕様が含まれる。APIには様々な形態があり、POSIXのような国際規格、マイクロソフトのWindows APIのようなベンダーによる文書、プログラミング言語のライブラリ(例えば、C++のStandard Template Libraryやなど)がある。 商業的に使われる狭義の意味ではOSやミドルウェアやWebサービス等サービスを利用するアプリケーション(Application)を作成する(Programming)ためのインターフェース(Interface)である。こちらの意味ではサービスから提供されないStandard Template Libraryなど言語の標準ライブラリーは含まない。 APIはApplication Binary Interface (ABI) とは異なる。APIはソースコードベースだが、ABIはバイナリインタフェースである。例えば、POSIXはAPIだが、Linux Standard Base (LSB) はABIである(LSBはいろいろな規定の集合なので、正確には「LSBには、ABIにまで踏み込んでいる部分もある」)。.

新しい!!: Java Native Interfaceとアプリケーションプログラミングインタフェース · 続きを見る »

アプリケーションソフトウェア

アプリケーションスイートである。 アプリケーションソフトウェア(application software, 応用ソフトウェア)は、アプリケーション(応用)プログラムともいい、ワープロや表計算などといった、コンピュータを「応用」する目的に応じた、コンピュータ・プログラムである。なお、それに対してシステムプログラムは、アプリケーションプログラムに対して処理実行のための計算機資源を抽象化して提供する、などのインフラとしての役割のプログラムであり、ユーザーが要求する情報処理を直接実行するものではなく、ユーザーが普段は意識することはない裏方的な存在がシステムプログラムである。.

新しい!!: Java Native Interfaceとアプリケーションソフトウェア · 続きを見る »

インタフェース (情報技術)

インタフェース(interface)は、ものごとの境界となる部分と、その境界でのプロトコルを指す。コンピュータなどでは、コンピュータシステム内、あるいはシステム間のインタフェースや、人間と機械の間のインタフェース(ヒューマンマシンインタフェース)などがある。他分野の専門用語の借用になるが、界面という訳語がある。.

新しい!!: Java Native Interfaceとインタフェース (情報技術) · 続きを見る »

オペレーティングシステム

ペレーティングシステム(Operating System、OS、オーエス)とは、コンピュータのオペレーション(操作・運用・運転)のために、ソフトウェアの中でも基本的、中核的位置づけのシステムソフトウェアである。通常、OSメーカーが組み上げたコンピュータプログラムの集合として、作成され提供されている。 オペレーティングシステムは通常、ユーザーやアプリケーションプログラムとハードウェアの中間に位置し、ユーザーやアプリケーションプログラムに対して標準的なインターフェースを提供すると同時に、ハードウェアなどの各リソースに対して効率的な管理を行う。現代のオペレーティングシステムの主な機能は、ファイルシステムなどの補助記憶装置管理、仮想記憶などのメモリ管理、マルチタスクなどのプロセス管理、更にはGUIなどのユーザインタフェース、TCP/IPなどのネットワーク、などがある。オペレーティングシステムは、パーソナルコンピュータからスーパーコンピュータまでの各種のコンピュータや、更にはスマートフォンやゲーム機などを含む各種の組み込みシステムで、内部的に使用されている。 製品としてのOSには、デスクトップ環境やウィンドウシステムなど、あるいはデータベース管理システム (DBMS) などのミドルウェア、ファイル管理ソフトウェアやエディタや各種設定ツールなどのユーティリティ、基本的なアプリケーションソフトウェア(ウェブブラウザや時計などのアクセサリ)が、マーケティング上の理由などから一緒に含められていることもある。 OSの中で、タスク管理やメモリ管理など特に中核的な機能の部分をカーネル、カーネル以外の部分(シェルなど)をユーザランドと呼ぶ事もある。 現代の主なOSには、Microsoft Windows、Windows Phone、IBM z/OS、Android、macOS(OS X)、iOS、Linux、FreeBSD などがある。.

新しい!!: Java Native Interfaceとオペレーティングシステム · 続きを見る »

C++

C++(シープラスプラス)は、汎用プログラミング言語の一つである。日本語では略してシープラプラ、シープラなどとも呼ばれる。.

新しい!!: Java Native InterfaceとC++ · 続きを見る »

C言語

C言語(シーげんご)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発したプログラミング言語である。英語圏では単に C と呼んでおり、日本でも文書や文脈によっては同様に C と呼ぶことがある。.

新しい!!: Java Native InterfaceとC言語 · 続きを見る »

CPU

Intel Core 2 Duo E6600) CPU(シーピーユー、Central Processing Unit)、中央処理装置(ちゅうおうしょりそうち)は、コンピュータにおける中心的な処理装置(プロセッサ)。 「CPU」と「プロセッサ」と「マイクロプロセッサ」という語は、ほぼ同義語として使われる場合も多いが、厳密には以下に述べるように若干の範囲の違いがある。大規模集積回路(LSI)の発達により1個ないしごく少数のチップに全機能が集積されたマイクロプロセッサが誕生する以前は、多数の(小規模)集積回路(さらにそれ以前はディスクリート)から成る巨大な電子回路がプロセッサであり、CPUであった。大型汎用機を指す「メインフレーム」という語は、もともとは多数の架(フレーム)から成る大型汎用機システムにおいてCPUの収まる主要部(メイン)、という所から来ている。また、パーソナルコンピュータ全体をシステムとして見た時、例えば電源部が制御用に内蔵するワンチップマイコン(マイクロコントローラ)は、システム全体として見た場合には「CPU」ではない。.

新しい!!: Java Native InterfaceとCPU · 続きを見る »

記憶装置

GB SDRAM。一次記憶装置の例 GB ハードディスクドライブ(HDD)。コンピュータに接続すると二次記憶装置として機能する SDLT テープカートリッジ。オフライン・ストレージの例。自動テープライブラリで使う場合は、三次記憶装置に分類される 記憶装置(きおくそうち)は、コンピュータが処理すべきデジタルデータをある期間保持するのに使う、部品、装置、電子媒体の総称。「記憶」という語の一般的な意味にも対応する英語としてはメモリ(memory)である。記憶装置は「情報の記憶」を行う。他に「記憶装置」に相当する英語としてはストレージ デバイス(Storage Device)というものもある。.

新しい!!: Java Native Interfaceと記憶装置 · 続きを見る »

Foreign function interface

Foreign function interface (FFI)とは、あるプログラミング言語から他のプログラミング言語で定義された関数などを利用するための機構。主に高水準言語からC/C++などの関数やメソッドを呼び出し、OS固有の機能などを利用するために使用されることが多い。 FFIという用語はCommon Lispにおける仕様に由来し、Haskellでも同様にFFIという用語が使われている。Adaなどでは言語間バインディング(または単にバインディング, language binding)と呼ばれている。 FFIという用語自体に「関数(Function)」という言葉が含まれているが、多くのFFIでは単に他言語で書かれた関数が呼び出せるだけではなく、オブジェクトのメソッドを呼び出したり、その返り値を取得し、データ型やクラスを言語間で相互変換することができる。.

新しい!!: Java Native InterfaceとForeign function interface · 続きを見る »

Java

Java(ジャバ)は、狭義ではプログラミング言語Javaを指す。広義では言語仕様以外にも、仕様が与えられているJavaクラスライブラリやJava仮想マシン、さらにはJDKやJREなどの公式のものをはじめとする、場合によってはサードパーティのものなどを含め曖昧にJavaプラットフォームと総称されるようなものなどのエコシステムなどを指すこともある。構文についてはJavaの文法の記事を参照。.

新しい!!: Java Native InterfaceとJava · 続きを見る »

Java Native Access

Java Native Access (JNA) とは、JavaプログラムがJava Native Interfaceを用いずにネイティブの共有ライブラリにアクセスする方法を提供するライブラリである。JNA は最小限の作業でネイティブコードにアクセスできることを目指して設計されており、決まりきったアクセスコードを書いたりグルーコードの生成を行ったりせず、ネイティブコードへ正しく簡単にアクセスすることを最優先としている(ただし、性能にも注意が払われている)。JNAライブラリはネイティブコードを呼び出すためにlibffiを用いており、名前を指定してライブラリをロードするネイティブの関数を用いて、目的のライブラリ関数の関数ポインタを取得する。ネイティブコードにアクセスする過程で静的なバインディング、ヘッダファイル、またコンパイルは必要ない。アプリケーションの開発者はJavaのインターフェイスを用いて対象のネイティブライブラリの関数や構造体を記述する。これによって、JNIコードを記述しビルドする大きな労力をかけずにきわめて簡単にネイティブプラットフォームの機能を利用することができる。.

新しい!!: Java Native InterfaceとJava Native Access · 続きを見る »

Javaバイトコード

Javaバイトコードは、Java仮想マシンが実行する命令形式である。各バイトコードのオペコードは長さが1バイトであるが、引数を持つものもあるため、結果として複数バイトの命令となる。256個のオペコードの全てが使われているのではなく、51個が将来のために予約されている。その他について、Javaプラットフォームの開発元であるサン・マイクロシステムズは、3つのコードを永久に実装しないままにした。.

新しい!!: Java Native InterfaceとJavaバイトコード · 続きを見る »

Javaプラットフォーム

Javaプラットフォーム(ジャバプラットフォーム、英: Java Platform)は、Javaで記述されたプログラムの開発および実行を行うことのできるソフトウェア群の総称である。.

新しい!!: Java Native InterfaceとJavaプラットフォーム · 続きを見る »

Javaクラスライブラリ

Javaクラスライブラリ (JCL) はJavaアプリケーションが実行時に呼び出せる動的ロード可能なライブラリ群である。また、特にJREが提供している java.lang 名前空間他の基本的なクラスを含むライブラリを指すこともある。このライブラリがそれぞれのOSの持つライブラリなどに依存することで、Javaアプリケーションなどが直接にOSなどのプラットフォームに依存しないようにできるようになっている。 JCLはJavaプラットフォーム内で次の3つの役割を担っている。.

新しい!!: Java Native InterfaceとJavaクラスライブラリ · 続きを見る »

P/Invoke

P/Invoke(Platform Invoke、プラットフォーム呼び出し)とは、.NET Frameworkにおける共通言語基盤 (CLI) の機能の一つであり、マネージコードから動的ライブラリ内のネイティブコードを呼び出すことを可能にするものである。受け渡しされるデータ型は、必要であればCLIによって適切に変換されるが、メタデータによってプログラマーが変換方法を指定することもできる。こうしたデータの変換をマーシャリングという。.

新しい!!: Java Native InterfaceとP/Invoke · 続きを見る »

SWIG

SWIG (Simplified Wrapper and Interface Generator) は、C/C++ で書かれたプログラムやライブラリを、Tcl/Tk、Perl、Python、Ruby、PHP、Luaなどのスクリプト言語や、Java、C#、Common Lisp、Scheme、Ocamlなどのプログラミング言語に接続するためのオープンソースのツールである。.

新しい!!: Java Native InterfaceとSWIG · 続きを見る »

排他制御

排他制御せずに ''i'' と ''i+1'' という2つのノードを同時に連結リストから外す操作を行うと、結果として ''i+1'' のノードが外れないという状態になりうる。 排他制御(はいたせいぎょ)とは、コンピュータ・プログラムの実行において、複数のプロセスが利用出来る共有資源に対し、複数のプロセスからの同時アクセスにより競合が発生する場合に、あるプロセスに資源を独占的に利用させている間は、他のプロセスが利用できないようにする事で整合性を保つ処理の事をいう。相互排除または相互排他(mutual exclusion)ともいう。最大k個のプロセスが共有資源にアクセスして良い場合を k-相互排除という。 換言すれば1つのクリティカルセクションに複数のプロセス(またはスレッド)が同時に入ることを防ぐことである。クリティカルセクションとは、プロセスが共有メモリなどの共有資源にアクセスしている期間を指す。排他制御の問題は1965年、エドガー・ダイクストラが Solution of a problem in concurrent programming control(並行プログラミング制御における問題の解法)と題した論文で扱ったのが最初であるTaubenfeld.

新しい!!: Java Native Interfaceと排他制御 · 続きを見る »

機械語

機械語(きかいご)またはマシン語(Machine code、machine language)とは、コンピュータのプロセッサが直接解釈実行可能な一連の命令群のデータそのもの(を、コンピュータ・プログラミング言語とみなしたもの)である。.

新しい!!: Java Native Interfaceと機械語 · 続きを見る »

.NET Framework

Microsoft.NET Framework(マイクロソフト ドットネット フレームワーク)は、マイクロソフトが開発したアプリケーション開発・実行環境である。 Windowsアプリケーションだけでなく、XML WebサービスやウェブアプリケーションなどWebベースのアプリケーションなども包括した環境となっている。一般に.NETという場合、.NET全体の環境を指す。.

新しい!!: Java Native Interfaceと.NET Framework · 続きを見る »

ここにリダイレクトされます:

JNI

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »