(作成:2005/01)
研究用途で使う必要が出て来たので、ちょっくらJavaの導入をしてみることに。
Debianだとディレクトリ構成とか色々と制約があるのか知らんが、導入事例はなかなか捜し当てられなかった。
Install on Debian
以前にも上記サイトを参考にBlackdown JDKを導入してみたのだが、どうも研究プログラムが動作してくれない。というわけで今度はSUN純正のJDKを導入してみることに。
取り敢えずJava Technologyから、Downloads
-Java 2 Platform, Standard Edition (J2SE)
-J2SE 1.4.2 - Japanese Edition
-J2SE SDK のダウンロード
と辿ってファイルをDL。
また、パッケージ化するにあたり、以下のサイトから以下のパッケージを入手。
- Debian GNU/Linux Packages
j2se-package_0.9_all.deb
sun-j2sdk1.4debian_0.9_all.deb
debパッケージ化。sargeだと上記サイトから取って来なくとも java-package
なる後継版があるらしいが、ウチはtesting環境なので j2se-package
を用いることに。
# dpkg -i j2se-package
...
# j2se-package j2sdk-1_4_2_05-linux-i586.bin
...
作成する間、名前やメルアドを聞かれる。メンテナの名前なのでよく使うアカウントのものでも入れておく。
同ディレクトリ内にパッケージが作成されるので、これを導入して取り敢えずおしまい。
# dpkg -i sun-j2sdk1.4_1.4.2+05_i386.deb
必要なパッケージのインストール。
# apt-get install java-common
...
# dpkg -i sun-j2sdk1.4debian_0.9_all.deb
...
設定
フォント設定
X Windowを使用している場合は、何も考えず東風フォントあたりを導入すれば良い。X Window側の設定はxfree86のTrueTypeFont追加法のあたりと同様にすれば良いだけ。
サーバ上で動作させたい時などは、環境変数 JAVA_FONTS
を定義する必要がある。
## /etc/profile
JAVA_FONTS=/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType
export JAVA_FONTS
ユーザ別設定
パス通したりする程度なんだけど。取り敢えず .bashrc
には以下のような設定が必要かも。
## ~/.bashrc
JAVA_HOME=/usr/lib/j2sdk1.4-sun
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
サーバ上で動作とか、個々人で設定するのが面倒な場合は /etc/profile
に記述しても良いかも。
MozillaへのJavaAppletプラグイン導入
プラグインを導入するには、以下のようにシンボリックリンクを貼れば良い。
# cd /usr/lib/
# ln -sf j2sdk1.4-sun/jre/plugin/i386/ns610-gcc32/libjavaplugin_oji.so mozilla-firefox/plugins/
導入・その他
Tomcat
今度はJava Servletとか。
TomcatてーのはJavaサーブレットだのJSPだのを処理するアプリケーションサーバ。こいつ単体でもWebサーバとして機能するけど、ウチとこでは現在Apache稼働させてPHPとかも使ってるし、今さらTomcatのHTTP設定方法を探るとか面倒だしでも2種類のHTTPサーバが立ち上がってる状態とか気持ち悪いし云々。
というわけでTomcatとApacheを連携動作させてやろう、という試み。
取り敢えず以下のパッケージを導入。
# apt-get install tomcat4 mod-jk tomcat4-webapps
...
以下、動作するまでの設定。
<!-- /etc/tomcat4/server.xml -->
<!-- Define a non-SSL HTTP/1.1 Connector on port 8180 -->
<!-- これはTomcat独自のHTTPサーバ設定
<Connector className="org.apache.catalina.connector.http.HttpConnector"
port="8180" minProcessors="5" maxProcessors="75"
enableLookups="true" acceptCount="10" debug="0"
connectionTimeout="60000"/>
-->
...
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!-- Debian specific note: If you enable this connector you must disable
it in the tomcat (Tomcat 3.x) package. The package for the Apache
connector module is libapache-mod-jk -->
<!-- TomcatとApacheの連携に使われるポート設定 -->
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
port="8009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0" address="127.0.0.1"/>
## /var/lib/tomcat/conf/mod_jk.conf
JkLogFile /var/log/tomcat4/mod_jk.log
JkLogLevel error
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
Alias /examples "/var/lib/tomcat4/webapps/examples"
#
# The following line mounts all JSP files and the /servlet/ uri to tomcat
#
JkMount /examples/servlet/* ajp13
JkMount /examples/*.jsp ajp13
以下は jsp
がエラーメッセージとか吐き出した時にちゃんと整形されて見えるようにするための設定。
## /etc/apache/httpd.conf
...
<IfModule mod_mime.c>
...
# .jspの吐くエラーとかもHTMLで見られるようにする
AddType text/html .jsp
...
ついでにJDBCドライバを使えるようにもしておこう。ただ、ちゃんと使えるようにするにはPostgreSQL側でネットワークポートを開ける設定変更をする必要もある。
//// /etc/tomcat4/policy.d/99psql.policy
//PostgreSQLの場合
grant codeBase
"file:${catalina.home}/webapps/examples/WEB-INF/lib/postgresql- jdbc2.jar!/-"{
permission java.net.SocketPermission "localhost:5432", "connect";
};
そしたら apache
と tomcat4
をリスタート。
# /etc/init.d/apache restart
...
# /etc/init.d/tomcat4 restart
...
動作確認には例題アプリケーションが付いてるので、そいつで確認することができる。
http://(自分とこのWebサーバアドレス)/examples/jsp/
そしたら今度はホームディレクトリで使えるように設定してみよう。
~/public_html/java/
以下で動作するような設定を目指してみる。
<!-- /etc/tomcat4/server.xml -->
...
<Service name="Tomcat-Standalone">
...
<Context path="/~riyo"
docBase="/home/riyo/public_html"
debug="0"
reloadable="true"
crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_std_log."
suffix=".txt"
timestamp="true"/>
</Context>
...
## /var/lib/tomcat/conf/mod_jk.conf
#JkMount /*.jsp ajp13
#JkMount /servlet/* ajp13
...
JkMount /~riyo/java/servlet/* ajp13
JkMount /~riyo/java/*.jsp ajp13
これで試しに /var/lib/tomcat4/webapps/examples/jsp/
以下から何か適当にjspを抜いて ~/public_html/java/
以下に置いて確認してみる。
或いはそれ以外の場所に設置して、確認出来ない(というかJavaのコンパイル処理を受けずそのままHTMLとして出力される筈)ことを確認する。
gcj-3.4
Java VMの一つ。AOT(Ahead of Time)コンパイラで早いらしい。JITコンパイラの kaffe
てのもあったんだけど、研究プログラムが動作しなかったので使うのやめた。AWTの文字化け問題が絡んでるかも知んない。debパッケージ作るの面倒そうだなぁ。。。なんてな訳で。
取り敢えず導入。
# apt-get install gcj-3.4
さくっと使ってみる。デフォルトではUTF-8エンコードらしいので、明示してやる必要あり。
$ gcj-3.4 -encoding euc-jp test.java
実行はこんな感じで。
$ gij-3.4 test
ネイティブな実行ファイルも作成できる。こんな感じ。
$ gcj-3.4 --encoding=EUC-JP -o test --main=test test.java
コンパイル出来たらおなぐさみ。
最後には update-alternatives
で java
を割り当てておくと良い。 wrapper
を選択できるので、 encoding
を指定する必要も無くなる。
javac
にはこれよりも、下記にある jikes
コンパイラを割り当てると良い感じ。
# update-alternatives --config java
(gij-wrapper-3.4を選択)
jikes
何だか知らんが高速で互換性が高くエラーメッセージが親切なJavaコンパイラ。便利なので使おう。
取り敢えず導入。
# apt-get install jikes jikes-gij
jikes-gij
は gcj
と連携を取るためのもの。 jikes
の参照するクラスライブラリを自動で決めてくれるみたい。まぁ結局はJ2SDKのコアライブラリを参照してるだけなんだけれども。
さくっとコンパイル。
# jikes-gij test.java
見た目にも、J2SDKの javac
より早いことが判ると思う。すんげー。てか何してんだSun。御株を取られてるじゃないか。それはそれとして。
最後には update-alternatives
で javac
を割り当てておくと良い。
# update-alternatives --config javac
(jikes-gijを選択)