タグ

c++とJavaに関するcrafのブックマーク (6)

  • JNIとC++例外 - meryngii.neta

    JNI関連の話が続きます。 今日は短いですが、JNIとC++例外について。 最近ではAndroid NDKもC++の例外(やRTTI)に対応していて、そのおかげで例外が必要なSTLなどのライブラリを自由に使えるようになっています。しかし、Java側はC++の例外を理解してくれないので、もしJNIを介した関数がネイティブ領域で例外をキャッチし損ねると、すぐにSegmentation Faultで落ちます。 解決策としては、JNIから呼び出されたC++側の内部処理を、noexceptな関数に閉じ込めてしまえばよいわけです。もちろんエラーが発見できないのもまずいので、JNIを使ってJava側の例外に変換してしまいます。 JNIEXPORT void JNICALL Java_Foo_bar (JNIEnv* env, jobject thisj) { jni_util::convertExcep

    JNIとC++例外 - meryngii.neta
    craf
    craf 2014/04/04
  • Androidアプリから C/C++ライブラリを呼び出す(1)

    前回に引き続きバッファロー社のパソコン用学習リモコン「PC-OP-RS1」をAndroidから制御するプログラムを作成します。今回と次回では、Androidフレームワークの作成、独自SDK、Androidアプリケーションまでを解説します。 日Androidの会 金沢支部 出村成和 前回は、Linuxカーネルへのデバイスドライバの組み込みから始め、「HAL」(Hardware Abstraction Layer)レベルのドライバや、リモコンの信号を送受信するテストアプリケーションを作成しました。 今回はその続きとして、前回C/C++言語で作成した「libpcremocon.so」ライブラリを、Javaで作成するAndroidアプリケーションから呼び出せるようにします(図1)。 さらに、既存のAndroidフレームワークに追加してJavaのクラスライブラリを作り、それを独自SDKとして1つに

    Androidアプリから C/C++ライブラリを呼び出す(1)
  • 訛りのない Java 言語を話す ― Java に転向したプログラマーのためのナチュラルな Java 表現

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    訛りのない Java 言語を話す ― Java に転向したプログラマーのためのナチュラルな Java 表現
    craf
    craf 2010/02/13
  • JNIより簡単にJavaとC/C++をつなぐ「JNA」とは(1/4)-@IT

    インターネットの普及に加えて、リッチクライアント/RIAの発展とともに、アプリケーションの形態は、C/S(クライアント/サーバ)システムから、Webアプリケーションシステムにシフトしています。一般の情報発信システムだけではなく、企業の基幹情報システムまで、盛んにWebアプリケーションで構築するようになりました。 この変化の主役であるといわれる、Java技術は、Webアプリケーションシステムの発展とともに、ネットワークの親和性や、プラットフォーム適用の多様性で、広く受け入れられて、Webアプリケーションシステム開発の基盤技術になっています。 これまでのC/Sシステムでは、サーバロジックはC/C++で実装されるケースが一般的でした。C/SシステムからWebアプリケーションシステムにシフトする際に、Java技術を導入することを決めた場合、Java技術で、すべて新規開発するのは1つの選択肢ですが、

    craf
    craf 2009/12/16
  • 良い乱数・悪い乱数

    C言語標準ライブラリの乱数rand( )は質に問題があり、禁止している学会もある。 他にも乱数には様々なアルゴリズムがあるが、多くのものが問題を持っている。 最も多くの人に使われている乱数であろう Visual Basic の Rnd の質は最低である。 そもそも乱数とは 乱数とは、来サイコロを振って出る目から得られるような数を意味する。 このような乱数は予測不能なものである。 しかし、計算機を使って乱数を発生させた場合、 次に出る数は完全に決まっているので、予測不能とはいえない。 そこで、計算機で作り出される乱数を疑似乱数(PRNG)と呼び区別することがある。 ここでは、特にことわらない限り乱数とは疑似乱数のことを指すとする。 計算機でソフト的に乱数を発生させることの最大のメリットは、 再現性があることである。 初期状態が同じであれば、発生する乱数も全く同じものが得られる。 このことは

  • 不変なオブジェクト - 当面C#と.NETな記録

    不変、immutable について。生成したら生涯、値が変わらないオブジェクトを不変なオブジェクトといいます。 string や Uri クラスなどが例です。誰もが使っている割りに、言及されることはまれです。string や Uri と対になる mutable なクラスは StringBuilder と UriBuilder ですね。 書籍なら「Effective Java」、結城浩さんの「Java言語で学ぶ デザインパターン入門 マルチスレッド編」に説明があります。詳しい解説はこれらを参照してください。私も不変初心者なので(^^; 利点を Effective Java から引用すると、「設計、実装、使用が可変クラスよりも容易」、「誤りにくく、より安全」。でも、設計、実装が容易という点はそうとも言えないかも。wikipedia 参照。これは簡単とは言えない…。単純な値を表すクラスを不変にす

    不変なオブジェクト - 当面C#と.NETな記録
    craf
    craf 2007/07/17
  • 1