0.はじめに
対象者など
対象者
- 普段Javaを使っている人
- Java8から利用できるラムダ式を使ったことがない人
前提知識
- 基本的なJavaの使い方
伝えたいこと
- コマンドでJavaを実行する方法
- ラムダ式
参考図書
『Java本格入門
~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで』技術評論社
目次
- Javaの概要
- IDEを使わずコマンドでJavaを実行
1. Javaの概要
Javaの特長
1995年、Sun Microsystemより発表されたプログラミング言語
- オブジェクト指向を前提としている
- プラットフォーム非依存。
- OSごとにプログラムを修正する必要がない。
- Java仮想マシン(Java VM)がOSの依存部分を吸収
- 利用者が多い
- 優れたライブラリ、ミドルウェアが多い
Java仮想マシン(Java Virtual Machine: JVM)の図
※ SlideShare: Java Night Seminar for Java Begineers 引用
Javaの3つのエディッション
- Java SE(Standard Edition)
- Java VMや標準的なAPIなど。
- Java EE(Enterprise Edition)
- サーバアプリケーションの開発に必要な機能(Webサービスなど)
- Java ME(Micro Edition)
- 家電製品、携帯電話などの組み込み系
Javaの環境
-
JRE(Java Runtime Environment)
- Javaアプリケーションの実行環境。
- jarファイルやクラスファイルを実行できる。
-
JDK(Java Development Kit)
- Javaアプリケーションの開発環境。
- コンパイラー、デバッガなどのツールが含まれている。
※「Java本格入門」P16-17参照
Javaの概念図
※ Java Platform Standard Edition 8ドキュメント 引用
2. IDEを使わずコマンドでJavaを実行
IDEを使わずにコマンドで試す目的
- IDEが行ってくれている内容を、理解する
- IDEでできること、できないことを知る
- IDEで適切な設定が行える
- IDEで発生したエラーを解決できるようになる
※個人的見解
事前準備
- 環境変数PATHに、JDKのbinフォルダを追加。
- java, javacコマンドが使えるようにする。
[Try] コマンドでコンパイル&実行
- javacコマンドでコンパイルすると、
sample\Hello.class
が生成される。
javac sample\Hello.java
package sample;
/** Print Hello World */
public class Hello {
public static void main(String[] args) {
System.out.println("Hello");
}
}
- javaコマンドで実行する
java sample.Hello
REM ⇒ "Hello"
Javaクラスファイル
Javaクラスファイルは、Java仮想マシン (JVM) 上で実行可能なJavaバイトコードを含む(.class拡張子付きの)ファイルである。
[Try] javapコマンドで逆アセンブル
javap -verbose sample\Hello
3. Javaの基本的な用語
クラスパス
外部ライブラリを参照(jarファイルなど)するのに、設定する必要がある。
クラス・パスは、Java Runtime Environment(JRE)がクラスおよびその他のリソース・ファイルを検索するパスです。
クラス検索パス(クラス・パス)は、JDKツールを呼び出すときに-classpathオプションを付ける(推奨される方法)か、CLASSPATH環境変数を設定して設定できます。-classpathオプションが推奨されているのは、アプリケーションごとに個別に設定できるので、ほかのアプリケーションに影響を与えたり、ほかのアプリケーションからこの値が変更されたりすることがないためです。
jarファイル
Java ARchiveの略。
jarコマンドは、ZIPおよびZLIBの圧縮形式に基づいた汎用のアーカイブおよび圧縮ツールです。ただし、jarコマンドの主な目的は、いくつかのJavaアプレットやアプリケーションを1個のアーカイブにパッケージ化することです。
[Try] jarファイルの拡張子を"zip"に変更して、zip展開できることを確認。
[Try] jarコマンドでjarファイルを展開。
REM -x: 展開, -v:詳細情報出力, -f:ファイル名指定
jar -xvf sample.jar
[補足] マニフェストファイル
jarファイル中には、META-INF/MANIFEST.MF
というマニフェストファイルがある。
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: 1.5.0_22 (Sun Microsystems Inc.)
Built-By: hen
Build-Jdk: 1.5.0_22
Implementation-Title: Commons Lang
Implementation-Vendor: The Apache Software Foundation
Implementation-Vendor-Id: org.apache
Implementation-Version: 3.0
~以下省略~
※ commons-lang3-3.0.jar のマニフェストファイル
マニフェストファイルには、バージョンや、jarファイルの作成に使用したツールが記述される。
Javaコマンドのオプション
Javaオプションのカテゴリの一部。
-
標準オプション
- Java仮想マシン(JVM)のすべての実装でサポートされる
-
非標準オプション
- Java HotSpot仮想マシンに固有の汎用オプション。すべてのJVM実装でサポートされる保証はない
-
-X
から始まる
-
拡張ランタイム・オプション
- Java HotSpot仮想マシンの操作の特定の領域のチューニングに使用するための開発者用オプション
-
-XX
から始まる - ブール-XXオプションはプラス記号で有効、マイナス記号で無効を表す。(
-XX:+OptionName
,-XX:-OptionName
)
※ Oracle リファレンス java 参照
使ったことがあるJavaオプション
-
-Dproperty=value
: システム・プロパティの値を設定-
-Duser.language=ja
,-Duser.country=JP
など - Javaソースでは、
System.getProperty("user.language");
で値を取得できる - Tomcat Configure Managerでは、JVM引数で指定
-
-
-Xmxsize
:メモリー割当てプールの最大サイズ(バイト単位)を指定-
-Xmx1024m
:1024MBを指定
-
-
-XX:+UseGCLogFileRotation
:GCログのローテーションを有効にする
※ 参考サイト
Java HotSpot VM Options
付録
Java EE
-
javax.*
パッケージ(Java SEでもjavaxから始まるクラスもある) - Tomcatのライブラリにも含まれている(servlet-api.jarなど)
Javaのバージョン
Javaコマンドのバージョンの確認方法。
java -version
⇒ java version "1.8.0_131"
オラクルでは定期的に更新が利用可能になります。更新が発生すると、バージョン文字列に更新版のバージョン番号も含まれます。つまり、JDK 8 update 5(JDK 8u5)ではバージョン文字列は"1.8.0_5"になります。
※ Java Platform, Standard Edition 8の名前とバージョン 引用
Javaの環境変数
Javaを使うアプリケーション(Tomcatなど)は、環境変数JAVA_HOME
やJAVA_OPTS
などを設定する場合がある。