Java - みる会図書館


検索対象: 月刊 C MAGAZINE 2001年4月号
49件見つかりました。

1. 月刊 C MAGAZINE 2001年4月号

00 フログラミング入門 考えていくことにします。 よって Java の「一度書けばどこでも動く :w ラスとインタフェイスが 2130 個 , フィール rite once, run anywhere 」という性質が実現 ドが 4006 個にメソッドが 17158 個あります。 されています。 さらに , この本に載っているのは標準 AP もっともこういう方式ではなく , Java ソ I [ 注 2 ] だけです。 Java には標準 API 以外にも拡 プログラミング言語としての Java を特徴 ースコードから直接機械語プログラムを生 張 API が多数あります。 Java MediaAPI, Ja 付けるものは何かと考えてみると , 成するコンパイラも存在します。ただ当連 拡張 API がノヾージョン vaMail , など・・ ・オブジェクト指向言語である 載では , とくに断わらない限り , Java プロ アップ時に標準に取り込まれることもあり , ・バイトコードインタブリタ方式である グラムはバイトコードインタブリタ方式で Java のライプラリはいまだ成長を続けてい ・膨大なクラスライブラリが用意されて 動かすと考えてください。 ます。ここでは拡張 API は取り上げません。 いる また , Java のシステムとして主にパソコン 膨大なクラスライブラリ などがあげられます。これらに関してはす で動く「 Standard Edition (JavaSE) 」と , サ でにご存じだと思いますが , ちょっと復習 Java には膨大な量のクラスライプラリが ーノヾアプリケーション用の「 EnterpriseEditi しておきましよう。 存在します。 Wmdows 用の C + + コンパイラ on (JavaEE) 」と , 組み込み用の「 Micro Edit などにも膨大なライプラリは付いています ion (JavaME) 」の 3 種類がありますが , Stand オブジェクト指向 が , 大部分がコンパイラ独自の機能です。 ard Edition のみを扱う予定です。 Java を純粋にプログラミング言語として Java の場合はライプラリが言語仕様 [ 注 1 ] に含 [ 注 1 ] こでは「言語仕様」を JDK の規格の意味に 使っています 見れば , 最大の特徴はやはりオプジェクト まれており , 画像 , GUI, ネットワーク , [ 注 2 ] この場合の「 API 」は , ライプラリと同じよう 指向言語ということでしよう。筆者は個人 な意味だと思ってください。ただ「ライプラ 数学 , データ型などの機能を , どこでも使 リ」が実装を含めた意味があるのに対し , 「 A 的に , このオプジェクト指向という言葉に うことができます。ほとんどの言語が文字 PI 」は実装とは無関係に仕様だけを取り決 めたものというニュアンスの違いがありま コンプレックスというか愛情と敵意という の入出力しかサポートしていないのに比べ す か , ちょっと複雑な感情を持っているので ると , きわめて異例です ( 聞くところによ すが , そのあたりに関しては特集「 " オプジ ると EiffeI という言語にも巨大なライプラリ ェクト指向 " をこう考えてみよう」をお読み が存在するそうですが ) 。 ください。 C 言語専門のニュースグループあたりで JDK ジョン オプジェクト指向のことは , 当連載でも 「画面に円を描くにはどうしたらよいです ときどき説明していこうと思います。 か」などと聞くと , 「処理系定義です」と答 Java は何回かパージョンアップを繰り返 えられて悲しい思いをすることが多かった バイトコードインタブリタ しており , そのたびに JDK の番号が増えて のですが , Java の場合はそんなことはあり います。 ' 98 年の JDKI. 2 へのアップグレード 先ほども言いましたが , 通常 Java はバイ ません。グラフィックも Java の機能として のときには , 言語仕様とライプラリ構成に トコードインタブリタ方式で実行されます。 扱ってくれます。もっとも「簡単だから自 いくらかの変史があったため , それ以降の まず , われわれがエデイタなどで Java の 分で調べなさい」と言われるかもしれませ Java を「 Java2 」といって区別することになり ました。当時 , ーーー・般の新聞に「 Sun が Java に プログラムを書きます。それを javac という んが。 続く新しい言語 Jav を発表」なんて記事が コンパイラにかけると , バイトコード (. clas 筆者の手元に『羽 le Java Devel 叩 ers 載ったのですが , 新しい言語というわけで s ファイル ) が生成されます。 C 言語などの Almanac 2000 』という本があります。 B5 判 はなく : ava の枠内でのパージョンアップ 場合 , コンパイラで作られるのは CPU に直 より少し小さい判型で , 厚さが 5cm 強。ペ です。 接作用する機械語プログラムですが , javac ージ数は 1057 ページ。ちょっとした電話帳 現在 ( 2001 年 1 月 ) , Sun 提供 JDK の最新バ で作られたバイトコードは単独では動きま なみです。これがどういう本かというと , ージョンは 1.3 です。しかしそのほかのプラ せん。各機種・各 OS ごとに Java を実行する Java のライプラリに入っているクラスとそ ットホームの場合 , リリースが遅れること プログラム , J 、盟が用意されています。 JV のメンバの名前だけを記述した本なのです。 があり , たとえば Macintosh にはまだ JDKI. M はバイトコードを受け取って , それを読 ほんとに名前だけ。説明はほとんどなし。 1.8 相当の開発環境しかありません。番号が み取り , 実際の動作を行います ( Fig. 1 ) 。 1.1 以降ならあまり支障はありませんが , な 小さな文字でクラスとその内容の名前だけ るべく最新の JDK を入れるようにしてくだ 一度コンパイルされたノヾイトコードはどの が書かれているのです。この本によると , JVM でも同じように動きます。この方式に JDKI. 3 においては , パッケージが 77 個 , ク Java の基礎概念 イ 6 C MAGAZINE 2001 4

