昨日の日記(id:torutk:20121019)で、nativeメソッドSystem.nanoTime()のWindowsでの実装を調べ、その実装で使用しているWindows API QueryPerformanceCounterをC/C++コードで動かすことで分解能(周波数)とAPIの処理時間を取得しました。 そのためには、Windows APIを呼び出せるC/C++開発環境*1をセットアップする必要があります。また、Javaにはネイティブコード(C/C++)を呼び出すためのJNIという仕組みが標準装備されていますが、これもC/C++開発環境が必要となります。 そこで、既存のCライブラリ(Windows APIなど)をJavaから直接呼び出すことができるJNAライブラリを使用してみました。JNAを使えば、JNIのようにC/C++コードを書かなくて済みます。 JNAライブラリの入手 JN
さらに2時間ほどはまった。。。第一回は以下から。 JNAではまる。Javaからepollを使いたい。 - StoryEdit 開発日誌 さて、やりたいことはepollをJNAから使うってことだが、いかんせん、JNA初心者には学ぶことがおおい。 そもそもバインドしたい構造体をみてみる。 typedef union epoll_data { void *ptr; int fd; uint32_t u32; uint64_t u64; } epoll_data_t; struct epoll_event { uint32_t events; /* Epoll events */ epoll_data_t data; /* User data variable */ } __attribute__ ((__packed__)); 最初は"union"を見逃していたため、後に苦労したが、この構造体の
はまりポイント、第三回。実はこれまで使っていたのは、com.sun.jnaパッケージだったのだが、maven centralで惹いてくると、jna-3.0.9しかなかったため、これを利用していた。しかし、ネットのドキュメントのバージョンは、3.2.7とか。実際は、https://github.com/twall/jna ここで開発されているのがjna-4.0.0なのだが、これはmavenでサポートされていない個別コンパイルのものだと思ってた。しかし、違った。net.dev.java.jnaと指定すれば、とってこれた。 jnaのドキュメントをみてると、実はライブラリのバインドの方法は2つあるようだ。 public class HelloWorld { // This is the standard, stable way of mapping, which supports extensiv
Recently, I was asked to help evaluating whether Java (using JNA) or .NET/Mono (using P/Invoke) had the smaller performance overhead for accessing native code from a managed environment. The context The EPICS project is a joint research project of eight European research partnes in the field of sensor networks. The Pervasive Computing Group at the Alpen-Adria Universität Klagenfurt is participati
What was said last In my previous blog post I wrote about sparse matrix support in the OG-Maths library and how we are working on sparse direct decompositions. This is still true, and they are still in the pipeline. Whilst writing these sparse algorithms we found that having a reference implementation of equivalent dense matrix code massively aided debugging. So we wrote dense implementations of L
JavaからC言語などのライブラリにアクセスする方法として、JNI(Java-Native-Interface)がある。 最近知ったのだが、JNA(Java-Native-Access)というものがあり、とても便利みたい。下記のサンプルソース import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.Platform; /** Simple example of native library declaration and usage. */ public class HelloWorld { public interface CLibrary extends Library { CLibrary INSTANCE = (CLibrary) Native.loadLibrary( (Platform.
Javaからネイティブコード呼び出そうと思ったんです。 で、あんまりやる気もないんで、JNIじゃなくてJNAでやろうと思ったんです。 Windows7 64bitで。 ということで、まずMinGWインストールしたんです。 http://www.mingw.org/ んで、NetBeans7.1で「オプション」の「C/C++」のところの「ツールコレクション」で「ベースディレクトリ」に「MinGW\bin」を指定したんです。 それから「C/C++動的ライブラリ」プロジェクト作って、「newfile.c」って名前でこんなコード書きました。 #include <stdio.h> void hello(){ printf("test\n"); } それから「構築」ってやるとDLLができたんです。 あとはJavaからの呼び出しコード書こうと思って、まずはJNAのサイトからjna.jarをダウンロードし
前から気になってたJNA*1をやってみました。以前、JNI*2で泥臭くHellWorld的なものをやりましたが、泥臭過ぎてオエッとなりました。で、気持ち的にやっと泥が取れたところでJNAに取り組んでみます。 一応、泥臭くJNIにチャレンジ(2)でやったような感じでJNAをやってみます。 コマンドラインベースで泥臭いですが以前のJNIのエントリの流れでやればJNAとの比較がしやすいかなと思いました。 実施環境など 環境 WinXp MinGW 5.1.6 Java6u11 jna.jar 3.2.4 JNAは、jna.jarというライブラリが必要なのでここからダウンロードします。JNAは、JVM 1.4以降が対象です。 前提 MinGWへの環境パスは通しています。インストール含めてこちらを参考にしました。セットアップしてみよう Javaへの環境パスはとおしています。私の環境では、C:\Pro
JavaでCのダイナミックリンクライブラリにアクセス 僕は正直なところ,C言語が苦手. どうしても必要なときでない限り,Javaなどの使い慣れている言語を使いたいところ. ただ,やはりどうしてもCのライブラリを使いたいときが出てくるケースもある. そういうときに, Cで書くべき箇所がほんの一部なのにプロジェクト全体をCで書くのはナンセンス. そこで,JNIなどの出番となるわけでが,これがけっこう面倒で書くコード量もそこそこ多い. 実を言うと,昔少し触れた程度でよく分かってなかったり… で,色々便利な道具が充実している昨今,何かそれに変わるものが無いか探していたところ,JNA(Java Native Access)というものを発見. Java Native Access (JNA) とは、Java プログラムがJava Native Interfaceを用いずにネイティブの共有ライ
JavaでJNAを使う JavaからOpenCVをJNA (Java Native Access) 経由で使う野望の続き: 以下から jna.jarの最新版を入手 Java Native Access (JNA) Download これを適当なライブラリパス(Windows なら C:\Program Files\Java\JNA\ など)におき、環境変数 CLASSPATH に jna.jar まで含めた形でC:\Program Files\Java\JNA\jna.jarなどと指定する。Windows の場合は、コントロールパネル→システム→詳細設定→環境変数で、CLASSPATHを新規追加あるいは既存のものを編集:
インターネットの普及に加えて、リッチクライアント/RIAの発展とともに、アプリケーションの形態は、C/S(クライアント/サーバ)システムから、Webアプリケーションシステムにシフトしています。一般の情報発信システムだけではなく、企業の基幹情報システムまで、盛んにWebアプリケーションで構築するようになりました。 この変化の主役であるといわれる、Java技術は、Webアプリケーションシステムの発展とともに、ネットワークの親和性や、プラットフォーム適用の多様性で、広く受け入れられて、Webアプリケーションシステム開発の基盤技術になっています。 これまでのC/Sシステムでは、サーバロジックはC/C++で実装されるケースが一般的でした。C/SシステムからWebアプリケーションシステムにシフトする際に、Java技術を導入することを決めた場合、Java技術で、すべて新規開発するのは1つの選択肢ですが、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く