Differences between revisions 2 and 3
Revision 2 as of 2017-10-04 15:22:52
Size: 4753
Comment:
Revision 3 as of 2017-10-05 15:57:10
Size: 769
Comment:
Deletions are marked like this. Additions are marked like this.
Line 18: Line 18:
== ダイジェスト ==

=== 概念編 ===


==== 言語処理系 ====


===== 言語処理系: コンパイラとインタープリタ =====
{{attachment:048.jpg}}

-----
==== 仮想機械アーキテクチャ ====

 * JVM(Java Virtual Machine)
  * コンパイルしたコード(オブジェクトコード)が,いろいろなCPU上で動くように,仮想機械アーキテクチャを採用している
  * 仮想機械はソフトウェアで実現されている
  * JVMをハードウェアでネイティブに実行できるCPUもある.
   * たとえば,Phone/iPhone 3G/Raspberry Piなどにも採用されているARM CPU のJazelleテクノロジ
    * 参考: [[http://ja.wikipedia.org/wiki/ARMアーキテクチャ]]
 * javacコマンド=コンパイラ(翻訳系)
  * Javaのソースコードを,JVMの機械語(バイトコード)へ変換する言語処理系
   * 参考: [[http://ja.wikipedia.org/wiki/コンパイラ]]
   * 参考: [[http://ja.wikipedia.org/wiki/バイトコード]]
 * javaコマンド=JVMの実行系(インタープリタとして)
  * JVMの機械語(バイトコード)を逐次実行するインタープリタ
   * 参考: [[http://ja.wikipedia.org/wiki/インタプリタ]]
 * classファイルは,Javaソースプログラムをコンパイルした結果であるJVM(Java Virtual Machine=仮想機械)用機械語(バイトコード)が入っています.
  * 参考: [[http://ja.wikipedia.org/wiki/Java仮想マシン]]
  * 参考: [[http://ja.wikipedia.org/wiki/Javaバイトコード]]
 * JVMをハードウェアでネイティブに実行できるCPUもある.
  * たとえば,Phone/iPhone 3G/Raspberry Piなどにも採用されているARM CPU のJazelleテクノロジ
   * 参考: [[http://ja.wikipedia.org/wiki/ARMアーキテクチャ]]
 * C言語やC++言語では,一般的には,特定のCPUの機械語を生成するネイティブコードコンパイラが使われます
  * たとえば,Windowsのコマンドには,拡張子がexeとなっている実行可能ファイルがありますね.このファイルの中には,使用しているPCのCPUの機械語が入っています(機械語は二進数として読めますので,バイナリー=binaryと呼ぶことがあります)
  * これに対し,現実のハードウェアCPUではなく,仮想的にソフトウェアで実現されたCPU(いわばCPUシミュレータですね)を仮想機械と呼びます.
   * JVMはそうした仮想機械の一つであり,クラスファイルはそのJVMの機械語プログラムです.
   * クラスという単位がどういうものかは,今後授業の中でやっていきますが,1つのクラス定義に対しclassファイルは一つ作られます




===== 仮想計算機アーキテクチャ =====
{{attachment:051.jpg}}

===== コンパイラ方式とインタープリタ方式のハーフ =====
{{attachment:052.jpg}}


===== 仮想計算機アーキテクチャ =====
{{attachment:055.jpg}}

===== コンパイルと仮想計算機での実行 =====
{{attachment:082.jpg}}

===== コンパイルと仮想計算機での実行 =====
{{attachment:083.jpg}}

-----
=== 実習編 ===

==== 最初のプログラム ====

 * コンパイル
  * javac P001Hello.java
 * 実行
  * java P001Jello

===== 最初のプログラム =====
{{{#!highlight java
// 注釈
public class P001Hello {
    public static void main( String[] args ) {
        System.out.println("こんにちは");
    }
}
}}}

===== 当面の間のプログラム概形(テンプレート) =====
{{attachment:078.jpg}}
 * 当面の間のプログラム概形(テンプレート)

{{{#!highlight java
// 注釈
public class クラス名 {
    public static void main( String[] args ) {
        // 実行文(セミコロンで終わる)
        // ....
        // 実行文(セミコロンで終わる)
    }
}
}}}
-----
## <<Include(Common/02/Digest)>>
<<Include(2017/02/Digest)>>


授業-ソフトウェア工学(IndexPage) >> 2017年度-ソフトウェア工学 >> 2017年度-ソフトウェア工学-第02回 >> ダイジェスト


授業-2017年度-ソフトウェア工学-第02回-ダイジェスト (SoftEng201702Digest)

(公開) 





ダイジェスト

概念編

言語処理系

言語処理系: コンパイラとインタープリタ


仮想機械アーキテクチャ

  • JVM(Java Virtual Machine)
    • コンパイルしたコード(オブジェクトコード)が,いろいろなCPU上で動くように,仮想機械アーキテクチャを採用している
    • 仮想機械はソフトウェアで実現されている
    • JVMをハードウェアでネイティブに実行できるCPUもある.
  • javacコマンド=コンパイラ(翻訳系)
  • javaコマンド=JVMの実行系(インタープリタとして)
  • classファイルは,Javaソースプログラムをコンパイルした結果であるJVM(Java Virtual Machine=仮想機械)用機械語(バイトコード)が入っています.
  • JVMをハードウェアでネイティブに実行できるCPUもある.
  • C言語やC++言語では,一般的には,特定のCPUの機械語を生成するネイティブコードコンパイラが使われます
    • たとえば,Windowsのコマンドには,拡張子がexeとなっている実行可能ファイルがありますね.このファイルの中には,使用しているPCのCPUの機械語が入っています(機械語は二進数として読めますので,バイナリー=binaryと呼ぶことがあります)
    • これに対し,現実のハードウェアCPUではなく,仮想的にソフトウェアで実現されたCPU(いわばCPUシミュレータですね)を仮想機械と呼びます.
      • JVMはそうした仮想機械の一つであり,クラスファイルはそのJVMの機械語プログラムです.
      • クラスという単位がどういうものかは,今後授業の中でやっていきますが,1つのクラス定義に対しclassファイルは一つ作られます

仮想計算機アーキテクチャ

コンパイラ方式とインタープリタ方式のハーフ

仮想計算機アーキテクチャ

コンパイルと仮想計算機での実行

コンパイルと仮想計算機での実行


実習編

最初のプログラム

最初のプログラム

   1 // 注釈
   2 public class P001Hello {
   3     public static void main( String[] args ) {
   4         System.out.println("こんにちは");
   5     }
   6 }

当面の間のプログラム概形(テンプレート)

  • 当面の間のプログラム概形(テンプレート)

   1 // 注釈
   2 public class クラス名 {
   3     public static void main( String[] args ) {
   4         // 実行文(セミコロンで終わる)
   5         //       ....
   6         // 実行文(セミコロンで終わる)
   7     }
   8 }


SoftEng: SoftEng201702Digest (last edited 2017-10-05 15:57:10 by TadashiIijima)