2. 月刊 C MAGAZINE 2001年4月号

五ロ なり次の行には続かない をコンパイルしましよう。コンパイルには プログラムの動作は次のようになります。 JDK に含まれる javac というコマンドを使い List 1 では , 1 行目の / * でコメントが始 最初にどれかのクラスのメソッドが押され ます。コマンドラインから , まって , 3 行目の * / で終わっています。ち る。押されたクラスは次に , 別のもしくは なみに 2 行目の * はなくてもいいのですが 自分のクラスのメソッドを押す。そのクラ javac Opinion. java と打ち込みます。もし正常にコンパイルで コメントとわかりやすいように入れていま スはさらに別のクラスのメソッドを押す。 きたなら何も表示せずに終了します。何も す。よく使われる手法です。 そうしていく過程で入出力とか数値計算と 表示しないけれど , ディレクトリの中を見 5 ~ 9 行目までが , Opinion というクラス かが行われ , 最終的に望む動作がなされる , の内容の記述です。 Java の場ム ' ' ということになります [ 注 3 ] 。 てみると , ロ , っー、う 記述を普通「宣言」といいます。 6 ~ 8 行目ま List 1 は , 1 つのクラスに 1 つのメソッドだ 0P土n土0n. Class というファイルができているはずです。そ でが main というメソッドの宣言です けという , 最小の Java プログラムです。ち Java プログラムは , クラスと ( それに含ま うすれば成功です。成功しなかったら失敗 ょっと大きいプログラムだと , 数十のクラ れる ) メソッドの宣言によって成り立って です。そういうときはコンパイラがエラー スにそれぞれ数個から数十個のメソッドが メッセージを出すので , それを見てソース います。 存在します。 6 行目の main というメソッドは , プログ を修正し , もう一度コンパイルしてくださ 先ほど , Java がオプジェクト指向プログ ラミング言語であると言ったことを思い出 ラムの中で最初に押されるスイッチの役目 無事に拡張子が . class のファイルーーー以後 してください。オプジェクト指向とは・・・ を果たします。 Java プログラムの中には最 クラスファイルと呼びます -- ーができたと と考え出すとめんどうになるのですが 低 1 個 main メソッドがあり , そこからすべ く単純な意味では「クラスを使ったプログ します。いよいよ実行です。実行には , や て始まります。その main の前後に付いてい る , ばぶりつく・すたていっく・ばいど・ はり JDK 中の , java コマンドを使います ( jav ラミング」ということになります。 a コマンドというのが JVM として働くプログ Fig. 3 に「オプジェクト指向プログラム」 すとりんぐ・あーぐすというのは , main メ ラムなのです ) 。 の概念図を示します。図の中のスイッチが ソッドに付きものの記述です。今は考えな 付いた機械のようなものがクラスで , プロ いでください。といっても気になるでしよ java Opinion うから , 一応意味を書いておきます。 というように起動します。このときはコン グラムはいくつかのクラスからなります。 パイルのときと違い , 拡張子「 . class 」を付 クラスの表面にあるスイッチはメソッドを メソッドが公開であること ・ public けてはいけません。拡張子を付けて起動す 表します。 を意味する ると , かえってエラーになります。 メソッドがインスタンスへ 「空地に屋根ができたね」「やーねー」 の参照を持たないことを意 味する ちゃんと表示することができました。 メソッドが返却値を持たな List 1 の解説 いことを意味する ・ String ロ 文字列型の配列という型を 表す String [ ] 型の変数 ・ args main メソッドを書くときには , これらと セットにします。 7 行目の「 system. out. println ( … ) 」という のは , Java で一般的にコンソールに文字列 を表示するやり方です。ちなみにこれは表 示し終えたら改行します。改行したくない ときは System. out. print ( … ) を使います。 System というのもクラスです。 Java のラ イプラリの中にあるクラスは , import とい う手続きをしたあと , 自由に使うことがで ・ stati c Fig. 3 オブジェクト指向プログラムの概貪 図 ( プログラム ) ・ VOid ここで簡単にソースコードの内容を解説 しましよう。もう一度 List 1 を見てくださ 1 ~ 3 行目はコメントです。これはプログ ラムの実行には関係ありません。コンパイ ラには無視されるのですが , 人間があとで 見てわかりやすいように説明を書いておく ものです。 Java のコメントには 2 種類あります。 ・ / * で始まって * / で終わるもの。複数 行のコメントが書ける ・ / / で始まるもの。行末までコメントに 特集プログラミング入門 Java 言語入門講座イ 9

3. 月刊 C MAGAZINE 2001年4月号

