Javaã§ãªãœã¤ãã‚‹ã®ã‹
目次
概è¦
「10年後も通用ã™ã‚‹åŸºæœ¬ã‚’身ã«ã¤ã‘よã†ã€ã®ã‚³ãƒ³ã‚»ãƒ—トã§å‡ºç‰ˆã•れãŸã€Œãªãœï½žã€ã‚·ãƒªãƒ¼ã‚ºã®Java版。
クラスã€é…列ã€ä¾‹å¤–ç‰ã€
ãŠä½œæ³•ã¨ã—ã¦æ›¸ã„ã¦ã„ãŸã€
・コンパイルã€ãƒªãƒªãƒ¼ã‚¹æ–¹æ³•
・プãƒã‚°ãƒ©ãƒ コードã®ç†ç”±ã€ä»•組ã¿
をよりç†è§£ã§ãる様ã«ãªã‚Šã¾ã™ã€‚
Javaã®ä»•様
JVM
・JVMを介ã™ã‚‹äº‹ã§ã»ã¼å…¨ã¦ã®ã‚³ãƒ³ãƒ”ュータ上ã§Javaプãƒã‚°ãƒ©ãƒ ã‚’å‹•ã‹ã™äº‹ãŒã§ãる。
ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãƒ™ãƒ³ãƒ€ãƒ¼ã¯JVMを動作ã•ã›ã‚‹è©¦é¨“ã«åˆæ ¼ã—ã¦åˆã‚ã¦Javaマークを表示ã™ã‚‹äº‹ãŒã§ãã‚‹
・JVMを介ã™ã‚‹äº‹ã§ã»ã¼å…¨ã¦ã®OS上ã§Javaプãƒã‚°ãƒ©ãƒ ã‚’å‹•ã‹ã™äº‹ãŒã§ãる。
JVMã¯å„OSã®æ¥µã‚ã¦åŸºæœ¬çš„ãªæ©Ÿèƒ½ã®ã¿ã«å¯¾å¿œ
JVMã¯ã»ã¼å…¨ã¦ã®ã‚³ãƒ³ãƒ”ュータ上ã§å‹•作ã™ã‚‹æ§˜ã«ä½œã‚‰ã‚Œã¦ã„ã‚‹
「JAVA é‡è¦ç”¨èªž/JavaVMã€å‚ç…§
ç¾åœ¨ã€æ–°ã—ã„ãƒãƒ¼ãƒ‰ãŒä½œã‚‰ã‚ŒãŸéš›ã«ã¯ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãƒ¡ãƒ¼ã‚«ãƒ¼ã¯æ–°ã—ã„JVMを開発ã›ã–ã‚‹ã‚’å¾—ãªã„様ãªçжæ³ã«ãªã£ã¦ã„る。
実行方å¼
Javaã¯ä¸é–“言語(classファイル)ã«ã‚³ãƒ³ãƒ‘イルã—ã€
JVMãŒä¸é–“言語をインタープリタ方å¼ã§å®Ÿè¡Œã™ã‚‹ã€‚
ã“ã®ç‚ºã€ç´”粋ãªã‚³ãƒ³ãƒ‘イラ言語より処ç†é€Ÿåº¦ã¯åŠ£ã‚‹ãŒã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ—リタ言語ã«ã¯å‹ã‚‹
ã—ã‹ã—インタープリタ言語ã¨åŒç‰ã®äº’æ›æ€§ã‚’ä¿ã¦ã‚‹ã€‚
æ–¹å¼ | コンパイラ | インタプリタ | Java |
---|---|---|---|
å®Ÿè¡Œå½¢å¼ | マシン語 | 言語ã®ã¾ã¾ | Mix |
実行速度 | 速ㄠ| é…ã„ | ä¸é–“ |
命令種類 | 多ㄠ| å°‘ãªã„ | ä¸é–“ |
äº’æ›æ€§ | × | â—‹ | â—‹ |
コンパイラ ãƒãƒ¼ãƒ‰æ¯Žã«ç•°ãªã‚‹ |
インタープリタ ãƒãƒ¼ãƒ‰æ¯Žã«ç•°ãªã‚‹ |
JVM ãƒãƒ¼ãƒ‰æ¯Žã«ç•°ãªã‚‹ |
|
利用者ãŒã‚³ãƒ³ãƒ‘イルã™ã‚‹å¿…è¦ãŒã‚ã‚‹ | ãã®ã¾ã¾åˆ©ç”¨å¯ | ãã®ã¾ã¾åˆ©ç”¨å¯ | |
インストール | ä¸è¦ | インタープリタãŒåˆ¥é€”å¿…è¦ | JVMãŒåˆ¥é€”å¿…è¦ |
「辞書/インタープリタã€å‚ç…§
äº’æ›æ€§
Javaã®ç‰¹å¾´
ãƒ»äº’æ›æ€§ãŒé«˜ã„
・ソフトウェア寿命ãŒé•·ã„
JavaãŒæ™®åŠã—ãŸç†ç”±
本書発行時ã ã‘ã§ãªã2016å¹´ç¾åœ¨ã§ã‚‚ã€Javaã¯æ¥ç•Œå†…ã§ãƒˆãƒƒãƒ—ã®äº’æ›æ€§ã‚’æŒã£ã¦ã„る。
ãれã¯çµæžœçš„ã«ãã†ãªã£ãŸã ã‘ã§ã‚りJava言語やJVMã®ä»•様ãŒä»–ã®ã‚‚ã®ã‚ˆã‚Šã‚‚画期的ã«å„ªã‚Œã¦ã„ã‚‹ã¨ã„ã†è¨³ã§ã¯ç„¡ã„(ã¨æ€ã„ã¾ã™)。
ä¼¼ãŸæ§˜ãªä»•組ã¿ã§äº’æ›æ€§ã‚’高ã‚よã†ã¨ã—ãŸä¾‹ã¯å¤šã„ãŒå…¨ã¦å¤±æ•—ã¦ã„る。
ã¨ã¯è¨€ãˆJavaã¯ä»¥ä¸‹ã®ç†ç”±ã«ã‚ˆã‚Šä¸Šè¿°ã®äº’æ›æ€§ã€ã‚½ãƒ•トウェア寿命ã®é•·ã•を実ç¾ã—ã¦ã„る。
・オブジェクト指å‘言語ã§ã‚る為ã«ä¼æ¥ã‹ã‚‰ã®å‚ç”»ãŒå¤šã‹ã£ãŸ
・JCPã®ä»•組ã¿ã«ã‚ˆã‚Š(䏀伿¥ã‚„一個人ã§ãªã)社会的ã«èªã‚ã‚‰ã‚ŒãŸæ©Ÿèƒ½ã ã‘ãŒæ¨™æº–化ã•れる為ã€å…¨ã¦ã®æ©Ÿèƒ½ã«ç„¡é§„ãŒç„¡ã„。
「Javaé‡è¦ç”¨èªž/JCPã€å‚ç…§
・多ãã®äººé–“ãŒJavaã«é–¢ã‚ã£ã¦ã„ã‚‹ã‹ã‚‰ã“ã大手ソフトウェアベンダーãŒJavaã®ä½¿ç”¨ã‚’䏿¢ã—ã¦ã‚‚Javaã®ä½¿ç”¨ã‚’継続ã™ã‚‹äººé–“ãŒå¤šæ•°å±…る事ã§Javaã®ç¤¾ä¼šæ€§ã¯ä¿ãŸã‚Œã‚‹ã€‚
・ãŸã¾ãŸã¾ãƒãƒ¼ãƒ‰é¢ã®æ€§èƒ½å‘上ã€ä¾¡æ ¼ä½Žä¸‹ãŒæ€¥æ¿€ã«é€²ã‚“ã æ™‚期ã ã£ãŸ
ç‰ã®ç†ç”±ã«ã‚ˆã‚Šå¾ã€…ã«JVMã«å¯¾å¿œã™ã‚‹ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãƒ™ãƒ³ãƒ€ãƒ¼ãŒå¤šããªã‚Šã€
多ããªã‚‹ã¨å¯¾å¿œã—ã¦ã„ãªã„ベンダーã¯å¼±ã¿ã«ãªã‚‹ç‚ºã«ãã“も対応ã›ã–ã‚‹ã‚’å¾—ãªããªã‚Šä»Šã«è‡³ã‚‹
ã¨ã„ã†æµã‚Œã§ã™ã€‚
ã‚‚ã£ã¨ã‚‚ç¾åœ¨ã€PC上ã§ãƒ—ãƒã‚°ãƒ©ãƒ を動作ã•ã›ã‚‹ãƒ‹ãƒ¼ã‚ºã¯æ¸›ã£ã¦ãŠã‚Šã€
多ãã¯ã‚µãƒ¼ãƒãƒ¼ä¸Šã§å‹•作ã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã¯ãƒ–ãƒ©ã‚¦ã‚¶ã§æ“作ã™ã‚‹ã¨ã„ã†å½¢ãŒä¸€èˆ¬çš„ã§ã™ã€‚
クライアントã«JVMã¯å¿…è¦ç„¡ã„
インターãƒãƒƒãƒˆã‚„フãƒãƒ³ãƒˆã‚¨ãƒ³ãƒ‰æŠ€è¡“ã®æ™®åŠãŒé€²ã‚“ã çµæžœã§ã™ãŒã€
昔ã‹ã‚‰ã“ã®çжæ³ã§ã‚れã°JavaãŒã“ã“ã¾ã§æµ¸é€ã™ã‚‹äº‹ã¯ç„¡ã‹ã£ãŸã‹ã‚‚知れã¾ã›ã‚“。
メモリ管ç†
ã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸ
stack:ç©ã¿é‡ã
メソッド呼ã³å‡ºã—時ã€
・メソッドã¸ã®å¼•æ•°
・メソッドã‹ã‚‰ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã¶å ´åˆã®æˆ»ã‚Šå€¤
・ãã®ãƒ¡ã‚½ãƒƒãƒ‰å†…ã§å®£è¨€ã•れるãƒãƒ¼ã‚«ãƒ«å¤‰æ•°
ç‰ã®æœ€ä½Žé™å¿…è¦ãªãƒ‡ãƒ¼ã‚¿ã‚’確ä¿ã™ã‚‹
ãã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’抜ã‘ã‚‹ã¨å‰Šé™¤ã•れる(上書ãã•れる)
メソッドを終了ã™ã‚‹ã¨ä½¿ãˆãªã„(システムãŒè‡ªå‹•管ç†)
大é‡ã®ãƒ‡ãƒ¼ã‚¿ã‚’扱ãˆãªã„
ãƒ’ãƒ¼ãƒ—é ˜åŸŸ
stack:ç©ã¿é‡ã
Javaã€.Netã§ã¯ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒç½®ã‹ã‚Œã‚‹ãƒ¡ãƒ¢ãƒªé ˜åŸŸ
・メソッド間ã§å¼•ãæ¸¡ã—å¯èƒ½
ãƒ»å¤§é‡æ“作å¯èƒ½
・削除å¯èƒ½
プãƒã‚°ãƒ©ãƒ é ˜åŸŸ
・ソースコード
・リテラル
ç‰ãŒä¿å˜ã•ã‚Œã‚‹é ˜åŸŸ
他言語ã¨ã®é•ã„
C言語 | Java | |
---|---|---|
オブジェクトã®ä½œæˆå ´æ‰€ | ・スタック ・ヒープ ã©ã¡ã‚‰ã«ã§ã‚‚ç½®ã‘ã‚‹ |
ヒープã®ã¿ |
オブジェクトã®ãƒã‚¤ãƒ³ã‚¿æ“作 | â—‹ P* p = ~; p += 100; |
× |
オブジェクト変数ã¸ã®ä»£å…¥å€¤ | 別ã®åž‹ï¼šâ—‹ P* p = "Java" |
別ã®åž‹ï¼šÃ— |
オブジェクトã®ç ´æ£„ | 手動 | 自動(ガベージコレクション) |
「ãƒã‚¤ãƒ³ã‚¿ã®å•題点ã€å‚ç…§
é…列
C言語 | Java | |
---|---|---|
扱ㄠ| 自由 | オブジェクト ï¼ãƒ’ãƒ¼ãƒ—é ˜åŸŸã«ã—ã‹ç½®ã‘ãªã„ ï¼ã‚¬ãƒ™ãƒ¼ã‚¸ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®å¯¾è±¡ |
indexæ•°ã‚’è¶…ãˆãŸæ“作 | â—‹ | × IndexOutOfBoundsException |