1991 SunMicrosystems 18ヶ月掛けて作成された。Oakと呼ばれた。
1995 Javaに改名。すぐに広まったのだ。
Java2ではJVMにJIT(JusInTime)コンパイラが組み込まれた。

Windows型のアプリケーションもある。(javaw.exe で実行する)

AWT(Java Abstruct Windowing Toolkit)

CLASSPATH変数→byteコードファイルの位置をJavaに伝えるための変数
また コンパイルスイッチの -classpath で代用する事も出来る。
ただし -classpath はCLASSPATH変数を上書きする。
unixの場合は、/usr/local/jdk1.3/jre/lib と . も加える。(-classpathもかなー?)

イベント代行モデル(Java1.1,1.2)とイベントモデル(Java1.0)

Javaネイティブメソッドインターフェイス
JavaBeans
Swing
パッケージ
longの範囲は?
拡張変換
縮小変換
不規則な多次元配列
Java2(JDK1.3)で推奨されなくなった機能 → c:\jdk1.3\docs\api\deprecated-list.html

publicキーワードでclassを作成した場合、ファイル名はそのクラスと同じでなければならない。
よって.javaファイルにはpublicなクラスはひとつしか含める事が出来ない。
javaはファイル名でクラスを検索する。

javaアプリケーションにのみmainメソッドがある。;-)

staticを付けるとオブジェクトメソッドではなくクラスメソッドになる。

java.lang は標準装備である。

フィールド→クラスのメンバー

$> javac -d  temp apptest.java 
でtempディレクトリにapptest.classが作成される。

オプションいろいろ:
        -deprecation    推奨されない情報を表示する。
        -g              すべてのデバッグ情報を生成する。
        -g:none         デバッグ情報をいっさい生成しない。
        -nowarn         すべての警告メッセージを表示しない。

javaw があるのはwindowsだけである。DOSがばかだから。:-)

Javaのlongは8byteである。
整数リテラルとは定数値の事である。
javaはunicodeである。
コンパイラはJavaコードの文字列リテラルをStringオブジェクトに変換する。
一般にJavaコンパイラは式の中でbyte値とshort値をint型に昇格する。

────────────────────────────────────────
 データ型   サイズ       保持できる値の範囲
────────────────────────────────────────
  byte       8ビット    -127 〜 127
  short     16ビット    -3,2768 〜 3,2767
  int       32ビット    -21,4748,3648 〜 21,4748,3647
  long      64ビット    -922,3372,0368,5477,5808 〜 922,3372,0368,5477,5807
────────────────────────────────────────
  float     32ビット    -3.4E38  〜 3.4E38  (有効桁数  6〜 7桁)
  double    64ビット    -1.7E308 〜 1.7E308 (有効桁数 15〜16桁)
────────────────────────────────────────
  char      16ビット    1文字
────────────────────────────────────────
  boolean   32ビット    true(真)もしくはfalse(偽)
────────────────────────────────────────
  Javaでは大文字小文字を区別します。

//-----------------------------------------------------------------------------
//お約束のプログラム(java application) :ファイル名は  app.java
import java.util.Date;
import printer;         //自作のクラスです

public class app{//←ファイル名と合わせる

    public static void main(String[] args){     //mainはpublicでなければならない。

        String value="wahaha";
        System.out.println(value);
        System.out.println("Hello Java world!");
        System.out.println("Today = " + new Date());
        func();
        (new printer()).print();        //ここわかる?
        int i[]=new int[256];           //なんかやだね でも全部0に初期化される。
        int j[][]=new int[128][256];    //多次元配列でございます。
        //int i[256];って出来ないみたい
        int fdsa[]={1,2,3,4};//これはできる...
        int fdsa[][]={{1,2,3,4},{2,4,6,8}};//多次元配列の初期化
        //long lvalue=123456789L;  you know.
        int hexvalue=0xff;  //16進数として代入する
        int octvalue=020;   // 8進数として代入する
        
        //↓fを付けないとこれはエラーとなる。浮動小数点リテラルのデフォルトはdouble型であるため。
        float fvalue=1.5f;  
        
        boolean bvalue=true;
        System.out.println( bvalue );   //きちんとtrueって出る。C++だと1って出る。
        char char3='C';
        char char4=67;  //unicodeです
        System.out.println("\'C\'  →" + char3);    //なんと表示されるか
        //char を  printlnで評価させると,unicodeのコードとして文字が表示される。
        System.out.println(char3 +1);    //なんと表示されるか
        System.out.println(++char3);     //なんと表示されるか
        int int1=1;int int2=2;
        int int3=int1*int2; //動的初期化
        System.out.println( int3 );
        
        //配列から配列へのコピー
        int fdsa[]  = new int[3];
        int fdsa2[] = new int[3];
        fdsa[0]=1;  fdsa[1]=2;  fdsa[2]=3;
        fdsa2=fdsa;//c++では出来ないですね
    }
    public static void func(){   //メソッド
        System.out.println("Hello Java world! from func()");
    }
}
//-----------------------------------------------------------------------------
//自作のクラス  :ファイル名は  printer.java
public class printer{
    public void print(){
        System.out.println("Hello from printer.class");
    }
}
//-----------------------------------------------------------------------------
//Window型アプリケーション  appwintest.java

import java.awt.*;
import java.awt.event.*;

class AppFrame extends Frame{
    public void paint(Graphics g){
        g.drawString("Hello from Java",60,100);
    }
}

public class appwintest
{
    public static void main(String[] args){
        AppFrame f=new AppFrame();
        f.setSize(200,200);
        f.addWindowListener(    // ぬわんだ!?  この関数は?
            new WindowAdapter(){
                public void windowClosing(WindowEvent e){
                    System.exit(0);
                }
            }
        );
        f.show();
    }
}
//-----------------------------------------------------------------------------
//お約束のアプレットプログラム:ファイル名は applet.java
import java.applet.Applet;
import java.awt.*;

public class applet extends Applet{
    public void paint(Graphics g){
        g.drawString("Hello world!",60,100); 
    }
}
//-----------------------------------------------------------------------------
コンパイルと実行
$> javac apptest.java
$> java apptest   ←.classは省略できる