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¶
- JVMとGCのしくみ - ITエンジニアとして生きる
- Permanent領域(非ヒープ領域)
- New領域(ヒープ領域)
- Old領域(ヒープ領域)
- JVMのチューニング - ITエンジニアとして生きる
- Permanent領域のチューニング
-XX:PermSize
Permanent 領域の初期値-XX:MaxPermSize
Permanent 領域の最大値
- ヒープ領域のチューニング
-Xms
ヒープ領域(New領域+Old領域)の初期値-Xmx
ヒープ領域(New領域+Old領域)の最大値
Docker¶
Library¶
Articles¶
- プログラミング未経験だった僕がJava EE 6を学び始めて1年で読んだ良記事まとめ
- Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
- 3つのフレームワークで学ぶエンタープライズJava開発入門(1):Strutsを使い続けることの問題点&現在有力なJava EE、Spring、Play Frameworkの基礎知識とアーキテクチャ - @IT
- Javaのマイクロフレームワーク ― この新トレンドは見逃せない | インフラ・ミドルウェア | POSTD
- Javaでのファイルコピー史 - Qiita
Maven¶
- Maven | TECHSCORE(テックスコア)
- The Central Repository Search Engine
- Maven – Guide to Coping with Sun JARs
- Maven2でEARプロジェクト:Javaってまだいけますか
Proxy settings¶
- Maven2にプロキシを教える
- Maven – Guide to using proxies
C:\java\apache-maven-3.3.3\conf\settings.xml
C:\Users\username\.m2\settings.xml
Oracle JDBC¶
> mvn install:install-file -Dfile=path\to\ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0</version> </dependency>
WebJars¶
Gradle¶
-
Gradle使い方メモ - Qiita ★わかりやすいまとめ
-
Gradleで文字エンコーディングを指定する方法 - 豆無日記
tasks.withType(AbstractCompile)*.options*.encoding = tasks.withType(GroovyCompile)*.groovyOptions*.encoding = 'UTF-8'
文法¶
- 2010-06-23 - sardineの日記
静的初期化子(スタティック・イニシャライザ) - RuntimeExceptionとは : JavaA2Z
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]; }
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
- Javaのオブジェクトの値をリフレクションでMapに格納するメモ | simultechnology.blog
- 文字列で指定したメソッドを呼び出すには? - @IT
- JDK5.0でreflectionを使用しようとすると警告される理由 - くろのまったりシステム開発日記。
- メモ用Javaとか java 【private , getDeclaredMethod , invoke】
メソッド名を動的に指定して実行 - Java でリストをマップに変換する | UB Lab.
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¶
- Flyway • Database Migrations Made Easy.
- Flywayで簡単DBマイグレーション | Developers.IO
- FlywayでDBスキーマのマイグレーションをしてみた | Siguniang's Blog
Tips¶
jarファイルを1つにまとめる¶
- のjarファイルを1つに纏める - koichi’s swap memory
- Fat Jar Eclipse Plug-In
- クラウドサービスプラットフォーム Cosminexus:Eclipse開発で使用するJARをユーザー・ライブラリーとしてまとめる:ソフトウェア:日立
手順メモ¶
- Pluginインストール
- Eclipseをclean起動
- 適当な新Javaプロジェクトをつくる
- プロジェクトに適当なフォルダをつくる
- まとめたいjarをそこに全部いれる
- プロジェクトフォルダ右クリック「Fat Jar のビルド」
- ダイアログが出たらまとめjarの名前つける
- 対象に追加してチェック
- 実行しておわり
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に入っているのでパスを通しておく