コンピュータシステム

・ハードウェア
パソコン、キーボード、マウス、プリンターなど。

・OS
Windows,Linux,UNIX
コンピューターの基本機能を提供するもの。

・ソフトウェア
コンピュータを動かすプログラム。

・アプリケーション
OS上で動くソフトウェア全般。
アプリと呼ばれているもの。

ミドルウェア
OSとアプリケーションの中間で動くソフトウェア。

・プラットフォーム
プログラムを実行するハードウェア、OS。

------------------------

文字コード
文字に割り当てられたID(識別子・識別番号)。

・テキスト
文字コードのみで作った文字・文字列。

・バイナリ
テキスト以外の2進数(0,1)データ・ファイル。

・オブジェクトコード
マシン語
コンピュータが実行可能な形式のコード。
バイナリ形式のオブジェクトファイル。

ソースコード
人間が読み書き可能な形式のコード。
プログラミング言語で記述されたテキスト形のデータ。

コンパイル
ソースコードをオブジェクトコードに変換すること。
コンパイルを行うのがコンパイラ

コンパイラインタプリタの違い
コンパイラ
実行前にプログラムをまとめてマシン語に変換する。
代表言語)C,C++,COBOL,FORTRAN

インタプリタ
実行時にプログラムを一行ずつマシン語に変換する。コンパイラと比較した場合、時間がかかる。
代表言語)Perl,PHP

------------------------

Java
インタプリタコンパイラの両方の性質を持つ言語。
ただし、現在の主流は、「実行時コンパイル」(JITコンパイラによる)。

Javaバイトコード
どのプラットフォームでも、動作可能とするために生成する、ソースコード(.java)とオブジェクトコードの中間のコード、バイトコード(.class)のこと。

・javacコマンド、javaコマンド
ソースコード(.java)
↓←javac(実行前コンパイル)
Javaバイトコード(.class)
↓←java(実行時コンパイル)
オブジェクトコード

------------------------

・パッケージ
定義:複数のクラス(.class)ファイル(クラスやインターフェース)を管理するために、まとめて、分類し、名前をつけたもの。インポート文で宣言する場合の最大の単位。
Javaは仕様上、クラス(.class)ファイルを必ずどこかのパッケージに収める必要がある。よって、パッケージを明示していないクラス(.class)ファイルは「デフォルトパッケージ」という形で取り扱っている。

参考:IT専科 Java入門>パッケージ
http://www.itsenka.com/contents/development/java/package.html

・ライブラリ
多くのプログラムが作成されている場合に、その中のどのプログラムにとっても共通な処理として必要と考えられる関数、機能(プログラム)、データ(定数定義)などをまとめたファイル。
多くのパッケージからできている。
参考:ライブラリとプログラムの関係
http://ossforum.jp/node/555

・クラスライブラリ
〜〜

API
OSが提供する機能をアプリケーションから呼び出せるようにするソフトウェアのこと。
JavaでいうAPIはクラスライブラリのこと。

参考:Java API、クラスライブラリ、パッケージの関係。
https://www.google.co.jp/amp/sunjava.seesaa.net/article/50485694.html%3Famp%3D1

・ライブラリの種類
⑴静的ライブラリ
プログラム(実行形式)の構築時、組み込まれるライブラリ。実行ファイルに直接組み込まれる。
⑵共有ライブラリ
プログラム実行時、メモリ上に展開されるライブラリ。
⑶動的ライブラリ
プログラム実行中、必要な時に読み込まれるライブラリである。

参考:コトバンク「ライブラリー」
https://kotobank.jp/word/%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%83%BC-14019
参考:ライブラリの種類とライブラリの利用方法
http://ossforum.jp/node/556

・動的リンク
プログラムの起動時もしくは起動後のプログラム実行中に初めてライブラリを結合される方式。共有ライブラリは動的リンクの仕組みを利用して実現される。

・静的リンク
ソースコードコンパイル後にオブジェクトファイルとライブラリとを結合させて、実行ファイルを作成する方法。

参考:ライブラリとプログラムの関係
http://ossforum.jp/node/555

------------------------

・ビルド
ソースコードコンパイルし、使っているライブラリにリンクする。

・ビルドツール
Maven

フレームワーク
〜〜

------------------------
Spring Framework

〜〜

・CI

〜〜

・DI

〜〜

AOP

〜〜

MVC

〜〜