Java programmingTips ひぐべん工房 第 9 回 チャットサーバ & クライアント 今回はネットワーク経由でチャットを楽しむためのサーバとクライアントの作成方法をご紹介します。 Java はスレッドやネットワーク機能がすぐれているため , 比較的簡単にチャットサーバやチャットクライアント が構築できます。 トネットワークの日常 RPG を中心としてネットワークゲームが 流行っている昨今です。かくいう私も某家 庭用ゲーム機の某 PS 〇 ( 伏字になっていな ・・・ ) なるネットワーク RPG でダンジ いかも・ ョンに潜る日々を過ごしております。 ネットワーク RPG ではゲームそのものの できも大事ですが , ネットワークでのプレ イを楽しいものにする決め手はチャットで しよう。「俺が前に出る ! 援護を頼む ! 」 とか「ポスだ ! 気を引き締めていくぞ ! 」 などと , シチュエーションに応じた台詞を 喋ってこそ雰囲気が盛り上がるというもの です。 そこでネットワークゲームの作り方を・・ ・・というのはなかなか難しいので , 比較的 簡単に作ることができるチャットシステム の作り方を解説します。チャットにはサー パ・クライアントシステムの基礎が凝縮さ れています。ネットワークゲームを自分で 作ってみたい ! という方の足掛かりになれ Fig. 1 チャットサーバのスレッド構成 クライアント登録用スレッド (ChatSe て ver クラス ) ばうれしく思います。 トチャットサーバ チャットサーノヾのプログラムは , 付録 CD - ROM のく Ycmaga}JavatipsYsample> ディレク トリに収録している ChatServer. java です (List1)0 これを , javac ChatServer. java でコンパイルし , java ChatServer ポート番号工ンコー ティング のように実行します。工ンコーディングに は EUC/JIS/SJIS のいずれかを指定します。 たとえば , java ChatServer 9999 SJIS のように起動します。ポート番号は既存の サービスと衝突しない大きめの番号 ( 1025 以上の番号 ) を使うのがよいでしよう。ま た ,TCP/IP など OS のネットワーク設定をあ らかじめ済ませておいてください。 チャットサーバが起動すると , Java Chat Server : Listening し 0 the port # 9999. のように表示され , 接続待ち状態になりま す。ここで適当な端末ソフトを使って接続 すると , チャットに参加できます。たとえ は气 Vindows2000 ならば , サーバを起動した マシン上で , telnet 地 c 引 hos セ 9999 とすると接続できます。リモートマシンか ら接続する場合 , 「 1 。 calhost 」の部分はサー バを起動したマシン名に変えてください。 接続に成功すると , * We lcome to Java Chat Server. * Make sure to use SJIS encoding. * P lease enter your hand name. のように表示されます。ここでハンドル名 を要求されるので , 「ひぐ」と入力すると , * OK. Thank you for access , ひぐ . 10 : 24 : 27 ひぐ logged 土 n. のようにログインできます。ほかの人がロ グインすると , 10 : 25 : 21 ペん logged 土 n. のように , 参加者全員にログインしたこと が通知されます。この状態でメッセージを Fig. 2 メッセージを送受信する仕組み ChatServer インスタンス クライアント 1 用 受信スレッド (ChanneI クラス ) 124 c MAGAZINE 2g1 4 クライアント 2 用 受信スレッド (Channel クラス ) クライアント 3 用 受信スレッド (ChanneI クラス ) クライアント 1 用 受信スレッド (Channel クラス ) クライアント 1 用 Channe インスタンス send() メソッド broadcast() メソッド クライアント 2 用 Channe インスタンス send() メソッド クライアント 3 用 Channe インスタンス・ send() メソッド

4. 月刊 C MAGAZINE 2001年4月号

