[???] /
[Java FAQ] / [S005]
S005: Java 学習方法
[S005-Q01]
どういう方法で勉強したら良いでしょうか?何から勉強したら良いでしょうか?
[S005-A01]
Java の学習が目的であれば、最初は JDK からというのがいいでしょう。
GUI に関しては JBuilder や VisualCafe などに代表されるツールを使
うのもいいでしょう。
JDK のドキュメントは必須です。S001-01 を参照して入手しておきましょう。
日本語の API ドキュメントが用意されています。
ある程度ソースを見通す力がついてきたら、API のソースも参考になりま
す。S005-02 を参照。
また、Java はオブジェクト指向言語ですから、オブジェクト指向につい
て基礎的な学習はきちんとしておきましょう。
JDK 1.0.2 の頃の古い書籍ですが、複数の方が名前を挙げる良書としては
次のようなものがあります。
一歩先行くインターネット「Java 入門」 (ISBN 4-88135-351-9)
「Java API プログラミングガイド」 (ISBN 4-7692-0372-1)
推薦Web文書
Java 言語規定日本語版
http://www.y-adagio.com/public/standards/tr_javalang/index.htm
推薦開発ツール
JavaTM 2 SDK, Standard Edition Version 1.3.0(最新版 2000 7/21現在)
http://java.sun.com/j2se/1.3/ja/
日本語版 JavaTM 2 SDK ドキュメント(JDK 1.2用)
http://java.sun.com/products/jdk/1.2/ja/download-ja-docs.html
JavaTM 2 SDK, Standard Edition ドキュメント Version 1.3.0
http://java.sun.com/j2se/1.3/ja/docs.html
Forte[tm] for Java[tm] Community Edition Japanese version(無料、登録が必要)
http://sun.co.jp/software/tools/ffj/index.htm
JBuilder 4 Foundation ダウンロード(無料、登録が必要)
http://www.borland.co.jp/jbuilder/foundation/download/index.html
参考記事[JavaHouse-Brewers:28862],[JavaHouse-Brewers:8764],[JavaHouse-Brewers:6666],[JavaHouse-Brewers:6657]
[S005-Q02]
Java の文法を詳しく知りたいのですが?
[S005-A02]
JLS (Java Language Specification) を読みましょう。
JLS というのは Java の言語仕様です。
JLS は Web 上で閲覧できます。以下の URL を参照してください。
http://java.sun.com/docs/
また、書籍も出版されています。
[S005-Q03]
Java API の提供する機能について理解を深めたいのですがどうしたら良いのでしょうか?
[S005-A03]
API ドキュメントを読みましょう。
API ドキュメントは以下の URL から参照できます。
http://java.sun.com/docs/
また、個々の API ごとの書籍も出版されているので参考にしてはどうでしょうか。
[S005-Q04]
API ドキュメントを読んでも、どのように動作するか理解できないのですが?
[S005-A04]
Java API のソースを読んでみてはどうでしょう。
プログラム作成中に API の動作に疑問を持ったときや、API ドキュメント
を見ていて興味を持ったクラス、メソッドの中身を知りたいとき、このソー
スが役に立ちます。
Java API のソースの入手方法は、S001-06 を参照してください。。
[S005-Q05]
Java API のソースを読んで理解を深めるにはどうしたら良いでしょうか?
[S005-A05]
Java APIのソースは、JDK をインストールしたディレクトリに .jar また
は .zip 形式にまとめられて置かれています。これを展開すると API の
ソースを参照することができます。
プログラム作成中に API の動作に疑問を持ったときや、API ドキュメント
を見ていて興味を持ったクラス、メソッドの中身を知りたいとき、このソー
スが役に立ちます。
参考記事[JavaHouse-Brewers:3741]
[S005-Q06]
プログラム中の名前がどこに定義されているか調べることはできますか?
[S005-A06]
統合開発環境には変数やメソッド、クラスの定義場所を示す機能がある場
合が多いですが、テキストエディタを使用してプログラミングしている時
は以下のようにしてみましょう。
1) まず、言語の予約語は暗記しましょう。例えば次のようなものです。
public, protected, private, class, extends, interface,
for, while, try, catch, break ... などなど
2) 変数名なのかクラス名なのかの区別ができる程度に文法を理解しましょ
う。普通は大文字から始まっているのはクラス名、小文字で始まって
いるのは変数名やメソッド名です。
3) java.lang パッケージのクラスは暗記しておきましょう。
5) 変数らしき名前があるとき、メソッド内を {...} の内から外へ調べ、
なければ更にメソッドの仮引数、クラスの変数宣言へと調べる範囲を
広げます。
6) クラス名らしき名前があるとき、java.lang のクラスでなければ、
ソースの上部にある import 節を調べます。import 節にクラス名が
書かれていないとき (import ....* のようにパッケージ内すべてを
指定してしまっているときなど)、そのパッケージの中でクラスが定
義されていないかを調べます。これにはパッケージのソースが必要で
す。
上記の 6) のように import 節で「*」を使うと調査が面倒になるので、明
らかな場合を除いては使用しないようにしましょう。
参考記事[JavaHouse-Brewers:6672]
[S005-Q07]
C プログラマのための Java 入門はありませんか?
[S005-A07]
以下の書籍があります。
C/C++プログラマのJava入門(本体4,200円+税)
ダン・パークス・シドー著、スリーエーシステムズ訳
日経BP社 / ISBN 4-8222-9070-0
他にもありましたら、情報をお寄せ下さい。
コメントの送り先:Java FAQ BBS
[S005-Q08]
C プログラマが陥りやすいポイントを教えて下さい。
[S005-A08]
Java は C 言語に似ているので参考にできますが、例えば次のような所に
違いがあり、ソースコードの移植や学習のときに戸惑います。
・関数がない。関数はクラスメソッドとして表現する。
Java ではすべての処理 (C 言語の関数) はクラスの中にメソッドとして
定義する。
・#include がない。#define もない。
・#ifdef DEBUG
#endif
が出来ない(Java用のプリプロセッサもあります)
・ライブラリはパッケージという形式となる。また、基本的にすべてが動的
リンクであり、クラスが必要になったときに読み込まれる。
・ポインタがない (というと多少の語弊がある)。
変数や関数へのポインタ (アドレス) を得るということができない。
・0定数(通称 NULLポインタ)の ビット表現で悩む事が無い
(これは CではNULLポインタのビット表現に依存するな==悩む必要無しってことになってるようです)
・プリミティブ型( byte char int long float double )のポインタは存在しない
・プリミティブ型と class では配列の扱いが異なる
・ポインタと配列は混同できない(もしくは 配列の要素をポインタで指す事は出来ない)
・構造体がない。クラスで表す。クラスは構造体に処理 (関数) が組み込ま
れたものと考えることができる。
・演算子の優先順位が多少異なる。
・メモリを確保する malloc() がない。オブジェクトを new する。しかも
解放する free() がない。オブジェクトは使われなくなったときに自動
的に破棄される。
・列挙型が無い
・unsigned が無い
C++ との違い
・メソッド は基本的に C++ で言うところの virtual を宣言したものと同等
・デストラクタが無い、似たようなものとして finalize()メソッドが存在する
などなど。
参考記事[JavaHouse-Brewers:924]
[S005-Q09]
プログラムの構造を図で表すにはどうするのが良いでしょうか?
[S005-A09]
フローチャートはオブジェクト指向言語、イベントドリブンなプログラムに
は向きません。例えば UML などを使用してクラス図を記述します。
フリーの UML 設計支援ツールもあります。
[参考]
http://objectclub.esm.co.jp/Jude/
http://www.esm.co.jp/divisions/open-sys/java/uml-doclet/index-j.html
参考記事[JavaHouse-Brewers:279]
contributor: eiichi
コメントの送り先:Java FAQ BBS