Skip to content

Java

Compile and Execute Java Online

Overview

About Java

Java ‐ 通信用語の基礎知識

JDK 1.0 JDK 1.1 J2SE 1.2 J2SE 1.3 J2SE 1.4 J2SE 5.0 J2SE 5.1 Java SE 6 Java SE 7 Java SE 8

JVM

Docker

Library

Articles

Maven

Proxy settings

Oracle JDBC

> mvn install:install-file -Dfile=path\to\ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar
pom.xml
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0</version>
    </dependency>

WebJars

Gradle

文法

JSP / Servlet

HTTP - Request

RequestDispatcher

forward
渡されたリクエストを維持したまま別の JSP / Servlet に引き渡す

Content-Disposition

RFC1806: The Content-Disposition Header - https://www.ietf.org/rfc/rfc1806.txt - RFC1806 日本語訳 - [RFC/技術資料] ぺんたん info

inline
もしディスプレイ上にメッセージが自動的に表示される事を意図しているなら、bodypart は inline' としてマークされるべきである。マルチパートメッセージの普通のセマンティクスから、inline bodypart が存在する順序で提示されるべきである。</dd> <dt>attachment</dt> <dd>bodypart はメールメッセージのメインボディから分割されていることを示すためにattachment' として明示することができ、それらの表示は自動的ではなくユーザアクションしだいとすべきである。MUA はその代わりに、ビットマップ端末のユーザには添付データのアイコン表現を、キャラクタ端末には添付データの表示や保存を選択できるようにリストを提示するかもしれない。

POST Request Body

String jsonString = IOUtils.toString(request.getInputStream());
JSONObject json = new JSONObject(jsonString);
MyObject myObject = new Gson().fromJson(jsonString, MyObject.class);

HTTP - Response

java.lang.IllegalStateException: Response has already been committed

ファイルのダウンロード処理を行なっているときに起きる。クライアント(ブラウザなど)にレスポンスを引渡し済みですよ、という意味。

Application Server

GlassFish

The Open Source Java EE Reference Implementation

Payara Server

Derived from GlassFish, with 24/7 Production Support.

EJB

Java Coding

JavaのList・Mapのfor文

Listのfor文

List<String> list = new ArrayList<String>();

// 拡張for文:推奨
for (String item : list) {
}

// イテレータ:拡張for文が使えない場合に使用(要素の追加や削除が必要な場合など)
for (Iterator<String> it = list.iterator(); it.hasNext(); ) {
    String item = it.next();
}

// インデックス:非推奨
for (int i = 0, size = list.size(); i < size; i++) {
    String item = list.get(i);
}

Mapのfor文

Map<String, ValueClass> map = new HashMap<String, ValueClass>();

// 拡張for文:キーをループ
for (String key : map.keySet()) {
}

// 拡張for文:値をループ
for (ValueClass val : map.values()) {
}

// 拡張for文:キーと値をループ
for (Map.Entry<String, ValueClass> entry : map.entrySet()) {
    String key = entry.getKey();
    ValueClass val = entry.getValue();
}

配列のfor文

SomeClass array[] = { new SomeClass(), new SomeClass() };

// 拡張for文:推奨
for (SomeClass item : array) {
}

// インデックス:非推奨
for (int i = 0, len = array.length(); i < size; i++) {
    SomeClass item = array[i];
}
via - JavaのList・Mapのfor文処理覚書 - よんちゅBlog

Set

Map

HashMap k=vの並びが適当
Hashtable keyが降順(数が大から小へ数えた順番)になる
TreeMap keyが昇順(数が小から大へ)になる
LinkedHashMap k=vを入れた順番に並ぶ

How to convert a Map to List in Java?

Map<Key,Value> map;
List<Value> list = new ArrayList<Value>( map.values() );

ファイルIO

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;

public static String readAll(final String path) throws IOException {
    return new String(Files.readAllBytes(Paths.get(path)), StandardCharsets.UTF_8);
}

via - 【Java】テキストファイル全体を読み込み文字列を返すメソッド - Qiita

正規表現

"Apple iPhone 5s Silver".matches( "^.*iPhone.*$" ); // true

リフレクション

cf. Apache Commons - BeanUtils

Singleton

  • Singleton パターン - Wikipedia
    final class Singleton {
      private Singleton(){}
      private static class SingletonHolder {
        private static final Singleton instance = new Singleton();
      }
      public static Singleton getInstance() {
        return SingletonHolder.instance;
      }
    }
    

String.format

String s1 = "equipment";
String s2 = "instruments";
String.format("All their %s and %s are alive.", s1, s2);
//=> All their equipment and instruments are alive.
String.format("%05d", 1);
//=> 00001
String.format("%,3d", 123456789)
//=> 123,456,789

NVL

File

Eclipse

Database

Flyway

Tips

jarファイルを1つにまとめる

手順メモ

  1. Pluginインストール
  2. Eclipseをclean起動
  3. 適当な新Javaプロジェクトをつくる
  4. プロジェクトに適当なフォルダをつくる
  5. まとめたいjarをそこに全部いれる
  6. プロジェクトフォルダ右クリック「Fat Jar のビルド」
  7. ダイアログが出たらまとめjarの名前つける
  8. 対象に追加してチェック
  9. 実行しておわり

JAR・WAR・EAR の違い

JAR, WAR, EAR はいずれもJava仕様に準拠して定義されたZIP形式の圧縮ファイルである。 全てZIPファイルなので、解凍ツールなどで解凍して中身を見ることができる。 WAR, EARのフォルダ構造はJ2EE仕様によって明確に決められている。 特徴をまとめると、以下の通り: - JARファイル
クラスファイルや設定ファイル(XML形式のものなど)がまとめられている。
多くのクラスライブラリはこの形式で配布されている。
WEBアプリケーションにおいては、MVCモデルにおける"M"の部分がまとめられる。
※ "JAR"はJava ARchiveの略 - WARファイル
MVCモデルにおける"VC"の部分がまとめられる。
すなわち、クラスファイル(servlet)、設定ファイルのほか、JSPやHTMLファイルも含まれる。
また、web.xmlが含まれ、TomcatなどのアプリケーションサーバにWARファイルを配布すると、これを元にデプロイされる。
※ "WAR"はWeb Application Archiveの略 - EARファイル
のWARファイル、(EJB)JARファイルを含む。
また、application.xmlが含まれ、アプリケーションサーバを含んだJ2EEコンテナ(JBoss, WebSphereなど)に配布すると、これを元にデプロイされる。
※ "EAR"は"Enterprise Archive"の略

In J2EE application, modules are packaged as EAR, JAR and WAR based on their functionality

JAR: EJB modules which contain enterprise java beans (class files) and EJB deployment descriptor are packed as JAR files with .jar extenstion

WAR: Web modules which contain Servlet class files, JSP Files, supporting files, GIF and HTML files are packaged as JAR file with .war (web archive) extension

EAR: All above files (.jar and .war) are packaged as JAR file with .ear (enterprise archive) extension and deployed into Application Server.

RePackaging war / ear

解凍

jar xvf career.ear

パッケージング

jar cvf career.war *

jar cvf career.ear *

オプションの意味

c  新規jarファイルを作成
v  コマンドラインに処理内容を表示
f  jarファイル名を指定する
x  jarの中身を取り出す
t  jarファイルの中身を表示

※ jarコマンドはjdkのbinに入っているのでパスを通しておく