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

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

DateAndTime APIを用いた日時取得方法

### 概要
Date and Time APIで以下のパターンをJavaとKotlin(ほぼ同じ)で実装する。

– 日時の変更
– 独自フォーマット
– ISOフォーマット
– 月初日時
– 月末日時

### 実装例

JavaのUtilsクラスだとこちら。

“`java:LocalDateUtils.java
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;

public class LocalDateTimeUtils {
private static final DateTimeFormatter YYYYMM_FORMAT = DateTimeFormatter.ofPattern(“yyyyMM”);

// 日時の変更
public static LocalDateTime getDateTime

元記事を表示

Javaで昇順の並べ替え(バブルソート:単純交換法のアルゴリズム)

#Javaで昇順の並べ替え(バブルソート:単純交換法のアルゴリズム)
Javaの基礎を学ぶ中でアルゴリズムに関する問題にあたったので、思考整理のため記載しました。

昇順に並べ変える(例:2,5,3,4,1→1,2,3,4,5)
ちなみに降順(5,4,3,2,1)

イメージは左から1つずつ順番にfor文で比較し、並べ替える。
(比較例:2と5、2と3、2と4、2と1…。)

書き方はいろいろありますが、下記コード例

“`
1 int[] date = {2,5,3,4,1};
2 for (int i = 0; i < date.length - 1; i++) { 3 for (int j = i + 1; j < date.length ; j++) { 4 if (date[i] > date[j]) {
5 int a = date[i];
6 date[i] = date[j];
7 date[j] = a;
8 }
9 }
10}
11for (int i = 0; i < date.length; i++) { 12 System.out.print

元記事を表示

Javaの strictfp が実際に意味を持つ環境を用意する

Javaには `strictfp` という修飾子があります。`strictfp` によって実際に動作が変わるコードと実行環境を用意してみました。

# マシン

**最近のマシンでJavaを実行する際には `strictfp` は意味を持ちません。**`strictfp` があってもなくてもIEEE準拠の挙動をするはずです。

`strictfp` が意味を持つのはx86系の、SSE2が実装されていないCPUです。Intelの場合は2000年ごろのPentium 4以降でSSE2が実装されているので、SSE2がないマシンを用意しようとするとそれよりも前のマシンが必要になります。

ですが、20年以上前のマシンを用意するのは難しいですよね(筆者はレトロPCマニアではありません)。そこで、エミュレーションを利用します。ここではIntel SDEとQEMUの2つのエミュレーターを考えます。

Intel SDEで指定できるCPUの種類の中で、SSE2が実装されていないものとしては `-quark` があるようです。その次に機能が少なそうなのが `-p4` つまりPentium 4なので、In

元記事を表示

小規模改修のついでに既存のコードの問題点を修正する

# そもそもの経緯
担当となったシステムのコーディングがヤバかった。
しかし、大規模な改修案件は降りてこない。
ならば、小規模案件のついでに少しづつ直してしまおうという流れ。

# 現状のコーディング
例えば、検索のビジネスクラスは以下の構成になってます。
1.バリデーション
2.検索ロジックの実行
3.画面表示項目の編集

これだけ見ると、(多分)普通の構成だが、実際のコーディングは以下のような感じ。

“`
// バリデーション
// nullチェック
if(joken1 == null ||
joken2 == null ||
joken3 == null ||
… ) {
error.add(“エラー”);
return false;
}
// 空文字チェック
if(joken1 != null &&
joken2 != null &&
joken3 != null &&
… ) {
if(joken1 == “” ||
joken2 == “” ||

元記事を表示

入力エラー時にテキストボックスの枠を赤くしたい

はじめに

入力エラー時にテキストボックスの枠を赤くしようとしたのですが、実装に苦労したので投稿します。

環境

OS: macOS Catalina 10.15.6
JDK:14.0.1
Spring Boot 2.3.3
jquery 3.3.1-1
bootstrap 4.2.1

①入力チェックにあたって

入力チェック(バリデーション)を行うにあたって、作者は下記のようにクラスを作成しました。

■コントローラークラス

“`java:SignupController.java
package com.example.demo.login.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.

元記事を表示

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”;

元記事を表示

OTHERカテゴリの最新記事