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

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

【JUnit5対応】Spring boot 2.2, 2.3でJUnit5を使ったテストを書く

本記事は **『Spring boot2.2以上で、JUnit5に対応』** について記載してます。
下記の用途に参考になればー!

1. Spring boot 2.1以下から、2.2以上にアップデート
1. JUnit4からJUnit5への乗り換え
1. JUnit5を記述する際、事前にJUnit4を除外したい

## 0. 前提
### 環境
– Java 8〜(Spring boot2.2以上では、Java8, 11にサポートしています)
– Spring boot 2.2〜

### 知っておくといい知識
– Spring boot 2.2以上からは、JUnit5がデフォルト
– JUnit4と、JUnit5は基本的に互換はない
– **現状JUnit4と5が共存できるようになっている(いずれなくなる)**

## 1. JUnit5を使うための依存関係
– やること
– junit-vintage-engineを除外する(JUnit4が動くようにする依存のため)

### 例1. Mavenの場合
“`xml

o

元記事を表示

GlassFish 5.1 + Servlet + JSP で Hello World

## 概要

– Java Servlet と JSP を含む WAR ファイルを Gradle で作成する
– GlassFish 5.1.0 をインストールする
– WAR ファイルを GlassFish 5.1.0 にデプロイする
– 動作確認環境: Java 8 (AdoptOpenJDK 1.8.0_265) + GlassFish 5.1.0 (Java Servlet 4.0 + JavaServer Pages 2.3) + macOS Catalina + Gradle 6.5.1

## GlassFish 5.1 とは

GlassFish 5.1 は Jakarta EE 8 と Java EE 8 に準拠した Web アプリケーションサーバ。Java Servlet 4.0 や JavaServer Pages 2.3 に対応している。

[Eclipse GlassFish](https://eclipse-ee4j.github.io/glassfish/)

> Eclipse GlassFish is a Jakarta EE compatible i

元記事を表示

[Java]MinecraftのModを作成しよう 1.14.4【9. 木の追加と生成】

(この記事は一連の解説記事の一つになります)

先頭記事:[入門編](https://qiita.com/koteko/items/7afadf8261eac49bacad)
前の記事:[8. 鉱石の追加と生成](https://qiita.com/koteko/items/f17d723337ddf7d5dbd4)
次の記事:[]()

# 木の追加
[前記事](https://qiita.com/koteko/items/f17d723337ddf7d5dbd4)では鉱石の追加について学びました。次は木を追加し、ワールドに生成させてみましょう。だいぶ複雑になってきますので、一緒に頑張っていきましょう。

## 原木の追加
まず気を構成する原木ブロックを追加します。[2. ブロックの追加](https://qiita.com/koteko/items/c904b3bfdd90f0b9a98a)を参考にブロックを追加していきますが、ところどころ異なる点があるので順にみていきましょう。

“`java:BlockList.java
//…
public class BlockLis

元記事を表示

[AWS] CodeStarを使うと、Lambdaで動作するSpring(Java)のプロジェクトをたった3分で構築できるのです!!

# CodeStar
AWS CodeStarは、アプリケーションを迅速に開発・デプロイすることができるための環境を構築することができます。
いくつかのテンプレートが用意されており、マネジメントコンソール上からポチポチと選択していくだけで、開発プロジェクトが構築できてしまいます。

## 構築される環境

– コードリポジトリ(CodeCommitと、GitHubを選択可能)
– CodeBuilde環境
– CodePipeline環境
– アプリケーション
– IDE(Cloud9選択時)

## 料金
CodeStar自体は料金は発生しません。
CodeStarによって構築されるコードリポジトリや、パイプライン、デプロイされたアプリケーションに係るリソース使用料のみです。

## 注意事項
リージョンに東京リージョンを選択すると、IDEにCloud9を選択することができません(2020年8月現在)。
今回はCloud9で環境を構築したいので、リージョンにバージニア北部(us-east-1)を選択することとします。

# 環境構築手順
まずは、マネジメントコンソールで、サービスよ

元記事を表示

RXTXってもう使えない?代替方法は?

# 久し振りにシリアル通信を
久し振りにJavaでシリアル通信をしようと思っていろいろ調べてみた。Javaでプログラム書くのも久し振りだし、昔はJavaシリアル通信ならRXTXしかなかったんだが、今はその後継というか代替というか、そういう記事が検索で挙がっていた。以下は「Java シリアル通信」でGoogle検索した時の上位3つの記事だ。
1. Javaでシリアル通信を使ってみよう
2. Javaのシリアル通信ライブラリRXTXの課題と代替調査
3. ソフトウェアエンジニアリング/Java シリアル通信
最初のやつはRXTXの使い方、次とその次が代替ラ

