JAVA関連のことを調べてみた2019年11月06日

JAVA関連のことを調べてみた2019年11月06日

Spring Boot 2.2 ドキュメントまとめ

## Spring Boot 2.2.0 リリース情報

– [Spring Boot 2\.2\.0](https://spring.io/blog/2019/10/16/spring-boot-2-2-0)
– [Spring Boot 2\.2 Release Notes](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.2-Release-Notes)

## 対応している Java のバージョン

Long-Term Support (LTS) バージョンである Java 8, Java 11 は完全にサポート。
LTS ではない Java 10, Java 12, Java 13 は技術的に可能な限り対処するが、サービスレベルの保証は提供されない。

[Spring Boot 2\.2\.0](https://spring.io/blog/2019/10/16/spring-boot-2-2-0)

> Following on from Spring Framework 5.2’s sup

元記事を表示

Linux OSデフォルト javaコマンド切り替え方法

#Linux OSデフォルト javaコマンド切り替え方法
Linuxで利用できるjavaとしてopensourceのopenjdkやadoptjdkが存在。デフォルトで使うjavaの切り替え方法

“`ruby:デフォルトのjava切り替え方法

#java切り替え
[root@XXX ]# alternatives –config java

3 プログラムがあり ‘java’ を提供します。

選択 コマンド
———————————————–
* 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.amzn2.0.1.x86_64/jre/bin/java)
2 java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.231-2.6.19.1.amzn2.0.1.x86_64

元記事を表示

[悲劇]ジャバを愛したseasar

筆者は数少ないseasar1の利用者である。DIコンテナのseasar2ではなくseasar1だ。

## seasarとの出会い

 2003年くらいだったかなあ。筆者は当時とある金融系事業会社のシステム子会社にいた。その親会社の社長と役員が大株主側と折り合いが合わなくてスピンアウトし、別の金融系事業会社を作った。筆者も誘われたのだが元のシステムでつくりかけのものがあったので、これをリリースしてからまた考えたいと返事した気がする。相手先はそれを待ってられないし、システム子会社で過去に使ったことのある人達に連絡をとって、バックシステム、プライスコントローラー、PC向けオンライントレードシステムを作った。

 システム子会社で協力してもらったのは筆者がジョインする前で、詳しいことはよくわからないのだがあまり評判は良くない感じだった。でもシステム系のツテが少ないので、彼らしか選択肢がなかったらしい。なおデザイナーも同じ人だった。この会社に納品するときに受け入れテストを行ったらしいのだが、単体レベルが大量にでる状態で受け入れ検証どころではなかったらしく、新会社に顔出すたびにいろんな人に「今の

元記事を表示

人生初めてのプログラミングだからこそ、手軽な「メモ帳」を使うな!余計な災いを呼ぶよ!

#コードの内容以前に、何を書いても「不正な文字です」⇒挫折の恐れも#

これからプログラミングの勉強を始めようという方、きっと素晴らしい決意とやる気に満ちていると思います。
「まずプログラミングってどうやればいいの?」といろいろ検索していると、「**パソコン(Windows)に搭載されてるメモ帳機能でお手軽にプログラミングができるよ!**」という初心者向けの記事を目にすることがきっとあるでしょう。

**でもちょっと待って!**

いまから、私が人生初めて「**Java**」という言語でプログラミングをした際に、**「メモ帳を使ったせいで」エラーに悩まされて困った**体験をお話しします。

※ひとことで言えば、「メモ帳のBOMのせいで、UTF-8でコードを書くとコンパイルエラーになり、たとえコード自体が正しく書けていても『不正な文字です』と言われるのでやる気がどんどんそがれる」という話です。「その話なら知ってる」という方はこの先読まなくても大丈夫です。逆に「ん?何?」という方はぜひこの先をお読みください。

#メモ帳を使わずに成功する例#

プログラミング言語の初日にやることとして定

元記事を表示

Latest JavaTrends To Stay Updated in 2019

Latest Technologies of Java and Trends To Stay Updated in 2019

Java has been the most powerful programming language of the virtual world and over 10 billion devices using its applications are maintaining its legacy from years. The language has a strong compatibility feature to support almost any system. Thanks to numerous innovations and updates, technology has completely transformed to an amazing extent and become more compatible, scalable and flexible than before. The last year saw a rapid gr

元記事を表示

アプリケーションのトラブルシューティング

# 序文
ことの発端はwebアプリケーションのとある画面の応答性能が遅いと言う問題が出た。
環境の構築を任された後輩から色々弄ったらアプリからの応答がなくなったとのヘルプから調査を開始した。
原因は解消したのだが、原因特定までのロジックが知りたいとの依頼を受けた。
この辺は感覚知で解決していたのでまとめる意味を込めてアウトプットしてみます。

# 具体的に何があったのか?
APサーバであるjavaのヒープサイズの最大値を上げた事によってjavaが動作しなくなった。
OSの利用メモリは余裕で空いていたのですが、Javaが起動しない。
JDKが32bitの場合、最大利用メモリ数の上限が少ない事を知っていたので解決に至りました。

エラーログから特定したのですが、エラーログをコピるの忘れました。

# 問題解決までの簡単な思考
1. 相談者を疑う
相談者へ「何をどうしたらこうなった?」を聴取をして再現性を確認する
戻せるのであれば、作業前の状態に戻して作業を再現してもらう
戻せないなら、逆手順で手順のどこで事象が発生したかを確認(デバッグ?)する

1. アプリケーション内部で何が

元記事を表示

org.slf4j.Loggerを使った拡張ロガーを作成するための忘備録

# 概要

org.slf4j.Loggerは汎用的に使用できるが、業務アプリではログ出力レベルの統一が必要。
そのためビジネスルールで定義したトレースレベルのみ出力する拡張ロガーを作成する。

# 拡張ロガークラス

org.slf4j.Loggerをラップした独自ロガークラスを作成する。
出力方法はorg.slf4j.Loggerに任せるだけ
Debugレベルは開発時のみ出力する。

“`SystemLogger.java
/**
*
*/
package jp.co.product.system.common;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* ログ出力共通クラス
*
*/
public class SystemLogger {

private Logger logger;

/**
* コンストラクタ
*
* @param cls
* @see org.slf4j.LoggerFactory#getLogger(Class)
*/
p

元記事を表示

JavaでBufferdImageのRGB誤差が指定割合以内か確認する静的関数

## 背景
* 画像の変換処理がうまくいっているかのテストで、RGB値が多少変わってしまう現象と遭遇した
* 等価判定ができなかったので、どのくらいの誤差を割合で許容するか。という作りにした。
* ニッチなニーズかもしれないが、誰かの一助になることを願ってます。

## 動作確認環境
* Java8
* JUnit4

## Code
“`java
/**
* ピクセルごとのRed,Green,Blueの色の要素値をAssertします。
*
* 要素値の差(±)は 増減 5% まで許容してます。
*/
static void assertImages(BufferedImage actual, BufferedImage expected) {
assertThat(“比較している画像サイズが異なります(縦)”, actual.getHeight(), is(expected.getHeight()));
assertThat(“比較している画像サイズが異なります(横)”, actual.getWidth(), is(expected.getWidth

元記事を表示

javaのjshellとvar がおススメ過ぎます!

最近、Javaのイベントに行ったので、そのメモになります。

# jshell
## なにもの?
何者!かというと、気軽にJavaコマンドを実行できるツールです。
Rubyだと「irb」がありますよね。

Javaだと、、Eclipse を起動して、実行?もしくは、javacでコンパイルして、java で実行?
むっちゃ手間でした。

jshellを使うと、サクッと確認できます。
こんな感じ。タブで自動保管も出来るのがチョー便利です。

“`
D:\Program Files>jshell
| JShellへようこそ — バージョン13
| 概要については、次を入力してください: /help intro

jshell> System
シグネチャ:
java.lang.System

<ドキュメントを表示するにはタブを再度押してください>
jshell> System.out.p
print( printf( println(
jshell> System.out.println(“Hello World!!”);
Hello World!!

jshell>
`

元記事を表示

日本語形態素解析「kuromoji」を使う

kuromoji Home Page
kuromoji GitHub

Gradle

build.gradle

“`text

dependencies {
compile group: ‘com.atilika.kuromoji’, name: ‘kuromoji-ipadic’, version: ‘0.9.0’
}
“`

「-ipadic」は辞書です。

対応している辞書

  • kuromoji-ipadic
  • kuromoji-ipadic-neologd:future version
  • kuromoji-jumandic
  • kuromoji-naist-jdic
  • kuromoji-unidic
  • kuromoji-unid
元記事を表示

SpringBootの例外ハンドリング

# SpringBootの例外ハンドリング

## 概要
SpringBootにおいては、SpringMVCの機能を用いた例外ハンドリングやSpringBootのAutoConfigurationと組み込みサーバーを利用した例外ハンドリングなど複数の方法で例外を取り扱うことができる。
[公式リファレンス](https://docs.spring.io/spring-boot/docs/2.2.0.RELEASE/reference/html/)で述べられているが、ハンドリングが可能な範囲や仕組みが若干わかりにくいので主要な方法をまとめる。

## 例外ハンドリングの方法

### 一覧

|機能名|レイヤ|
|—|—|
|HandlerExceptionResolver|SpringMVC|
|ErrorPage|SpringBoot|
|ErrorController|SpringBoot|

### HandlerExcepitonResolver
“HandlerExceptionResolver“はSpringMVCの機能を利用した例外ハンドリングの方法である。

元記事を表示

Apache POIを使ってJavaからxlsxファイルを読み込み・生成するためのメモ

# この記事について
Apache POIを使ってみたい人が、コピペしながらExcelファイルを操作出来ることを目標としています。
ここで示す実装例は、あくまでも、Apache POIを動かすための最低限の実装であり、別途エラーハンドリングをする必要があります。
コードの動作を確認しているバージョンは4.1.0です。

# Apache POIの用意
こちらから用意できます。
https://poi.apache.org/download.html

# Apache POIにおけるオブジェクト
`org.apache.poi.ss.usermodel.Workbook`がxlsxファイルのブック全体を表します。

読み書き対象のxlsxファイルについて、`Workbook`オブジェクトを生成した後に、まず初めに対象のシートを指定します。これが`org.apache.poi.ss.usermodel.Sheet`です。

`Sheet`オブジェクトを`Workbook`オブジェクトから取得後、読み書き対象の行にを指定します。これが、`org.apache.poi.ss.usermode

元記事を表示

try-with-resourcesのclose時例外

“`java

public class Main {
public static void main(String… args) throws Exception {
try (Closable1 c1 = new Closable1(); Closable2 c2 = new Closable2()) {
// none
}
}

static class Closable1 implements AutoCloseable {
@Override
public void close() throws Exception {
System.out.println(“1 close.”);
throw new Exception(“1 failed”);
}
}

static class Closable2 implements AutoCloseable {
@Over

元記事を表示

コンストラクタで失敗してもインスタンスはある?

“`java
public class Main {

public static Main me;

public Main() throws Exception {
this.me = this;
throw new Exception(“constructor error.”);
}

public void method() {
System.out.println(“It’s me”);
}

public static Main main() {
return me;
}

public static void main(String… args) {
try {
Main main = new Main();
} catch (Exception e) {
System.out.println(“constructor failed.”);
}

元記事を表示

Basic Authentication with Java 11 HttpClient

In this article, we will create Java 11 HttpClient that accesses Basic Auth protected REST API resource using sync and async mode. We will use Kotlin for a reference implementation.
Spring Boot 2 based Basic Auth Server
You can directly download the Basic Auth Server from Github Repository and run it locally using the below command.
Starting the server using Gradle
“`$ ./gradlew bootRun
“`

Server will expose http://localhost:8080/api/health endpoint, which can be tested using the below curl

元記事を表示

【Java】キャメルケースやスネークケースといった記法を相互変換する【Jackson】

キャメルケースやスネークケースなどなど、`Java`で命名法則の相互変換といえば`Guava`が有名ですが、`Jackson`でもできるのでまとめます。

# やり方
`com.fasterxml.jackson.databind.PropertyNamingStrategy`に定義されている各種`Strategy`を利用すればできます。

例として、キャメルケースからスネークケースへの変換を示します。

“`java
public static String camelToSnake(String value) {
return new PropertyNamingStrategy.SnakeCaseStrategy().translate(value);
}
“`

その他の変換はソースコードやドキュメントをご覧ください。

# 補足
その他の手法として、`ModelMapper`や`Gson`には同等の機能が有りそうです。

– [Java \- キーがスネークケースになっているMapとBeanの変換|teratail](https://teratail.com/qu

元記事を表示

【Kotlin】リフレクションでコンストラクタの引数名を取得する

# TL;DR
– `Kotlin`のリフレクションで取れる`KClass`からは、コンストラクタの引数名が元の名前で取れる
– `Java`のリフレクションで取れる`Class`からは、コンストラクタの引数名が「`arg0`, `arg1`, `arg2`…」としか取れない
– 元が`Java`のコードから`KClass`を取得しても、コンストラクタの引数名は「`arg0`, `arg1`, `arg2`…」となり、元の引数名は取れない

# やること
以下のクラスから、コンストラクタの引数名を取り出します。

“`kotlin
data class Data(val sampleInt: Int, val sampleString: String)
“`

# やり方
以下2行でできます。

“`kotlin
val clazz: KClass = Data::class
val parameterNames: List = clazz.constructors.first().parameters.map { it.name }

pri

元記事を表示

Java 二つのListを順番無視、null無視、重複無視で等値判定を行う

目次 ⇒ [Javaアルゴリズムライブラリ-Artery-サンプル](https://qiita.com/artery/items/6ae578a6665457db4511)

“`Q01_05.java
package jp.avaj.lib.algo;

import java.util.List;

import jp.avaj.lib.def.ArDuplicate;
import jp.avaj.lib.def.ArNull;
import jp.avaj.lib.def.ArSeq;
import jp.avaj.lib.test.L;

/**
* 二つのListを順番無視、null無視、重複無視で等値判定を行う
*
* ・ArListの以下のメソッドを使用する
* equals(List list0,List list1,ArSeq arSeq,ArNull arNull,ArDuplicate arDup)
*
* ・順番無視はArSeq.IGNOREを指定する.無視しない場合はArSeq.NOT_IGNOREを指定する.

元記事を表示

【Jackson】カスタムシリアライザーで、BigDecimal型の返却値を変換した話

## はじめに
SpringBootを用いたWebAPIの開発において、Jacksonを用いているのですが、BigDecimal型の値をレスポンスとして返却する際に課題に直面しました。

それは、小数点以下の連続した0が残ったまま表示されてしまうということです。

例えばPostgresSQLのnumeric型(10, 5)のカラムに「99.9」と値が登録されているとして、この値を取得してJSONで返す場合、BigDecimal型で扱い返却すると「99.90000」と表示されてしまいます。

今回はこの事象を解決したので、記事にしました。

##解決法
まず、下記のBigDecimalSerializer.javaのようなBigDecimal型に対するシリアライザーを作成します。作成時には`StdSerializer`クラスを継承し、ジェネリクスに値を操作する対象のクラスを指定する必要があります。

“` java:BigDecimalSerializer.java
public class BigDecimalSerializer extends StdSerializer

元記事を表示

Java業務で使えるレベルになるまでにやったこと

## はじめに
エンジニア目指してる友達に「Java業務で使えるレベルになるために何したー?」って聞かれたので、自分がJava学習する際、どういう順序・教材で勉強したのかまとめました。
Javaエンジニア目指している人の参考になれば嬉しいです。

## やったこと①:ProgateのJavaコース

https://prog-8.com/

当時Java初心者・オススメWEB教材とか検索してProgateと初めて出会い、分かりやすさに感動した記憶があります。
道場コースは時間に余裕がある人だけやればいいと思います。
ちなみにボクはやってないです>< ## やったこと②:ドットインストールのJava入門コース https://dotinstall.com/ Progateで学んだ知識を定着させる目的で通勤時間に動画流してました。 動画は見るだけで特に手は動かしてないです。 ## やったこと③:わかりやすいJavaシリーズ 以下の2つの書籍をやりました。 新わかりやすいJava入門編 川場 隆 https://www.amazon.co.jp/dp/4798042773

元記事を表示

OTHERカテゴリの最新記事