aboutsummaryrefslogtreecommitdiff
path: root/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom
diff options
context:
space:
mode:
Diffstat (limited to 'files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom')
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/development/index.html24
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/embedding_mozilla_in_a_java_application_using_javaxpcom/index.html156
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/examples/index.html13
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/index.html73
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/other_resources/index.html15
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&amp;product=Core&amp;component=Java+to+XPCOM+Bridge&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;chfieldto=Now">一覧</a>
+</li><li> 新しい JavaXPCOMバグを<a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&amp;component=Java+to+XPCOM+Bridge&amp;rep_platform=All&amp;op_sys=All">開く</a>
+</li><li> 最近1ヶ月の<a class="external" href="http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&amp;module=all&amp;branch=HEAD&amp;branchtype=match&amp;dir=mozilla%2Fextensions%2Fjava%2Fxpcom&amp;file=&amp;filetype=match&amp;who=&amp;whotype=match&amp;sortby=Date&amp;hours=2&amp;date=month&amp;mindate=&amp;maxdate=&amp;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 アプリケーションに埋め込むためには、&lt;tt&gt;xulrunner/sdk/lib&lt;/tt&gt;フォルダーにある&lt;tt&gt;MozillaInterfaces.jar&lt;/tt&gt;というライブラリを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>