Aprotool JW Editor

2016/05/07
 お久しぶりです。本業との兼ね合いでシェアウェアの活動は メンテナンス以外は休止しています。そのメンテナンスもここ数年特に要望はないので、 何もしていません。それでも2006年頃までは Aprotool TM Editor の Java 版を 作成していまして、ある程度完成はしていたのすが、Windows 版を超えるものではなく、 特に公開できるものではありません。
 最近、匿名も含めて個人で活動していたホームページで 不要なものを整理していたところ、ベクターのこのページのことを思い出しました。 それと、どうやら Oracle 社が、相次ぐ Java のセキュリティホールに辟易して、 Java アプレットのサポートもやめるそうで、 それなら、未完ですが、Aprotool JM Editor → Aprotool JW Editorも貼り付けようと思いました。 いずれにしても、Java アプレットはセキュリティの管理が厳しくて 普通に人には動かすために設定も大変だと思います。のちほど設定方法をお知らせします。
 もちろん、ダウンロードして、クライアント上で動かせば通常のエディターとして使えます。 アプレットとしても使えるように設計していたのですが、使用方法が見つからずに アプレットそのものが古いテクノロジーになったようです。 ただ、Java Web Start はサポートを続けるというので、そちらの仕組みには 拡張することは考えています。今のところ単独クライアント版の公開は考えていません。 私が今の仕事を引退したあとの趣味として考えていますが、 私が引退する前に、クライアントサイドの Java は Eclipse のプラグイン以外はなくなりそうなので寂しい気もします。
2016/05/14
 JM Editor という名前は、私が活動を休止している間に先約がありましたので、 暫定的に JW Editor に名前を変えました。さすがにロゴまで作り変える時間がなかったので、ロゴは前のままです。
 Java Applet 版も、Java Web Start 版も Oracle 社のガイドに従い、 コントロールパネルから JRE の例外サイトに「http://hp.vector.co.jp/authors/VA002891/」を登録すると使用可能になるようです。
 以前は、自前で自己証明書を作れば、閲覧者の手を煩わせずに、Java Appet や Java Web Start も機能していたようですが、 最新版 Java 8 では、本当の認証機関から証明書を発行してもらい、しかも証明書の期限内でないと、 ブラウザの設定を多少なりとも変更する必要があるので、それなら、潔く例外サイトに登録したほうが安全です。 こちらで自己証明書を用意し、それ用にブラウザの設定を変更してもらうと、 他のサイトの Java Applet / Java Web Start もその条件に合致してしまい、 知らず知らずのうちに、裏で意図しない Java Applet が動作してしまうというリスクがあります。 例外サイト登録の方法であれば、サイトごとにピンポイントでアクセスが管理でき、 必要なくなれば、例外サイトから削除することで、該当サイトの Java Applet / Java Web Start だけ使用不可にできます。
2016/05/15
 Java Swing GUI版で唯一やり残した「タブ表示」をとりあえず組み込みました。 メニュー「表示」→「タブとして表示」で切り替え可能です。 従来の表示に戻すときは「表示」→「重ねて表示」を選ぶと戻せます。 若干、画面遷移に不安定なところがありますが、これ以上、バグ潰しに時間をかけても無駄なので、 今週はこれで公開します。というのも、Java FX GUI を組み込むために、 画面部品の大幅な見直しが必要になるので、細かな画面遷移を微調整するのは無駄になる可能性が高いからです。
2016/05/22
 Applet版といっても、エディター機能はローカルのファイルを編集できなし、 コンソール機能はローカルの情報にアクセスできないので、実用的に使えるのは、 文字コード参照機能ぐらいです。ということで、Applet版「文字介」を作りました。 画面イメージも作りましたので、興味がある人は「セキュリティ」の設定をしてください。
 実際のところ、ある設定ファイルを編集することで、 ローカルのファイルアクセスも可能になり、JW Editor のフル機能が使えるのですが、 サイト提供側から積極的にお願いする情報ではないので、興味のある方は、ネットで探してください。 ただ、フル機能が使えるといっても、そのフル機能自体が不十分です。未実装の箇所があったり、 調整不足の箇所があったりします。でも、私自身はプログラムのデバッグも兼ねて、日常的に使っていますので、 普通に編集保存する程度のことはできます。
 あと、IMEがたまにおかしな動作をしますが、 これは Java の基本コンテナがIMEからのデータを受け取るようにはできておらず、 かなり、トリッキーな方法でIMEからのデータを受け取っていることが原因です。 まだまだ改良の余地はありますが、Windows のプログラムと違い、最終到達点にどうしても制約があります。 これが、10年前に JW Editor の公開をためらった理由のひとつです。
2016/05/24
 証明書とアクセス権の関係をいろいろ検証してしました。 もしかしたら優先順位が異なる箇所もあるかもしれませんが、 現時点で整理した内容を、優先順位の低い順に備忘録として記録しておきます。  Applet を公開するマナーとして、証明書によるサインは必要だと思いますが、 サインした時点で all-permissions になってしまうので、 Jar のマニフェストに「Permissions: sandbox」を記述して制限を掛けておかないと、 Applet からローカルファイルにアクセスできてしまうんですね。 Jar のマニフェストと HTML の Applet タグと JNLP ファイルの security要素は すべて同じ権限でないとエラーになります。
 試行錯誤した結果、JW Editor は、ローカルファイルへのアクセスを許可したくないので、 JwEditor.jar を sandbox 属性で作成して、文字介は、ローカルファイルへのアクセスがそもそもないので、 JwMoziske.jar を all-permissoins 属性で作成するのが確実だとわかりました。 残念ながら、ひとつの jar ファイルに対して、署名したあとに、 sandbox 属性と all-permisions 属性を臨機応変に切り替えるのはさすがに無理でした。