diff options
Diffstat (limited to 'files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom')
5 files changed, 281 insertions, 0 deletions
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/development/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/development/index.html new file mode 100644 index 0000000000..6d9b1ca50b --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/development/index.html @@ -0,0 +1,24 @@ +--- +title: Development +slug: Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM/Development +tags: + - JavaXPCOM + - 'XPCOM:Language Bindings' +translation_of: Mozilla/Tech/XPCOM/Language_bindings/JavaXPCOM/Development +--- +<p> +</p> +<h3 id=".E3.82.BD.E3.83.BC.E3.82.B9" name=".E3.82.BD.E3.83.BC.E3.82.B9"> ソース </h3> +<p>最新のソースコードは、Mozilla trunk上の {{ Source("extensions/java/xpcom") }} ディレクトリ内にあります。 +</p> +<h3 id=".E6.A7.8B.E7.AF.89.E6.89.8B.E9.A0.86" name=".E6.A7.8B.E7.AF.89.E6.89.8B.E9.A0.86"> 構築手順 </h3> +<p>ビルドの手順はここにあります: <a href="ja/Building_JavaXPCOM">Building JavaXPCOM</a>。 +</p> +<h3 id=".E3.83.90.E3.82.B0" name=".E3.83.90.E3.82.B0"> バグ </h3> +<p>すべての JavaXPCOM バグは、 <a class="external" href="http://bugzilla.mozilla.org/">Bugzilla</a>内で、"Core" プロダクトと "Java to XPCOM Bridge" コンポーネントを使って記録されています。 +</p> +<ul><li> 公開されている JavaXPCOMバグの<a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&product=Core&component=Java+to+XPCOM+Bridge&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&chfieldto=Now">一覧</a> +</li><li> 新しい JavaXPCOMバグを<a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&component=Java+to+XPCOM+Bridge&rep_platform=All&op_sys=All">開く</a> +</li><li> 最近1ヶ月の<a class="external" href="http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&module=all&branch=HEAD&branchtype=match&dir=mozilla%2Fextensions%2Fjava%2Fxpcom&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=month&mindate=&maxdate=&cvsroot=%2Fcvsroot">チェックイン</a> +</li></ul> +{{ languages( { "en": "en/JavaXPCOM/Development", "zh-cn": "cn/JavaXPCOM/\u5f00\u53d1" } ) }} diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/embedding_mozilla_in_a_java_application_using_javaxpcom/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/embedding_mozilla_in_a_java_application_using_javaxpcom/index.html new file mode 100644 index 0000000000..d523b94ce1 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/embedding_mozilla_in_a_java_application_using_javaxpcom/index.html @@ -0,0 +1,156 @@ +--- +title: Embedding Mozilla in a Java Application using JavaXPCOM +slug: >- + Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM/Embedding_Mozilla_in_a_Java_Application_using_JavaXPCOM +tags: + - Embedding Mozilla + - JavaXPCOM + - 'XPCOM:Language Bindings' +translation_of: Archive/Mozilla/Embedding_Mozilla_in_a_Java_Application_using_JavaXPCOM +--- +<p> +</p><p><a href="ja/XULRunner">XULRunner</a>には<a href="ja/JavaXPCOM">JavaXPCOM</a>が標準搭載されており、これは、JavaのコードとXPCOMの相互利用を可能にするものです。この記事で示すとおり、JavaでのXPCOMオブジェクトの操作は、C++の場合とそれほど大きな差はありません。 +</p> +<h4 id="必要な環境"> 必要な環境 </h4> +<ul><li> Java 1.4.2 以降 +</li><li> <a href="ja/XULRunner">XULRunner</a> 1.8.0.1 以降 +</li></ul> +<h4 id="組み込み"> 組み込み </h4> +<p>Mozilla を Java アプリケーションに埋め込むためには、<tt>xulrunner/sdk/lib</tt>フォルダーにある<tt>MozillaInterfaces.jar</tt>というライブラリをclasspathに追加する必要があります。このライブラリは Mozilla をブートストラップし、XPCOM メソッドを呼び出すために必要なインターフェースを提供します。 +</p><p>組み込みを開始するために、<a href="https://dxr.mozilla.org/mozilla-central/source/extensions/java/xpcom/interfaces/Mozilla.java" rel="custom">Mozilla</a>共有クラスの提供するメソッドを使用します。はじめに、Java アプリケーションは適切な XULRunner installationを見つける必要があります。 +</p> +<pre class="eval"> Mozilla mozilla = Mozilla.getInstance(); + GREVersionRange[] range = new GREVersionRange[1]; + range[0] = new GREVersionRange("1.8.0", true, "1.9", false); + <span>// work with trunk nightly version 1.9a1 ^^</span> + + try { + File grePath = Mozilla.getGREPathWithProperties(range, null); + LocationProvider locProvider = new LocationProvider(grePath); + mozilla.initEmbedding(grePath, grePath, locProvider); + } catch (FileNotFoundException e) { + <span>// この例外は greGREPathWithProperties が GRE を見つけられなかったときに送出されます</span> + } catch (XPCOMException e) { + <span>// この例外は initEmbedding が失敗したときに送出されます</span> + } +</pre> +<p><code>LocationProvider</code>はJavaアプリケーションによって提供されるクラスです。これはインターフェース<a href="https://dxr.mozilla.org/mozilla-central/source/extensions/java/xpcom/interfaces/IAppFileLocProvider.java" rel="custom">IAppFileLocProvider</a>を実装しているもので、 +and tells XPCOM where to find certain files and directories. +</p><p><code>initEmbedding</code>メソッドは embedding process を開始するもので、Java アプリケーションと XPCOM や Mozilla の連携を可能にするものです。ひとたび Java アプリケーションが Mozilla を使う作業を終えたとき、それは embedding process を terminate する必要があります。 +</p> +<pre class="eval"> try { + mozilla.termEmbedding(); + } catch (XPCOMException e) { + <span>// この例外は termEmbedding が失敗したときに送出されます</span> + } +</pre> +<h4 id="XPCOMオブジェクトを利用する"> XPCOMオブジェクトを利用する </h4> +<p>Mozilla が組み込まれると、Java アプリケーションは XPCOM オブジェクトを利用することができるようになります。<code>Mozilla</code> クラスはこれの手助けをするメソッドを提供しており、たとえば、<code>getServiceManager</code>、<code>getComponentManager</code>、<code>newLocalFile</code>があります。JavaXPCOM により、 Java アプリケーションがXPCOM オブジェクトを取得し、メソッドを呼び出すのに加え、Java クラスオブジェクトを XPCOM メソッドに渡すことも可能になります。 +</p><p>例えば: +</p> +<pre class="eval"> Mozilla mozilla = Mozilla.getInstance(); + WindowCreator creator = new WindowCreator(); <span>// nsIWindowCreator を実装</span> + + nsIServiceManager serviceManager = mozilla.getServiceManager(); + + nsIWindowWatcher windowWatcher = (nsIWindowWatcher) serviceManager + .getServiceManagerByContractID(NS_WINDOWWATCHER_CONTRACTID, + nsIWindowWatcher.NS_IWINDOWWATCHER_IID); + windowWatcher.setWindowCreator(creator); +</pre> +<p>この例では、<code>nsIWindowCreator</code>インターフェースを実装した Java のクラスである<code>WindowCreator</code>が存在し、それを Mozilla に登録しようとしています。そのために、まず service manager を取得するのですが、それは Mozilla のwindow watcherのリファレンスにある方法によります。 +</p><p>別の例: (<a class="external" href="http://rayh.co.uk">rayh.co.uk</a>にあるもの) +</p> +<pre class="eval"> // linux 上ではこのコードが実行されるより前に gtk が初期化されている必要があることに注意 + Mozilla moz = Mozilla.getInstance(); + + // 次に XUL アプリケーションを実行するために、XPCOMのservice managerのインスタンスを取得する必要がある + nsIServiceManager serviceManager = moz.getServiceManager(); + + // 次に @mozilla.org/toolkit/app-startup;1 サービスを取得する必要がある + nsIAppStartup appStartup = (nsIAppStartup)serviceManager.getServiceByContractID("@mozilla.org/toolkit/app-startup;1", nsIAppStartup.NS_IAPPSTARTUP_IID); + + // 上のものへの nsIWindowWatcher インターフェースを取得する + nsIWindowCreator windowCreator = (nsIWindowCreator)appStartup.queryInterface(nsIWindowCreator.NS_IWINDOWCREATOR_IID); + + // window watcher サービスを取得する + nsIWindowWatcher windowWatcher = (nsIWindowWatcher)serviceManager.getServiceByContractID("@mozilla.org/embedcomp/window-watcher;1", nsIWindowWatcher.NS_IWINDOWWATCHER_IID); + + // window creator をsetする (from step 6) + windowWatcher.setWindowCreator(windowCreator); + + // Create the root XUL window を作成: + nsIDOMWindow win = windowWatcher.openWindow(null, "<a class=" external">chrome://your-app/content/window.xul</a>", "mywindow", "chrome,resizable,centerscreen", null); + + // これを active window にする + windowWatcher.setActiveWindow(win); + + // application を xpcom/xul に手渡し、ここでブロックする: + appStartup.run(); +</pre> +<p>これは動作する LocationProvider の例です : +</p> +<pre class="eval"> public class LocationProvider implements IAppFileLocProvider { +</pre> +<pre class="eval"> private final File libXULPath; + int counter = 0; + + public LocationProvider(File grePath) { + this.libXULPath = grePath; + } +</pre> +<pre class="eval"> public File getFile(String aProp, boolean[] aPersistent) { + File file = null; + if (aProp.equals("GreD") || aProp.equals("GreComsD")) { + file = libXULPath; + if (aProp.equals("GreComsD")) { + file = new File(file, "components"); + } + } + else if (aProp.equals("MozBinD") || + aProp.equals("CurProcD") || + aProp.equals("ComsD") || + aProp.equals("ProfD")) + { + file = libXULPath; + if (aProp.equals("ComsD")) { + file = new File(file, "components"); + } + } + return file; + } +</pre> +<pre class="eval"> public File[] getFiles(String aProp) { + File[] files = null; + if (aProp.equals("APluginsDL")) { + files = new File[1]; + files[0] = new File(libXULPath, "plugins"); + } + return files; + } +</pre> +<p><br> +</p> +<h4 id="XPCOM_の_UI_を別のスレッドから呼び出す"> XPCOM の UI を別のスレッドから呼び出す </h4> +<p>appStartup.run() はメインのイベントループを始動し、アプリケーションが終了するまでそこに留まります。これ以降の場所で XPCOM とcommunicateするためには、nsIProxyObjectManager を使用する必要があります。 +</p><p>上の例に引き続き新しいウインドウを作成するためには、このようにします : +</p> +<pre class="eval"> // まず、event queue service を取得します。これは、XPCOM の全てのイベントキューを処理するものです。 + nsIEventQueueService eventQueueServive = (nsIEventQueueService)serviceManager.getServiceByContractID("@mozilla.org/event-queue-service;1",nsIEventQueueService.NS_IEVENTQUEUESERVICE_IID); + + // 次に、ウインドウを開くために、UI スレッドを取得します。 + // nsIEventQueueService が所有するstatic変数がUIイベント用の特別なキューを所有しています。 + nsIEventQueue eventQueue = eventQueueServive.getSpecialEventQueue(nsIEventQueueService.UI_THREAD_EVENT_QUEUE); + + // 次に、proxy object manager 用の proxy を作成します。 + nsIProxyObjectManager proxy = (nsIProxyObjectManager)componentManager.createInstanceByContractID("@mozilla.org/xpcomproxy;1",null,nsIProxyObjectManager.NS_IPROXYOBJECTMANAGER_IID); + + // そして、proxy object manager を使って、さきほど作成した nsIWindowWatcher のインスタンスへの proxy を作成します。 + nsIWindowWatcher windowProxy = (nsIWindowWatcher)proxy.getProxyForObject(eventQueue,windowWatcher.NS_IWINDOWWATCHER_IID,windowWatcher,nsIProxyObjectManager.INVOKE_SYNC); + + // そうすれば、proxy を使ってメソッドを普通に呼び出すことができます。 + windowProxy.openWindow(null, chromeUri, name, "centerscreen", null); +</pre> +<p>さらに詳しい情報は、<a class="external" href="http://www.xulplanet.com/references/xpcomref/ifaces/nsIProxyObjectManager.html">XulPlanet's documentation of nsIProxyObjectManager</a>を参照してください。 +</p><p>これは、<a class="external" href="http://rayh.co.uk/blog/?p=14">Injecting Events onto XPCOM’s UI Thread</a>からとられたものです。 +</p> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/examples/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/examples/index.html new file mode 100644 index 0000000000..9c34d27c84 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/examples/index.html @@ -0,0 +1,13 @@ +--- +title: Examples +slug: Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM/Examples +tags: + - JavaXPCOM + - 'XPCOM:Language Bindings' +translation_of: Mozilla/Tech/XPCOM/Language_bindings/JavaXPCOM/Examples +--- +<p> +</p><p>いくつかの Java テストアプリケーションがソースツリーにチェックインされています。ここには、Java から Gecko の埋め込みや XPCOM の初期化をする方法の例があります。<a class="external" href="http://lxr.mozilla.org/mozilla/source/extensions/java/xpcom/tests">mozilla/extensions/java/xpcom/tests</a> +</p> +<div class="noinclude"> +</div> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/index.html new file mode 100644 index 0000000000..c2707f8de0 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/index.html @@ -0,0 +1,73 @@ +--- +title: JavaXPCOM +slug: Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM +tags: + - JavaXPCOM + - 'XPCOM:Language Bindings' + - 要更新 +translation_of: Mozilla/Tech/XPCOM/Language_bindings/JavaXPCOM +--- +<p> </p> +<div> + <p><b>JavaXPCOM</b> は Java と <a href="ja/XPCOM">XPCOM</a> のコミュニケーションを可能にします。つまり、Java アプリケーションは、XPCOM オブジェクトにアクセスでき、XPCOM オブジェクトも XPCOM インターフェースを実装するすべての Java class にアクセスできます。 JavaXPCOM を使うことで、開発者は Java アプリケーションから XPCOM や埋め込み <a href="ja/Gecko">Gecko</a> にデータを伝送することができます。 JavaXPCOM は <a href="ja/XPConnect">XPConnect</a> (JavaScript-XPCOM ブリッジ) に非常によく似ていて <a href="ja/XPIDL">XPIDL</a> を使用します。</p> + <p>JavaXPCOM は <a href="ja/XULRunner">XULRunner</a> の一部として標準で構築されています。 最近のビルドまたは <a href="ja/XULRunner_1.8.0.4_Release_Notes">XULRunner 1.8.0.4</a> をダウンロードして試してみてください。</p> +</div> +<table class="topicpage-table"> + <tbody> + <tr> + <td> + <h4 id=".E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.86.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3" name=".E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.86.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3"><a>ドキュメンテーション</a></h4> + <dl> + <dt> + <a href="ja/JavaXPCOM/Development">JavaXPCOM Development</a></dt> + <dd> + <small>ソースの取得・構築方法、それから読み方・バグの報告の方法。</small></dd> + </dl> + <dl> + <dt> + <a href="ja/JavaXPCOM/Examples">サンプルコード</a></dt> + <dd> + <small>いくつかの Java テストアプリケーションがソースツリーにチェックインされており、Java から Gecko の埋め込みや XPCOM を初期化する方法の例があります。</small></dd> + </dl> + <dl> + <dt> + <a href="ja/JavaXPCOM/Embedding_Mozilla_in_a_Java_Application_using_JavaXPCOM">JavaXPCOM を使って Java アプリケーションへ Mozilla を組み込む</a></dt> + <dd> + <small><a href="ja/XULRunner">XULRunner</a> には JavaXPCOM が標準搭載されており、これは、Java のコードと XPCOM の相互利用を可能にするものです。この記事で示すとおり、Java での XPCOM オブジェクトの操作は C++ の場合とそれほど大きな差はありません。</small></dd> + </dl> + <p><span class="alllinks"><a>すべて見る...</a></span></p> + </td> + <td> + <h4 id=".E3.82.B3.E3.83.9F.E3.83.A5.E3.83.8B.E3.83.86.E3.82.A3" name=".E3.82.B3.E3.83.9F.E3.83.A5.E3.83.8B.E3.83.86.E3.82.A3">コミュニティ</h4> + <ul> + <li>Mozilla Java フォーラムを見る...</li> + </ul> + <ul> + <li><a href="https://lists.mozilla.org/listinfo/dev-tech-java"> メーリングリストとして</a></li> + + + <li><a href="http://groups.google.com/group/mozilla.dev.tech.java"> ニュースグループとして</a></li> + <li><a href="http://groups.google.com/group/mozilla.dev.tech.java/feeds"> フィードとして</a></li> +</ul> + <ul> + <li>Mozilla Embedding フォーラムを見る...</li> + </ul> + <ul> + <li><a href="https://lists.mozilla.org/listinfo/dev-embedding"> メーリングリストとして</a></li> + + + <li><a href="http://groups.google.com/group/mozilla.dev.embedding"> ニュースグループとして</a></li> + <li><a href="http://groups.google.com/group/mozilla.dev.embedding/feeds"> フィードとして</a></li> +</ul> + <ul> + <li><a class="link-mailto" href="mailto:jhpedemonte@gmail.com">Javier Pedemonte</a> JavaXPCOM プロジェクトを率いている開発者</li> + </ul> + <h4 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h4> + <dl> + <dd> + <a href="ja/XPCOM">XPCOM</a>, <a href="ja/Embedding_Mozilla">Embedding Mozilla</a></dd> + </dl> + </td> + </tr> + </tbody> +</table> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/other_resources/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/other_resources/index.html new file mode 100644 index 0000000000..14a9eb1ee0 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/other_resources/index.html @@ -0,0 +1,15 @@ +--- +title: その他の情報源 +slug: Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM/Other_Resources +tags: + - JavaXPCOM + - 'XPCOM:Language Bindings' +translation_of: Mozilla/Tech/XPCOM/Language_bindings/JavaXPCOM/Other_Resources +--- +<h2 id="Other_Resources" name="Other_Resources">その他の情報源</h2> +<ul> + <li><a href="/ja/docs/Embedding_Mozilla">Embedding Mozilla</a></li> + <li><a href="/ja/docs/XPConnect">XPConnect</a> - Javascript-XPCOM bridge</li> + <li><a href="/ja/docs/BlackConnect">BlackConnect</a> - Java-XPCOM bridge (no longer supported)</li> + <li><a href="http://www.mozilla.org/projects/blackwood/connect/RequirementsSpec.html#IDL">XPIDL to Java types</a> - from Blackconnect</li> +</ul> |