Androidソースコード公開後のJNI

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
社会人学習講座 「Javaプログラミング概論」
クローズドソースアプリから、GPLソフトを使うには
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
自社製ミドルウエアをDalvikと連携させることが可能になる
Copyright by Rich & Giro
アルゴリズムとデータ構造1 2007年6月12日
アルゴリズムとプログラミング (Algorithms and Programming)
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
RAD Studio 14/09/27 TEffectを使った綺麗なForm
プログラミングIII演習 第1回目.
社会人学習講座 「Javaプログラミング概論」
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
C#とC++とオブジェクト指向 上甲 健史.
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
Bridge Pattern
アプレット プログラミング 第10回 アプレット プログラミング第10回.
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
コンパイラの解析 (2) GCJのデータ構造 - 1.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
第7回独習Javaゼミ セクション 1~4 発表者 直江 宗紀.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
日本Androidの会 事務局長 SIPropプロジェクト 代表 グロースエクスパートナーズ 今村 謙之(いまむら のりつな)
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
EclipseでWekaのAPIを呼び出す
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
Collection, Generics, Iterator
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
5.9 メソッドのオーバーロード 5.10 変数の引渡し 2003/11/21 紺野憲一
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
Java8について 2014/03/07.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
Annotation EJB 3.0 コース 第3回 2006年8月4日.
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
フレンド関数とフレンド演算子.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
5.基本API 5-1 レイアウト ウィジェットの並べ方を指定するには、 パレットのレイアウト(Layoutでは以下の8種類)を配置する。
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
プログラミング 2 静的変数.
Presentation transcript:

Androidソースコード公開後のJNI 株式会社  ブリリアントサービス 代表取締役 杉本 礼彦

■JNIはJavaとネイティブ(Javaより下の層、C言語やC++で書かれる)と連携する為に整備された仕組みです。

■なぜJNI? ・ネイティブに存在する資産を使えます。 ・速度が速い。  ・ネイティブに存在する資産を使えます。  ・速度が速い。  ・現在のAndroidに存在しないAPIを拡張するとなると必須の技術です。   ・ AndroidのパッケージもJNIで実現されている。

■ハンズオンと言いながらJNIの使い方は説明しません。 使い方の参考になる資料は 2009年1月19日 日本Androidの会の勉強会で JNIによるAndroid API拡張  株式会社GClue 佐々木さん

■ここではAndroidのパッケージのソースコードを例にJNIの仕組みについてお話します。 ソースコードを持っている方は一緒に見ていただけると良いと思います。

■native という予約語 abstractとの違い abstractもnativeも型のみ宣言(クラスやメソッドが実装されていない )と言う意味では同じだが、実体の場所が異なる。abstractは 派生クラスで実装。では native は?

■Androidのパッケージの場所 \\frameworks\base\core\java\android

■native methodを持つJavaファイル  Cameraを例に見てみてみましょう。  native の説明にあった通りです。 \\frameworks\base\core\java\android\hardware\Camera.java 178行目 public native final void startPreview();

■native methodの実体を持つC言語ファイル \\frameworks\base\core\jni\android_hardware_Camera.cpp 311行目 status_t CameraService::Client::startPreview()

■Camera classのメソッドテーブル \\frameworks\base\core\jni\android_hardware_Camera.cpp 450行目(同じファイル) static JNINativeMethod camMethods[] = { { "startPreview", "()V", (void *)android_hardware_Camera_startPreview },

■メソッドをJNIに登録している箇所 \\frameworks\base\core\jni\android_hardware_Camera.cpp 538行目(同じファイル) // Register native functions return AndroidRuntime::registerNativeMethods(env,                 "android/hardware/Camera", camMethods,                   NELEM(camMethods));

■VMからJNIを使われるところ dalvik\vm\Native.c 65行目からの関数 void dvmResolveNativeMethod(const u4* args, JValue* pResult, const Method* method, Thread* self)  func = dvmLookupInternalNativeMethod(method); ★85行目  ~ ~ ~ dfunc(args, pResult, method, self); ★103行目 return; } dvmLookupInternalNativeMethod   85行目で発見された関数は dfunc(args, pResult, method, self);    103行目で実行されてます。

■nativeの実体は?  nativeの予約語で宣言された実体はネイティブ(C言語やC++で書かれた部分)にあるということです。

■もちろんJNIを使って拡張したインターフェースはそのプラットフォームでしか動きません。

■JNIの話 おしまい

■広報 技術評論社 SoftwareDesign 2009年3月号 記事が載りました。

■広報  ・Androidの自社端末開発中

■広報 次はかっこいい端末を作りたいのでオープンハードウェアで協力者募集!(予定)

ありがとうございました