Java programmingTips インスタンスごとにスレッドを使うので , ffread クラスを継承しています。そしてク ライアントに対してメッセージを送信する send ( ) メソッドです ( List 1- ⑩ ) 。これも synchronized にしています。 send ( ) メソッ ドの内部では , 改行文字を「 \ n 」に統一し たうえで BufferedWriter を使ってメッセー ジを送信し (List 1- ⑩ ) , 送信バッフアをフラ ッシュします ( List1- ⑩ ) 。一般的な端末ソ フトでは改行文字が「 \ n 」になっているこ とにご注意ください。 List 1- ⑩からはメッセージ受信スレッド から実行される run ( ) メソッドです。まず接 続したソケットを使って入出力ストリーム を作成します ( List 1- ⑩ ) 。このとき第 2 引数 でエンコーディングを指定しています。ス トリームを作ったら , 接続メッセージ表示 やハンドル名の入力を経て , メッセージ受 信待ちループに入ります ( List1- ⑩ ) 。ここで は BufferedReader を用いてメッセージを受 信し , ハンドル名を付加したあとに , 前述 の ChatServer クラスの broadcast() メソッド を呼び出して全クライアントにメッセージ を配信しています。 最後はクライアントとの接続が途絶えた ときに , ストリームやソケットを閉じる処 理です (List 1- ⑩ ) 。 トチャットクライアント telnet などの端末ソフトでは入力メッセ ージと受信メッセージが混ざって表示され てしまうため , チャットに使うにはやや不 便です。そこで , チャットクライアントを 作ってみました ( Fig. 3 ) 。サーバと対になる クライアントの作り方の参考にしてくださ 付録 CD-ROM に収録されている ChatClie nt.java を , javac ChatC lient. java でコンパイルしたあと , java ChatClient ホスト名ポート番号 工ンコーティンク で実行します。たとえば , チャットサーバ を前述のように動かしておいた場合 , サー バが動いているマシン上で , Fig. 3 チャットクライアント 、上 Ohat 0 lient VVelcome Java Chat Setver. Make sure tO use SJIS encoding Please enteryour handle name. OK. Thankyou foraccess, ひぐ 10 : 33 : 17 ひぐ logged れ 10 : 33 : 25 ペん logged in. 10 : 33 : 38 ひぐ】ネットワークゲーム 10 : 33 : 57 いん ] 蒸し風呂 10 : 34 : 04 ひぐ ] 論理学 10 : 34 : 10 パん ] 苦悶の表情 10 : 34 : 17 ひぐ ] 打たれ強さ 10 : 34 : 22 [ ペん ] 沙羅 10 : 34 : 25 ひぐ】湯たんま 10 : 34 : 28 ん】ポニーテール 10 : 34 : 32 ひルートディレクトリ 10 : 34 : 36 いん ] 輪転秤 10 : 34 、 49 ひぐ ] 槭の体 1 0 : 34 : 54 いん ] 六八車 10 : 35 : 02 ひぐ ] まじめこ仕事しよう・ 10 : 35.07 いん ] うん・ 先週は PSOI こハマってしまったことだしな・ 0 0 0 List チャットクライアント import java. 土0. * ー mpo てし java. net. *ー import java. awt. * ー import java. awt. event. *ー import javax. swing. * ー public class ChatClient extends JFrame implements Runnable ( / / ソケット Socket socket ー / / ログ表示領域 JTextArea ー og ー / / 入力領域 JTextField input; ノ / 工ンコーティング String enc; BufferedReader ての / / 入力用ストリーム BufferedWriter wti / / 出力用ストリーム / / ホスト string host; / / ポート int port ー / / アプリケーションのスタートアップ pub lic static void main ( string args [ ] ) (new ChatClient(args) ) . main( / / 使い方を表示して終了 static void usage( ) { System. ou し print ー n ( usage: java ChatClient HostName #port EUC/jIS/SJIS" System. eX土し(1リ 〃コンストラクタ ChatCIient(String args[ ] ) { / / GUI 構築 super("Java Chat Client" getContentPane( ) . setLayout(new BorderLayout( ) 房 getContentpane( ) . add(log=new JTextArea( ), BorderLayout.CENTER 、 log. setEditabIe(false); getContentPane( ) . add(input=new JTextField( ) , BorderLayout.SOUTH); setSize(600,400); setVi sib 厄 ( true ); / / イベント定義 addWindowListener(new WindowAdapter( ) { public VOid windowCIosing(WindowEvent e) { system. eX辻(0嶹 / / 送信処理 input.addActionIÅstener(new ÅctionListener( ) 。て public VOid actionPerformed(ActionEvent ev) string s=input. getText( input.setText("")$ try { 0 1 27 Java Programming Tips

5. 月刊 C MAGAZINE 2001年4月号

Java 言語入門講座 毛呂宗夫 編集部にくるアンケート葉書には , 要望や感想 , 批評や提案などいろいろな 意見が寄せられるそうです。その中で Java に対しては意見が分かれるとい います。「 Java に興味があります。もっと記事を増やして」という意見の一 方 , 「最近の C マガは Java の記事が多すき、る。これではまるで J マガではな いか」という意見。昨年 , 初心者向けの Java 入門記事を書けと言われました。 C / C + + と同等の扱いになるそうです。 Java はいらないという意見の方 , ご めんなさい。これから 1 年間 , Java の入門記事を連載させていただきます。 Java は , ' 95 年に発表されてからまだ数年 しかたってないのに , すでに基幹プログラ ミング言語としての地位を獲得しました。 情報処理試験に Java が選択できるようにな るとか , アメリカでは高校の試験に出ると か , 派手なニュースには事欠きません。最 近では , 携帯電話で Java が使えるようにな ったというのが大きいでしよう。 1 月に発 売された「 i アプリ」というやつです。 流行だからというのを差し引いても , Jav a を学ぶ価値は十分にあります。 Java は , 決 して単純ではありませんが , 複雑すぎはし ません。最初に学ぶプログラミング言語と しても使えます。とくに「オプジェクト指 向プログラミング」を学ぶにはベストの 1 つ といえるでしよう。今まで食わず嫌いして いた人も , Java を始めてはいかがでしようか。 Java の 2 つの顔 Java で特徴的なのは「 Java 懐疑派」という べき人たちの存在です。筆者は何人かから 「 Java ははやっているけど , それほどたいし たものとは思えない」との意見を聞きまし た。それに対し , 「 scheme 懐疑派」とか 「 perl 懐疑派」の人に私は出会ったことがあ りません。これは何を意味するのでしよう Java を始める か。最初にまず「 Java 」が何を指しているの かを考える必要があります。 「 Java 」は , 単純にいえば , C の流れをく む , オプジェクト指向プログラミング言語 です。しかしただ「 Java 」といったとき 人々が受けるイメージはそれとはちょっと 違うと思います。州州ープラウザで実行で きるプログラム」とか「 e ビジネスに関係あ るらしい」とか「携帯機器でも使えるそうだ」 。「何だかよくわからないけど , IT など・・ 技術の中で重要なものらしい」というのが 世間一般の印象でしよう。これらは決して 間違いではありません。けれど , 個人的に は何だか違和感をおぼえるのです。 Java で作ったプログラムは Java 仮想マシ ン (Java V1rtual Machine : JVM) の上で動き ます。つまりプログラミング言語と実行環 境がセットとなっているのです。プログラ ムと実行環境の関係は , 切ろうと思えば切 れるけど , ちょっとそうはしにくい事情が あります。 Java について語るときには , 自 動的にその実行環境も想定しています。 Java の話を難しくしている理由があ ると思います。 Java は Sun Microsystems ( 以下 Sun) によ って発表されました。その後 , 関係するラ イプラリやフレームワークがいくつも発表 されましたが , これらはオプショナルなも のです。しかし外側から見れば , 「 Java 」と いう技術領域があって , それがどんどん増 殖しているように見えるかもしれません。 問題を整理しましよう。「 Java は実行環境 と深く結び付いたプログラミング言語。け れど Sun はそれを基に , 戦略的に新技術を 発表し続け , それらを含めると Java はきわ めて大きな広がりを持つ技術となってい る」。これが「 Java 」の現状だと思います。 それでは , プログラミング言語としての Java はどういうものでしようか。プログラ ミング言語としての Java は , 取り上げられ る派手さとは裏腹に , 折目正しい言語です。 スレッドやガべージコレクションなどの新 機能は備えていますが , 全体としてあまり 突出したところはありません。地味とも思 えるくらいです。 C や C + + が Java のお兄さん だとすると , 兄たちは職人肌で気難しく , 加えて割にいいかげんなところがある。一 男の Java は , 義理堅く , きまじめな性格を しています。しかしその Java がいったん世 間に出ると , e ビジネスだとか IT 革命とか いう派手な世界で活躍しています。人によ っては「ああいうチャラチャラしたやつは 好きじゃない」と思うかもしれませんが , 実 際つきあってみるとまじめでいいやつなん です。筆者は個人的に , Java のこの 2 つの面 を「地味 Java 」と「派手 Java 」と呼んでいます。 さて本連載では「地味 Java 」の面を扱って いこうと思います。なにしろ「派手 Java 」は Java 言語入門講座 45 こでは Java を , 「 1 つ 特集プログラミング入門 の ( すぐれた ) プログラミング言語」として 範囲が広すぎます。

6. 月刊 C MAGAZINE 2001年4月号

[ 春の新人応援モ会 MAGAZINE WonderWitch 7 ワンダースワンゲームプログラミング ワンン 子坊ゾ 3 名 最新携帯用ゲーム機「 Wonder Swan C010r 」の専用アプリケー ション開発環境「 WonderWitch 」 , および代表的なゲームの仕組み とその作成方法を解説する書籍 をセットで提供 (WonderSwan 本体は含まれない ) 。ゲーム機の 性能を使い切るプログラミング , アイデアを形にするプログラミン グが楽しめる。本誌「遊びのレシ ピ forWonderW1tch 」も好評連載 中。 ル層 0 石 50 w “・ 0 “ 0 ′ 0 , 滝襯 ワン一つイ ワンダースワンがホビープロクラミンクのプラットフォームになる一 で 日へ N Dfti ソフトバンクバブリッシング株式会社 価格 . 2 , 800 円 ISBN コード :ISBN 4-7973-1410-9 URL : http://books.softbank.co.jp/ 提供株式会社バンダイ 価格 . 16 , 800 円 動作環境 Windows 98 / NT4.0 / 2000 URL : http://www.swan.channel.or.jp/ wonderwitch/ VisuaIAge fO 「 Java プロフェッショナル V3.5 日本語版 8 VisuaIAge forJava によるオプジェクト指向プログラミング 3 名 Web を有効活用する Java アプリ ケーションを作成するための統 合開発環境。 RAD 環境や JavaBe ans の作成 , テスト / デバッグな どのための多くのツールが提供 されている。 Web とデータベー スの連係のための強力な機能を そろえている。このツールを使 ってオプジェクト指向プログラ ミングを実践する書籍とセット で提供。 アプリケーシ , ン VisualAge f 。 r ⅵによな第 オプクト指向 フログラミング Programming with VisuaIAge fo 「 JavaN VisualAge 日本語版 プロフェッショナル M. カレル - ー J ・エーカト 日本ビー・エムを ナシ■ナル・ランケーシ・ ・ビー・エム・システムズ・エンジニアルク 1 第 S ューシ立部 J 第グループ 株式会社トッパン 価格 : 3 , 800 円 ISBN コード :ISBN 4-8101-8995-3 ava 1 提供 : 日本アイ・ビー・エム株式会社 価格 . 23 , 900 円 動作環境 . Windows 98 / NT4.0 / 2000 URL : http://www.ibm.com/jp/software/ad/ 1 5 春の新人応援モニタ大会

7. 月刊 C MAGAZINE 2001年4月号

五ロ されていることもあります。あればそちら ださい。 Java の API は人間の頭では覚えきれ Java の準備 のほうが楽です。なにしろファイルサイズ ません。プログラムを書くとき , ドキュメ が 20M バイト以上。ダイアルアップで落と ントによって仕様を確かめる必要がありま す。ドキュメントは HTML ファイルの集合 能書きが長くなりました。そろそろ実際 そうとすると非常にイライラします。それ でも落とせればまだいいけど , 途中で回線 に Java に触ってみましよう。 であり , WWW プラウザで見ることになり ・。今月号の付録 CD - ます。ドキュメントは今月号の付録 CD - RO 最初に , Java プログラムの開発を行うた が切れたりして・・・ M にも入っていますが , 圧縮状態のものを めのシステム , 「 JDK : Java Development K ROM にも Solaris , Windows , Linux 版の Sun のサイト (http://java.sun.com/j2se/1.3/ its 」をインストールしなければなりません。 JDK が収録されています。 ja / docs. h ⅱれ l) からダウンロードすることが OS ごとに専用の JDK が存在し , どれもフリ 各プラットホームごとに注意点がありま できます ( 日本語版が用意されているとこ す。たとえば Linux では , 新し目の構成で ーで , Web サイトからダウンロードして入 ろがありがたい ) 。解凍して , 適当なディ 手することができます。なかでも , SoIaris, ないと Java2 が動かないようです。そのほ W1ndows , Linux の JDK は Sun から提供され か , 要求されるハードウェアのレベルなど , レクトリに入れてください。よく使うもの ており , 各不郵 DK の先導役となっています。 Web サイトに書かれている注意を ( たいて なので , Windows ならデスクトップにショ 多数の商用 UN Ⅸにも JDK は用意されてい い英語ですが根性を入れて ) 読んでから , イ ートカットを置くとか , UNIX ならホームデ ィレクトリにリンクを張るなどして , すぐ ます。ネットで調べれば見つかるでしよう。 ンストールしてください。 どうしても見あたらない場合 , OS のメーカ インストールの方法は環境によります。 に見られるようにしておきましよう。 Windows の場合は自己解凍式のプログラム ーに問い合わせてみてください。そのほか インストールできたでしようか。このあ で提供されているので , それを実行すれば と , システムによっては , パスとクラスパ 各種プラットホームの JDK があるアドレス スの設定が必要になることがあります。 を書いておきます ( Fig. 2 ) 。 インストールが始まります。あ , それから , インストールしたあとコンソール (Windo また , 書籍や雑誌付録の CD - ROM に収録 ドキュメントもインストールしておいてく Fig. 2 各 JDK の入手先 Fig. 1 Java プログラムの作成と実行 class ABC ー ・ SoIaris (SPARC, X86 ) Linux Windows http://java.sun.com/products/ ・ AIX, Linux, AS/400 OS / 2 OS / 390 VM/ESA Windows http://www.ibm.com/java[Jdk/ ・ FreeBSD http://www.freeBSD.org/java/ ・ Macintosh http://devworld.apple.com/java/ ・各種 OS ( リンク ) http://java.sun.com/cgi-bin/java-ports.cgi ソースファイル (ABC. java) 0 0 java コンバイラ 01100010 クラスファイル ( バイトコード ) (ABC. class List 言葉を表示するプログラム (Opinion. java) 2 : * Opinion. java 3 : 4 : 5 : 0 ね ss Opinion( public static void main(stringt ] g 日 ) { 6 : SY 5. out. p て土 n 凵 n 「空地に屋根ができたね」「やーねー」″ 7 : 8 : 各コンピュータ上の JVM で動く 特集プログラミング入門 Java 言語入門講座

8. 月刊 C MAGAZINE 2001年4月号

00 フログラミング入門 ws なら DOS 窓 , UNIX なら xterm や kterm) から , 〕 ava と打ち込んでみてください。 java コマンド の「使い方」のようなものが , 画面に出れば 成功です。しかしもしかすると「コマンド またはファイル名が違います」などのそっ けないメッセージだけで終わるかもしれま せん。そういうときは java コマンドにパス が通っていないのです。パスを通す必要が あります。 もう 1 つ「クラスパス」の設定が必要なと きがあります。これはコラム 2 を参考にし てください。 JDK が無事インストールされたとします。 さて「エデイタ」は持っていますか ? 持っ ていなければ入手してください。 Windows には「メモ帳」が付いており , それでもでき ないことはありませんが , 本格的にやるに は苦しいと思います。商用 , フリー シェ CLASSP の言殳 . 正 Ver. 1.1 以前の JDK では , java コマンドを 動かすときに C 以 SSPATH という環境変数 を設定する必要がありました。これには java コマンドが使うライプラリのディレクトリ を記述します。また , 自分が作るプログラ ムを特定のディレクトリに置く場合 , それ も記述する必要があります。 Java2 以降の java コマンドは , CLASSPAT 日を設定しなくてもコアライプラリを使う ようになりました。また , デフォルトで , カレントディレクトリにあるクラスも使え るようになっているので , パッケージを使 わない小規模なプログラムを作るだけなら 設定しなくても大丈夫です ( 設定するとかえ って混乱するかもしれません ) 。 しかし , パッケージ機構を使ったプログ ラムを特定のディレクトリに置きたいとき には設定する必要が出てきます。これに関 しては「パッケージ」のときに説明します。 あるいは JDK のドキュメントを参考にして アウェアといろいろあります。できればい くつか試用して , 使いやすいのを選びまし よう。 あと「州州プラウザ」が必要です。もっ とも今時入ってないコンピュータはないよ うな気もしますが。 Java 対応という点では Netscape 6 ( 以降 ) が有利です。ただ当連載 ・サーブレット ・アプリケーション ・アプレット の形態があります。 いわゆる「 Java のプログラム」には , 3 種類 3 種類のプログラム では何でもかまいません。 しれません。実は私もそう思うのですが おもしろくないじゃないかと思われるかも ョンだけでグラフィックをやらないなんて せつかく Java をやるのに , アプリケーシ 話を進めます。 ョンです。前半の 6 回ぐらいは CUI を中心に er lnterface : 画面での操作 ) アプリケーシ にマウスを使って動かす GUI(GraphicalUs e : 文字での操作 ) アプリケーションと , 主 ール上で動く CUI (Character User lnterfac 類あります。 DOS 窓や xterm などのコンソ アプリケーションにも大きく分けて 2 種 省きます。 り上げ , 「アプレット」と「サープレット」は 当連載では「アプリケーション」のみを取 などに用いられます。 WW サーバ上で動かすもので , 電子商取引 「サープレット」は今流行しています。 W 様です。 ろ以外は , C などで作ったプログラムと同 すプログラムです。 JVM を使って動くとこ 「アプリケーション」は通常の PC 上で動か せん。 いたのですが , 現在はそれほどではありま 主にアプレットを動かす言語だと思われて すプログラムです。 Java デビューの当時は , 「アプレット」はハ VW プラウザ上で動か 文法部分だけでもかなりの量があり , 話を 限定しないと収拾がつかなくなりそうなの です。ご勘弁ください。 プログラミングの手順 準備はできましたか。では , 実際にプロ イルを作ることができましたか。ではこれ ディレクトリに「 Opinion.java 」というファ 「 .java 」を拡張子としてください。 ava. ⅸ t 」となってしまうので , 設定を切って 付けるものがあります。その場合「 Opinion.j っては , 拡張子として勝手に「 . ⅸ t 」などを してください。また , 工デイタの設定によ い ) , UN Ⅸ系では区別するので正確に記述 しませんが ( 読み取るときは区別していな 注意。 Windows では大文字と小文字を区別 ープしてください。もう一度ファイル名に 書き終わったら適当なディレクトリにセ 置が多少ずれてもかまいません。 ーマットなので , 空白のありなしなどで位 してください。もっとも Java はフリーフォ 7 行目以外は , とりあえずそのまま入力 「南無阿弥陀仏」でも何でもかまいません。 い。「へろ ~ ん」でも「デジカメほしい」でも こにはそれぞれ好きな言葉を入れてくださ まれている部分が , 表示する言葉です。 ファイル名が大事です ) 。 7 行目の " と " で挟 でファイルを作ってください ( Java の場合 工テイタで , 「 Opinion.java 」という名前 す (List 1 ) 。 言葉を表示するプログラムの例をあげま るべきです。 はなく , 独自に , みずからの精神を吐露す に対して「こんにちは」なんて生温い態度で 自己表現をこれから始めるのだから , 世界 いですね。せつかくプログラミングという んにちは世界よ ! 」なんて , なんかバタ臭 示するのが慣例になっています。しかし「こ の初めには「 Ha Ⅱ 0 , world! 」という言葉を表 葉を表示して終わるプログラムです。入門 もっとも簡単なプログラムは , 特定の言 グラムを作ってみましよう。 48 C MAGAZINE 2 1 4

9. 月刊 C MAGAZINE 2001年4月号

MONTHLY HEADLINE よって , Sun から今後の Java につい て話すことはできませんし , しようと も思いません。逆に , コミュニティの 方々に支えられてどのように育ってい くのか楽しみです。 ーー Sun の今後の方針について R 氏 : 技術や製品にかかわらず , 昔から 私たちのスローガンは「 NetworkisCo mputer 」で , 今後も変わりはありません。 今後は「インタヒリティ」「ポータビ リティ」「コンパチビリティ」を進めて いくことになるでしよう。「すべてをネ ットワークの上で」を実現させるため に , よいサービスを提供していきます。 Forte for Java 2. O インタビュー SunTechDays の 4 日後 , Forte T00 マ ーケティングティレクタの Mark Herring 氏 ( 以下 M 氏 ) にお話をうかがう機会を得 た。最新の FO e f0 「 Java 2.0 を中心に話 をうかがった。 まずは , Forte for Java 2.0 の紹介を M 氏 : 今回の Forte fo 「 Java の特徴とし ては , 3 階層構造になっていることで す。まずアプリケーションのべースと なる IDE 部分があり , その上に言語処 理工ンジンか載っています。そして , 各種機能拡張プラグインによってさま ざまな最新技術に対応していきます。 たとえば , 新しく提案されている JDO (Java Data Objects) にもプラグイン で対応していきます。これらは従来の 開発環境では次バージョンを待たなく てはならなかったところです。 また , さらに特徴的なことは , これ らは Forte のオープンコミュニティに て仕様が公開されていることです。基 本システムである Community Edition は無料でダウンロードが可能です。 れだけでも Java アプレットや JavaBea ns などのクライアント開発環境として は十分強力な機能を搭載しています。 ぜひ , 多くの方に使ってほしいと思っ ています。 言語工ンシンを分離したことで Java 以外の言語も搭載できるのか。また , そ れを見越した設計なのか M 氏 : そのとおりです。コミュニティで は実際に perlt 搭載しようとするプロ ジェクトが動いています。また , 独自 の言語を搭載する場合でも , その仕様 は公開されているので , 特別な契約な どは必要ありません。 Forte は C や C + + , Fortran 版もある が , これらとの関係は M 氏 : 現在 , Fo 「 te プランドの開発製品 には 2 つの流れがあります。 1 つは So r is を中心に提供してきた SunWorkshop の系統 , そしてもう 1 つが Fo rte fo r Java の系統です。 C / C + + 版 , Fortran 版は前者の流れなので , 現在のところ Java 版と同じ開発環境ではありませ ん。ですが , 統一する方向で開発が進 められており , 近い将来に実現するで しよう。 - ー - ー - Sun のビシネスはどこにあるのか M 氏 : 自社開発のプラグインを組み込ん だ FO e for Java 2.0 lnternet Edition と いうパッケージ製品を提供することに より , 導入やサポートのサービスを行 います。この lnternet Edition で提供さ れるプラグインによって , XM L や CO RBA や Java サーブレットなど工ンタ ープライズ系に欠かせない機能を提供 するのです。 もちろん , Forte fo 「 Java 自身は公 開されているものなので , Sun だけで なくサードバーテイも自社プラグイン を開発して同じように販売することが できます。 これからの Fo e 戦略について M 氏 : これからはコミュニティの方々と 意見を交換しながら , Forte を推進し ていきます。もちろん Sun からも魅力 あるプラグインを開発 , 提供していき ます。先ほど言ったように , まずは開 発者のみなさまに使っていただくとと もに , ぜひコミュニティに参加して意 見交換してほしいと思っています。 総論 今回 , さまざまな Sun の方より直接話 をうかがった印象として , コミュニティ , それもインターネットを中心としたオー プンコミュニティを非常に重視するとい う開発姿勢がうかがえた。自社での開発 を放棄しているようにすら見えてしまう ほど思いきった戦略だ。 だが , これほどインターネットが普及 し , アプリケーション開発や技術革新の スピードが速くなった現在 , ソフトウェ アベンダ 1 社で対応できることには限界 がある。 Sun はオープンコミュニティを べースにすることでユーザのニースを的 確に素早くっかみ , 開発者との密接な連 係を試みている。そして , そのうえで製 品やサービスを提供するというビジネス モデルを示している。 これも「 Network is Computer 」の 1 つの 形を示しているのではないだろうか。 ( 井上嶋渉 ) MONTHLY HEAD 凵 NE 143

10. 月刊 C MAGAZINE 2001年4月号

MONTHLY HEADLINE Topic サン・マイクロシステムズの技術戦略と製品展開 2 月に開催された SunTechDays のあと にカンファレンス講演者への個別インタ ヒュー , また別の日に Forte T00 のマ ーケティングティレクタへのインタヒュ ーと , 2 つの機会をいただいた。この 2 つのインタヒューを通して , Sun の Java への取り組みをたどってみよう。 SunTechDays 2 月 7 , 8 日の 2 日間 , 東京ファッショ ンタウンにおいて「 SunTechDays - ADe veloper Conference 」が開催された。ま た , カンファレンス後にセッションスピ ーカに話を聞くことができた。 ・イベント概要 2 日間にわたって開催された SunTech Days だが , その内容は各テーマに集中 した非常に濃いものだった。 1 日目は来 日した米 SunMicrosystems( 以下 Sun) の 技術者たちから , Java 技術の解説から J2EE, J2ME, Jini など , 広い範囲で , しかもそれぞれ密度の濃い話を聞くこと ができた。 2 日目はより実践的に , OracIe をはじめとしたさまざまな開発手法の紹 介・デモンストレーションが行われた。 一番最後に行われた J2EE と J2ME のコー ドキャンプと呼はれるセッションでは実 際にコードを示しながら解説しており , 開発者にとってとても役立つ内容だった。 この SunTechDays を通してみると , J ava 製品のセールス担当というよりも , 開発者に技術情報をしつかりと伝えると いうコンセプトが見て取れた。申し込み 者のほとんどが参加していたという事実 は , いかに役立つ内容だったかの指針と なるだろう。来年の開催が今から期待さ れる。 ・個別インタビュー 第 1 日目のカンファレンスのあと , Ja va テクノロジ・エバンシェリストの Rag havan N. Srinivas 氏 ( 以下日氏 ) と Java/Ji ni テクノロジ・エバンジェリストの Sang C. Shin 氏 ( 以下 S 氏 ) 両氏との個別インタ ヒューの機会をいただき , 開発者に向け たメッセージを語ってもらった。 まず , Java と XML への取り組みに ついて R 氏 : これからのソリューションで必要 なのは「旧 0 」の流れです。 lßlnput, 0 は Output で , P は Process を表し , れはメーカー / アーキテクチャに依存 するものではありません。 Sun として は , lnput と Output を XML で , Process を Java で担当することがベストだと思 っています。 とくに , EB XML などが登場してワ ールドワイドの e コマースが“ビジネス をつなぐ”ようになると , U nicode の ような多国籍間取引のための下地技術 が必要になってきます。この点から見 ても , Java と XML はともに Unicode に 対応しており , よい組み合わせと思っ ています。 既存のシステムからどのようにネッ トワークに対応・普及させるのか R 氏 : もちろん , すべての企業がネット ワークを中心としたシステムに切り替 す。 うな必然の過程で生まれてきたもので ています。現に J2EE や J2ME はこのよ な機能を論議し , 実装し , 将来を決め コミュニティでこれからの Java に必要 プンな Java コミュニティにあり , この いうことです。その活動の中心はオー でに Java は Sun だけのものではないと R 氏 : まず確認しておきたいことは , す に進んでいくのか 今後の Java テクノロジはどのよう で可能になるのです。 うな開発が Java と XML の組み合わせ つつ新しい技術に対応させる , このよ なレガシーシステムを引き続き活用し 応させることができました。このよう れを包み込むことでネットワークに対 を変更することなく , Java の技術でこ 動いていましたが , この基幹システム レームを中心としたシステムがすでに S 氏 : たとえば , ある企業ではメインフ ると思っています。 はしやすいようにしていくことができ 規模の取引に参入できるように , また これを活用することで中小企業が世界 す。ですが , だからこその XML であり , 大きな企業ということは承知していま があり , 資金的にも余裕のある比較的 ステムから対応できるのは , 先見の明 えられるわけでないでしよう。基幹シ ◎ URL http:″sun.co.jp/developers/techdays/.http:″sun.co.jp/forte/ 1 イ 2 C MAGMINE 2001 4