top recent

Java


目次

  1. プログラミング入門@稚内北星...
  2. JavaCC...
  3. 上を行きたいじゃばらーはXMLを選択する?...
  4. JavaCC...
  5. PersonalJava...
  6. OpenJava...
  7. Local Class の Static Memberは不可...
  8. 各種コンテナ...
  9. kawa.......
  10. JARファイル...
  11. jdkのCLASSPATH...
  12. javap...
  13. 過去の駄目な多数派よりほんのわずかだけ上をいけ...
  14. Programming Languages for the Java Virtual Machine...
  15. 「アプリ」ランチャーアプリ...
  16. Swing 初挑戦...
  17. JGL...
  18. dW:S式を使った拡張性...
  19. jVi...
  20. Pizza Compiler...
  21. java.awt.Robot...

プログラミング入門@稚内北星

有名(^^;な稚内北星学園大学情報メディア学部、の、Java説明。
http://www.wakhok.ac.jp/~tatsuo/prog2001/

-昔の講義のも参照できるということは、Javaの古いAPIの解説も読めるということ。

[[id:585]] 2002-05-19 13:15:55


JavaCC

-http://www.dmz.hitachi-sk.co.jp/Java/Tech/javacc/syntax.html JavaCCの文法定義ファイルの文法
-http://www.cobase.cs.ucla.edu/pub/javacc/ JavaCC Grammar Repository

[[id:912]] 2002-07-31 22:34:16


上を行きたいじゃばらーはXMLを選択する?

又の名を、"XMLはLispの夢を見るか?"

java world 2002/8 p75
session facade + value object の問題点

「どんな(どの構造つまりクラスの)」value objectを使うべきか?が、
要求仕様が微妙に変化するのに連動して変化してしまうんで、
頻繁にvalue objectのクラスを作り直しでコンパイルし直し。
これじゃシンドイねという話らしい。

で、かわりにXMLを使えと書いてある。
Object(というかクラス)でなくXMLを使うと、
実行時に柔軟にデータの形(型?)を変えられるんで、
面倒がなくなるということだそうだ。
もちろん引替えにコンパイル時の型チェックが使えないが。

で、これって「普通の奴等の上を行け」そのまんじゃないか?

[[id:845]] 2002-08-05 12:43:37


JavaCC

http://www.dmz.hitachi-sk.co.jp/Java/Tech/javacc/
>JavaCC(Java Compiler Compiler)は、字句解析・構文解析を行ってくれるクラスのソースコード(もちろんJavaの)を自動生成してくれるツールです

[[id:770]] 2002-08-05 12:44:07


PersonalJava

http://java.sun.com/products/personaljava

PJエミュレーション環境 http://java.sun.com/products/personaljava/pj-emulation.html

[[id:970]] 2002-08-09 19:04:52


OpenJava

http://www.java-conf.gr.jp/event/grandprix/97/sakuhin/T/TG5808/
http://www.csg.is.titech.ac.jp/openjava/

[[id:999]] 2002-08-17 20:24:09


Local Class の Static Memberは不可

だそうです。
コンパイルエラー。「static メンバはインタフェースかトップレベルクラスにのみ許されています。」とのこと。

うーん。JSPのコード(1つのメソッドに変換される)の中にクラスを作り、そいつのsingletonを作ろうと思ったんだがなあ。
-Applicationオブジェクトにぶらさげとけばいい、とも言うが、それもちょっとねえ…

[[id:1003]] 2002-08-20 17:28:41


各種コンテナ

http://www.fk.urban.ne.jp/home/kishida/kouza/java112.html

HashSetとHashMapはどう違うんだ?

TreeXXXクラスは、内部表現に(Binary)Treeを使っているという意味であり、
Tree構造のデータを保持するコンテナだというわけではないようだ。

[[id:1019]] 2002-08-20 17:30:00


kawa....

Javaで書かれたScheme処理系。
http://www.gnu.org/software/kawa/index.html
----
kawa.jar をダウンロードして実行。
C:\>java kawa.repl -w
Exception in thread "main" java.lang.NoClassDefFoundError: kawa/repl

くぅ。jarファイルの中身を見ると、META-INF/MANIFEST.MF には
Main-Class: kawa.repl
と書いてあるんだけどなぁ。

- jarから起動するときは -jar というOptionが必要だったような気が。NoOptionで起動するとdirectory treeに格納された.classを探しに行く。
- -wって何でしたっけ?

----
java -jar c:\jdk1.3\lib\kawa.jar -w
でやっといけました。jdkの CLASSPATH っていまだに分からない‥‥‥。
-w は kawa へのオプションで、自前のウィンドウにプロンプトを出させる指示です。--SHIMADA
----
メモ:
- hoge.scm をコンパイルすると hoge.zip になる。zip の中身はコンパイルされた.classファイル群。将来のバージョンでは hoge.jar にする予定とのこと。.jar になってくれたら顧客に気づかれずに納品できてしまうのであろうか。
- javaw -classpath c:\jdk1.3\lib\kawa.jar gnu.jemacs.lang.ELisp で JEmacs が起動した =D

[[id:1047]] 2002-08-27 13:18:42


JARファイル

Jar ARchiveファイル。
Coffeeを入れるのに必須である湯沸しジャーの、(unix hacker的?な)駄洒落かと。
#てゆーかJava周りの命名規則(^^;はCoffee系の駄洒落に満ち溢れている

http://java.sun.com/j2se/1.3/ja/docs/ja/guide/jar/
コマンドとしてのjar(UIはtarを模倣している)もあるし、APIレベルで叩けるjar関係クラスも有る。

ファイルの内容はZIPコンパチらしい。

[[id:1054]] 2002-08-27 14:31:24


jdkのCLASSPATH

慣れないうちは奇怪に感じるし、慣れても煩雑に感じますね、あれ。
まあ必要かつ十分な仕組みにはなっているとは思うけど。てゆーかunix由来のPATHの概念よりは数段マシ。

-CLASSPATHは、0個(?)以上のCLASS格納場所名を、;や:(Platform依存?)で繋げたもの。
-CLASS格納場所は、directory treeの頂点のdirectoryの名か、またはjarファイルの名。いずれもフルパスかな。
-jarファイル名は、そのファイルがある場所にjarを解凍してdirectoryを作ったとして、その頂点dicrectory名と等価。
-directory treeに格納される各classは、それぞれの頂点directoryからの相対で、そのpackage名に対応する位置に格納される。
--CLASSPATH=/A:/B:/C/d.jarである場合、class foo.bar.Zotは、/A/foo/bar/Zot.classか、/B/foo/bar/Zot.classか、/C/d.jarの中の/foo/bar/Zot.classか、として存在するはず。
-CLASSPATHに書かれる複数の要素から、結果的に「衝突」する場合は…どうなるんだっけ?(^^;

[[id:1055]] 2002-08-27 15:34:16


javap

classファイルの簡易逆コンパイラ…ってのか。 JDKに標準装備。

javap class名(package名つき)

をやって、クラスの内容(とりあえずPublicメンバ一覧)とかが表示されると、OK。

----
逆にこの性質を利用して、以下の用途に使うという手も。
-CLASSPATHがうまく設定されてるか(駄目ならばClassNotFoundなどになるので)を確認する
-コンパイル済みのclassのメンバを参照する。名や型や(methodの)引数を確認できるので、結構便利。

ただし、今作業してるshellが保持してるCLASSPATHと、ターゲットJVMが保持してるCLASSPATHとが、
一致してない場合は上手くいかないわけで、ちょっと一工夫いるかも。
-Servletなんかでは、そういうことは多いかもね。
-なおコンパイルのときもCLASSPATHが通っていないと駄目なのだが、antはコンパイル中のCLASSPATHを再定義する機能が有るので、差を吸収できてしまう。
--つまり、コンパイルが通るしターゲットプログラムも無事動くからといって、javapがそのまま使えるという保証は、無いわけだ(^^;
--いっそ、antのscriptのほうに、javapを呼び出すターゲットを仕込んでおくってのは?(可能だろうか?)

[[id:1056]] 2002-08-27 15:41:34


過去の駄目な多数派よりほんのわずかだけ上をいけ

…というのが、冗談抜きに、java陣営の戦略なんでしょうね。
以前誰かが「良い言語ではないがイケてる言語だ」と言っていたけど、まさにそれ。

既存の多数派(この場合はずばりCユーザーだろうな)の不満を「少しだけ」解消してやるという、往年のIntelの16bitCPUのような(^^;戦略。
悪い部分も大量に引きずったままだったり、昔のノリを残さんがために却って変になっちゃったり…

このサイトでのLispとかFPとかの議論を見ている人は、

http://www-6.ibm.com/jp/NewsDB.nsf/2002/08261
>Javaは、ソフトウェアの部品化に適した先進的なプログラミング言語で

などと言われても「何処がよ?」と叫びたくなるかも知れないが、 Java陣営のターゲットはあくまでCだ(^^;。
Cよりは確かに部品化(糊についても)がマシになっている。

[[id:1057]] 2002-08-27 16:16:43


Programming Languages for the Java Virtual Machine

http://grunge.cs.tu-berlin.de/%7Etolk/vmlanguages.html

Jython, Kawa, AspectJ や Pnuts はあるけど MJ はないなー。

[[id:1062]] 2002-08-28 15:44:45


「アプリ」ランチャーアプリ

を作れると思う。詳細は知らないが多分、以下のようにする(ことが出来る)ならば。
-所定directoryに放り込まれたjarファイルの一覧を得る
-その中からすきなのをユーザーに選ばせる。簡易メニューをConsoleに表示とか。まあUIは後からどうとでも。
-選択されたjarファイルのClass群をを"Load"する。あるいはLoad予約する。つまりCLASSPATH相当の情報に追記する。
-jarの中の起動mainのクラス名を(MANIFESTを読んで)取得し、そいつに制御を渡す。
-終了したら最初に戻る。Classの開放やCLASSPATHの復旧は…出来るんかな?

もちろん、JVMをいちいち上げなおさずに済むようになることを期待してのこと。
-hpcmipsでjava(やkaffe)を動かすためには、こーゆーことをすると幸せなのでは?

----
でも、こんなことするのはそもそも野蛮なんだよな。

本来は、アプリを構成する必要なClass群があり、
それらを「アプリとして起動」するためのラッパーメソッドであるmainが存在するだけであり、
コマンドラインから呼ばないときはそのラッパーを「飛ばして」所定クラスを動かせばいいはず。

コマンドラインという「狭い」出入り口を経由するために(ああいう引数で呼ぶように)作られた
mainというラッパー(いわば、対UNIX迎撃偽装ラッパー)は、本来邪魔でしかないはずなので。

----
antが参考になるのでは?一度ソース読むべし。

----
あとは、プロセス壁、とまで言わなくても、Object空間の問題は有るかな。
つまり、ある「アプリ」を終了したときに、強制的に破壊すべきObjectがドレか?を、
確定したり実際に破壊を実行したりする仕組みが、無いと寒いかも。
-アプリが終了しても捨てられないObjectは、やっぱりKernelObjectと呼ぶんだろうか?(ぉ

[[id:1065]] 2002-08-28 16:41:56


Swing 初挑戦

ボタンを押してもまだ反応がない。むずかしい‥‥‥。--SHIMADA

(define-simple-class <hello-action> (<javax.swing.AbstractAction>)
((action-performed) (display "Pushed")))

(define f (make <javax.swing.JFrame>))
(invoke f 'setSize 128 128)
(invoke (invoke f 'getContentPane)
'add
(make <javax.swing.JButton> (make <HelloAction>)))
(invoke f 'show)

[[id:1066]] 2002-08-28 18:30:30


JGL

DeCAL (Delphi)で言及されているが、
http://www.asahi-net.or.jp/~dp8t-asm/java/tips/JGL.html

とはいっても、どちらも3年くらい前の話題…かな…

アルゴリズムを格納する各種クラス(の多く)の名が"....ing"になっているのが興味深い。

本家。http://www.recursionsw.com/products/jgl/jgl.asp うーん有償ソフトなのか。

[[id:1070]] 2002-08-29 13:32:35


dW:S式を使った拡張性

dW: Javaコードの診断: 拡張可能アプリケーションの設計 第4回
XMLより軽量な構成言語としてのS式の解説。

S式のパーサーと簡単な評価器が。

3段パーサー(?)
>追加の段階は、トークン化と、構文木への解析との間に入ります。

[[id:1075]] 2002-08-31 19:02:17


jVi

vimクローンのjava(swing)版。 http://jvi.sourceforge.net/

JBuilderにプラグイン(?)できるらしい。こういう辺りが非Process的で良い感じだ。

[[id:1088]] 2002-08-31 18:45:35


Pizza Compiler


http://pizzacompiler.sourceforge.net/
Java の拡張
1. ジェネリック(a.k.a. パラメータ多相)
2. 関数ポインタ(a.k.a. ファーストクラス関数)
3. クラスケースとパターン照合(a.k.a. 代数型)

ここまでやるなら、Java でなくともというはなしもあるけど。

[[id:1089]] 2002-09-01 00:39:40


java.awt.Robot

http://java.sun.com/j2se/1.4/ja/docs/ja/guide/awt/1.3/enhancements.html

GUIをTestしたりするためにリモコンすることが出来る…のかな…

[[id:1230]] 2002-09-18 17:49:27


top recent

HashedWiki version 3 beta
SHIMADA Keiki