Getdownその2、要するにこういうこと

2019年5月22日

※Getdownについては/tag/getdownに投稿一覧がある。

Javaにはウェブからアプリケーションを配布するためのJava Web Start(JWS)の代替のGetdownは要するにどういう処理をしてくれるのかを簡単に記述する。Getdownはhttps://github.com/threerings/getdownにあるオープンソースのプロジェクトである。

仕組みの概要

仕組みとしては非常に単純だ。サーバ内の特定のURLパスにあるファイル(主にはjarファイル)を、ローカルマシンにコピーし、指定されたメインクラスを実行するだけである。

サーバ側

ある特定のパスにファイルを用意する。ここには、少なくともダウンロードすべきファイルの記述されたgetdown.txt、それらのチェックサム(メッセージダイジェスト)の記述されたdigest.txtと、他のjarファイルなどである。例えば、http://something.com/myappなどというパス下においておく。つまり、

  • http://something.com/myapp/getdown.txt
  • http://something.com/myapp/digest.txt
  • http://something.com/myapp/….

などとなる。いずれかのjarファイルに実行時のメインとなるクラスが含まれるが、それはgetdown.txtに記述される。

クライアント側

少なくとも以下を用意する。

  • ダウンロードするアプリを格納するためのフォルダ。仮にmylocalとする。
  • mylocalの中に「appbase=http://something.com/myapp」とだけ記述されたgetdown.txt。
  • getdown-..jarファイル

実行

このようにしておいて、getdown-..jarファイルを起動する。

java -jar getdown-*.*.jar mylocal

すると、getdownはmylocal/getdown.txtからアプリダウンロード元を読み取り、アプリ全体をダウンロードしてmylocalに格納する。その後で指定されたメインクラスを実行する。

次回起動されたときには、mylocalには既にアプリ全体が入っているのだが、サーバ側が更新されていれば、更新部分だけを再度ダウンロードする。

このようにして、常にローカル側のアプリファイルが最新の状態に維持される。

簡単な図で表すと以下のようなものだ。

実際の使用感はGetdownその3、Getdownの実際に記述した。