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

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

JUnit 5 + Apache Maven による Java の自動テスト導入

## 概要
– JUnit 5 + Apache Maven による Java の自動テストについて基本的なサンプルを書く

## 今回の環境
– Java 11 (AdoptOpenJDK 11.0.8+10)
– JUnit Jupiter 5.7.0
– Apache Maven 3.6.3
– Maven Surefire Plugin 3.0.0-M5

## JUnit 5 + Apache Maven の基本的なサンプル

### ソースコード一覧

“`
├── pom.xml
└── src
├── main
│   └── java
│   └── myapp
│   └── Calc.java
└── test
└── java
└── myapp
└── CalcTest.java
“`

### pom.xml

“`xml Javaコマンドについて

##そもそもJavaコマンドとは?

**背景**

業務の中でそもそもJavaコマンドが実行された場合どんな処理がされているのか?

調べてみた。

##Javaコマンドの仕組み

– javaコマンドは、JVM起動するためのコマンド
– JVMは起動後に、指定されたクラスをロードし、クラスのmainメソッドを呼び出す
– **javaコマンドの構文**

“`
java 完全修飾クラス名 [引数 引数 …]
“`

##詳細

– クラス名の後に続ける引数のことを**「起動パラメータ」**や**「コマンドライン引数」**という
– 起動パラメータはスペースで区切って複数指定できる
– 起動パラメータはオプションなので省略が可能
– 起動パラメータとして指定されたデータはJVMによってString配列オブジェクトに格納されmainメソッドの引数として渡される

##javaコマンドを実行したときの流れ

– JVMを起動する
– 指定されたクラスをクラスパスから探し出してロードする
– String型配列オブジェクトを作成して起動パラメータを格納する
– 起動パラメータを保

元記事を表示

WildFlyで実行可能Jar(UberJarともBootableJarとも言う)

# 何の記事か
直近の登壇に備えてMicroProfileの現状を調べている際に
WildflyがBootableJar対応したとのリリースノートを見かけました。
Redhatであれば、QuarkusとかThorntailだけでなくてWildflyなの??と
衝撃覚えましたので、記事化してみました

# 誰向けか
Javaで開発したことある人向けです。
Mavenって何とかの人は、そのあたり知ってから読むと良いです。

# きっかけのリリースノート
Wildfly21のリリースノートに以下記載があります。

> Bootable JAR / Galleon Layers
>
> The biggest thing in WildFly 21 is Jean-Francois Denise and the team have added GA-level > support for the Bootable JAR feature that we’ve been working on over the last two releases.

・元文書
https://www.wildfl

元記事を表示

☾ Java / 例外処理


 いつまでも苦手シリーズ第2弾。

## ✴︎ 例外とは
 プログラムはコンパイルが成功しても、実行した際にエラーが発生することがあります。Javaでは、実行時に発生したエラーを**例外**と呼びます。また例外が発生することを**例外がスローされる**といいます。

## ✴︎ 例外処理
 例外がスローされた際に、プログラム側でその例外に対する処理を何も記述していないと**プログラムが強制終了**してしまいます。

 以下の_Sample.java_では、用意された配列の要素外にアクセスするため、例外が発生します。

“`1¥Sample.java
public class Sample {
public static void main(String[] args) {
int[] num = {10, 20, 30};
for (int i=0; i<4; i++) { System.out.print("num :" + num[i]); System.out.println(" : " + (i+1) + "回目のループ"

元記事を表示

JMeterでグラフィカルに変幻自在なアクセス負荷を設定する(後編)

# はじめに

前回はJMeterにThroughputShapingTimer(プラグイン)を組み込んで、
グラフィカルに負荷量を調整する方法を説明しました。
[JMeterでグラフィカルに変幻自在なアクセス負荷を設定する(前編)](https://qiita.com/Kenta-Sado/items/5a60e7dc4b43654181f9)
![sample_image](https://jmeter-plugins.org/img/wiki/throughput_shaping_timer1.png)
↑アクセス負荷量の制御イメージ [公式ページ](https://jmeter-plugins.org/wiki/ThroughputShapingTimer/)より

簡単な使用法の紹介までで話が長くなってしまったので、今回は実践的な使い方を説明します。

# 前回のあらすじ

上司さんからWebサイトの性能試験を任されたA君。
「Twitterでバズった時のアクセス急上昇を試験したい」という上司からの無茶振りに対し、
ThroughputShapingTimerを使うことでA君

元記事を表示

ApacheとTomcat

まとめ備忘録

##ApacheとTomcatについて

###そもそもTomcatとは?

###そもそもApacheとは?

###Apache, Tomcatでのシステム構成

####Tomcatのみの構成

– Tomcatの役割は「Webサーバ」と「サーブレットコンテナ」。

####Apacheと連携した構成

– Apacheの役割は「Webサーバ」
– Tomcatの役割は「サーブレットコンテナ」

##まとめ

##参考にした記事(いつもありがとうございます。)

[【社内勉強会】ApacheとTomcat(2017/03/09)
](https://qiita.com/yuji38kwmt/items/267d4ce618e80785f03d)

[「Tomcat」と「Apache」の違い
](https://wa3.i-3-i.info/diff184web.html)

[Tomcatとは?使い方を分かりやすく解説!初心者向けのインストール手順も確認。Apacheと連携するメリットも紹介

元記事を表示

Cobol からJAVAへのマイグレーション

ファイルを比較する際に、注意事項
ファイルの読み取りが終わると、
MOVE HIGH-VALUE TO fileName-REC
EOF これから、このファイルは最大値がある

元記事を表示

jar ファイルを実行時に「QuantumRenderer: no suitable pipeline found」エラーが出てしまったら

Eclipce で JavaFX というフレームワークを使ってアプリを作成したとき、完成したアプリを jar ファイルにして実行すると開けなくて、代わりに以下のようなエラーが出現しました。

“`b:コマンドライン画面
>java -jar test.bat
Graphics Device initialization failed for : d3d, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
at com.sun.javafx.tk.quantum.Quant

元記事を表示

SLF4Jとは?

【背景】

エラーでつまづきそもそもSLF4Jとは何だ?
という所から調べてみた。

【エラー文】

“`java
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
“`

##SLF4Jとは?

>SLF4Jは、ロギングシステム用のシンプルなファサードであり、エンドユーザーが展開時に目的のロギングシステムをプラグインできるようにします。

##ファサードとは?
>Facadeクラスとは、使い方が複雑になっているクラス群をまとめ、使いやすい形のインターフェースとして外部に提供するクラスのことを指します。
デザインパターンでは、このFacadeクラスを利用するパターンをFacadeパターンと呼びます。
(ちなみに、Facadeは「窓口」を意味する単語です)

【直訳】
Simple Logging Facade for Java (SLF4J) は、様々なロギングフレームワーク (java.util.logging, logback, log4j など) のためのシンプルなファサードまたは抽象化として機能し、
エンドユー

元記事を表示

【Java】オーバーロード・オーバーライド・継承について

Javaのオーバーロード・オーバーライド・継承について学んだことをメモします。

#オーバーロード
オーバーロードとは、**引数の型や数が異なる同名のメソッドやコンストラクタを複数記述すること。**

##オーバーロードを用いたメソッド

同じメソッド名だが、与える引数の数によって返り値が変わることも。
これは足し算を行うplusメソッドを定義する。

“`keisan.Java
//足し算をする sumメソッド

public class sum {
public int sum(int a) {
return a;
}
public int sum(int a, int b) {
return a + b;
}
public int sum(int a, int b, int c) {
return a + b + c;
}
}
“`
##クラスを継承する。
継承とは、任意のクラスを別のクラスで受け継ぐこと。

今回は先ほどのKeisan.JavaをTask.javaで継承し、引数を

元記事を表示

maven で Java Web アプリを Azure にデプロイする

# 事前に用意しておく情報

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110265/bc501727-3b76-d149-3909-39ca88d51fcd.png)

以下の情報をコンソールなどで確認しておく

appName <-- 図の(1) resourceGroup <-- 図の(2) subscriptionId <-- 図の(3) # pom.xml build 部分を以下のようにセットする。 region runtime などについてはサーバー側の環境にあわせて適宜変更する。 ```xml
maven-compiler-plugin
3.

元記事を表示

Android StudioでXML要素が勝手に並び替えられてしまう問題

最初は以下のように記載していた

“`


元記事を表示

JavaScript 経験者が Java を学習する際の入門前メモ

知り合いの JavaScript 経験者が、Java を学びたいと言ってましたので、簡単な入門前メモをまとめてみました。

# 想定している読者

Web ブラウザで動作する、もしくは NodeJS 環境で動作する JavaScript コードを学んだことがある、もしくは書いたことがある方を想定しています。

きちんと学ぶにはJava入門書を読んだり、良質なコードを多く参照して真似したりすることが有効だと思います。ただ現時点で JavaScript の知識があるのであれば、Java との差分を確認してから学んだほうが理解が早まるのではないか?と思い、このメモをまとめてみました。

このメモが簡単すぎる、冗長すぎると感じる方は、素晴らしいまとめサイトである [Java コード入門](https://java-code.jp/category/java) をお勧めします。

# 開発環境

いまの時代、何らかの統合開発環境を利用することを想定しています。とりあえず想定しているのは、昔ながらの [Eclipse (統合開発環境)](https://ja.wikipedia.org/wiki/

元記事を表示

素因数分解でC言語、Java、Pythonのベンチマーク

Pythonの練習がてら、素因数分解を簡単なロジックで計算させるプログラムを作成してみました。ついでにC言語、Javaでも作成して処理速度を競わせてみたのでアップします。

プログラムは長くなるので結果から。

“`
# C言語
$ ./a.exe 123456789
123456789 = 3 * 3 * 3607 * 3803
所要時間は2.884932秒です。

# Java
>java -jar Factorization.jar 123456789
123456789 = 3803 * 3607 * 3 * 3
所要時間は1245ミリ秒です。

# Python3
>python factorization.py 123456789
123456789 = 3 * 3 * 3607 * 3803
所要時間は60.498295秒です
“`
なんとJavaがトップ。
Pythonが遅いのは、Pythonをほとんど使ったことがない私が作ったプログラムがゴミなのでしょう^^;

しかし、CよりJavaが早いかなぁ。というのが疑問だったので、環境を変えてみることに。Cの実行環境はC

元記事を表示

【Java】 文字列の一部を切り出すsubstringの使い方

#開始位置を指定する場合

“`
String.substring(int beginIndex)
“`

“`java
public class Main {

public static void main(String[] args) {
String sports = “soccer,baseball,basketball”;

System.out.println(sports.substring(7));
}

}
“`

**実行結果**

“`
baseball,basketball
“`
#開始、終了位置を指定する場合

“`
String.substring(int beginIndex, int endIndex)
“`

“`java
public class Main {

public static void main(String[] args) {
String sports = “soccer,baseball,basketball”;

元記事を表示

Java SE Bronze(1Z0-818)合格体験記

## はじめに
Qiita初投稿になります。
今年の7月に開発実務未経験による転職を経て大阪の開発会社で働いてます。
本試験は、Javaの知識がどこまで身についているのか目に見える形として証明したかったというのと、Javaの基礎力向上を目的に資格試験にチャレンジしてみたという経緯です。

## 私のスペック
– 元インフラ運用屋
– Java未経験(もちろん開発実務も経験ありません)
– 少しPHP触ったことがある

## 申込み注意点
– 申込みの手順がかなり複雑
– 試験名に注意

はじめに、”申込みの手順がかなり複雑”については、私が解説するよりも既にわかりやすい記事がありますので、[こちらの記事](https://qiita.com/Channel/items/31e50323d2b7ee78f7cc)を参照ください。
[こちらの記事](https://qiita.com/yoshidayoshidayoshida/items/3b6a4ad8dc48b92af9d8#%E8%A9%A6%E9%A8%93%E6%B3%A8%E6%84%8F%E7%82%B9

元記事を表示

[Java]HashMap,TreeMap,LinkedHashMapのセットした値の保持順

##[Java]HashMap,TreeMap,LinkedHashMapのセットした値の保持順
Mapにはいくつか種類があるけど、格納した値がどの順番で保持されるか(どの順番で出力されるか)違いがある。よく見る(個人的に)Mapたちのそれをまとめた。
どのMapを使うかはこの特徴の違いで選ぶことが多い気がする。

|HashMap|TreeMap|LinkedHashMap|
|:—:|:—:|:—:|
|順序不定|keyの昇順|登録順|

以下、確認してみた。

“`java:test.java
public static void main(String[] args) {
final int key = 0;
final int value = 1;
HashMap hashMap = new HashMap();
TreeMap treeMap = new TreeMap();
LinkedHashMap

元記事を表示

[Java11]Google Cloud BuildからGoogle Cloud Functionsにデプロイする

## 前置き
GCP で Java を動かすには Google App Engine だと思っていたら、今年の春に Cloud Functions でも使えるようになっていました。
[Google Cloud Functions が Java 11 に対応](https://cloudblog.withgoogle.com/ja/products/application-development/introducing-java-11-on-google-cloud-functions/amp/)
※[比較表](https://cloud.google.com/serverless-options?hl=ja#product-comparison)にはまだ載っていない(2020/10/18時点)

これは、Javaで作ったとある処理を Cloud Functions で動かした記録です。

## 環境
– 構成
– GitHub: ソース置き場
– Google Cloud Build: GitHubへのpushをトリガーにビルド&デプロイする
– Google

元記事を表示

Dozer.mapperの使い方

## Dozerとは
Javaのマッピングフレームワークの一つ。
Dozerは、あるオブジェクトから別のオブジェクトにデータをコピーするために再帰を使用するマッピングフレームワークです。フレームワークは、Bean間でプロパティをコピーできるだけでなく、異なるタイプ間で自動的に変換することもできます。

## Dozerのメリット
* クラス間のbeenの受け渡しを簡略化できる
* beenの受け渡し時に値、型の変換ができる

## 設定方法(環境)
### Gradleプロジェクト
「build.gradle」ファイルに下記を記述

記述場所:dependencies
記述コード:

“`gradle
implementation ‘net.sf.dozer:dozer:5.5.1’
“`

### Mavenプロジェクト(今回はこちらを主体に紹介していきます)

pom.xmlに下記を追記

“`java

net.sf.dozer
dozer

元記事を表示

JavaScriptをJavaで呼び出してみる

#はじめに
今回は、Javaアプリケーション内でJavaScriptを使う方法を実践してみます。
JSPの中でJavaScriptを実践知る方法とJavaファイルの中で実践する方法の二つがあります。

###開発環境
eclipse
tomcat
java

#JSPファイルでJSを実行

IndexServlet.java
index.jsp
main.js
を作成していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/764409/97f43cef-b23f-1a52-702a-bfa27938b610.png)

このような階層となっています。

“`servlet.IndexServlet.java
package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import

元記事を表示

OTHERカテゴリの最新記事