元記事を表示

【チュートリアル】Spring Batch

##springのチュートリアル[バッチサービスの作成](https://qiita.com/drafts/3ea3d1f05bf9818e59a8/edit)をやってみた。

適当なディレクトリでgit clone

“`
$ git clone https://github.com/spring-guides/gs-batch-processing.git
“`

“`
$ mba-2:target #{myname}$ java -jar /Users/#{myname}/projects/gs-batch-processing/complete/target/batch-processing-0.0.1-SNAPSHOT.jar
“`

“`
. ____ _ __ _ _
/\\ / ___’_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | ‘_ | ‘_| | ‘_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) )

元記事を表示

@Builderと@NoArgsConstructor一緒に使える方法

# 課題
以下のように@Builderと@NoArgsConstructorを一緒に使うとエラーが発生する。

“`java

@Builder
@NoArgsConstructor
public class MyName {
private String first;
private String last;
}
“`

# 解決
@AllArgsConstructorアノテーションも入れるかすべてのフィールドを持つコンストラクタを追加すればできる。

“`java

@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MyName {
private String first;
private String last;
}

.. または ..

@Builder
@NoArgsConstructor
public class MyName {
private String first;
private String last;

MyName(

元記事を表示

JAVASCRIPT 開発者を採用する方法

JavaScript言語は、JavaおよびC言語に基づいた構成を持っている、強力なクライアント側のマルチパラダイムの動的言語です。それに多数のタイプとオペレーター、組み込みオブジェクトやメソッドが含まれています。JavaScriptはオブジェクト指向プログラミングと関数型プログラミングの両方をサポートしていますので、1つの言語内でほぼどんなオブジェクトまたは機能でも作成できます。

##JavaScriptの起源と最新のトレンドに詳しいJavaScript プログラマーを採用する方法
JavaScriptは単独で実行不可能であり、JavaScriptコードを実行するブラウザーが存在します。 ユーザーがJavaScriptの有効なHTMLページを開こうとすると、スクリプトがブラウザーに送信され、ブラウザーはスクリプトの下で動作します。ブラウザー以外に、JavaScriptはAdobeサービス、サーバーサイド環境、データベース、SVG画像などで表示することもできます。JavaScript言語は幅広いタイプのアプリケーションに使用できます。
![javascript-kaihatsusha-

元記事を表示

Eclipseプラグイン・プロジェクトでJavaのクラスのメソッド・パラメータの名前をリフレクションで取得できない時の暫定対応メモ

Java8以降、クラスのコンストラクタを含むメソッドのパラメータ名をリフレクションを通して取得できるようになりました。`javac`に`-parameters`オプションを追加してコンパイルすることで、これに必要な情報がクラスファイルに格納されます。

Eclipseにおいては、例えばJavaプロジェクトの場合、プロジェクト共通あるいはプロジェクト毎の設定において、以下のチェックを入れてエクスポートすることで、対応したjarを作成することができます。恐らく、チェックすることで、`-parameters`オプションが内部で設定されてコンパイルされるのだろうと思います。
eclipse-setting.png
簡略ですが、以下のような感じでコンストラクタやメソッドオブジェクトへの参照からリフレクションを使って、パラメ

元記事を表示

メルカリで検索した一覧から金額の簡単な統計分析 Java開発

## 今回作成したシステムについて
今回はJava言語を使って、ECサイト上の商品から価格の相場などを提供するためのシステムを作りました。
個人開発のため、少しの空き時間で作成したプロトタイプになります。
いろんなレビューをいただけたら幸いです。
込み入った技術の話は割愛します。もしかしたら、他の投稿で書くかも…

## 使用した主な技術
– [Java] Web Scraping (Webスクレイピング)
– [Java] GUI 操作
– [Java] グラフ、チャートのプロット
– [sh script(シェル)] コマンドラインからの設定と起動

## 全体像(イメージ)
![overview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/259737/f5983e9c-7e59-a1c8-8769-d1fde5490570.png)

## デモンストレーション
![ezgif-6-3f593f1383be.gif](https://qiita-image-store.s3.ap-northe

元記事を表示

[Java]スライドマスターを作成して適用する

PPTマスターには強力なテンプレート機能があり、ユーザーは必要に応じてスライドのタイトルテキスト、背景画像、テーマの色などをデザインできます。PPTマスターデザインが成功したら、このテンプレートを直接呼び出して他のスライドに適用し、編集の繰り返しを回避できます。
この記事では、Javaアプリケーションでコードを使用してスライドマスタースタイルを作成し、それを他のスライドに適用する方法を紹介します。

**JARパッケージのインポート**
**方法1:**[Free Spire.Presentation for Java](https://www.e-iceblue.com/Download/presentation-for-java-free.html)をダウンロードして解凍し、libフォルダーのSpire.Presentation.jarパッケージを依存関係としてJavaアプリケーションにインポートします。
**方法2:**Mavenリポジトリから直接JARパッケージをインストールし、pom.xmlファイルを次のように構成します。

“`java

元記事を表示

アップロードされたファイルの拡張子とサイズをチェックする方法

– 環境
– CentOS Linux release 7.8.2003 (Core)
– Eclipse IDE for Enterprise Java Developers.Version: 2020-03 (4.15.0)
– openjdk version “11.0.7” 2020-04-14 LTS
– JSF 2.3.9

# やりたいこと
1. アップロードされたファイルの拡張子が指定のもの以外の場合はエラーにしたい
2. アップロードされたファイルのサイズが指定より大きかった場合はエラーにしたい
3. エラーメッセージは親画面で指定したい

Fileインターフェースから名前やサイズを取り出してチェック

> File オブジェクトは特別な種類の Blob オブジェクトであり、 Blob が利用できる場面ではどこでも利用できます。
> [File – Web API | MDN](https://developer.mozilla.org/ja/docs/Web/API/File)

# ファイルの拡張子が指定のもの以外の場合はエラーに

元記事を表示

Mockitoを使ったJavaの単体テスト

# Mockitoを使ったJavaの単体テスト

## 目的

本投稿ではMockito,JUnitを使用した単体テストの実施方法について解説します.
なお,サンプルはSpring Bootで作成し,コンストラクタインジェクションを使用しています.
そのため,`@Mock`, `@InjectMock`などのアノテーションは出てきません.

## Mockitoとは

Mockitoは、MITライセンスの下でリリースされたJava用のオープンソーステストフレームワーク.(by Wikipedia)
~~モック伊藤と読みます.~~ モキートと読みます.
これを使うことでテスト用のモックオブジェクトを簡単に生成することができます.

## モックを使うと何が嬉しいの?

以下のようなテストはテストを書くことが厄介です.

– DBの値によって動作を分岐させる
→ テストでDBを書き換えるの?テスト用のDBはどうやって準備するの?毎回同じ値で初期化されてる?
– 意図的にエラーを発生させる
→ ディスクフルが発生した時のテストってどうやるの?
– 日付に関するテスト
→ システム

元記事を表示

h:buttonタグのonclick属性にEL式を書いて失敗した

– 環境
– CentOS Linux release 7.8.2003 (Core)
– Eclipse IDE for Enterprise Java Developers.Version: 2020-03 (4.15.0)
– openjdk version “11.0.7” 2020-04-14 LTS
– JSF 2.3.9

# 事象 : ページを表示したらHTTPSステータス500になった

“`bash:Eclipseのコンソールのログ
2020-08-10T15:17:17.299+0900|警告: StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
javax.faces.application.ViewExpiredException: viewId:/base.jsf – ビュー /base.jsf を復元できませんでした。
at com.sun.faces.lifecycle.R

元記事を表示

【新人向け】JUnitの紹介

これは、前々から新人教育用にJUnitを紹介したいなぁと思っていたのですが、草稿を書いていたらちょっとしたボリュームになってしまったために断念した残念な記事です。このまま捨てるのももったいないので会社も夏休みですし、新人向けに。

—-

#JUnitとは
JUnitは一般的にユニットテストと呼ばれているところで使われるツールです。
JUnitは使い方と検証を書いたメソッドを持ったクラスを作っておくことで、そのメソッドを好きなタイミングで実行出来るソフトです。
JUnitを実行する際はJUnitの流儀に従ったクラスやメソッドの書き方をします。

# JUnitの流れ
## JUnitの流れ(概論)
JUnitの基本的な流れは

– 「その機能の使い方」を基に実行
– 「その機能を使った結果」を検証

になります。

## JUnitの流れ(簡単なサンプル)
例えば、買い物かごクラス(`Cart`)があったとします。この中に、買い物かごの中に入っている商品全ての価格と個数を反映した合計金額を取得する`getSum()`というメソッドがあったとします。
使い方はこんな感じです。

元記事を表示

Java+PGXでグラフクエリを爆速で叩く

#1. 初めに
– プロパティグラフに触れる機会があったので、備忘録として残す気持ちで書きます。
– グラフと聞くと、グラフ理論のようなアカデミックな数学を連想し易いですが、「グラフデータベース」を活用する場合はグラフ理論のような複雑な話はあまり必要ありません。
– ここでは「グラフデータベース」にフォーカスを当ててながら認めます。

#2. グラフとは
グラフは一言で言うと、単なる頂点(Vertex)と辺(edge)の集合です。
グラフはエンティティをノードとして表し、エンティティが世界とどのように関連しているかを関係として表現します。
グラフのデータモデルは以下の3つがあります。

###プロパティグラフ
プロパティグラフの特徴として下記4つあります。

– プロパティグラフにはノードと関係が含まれている。
– ノードには、プロパティ(Key/Value)が含まれている。
– 関係には名前と方向(direction)があり、必ず開始ノードと終了ノードがあります。
– 関係にもプロパティを含めることができます。

例) 簡単なプロパティグラフ

元記事を表示

Java + H2 Database で主要な JDBC 型の値を取得するサンプルコード

## 概要

– H2 Database にてテーブルに主要な JDBC 型のカラムを定義して、Java のプログラムからカラムの値を取得するサンプルコードを示す
– 今回の動作確認環境: H2 Database 1.4.200 + Java 14 (AdoptOpenJDK 14.0.2) + Gradle 6.5.1 + macOS Catalina

## JDBC 型とは

JDBC 型は SQL 型と Java 言語の型の間を取り持つ型。SQL のデータを表す型 (CHAR や INTEGER など) に近いもの。

SQL 型 ←(マッピング)→ JDBC 型 ←(マッピング)→ Java 言語型

[JDBC API 入門 \- SQL と Java の型のマッピング](https://docs.oracle.com/javase/jp/6/technotes/guides/jdbc/getstart/mapping.html)

> 異なるデータベース製品がサポートする SQL の型の間には、相当な相違があります。異なるデータベースが同一の意味を持つ SQL の型をサポ

元記事を表示

Mavenのゴールの種類

# はじめに
MavenはJava向けのビルドツール、pom.xmlを元にビルドを実行します。
コマンドについて記載します。

# eclipseへ変換

## eclipse関連のファイルを生成する
“`sh
mvn eclipse:eclipse
“`
## eclipse関連のファイルを消去する
“`sh
mvn eclipse:clean
“`
# IntelliJへ

## IntelliJ関連のファイルを生成する
“`
mvn idea:idea
“`

## intellij関連のファイルを消去する
“`
mvn idea:clean
“`

# Mavneプロジェクトの作成
## Mavneプロジェクトの作成
“`
mvn archetype:generate
“`

## archetypeの指定
“`
mvn archetype:generate -DarchetypeGroupId=${groupId} -DarchetypeArtifactId=${ArtifactId}
“`
`-D`でプロパティを指定する。そのほかにもプロパティを指

元記事を表示

ConcurrentHashMapはkey,valueにnullを許容しない

ConcurrentHashmapはHashMapをスレッドセーフにしたものだけどちょっと違うところもあるよというメモ。

基本:
[Map](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Map.html)
[なんとかMapの違い](https://qiita.com/Luecy1/items/4784418a52d3490b5269)

## HashMap

[nullを許容する](https://qiita.com/icelandnono/items/17b5141aaa53a73ce612)。
[スレッドセーフでない](https://qiita.com/e99h2121/items/88d5579a8ce670061468)。

## ConcurrentHashMap

排他制御を達成するために [java1.5から追加された](https://qiita.com/YanHengGo/items/21ca9408fb59ddb7a566)。
が、nullを許容しない。

“`ConcurrentHas

元記事を表示

JavaのIntrinsic Locksの動きをbpftraceで確認してみる

## 概要

Javaには[Intrinsic Locks](https://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html)という仕組がある。オブジェクトごとにそれぞれの固有ロック(Monitor Lock)がつけられて、`synchronized`というキーワードだけで楽なマルチスレッド並行処理が実現できる。では、プログラムが実行しているとき、スレッドたちはどうのように協同しているのか?今回は [bpftrace](https://github.com/iovisor/bpftrace) を利用して、これを確認してみる。

## 作業環境

OSはUbuntu 20.04にします。

### OpenJDK 14

JDKの[Dtrace](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/dtrace.html)機能必要ですから、ソースからビルトします。

“`sh
$ apt-get update
$ DEBIAN_FRON

元記事を表示

OTHERカテゴリの最新記事