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

JAVA関連のことを調べてみた2022年04月06日
目次

多くのコンストラクタパラメータに直面したときには、ビルダーを検討する

# これは何?
Effective Java 第3版を読んで自分なりにかみ砕いた内容を記事に落としていきます。
良いコードを書くための選択肢の一つになれば最高なので、頑張ります。
※読み進める中で知識のアップデート等あれば都度更新いたします。

# 問題提起
[前の記事](https://qiita.com/arikei/items/bf5fdef55dce4cb34f7d)で紹介したstaticファクトリメソッドやコンストラクタは共通の課題がある。
__「多くの必須ではないパラメータ(オプションパラメータ)に上手く対応できない」__

この問題にうまく対応する方法が __Builderパターン__ である。

## 選択肢①(あまり良くない)
テレスコーピング・コンストラクタが使われたりするらしい。。。

~~~java
//テレスコーピング・コンストラクタ
public class Hoge {
private final int 必須パラメータ1
private final int 必須パラメータ2
private final int オプションパラメータ1
pr

元記事を表示

Apache Commonsを使うための準備 【Eclipse遍】

# 1.はじめに
Apache Commonsを知っている方は多いとは思いますが、実際に使ったことないな~とかどうやって使えばいいかわからん!という人に使い方を教えます。

# 2.ライブラリをダウンロードとセッティング
今回はAppache Commonsの中でも有名なAppache Common Langをダウンロードします。

まず、[Appache Commonsの公式サイト](https://commons.apache.org/)に行くと以下の画面にたどり着きます。
![s1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615563/646a5a16-2e30-e012-7583-478700f937de.png)

次に、ずらーっと書かれた~~読む気も失せる~~英語をスクロールするとライブラリのリストが出てくるのでそこから使いたいものを選択します。(今回はCommons Langを選択します)
![スクリーンショット (7).png](https://qiita-image-stor

元記事を表示

auカブコム証券のkabuステーションREST APIで自前のトレイル注文を作ってみる(情報収集編)

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

<@comporessToSingleLine> FreeMarkerテンプレートの出力から改行とインデントを削って1行にするディレクティブ

[FreeMarker](https://freemarker.apache.org/) はJavaプログラムがHTMLやXMLなどのテキストを生成する処理を補助するテンプレートエンジンです。

## 解決したい問題

わたしはJavaプログラムを作りFreeMarkerでHTMLを生成しようとしました。次のようなテンプレートを作りました。

“`
<#macro sampleMarkup>
<#assign clazz="nochange">
<#list segments>

<#items as segment>
${segment}




“`

プログラムを実行すると下記のようなStringが出力されました。

“`

<

元記事を表示

Java 18 JEP 400 UTF-8 by Default の Windows 環境での影響

Java 18 の新機能として JEP 400 UTF-8 by Default が実装されました。Linux や Mac など、UTF-8 が標準の環境では影響はまずありませんが、Windowsのような UTF-8 が標準エンコーディングではない環境では対応が必要です。

# TL;DR
– Java 18 から、文字セット指定がない場合のソースコードを含むファイルの扱いが UTF-8 になる。
– Java 17 までの動作にするには Java 実行時にオプションとして `-Dfile.encoding=COMPAT` を指定する。
– javac は `-J-Dfile.encoding=COMPAT` と指定

# 検証環境
– Windows 10 Pro 21H2
– OpenJDK JDK18 GA
– OpenJDK JDK17.0.2

# JEP 400 UTF-8 by Default
JEP 400 UTF-8 by Default で、標準 Java API の標準の文字セット(Charset) が UTF-8 に変更されました。JEP 400 のリンクは

元記事を表示

【初投稿】マインクラフトのMODを0から作る

こんにちは。今回は、MinecraftのMODを作成します!^^
## 準備
まず、https://mcreator.net/download にアクセスします。
![スクリーンショット 2022-04-05 午前9.02.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2614301/1645ef35-cf45-aea5-0355-c2182bde65ad.png)
こういうところに飛んだら、「Download」ボタンを押します。
そうしたらDLが始まるので、DLできたら次の手順に進みます。
## 作成
みんな多分待ってたMOD作成の時間です。
![スクリーンショット 2022-04-05 午前9.05.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2614301/3c3391e4-b156-0714-3831-ec1f9dff6b3f.png)
開いたらこうなります。一応黄色で隠しましたw
で、New w

元記事を表示

「マイクロサービスパターン」の復習 3章 プロセス間通信

## 概要

Java読書会でせっかく勉強したのにつぎつぎと忘れていくので、印象に残ったところを記録していく

http://www.javareading.com/bof/

## 3章 マイクロサービスアーキテクチャで使われるプロセス間通信

– マイクロサービスアーキクテチャでは、複数のサービスを組み合わせて、全体として一つのサービスを形成するので、各サービス間の通信方法は必然的に重要な要素となる
– この章では大きく同期・非同期と分けながら色々な概念を紹介しているが、最重要なのは「3.3.7 トランザクショナルメッセージング」
– 以後の章では、トランザクショナルメッセージングがある前提で話が進められる

## 同期呼び出し

### Remote procedure invocationパターン

– 略してRPI。同期的なリモート呼び出しを指す
– https://microservices.io/patterns/communication-style/rpi.html
– 具体例としてはRESTやgRPCが挙げられている
– SOAP、CORBAやJava RMIなど

元記事を表示

HomeScreenBrowserアプリ開発に使った技術まとめ(Recycler View,BottomSheet,WebView,Admobリワード広告,Intent)

## HomeScreenBrowserアプリ開発に使った技術まとめ(Recycler View,BottomSheet,Admob,Intent)
HomeScreenBrowserというAndroidのホーム画面でウェブサイトを表示するアプリを公開したため技術について書きます(この記事について私は責任は取りません)

公開したアプリ

https://play.google.com/store/apps/details?id=jp.nuohka.homescreenbrowser

簡単に言うとホーム画面に表示することができるブラウザアプリです。

### AdaptiveView
用意するファイル
item.xml GridViewの一つ一つの見た目を定義
object.java 一つ一つの型(私の場合はアイコンとアプリ名とパッケージネーム)
appadapter.java GridViewを作ります。
“`java
recyclerView = findViewById(R.id.recycler);

recyclerView.setLayoutManager(new Li

元記事を表示

Scalaの勉強はじめました 5 〜パターンマッチ〜

## はじめに
N予備校で「Scala基礎」を受講しています。
今回はパターンマッチについてです。

## パターンマッチ
“`scala
def intToName(num: Int): String = {
num match {
case 1 => “one”
case 2 => “two”
case _ => “other”
}
}
“`
これが`match`の基本。
JSと違って`break`を書かなくても次の処理が実行されることはない。

同じ処理結果なら`|`でまとめられる。
“`scala
creature match {
case “cat” | “dog” => “animal”
}
“`

### コレクションのパターンマッチ
“`scala
val seq = Seq(“A”, “B”, “C”, “D”, “E”)
seq match {
case Seq(“A”, b, c, d, e) =>
println(s”b = ${b}”)

元記事を表示

Error: Could not create the Java Virtual Machine. の対応

以下のエラーメッセージが出た。
“`
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
“`

調べてみるとjavaのバージョンが異なると表示されることがあるらしいエラーなのでバージョンを調べる。
“`
$ java –version
openjdk 17.0.2 2022-01-18 LTS
OpenJDK Runtime Environment Corretto-17.0.2.8.1 (build 17.0.2+8-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.2.8.1 (build 17.0.2+8-LTS, mixed mode, sharing)
“`

Corretto8などを使っていたのだが、事故ってローカル環境の色々なバージョンを最新のものにしてしまっていた。自分の場合バージョンをCorretto8に切り替えないといけない。
まずは何がインストールされ

元記事を表示

SpringBoot × Thymeleaf タグ要素の中に式(値)を入れる方法

# はじめに
今回は、以下のように、親要素とその子要素のテキストをThymeleafの式で実装する方法について解説します。
※以下の記述にすると、親要素(h2タグ)の`th:text属性`の値しか表示されません。
“`html:sample.html


“`

# th:text属性について
ます、「なぜ、上記のような記法で親要素と子要素のどちらの値も表示できないのか」を解説します。

結論を言うと、「`th:text属性`を指定すると、**その要素の中身身全て(入れ子になっている要素も含む)** が`th:text属性`の値に置き換わるため」です。

それでも親要素と、入れ子になっている子要素に値を渡したい時があります。
そんな時にはThymeleafにある`インライン記法`を用いるとすんなり実装できます。

# インライン記法
インライン記法というのは、Thymeleafの式をth:**属性ではなく、直接HTM

元記事を表示

Java SEアプリケーションにHTTP Server機能を組み込みたい(Grizzly編)

この度、個人ブログを閉鎖することなり、一定のアクセスがあった記事を記録として遺すことにしました。
以下は、2020年4月14日に投稿した記事の写しです。この記事がこの世の誰かの助けとなることを願います。

JavaでWebというと、warファイルをAPサーバに搭載してみたいな運用が多いと思いますが、
Java SEアプリケーションにHTTP Serverとしての機能を組み込みたい、といった要件を提示されることも多々あります。

GrizzlyはJava EEアプリサーバのGlassFishで採用されているHTTPサーバの実装ライブラリで、Java SEアプリケーションに単体で組み込むこともできます。

公式サイト
https://javaee.github.io/grizzly/

公式のサンプルほぼそのままですが、Mavenプロジェクトでの実装例を記載します。

まずは、pom.xmlに以下の通り追記して保存します。
“`xml


org.glassfish.grizzly

元記事を表示

Spring Boot + Vue + Axiosで検索&無限スクロール機能の実現

# はじめに
Spring Boot学習中の者です。学習のためにアプリケーションを作成していて、無限スクロールを実装する上で考えたことや躓いたポイントをまとめました。
今回はユーザの投稿を検索するページを例とさせていただきます。

# 参考文献
http://terasolunaorg.github.io/guideline/current/ja/ArchitectureInDetail/DataAccessDetail/DataAccessMyBatis3.html#dataaccessmybatis3howtousefindpageusingmybatisfunction

https://reffect.co.jp/vue/vue-js-infinite-scroll-intersection-observer-api

https://qiita.com/opengl-8080/items/3720ed415c2df26251a7

# 使用技術
Spring Boot 2.5.6
Spring Security
Thymeleaf
Mybatis 2.2.0
Vue.js
A

元記事を表示

Amazon EC2にJavaアプリをデプロイする方法(war&jar)

Amazon EC2にJavaアプリをデプロイする方法をwarファイルとjarファイルそれぞれメモとしてまとめます。

これはAWSでEC2インスタンスを作っている前提でまとめていますので、ご了承願います。ちなみにEC2はLinux2です。

# warファイルのデプロイ

## 1、EC2にJava17をインストール

EC2にJava17をインストールします。Javaのバージョンは適宜読み替えてください。

OpenJDKをダウンロード

“`
$ wget https://download.java.net/java/GA/jdk17/0d483333a00540d886896bac774ff48b/35/GPL/openjdk-17_linux-x64_bin.tar.gz
“`

ダウンロードしたものを展開

“`
$ tar xvf openjdk-17_linux-x64_bin.tar.gz
“`

展開したものを移動

“`
$ sudo mv jdk-17 /opt/
“`

パスを通す

“`
$ sudo tee /etc/profile.d/jd

元記事を表示

auカブコム証券のkabuステーションREST APIの認証済TOKENをファイル管理する

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

auカブコム証券のkabuステーションREST APIのテスト用モックサーバーを作る

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)

最近、思いついたビジネスロジックを、相場がお休みしている土日に作ろうと思った

元記事を表示

初心者がJavaのマルチスレッドプログラミングを学ぶお題を作ってみた

# はじめに
チーム内でJavaプログラミング初心者向けの勉強会をしていて、そのときに出したマルチスレッドプログラミングの勉強用の題材とメンバーからの回答例です。
よくある事例からお題を作ってみたら、いろんな回答が返ってきました。

# お題
以下のプログラムをスレッドセーフにしてみよう

“`java:スレッドアンセーフ(お題)
package study.concurrent;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import lombok.Getter;

public class ThreadUnsafeMain {

private static ExecutorService executor = Executors.newSingleThreadExecutor();

public static void main(String[]

元記事を表示

【Java】ファイル操作関連

# まえがき
Javaではファイル操作関連クラスが豊富に提供されている。それぞれのクラスの役割/使い方についてまとめる。
# java.io と java.nio と java.nio2
JDK6/SE6:io系(File)
JDK7/SE7:nio系(Files, Path)
JDK8/SE8:nio2系(nioの強化)+ Stream + ラムダ式 + メソッド参照

SE → JavaAPI群。JDKの一部品。
JDK → Java開発プログラムのセット(ソフトウェア)
# JDK6/SE6:io系(File)
## File
・ファイルの置き場所を定義する
・ファイルを操作する

# JDK7/SE7:nio系(Files, Path)
## Path
・ファイルの置き場所を定義する
## Files
・ファイルを操作する

Fileクラスの2機能を、PathクラスとFilesクラスで分割したような形。
**Fileクラスにはない便利機能がPathとFilesにはあるので**、JDK7/SE7以上の環境である場合は
 ✕ Fileクラス
 〇 Pathクラス&Filesク

元記事を表示

SpringBootの値をJavaScriptに渡す方法

# はじめに
SpringBootで設定した値をJavaScriptに渡す際に、少しばかり、つまずいたため備忘録がてら記録しておこうと思います。
SpringBootとJavaScriptを用いた場合には、非常にあるあるな事象だと思うので、ご参考になれば幸いです。
ちなみに、Thymeleafでは、このことを「 **JavaScriptナチュラルテンプレート** 」と呼ぶようです。

# ControllerからJavaScriptに値を渡す方法
以下のように`Model`に登録してある値をJavaScriptに渡したいとします。

“`java:SampleController.java
@GetMapping(“/index”)
public String getIndex(EasyHouseholdForm form, Model model) {

model.addAttribute(“form”, form);

return “sample/index”;
}
“`

これを渡す方法は`Thymeleaf`で以下のようにします。

“`ht

元記事を表示

【Java】ファイルダウンロード

# まえがき
ファイルをバイナリに変換したものをレスポンスにセットすることで、ファイルダウンロードを実現する。やり方は2つ。

① レスポンス(Controllerメソッドの戻り値)にバイナリをセットする。
② レスポンス(メソッドの引数/HttpServletResponse)にバイナリをセットする。

# 参考

① レスポンス(Controllerメソッドの戻り値)にバイナリをセットする。

https://nainaistar.hatenablog.com/entry/2021/10/21/120000

② レスポンス(メソッドの引数/HttpServletResponse)にバイナリをセットする。

https://stackoverflow.com/questions/17933508/how-to-delete-a-file-after-sending-it-in-a-web-app

# ① レスポンス(Controllerメソッドの戻り値)にバイナリをセットする。

## ソースコード
“`java
import java.io.IOException;
impo

元記事を表示

OTHERカテゴリの最新記事