JAVA関連のことを調べてみた

JAVA関連のことを調べてみた
目次

GraalVM で Spring Boot アプリケーションをネイティブイメージ化してみた

## 要点

バッチアプリケーションの初期化処理削減のために、GraalVM を利用してバッチアプリケーションをネイティブイメージ化できないかを調査・検討しました。その中で実施した内容を、以下の通り説明します。
– GraalVM を利用して Spring Boot アプリケーションをネイティブイメージ化した
– GraalVM で対応していない OSS ライブラリを利用していることによるエラーを調査した
– ネイティブイメージのパフォーマンスを計測し実行時間やメモリ消費量の削減を確認した
– GraalVM がサポートしていない OSS ライブラリが多いため、実際のシステム開発での利用はまだ難しいと考察した

## 背景

BIPROGYでは、Spring Boot ベースのサンプルアプリケーション`Dressca`を作成し、様々な案件で雛形として使用しています。

とある案件で、Spring Boot アプリケーションのバッチ処理において、アプリケーション起動時に Bean の生成や初期化処理に時間がかかってしまうことが問題として挙げられていました。そこで、この時間を低減するための

元記事を表示

Java アプリ作成

## オリジナルアプリを作成
まだまだ初心者ですが、オリジナルアプリを作成しました。思うようにいかないことや完全な理想ではないですが、アプリを製作することで勉強になりました!
本での学習や他にもアプリを製作しため、クラス名が重ならないようにした部分もあり名前がわかりずらい部分があればすみません:sob:

#### スッキリわかるJava入門
を参考書に勉強しました:relaxed::relaxed:
あとは、ネットで調べたり、チャットGPTを利用し考え方や必要なメソッドを相談しました!!
初心者のため、つっこみどころなどあるかもしれませんが、もしよろしければ目を通して頂きご教授いただければ幸いです:bow:
メソッドの名前などわかりずらい、コメント入れた方がいい、見にくいなどやこんな考え方の方がいいなどもあればぜひお願いします:bow:

英語が本当に全然だめで調べまくりました:joy:
これは慣れてくるものなのか、、、
英語の勉強もしていきたいなと思いました:robot:

### 内容
飲食の注文アプリで、基本的には数字を使い注文をするスタイルです。
“` MainApp.j

元記事を表示

java。spring。HttpHeaders型。ループで表示

Spring FrameworkのHttpHeaders型のインスタンスを作成し、そのヘッダーをループで表示する方法について説明します。HttpHeadersクラスは、HTTPリクエストおよびレスポンスのヘッダーを管理するためのクラスです。

以下は、HttpHeadersインスタンスにいくつかのヘッダーを追加し、それをループで表示するサンプルコードです。

“`java
import org.springframework.http.HttpHeaders;

public class HttpHeadersExample {
public static void main(String[] args) {
// HttpHeadersのインスタンスを作成
HttpHeaders headers = new HttpHeaders();

// ヘッダーを追加
headers.add(“Content-Type”, “application/json”);
headers.add(“User-A

元記事を表示

(調査中)Javaでhttpclientでファイルをレスポンスとして受け取り、NASサーバーに保存

JavaでHttpClientを使用してファイルをレスポンスとして受け取り、NAS(ネットワークアタッチトストレージ)サーバーに保存する方法を以下に示します。ここでは、ファイルをレスポンスとして受け取った後に、NASサーバーの共有フォルダに保存する方法を説明します。

NASサーバーにファイルを保存するためには、事前にNASの共有フォルダがマウントされているか、アクセス可能である必要があります。以下の例では、NASの共有フォルダがローカルファイルシステムのパスとして利用可能であることを前提としています。

#### 前提条件
NASの共有フォルダがローカルファイルシステムにマウントされていること(例: //nas-server/shared が Z:\shared としてマウントされている)。
#### コード例
以下のコードでは、HttpClientを使用してファイルをダウンロードし、そのファイルをNASの指定されたパスに保存します。

“`java
import java.net.URI;
import java.net.http.HttpClient;
import java.

元記事を表示

双方向リストの初期化とダミーヘッド・ダミーテイルについて

## 双方向リストの基本構造

双方向リストは、各ノードが前後のノードへの参照を持つデータ構造です。これにより、リスト内のノードを両方向にたどることができます。

### ノードの構造

まず、ノードの構造は以下のようになります:

“`java
class Node {
K key;
V value;
Node prev;
Node next;

public Node(K key, V value) {
this.key = key;
this.value = value;
this.prev = null;
this.next = null;
}
}
“`

– `key`:ノードのキー
– `value`:ノードの値
– `prev`:前のノードへの参照
– `next`:次のノードへの参照

### ダミーヘッドとダミーテイル

双方向リストを簡単に管理するために、ダミーヘッド(head)とダミーテイル(tail)という特別

元記事を表示

【Spring Boot】flyway-database-mongodbでMongoDBに対してマイグレーションを行う

## 概要
Spring Bootでは、[SpringBoot x Flywayで DBマイグレーションを行う](https://tech.excite.co.jp/entry/2023/03/07/122028)の記事にある通り、Flywayでマイグレーションを行う設定ができるのですが、MongoDBに対してマイグレーションを行う際に少しハマったので内容をメモ書きします。

## 前提
* 使用した言語はJavaになります。(Kotlinでもほぼ同様の設定で大丈夫と思いますが)
* 使用した`flyway-database-mongodb`のバージョンは`10.13.0`になります。
* ビルドツールはgradleを使用します。

## 設定内容
設定の概要等は、redgateというツールの[MongoDB](https://documentation.red-gate.com/fd/mongodb-225608320.html)の部分を参考にしました。こちらはSpringBootの設定ではないようですが、ほぼこの内容に沿った形になります。

### 1. gradleの設定
留意点

元記事を表示

Javaで「ビット演算子とシフト演算子」の動作を確認してみた

# 概要

Javaで「ビット演算子とシフト演算子」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/ope/index8.html

# 実装

以下のファイルを作成しました。
“`JSample8_1.java
class JSample8_1{
public static void main(String[] args){
int i1 = 85 & 15;
int i2 = 85 | 15;
int i3 = 85 ^ 15;
int i4 = ~85;

System.out.println(“85 & 15 = ” + i1);
System.out.println(“85 | 15 = ” + i2);
System.out.println(“85 ^ 15 = ” + i3);
System.out.println(“~85 = ” + i4);
}
}
“`
“`JSample8_2.java
class JSampl

元記事を表示

Junit どうやって使うの…? 初学者向け

 今回仕事でJunitを使用することになり初めて使用するためアウトプットとしてまとめてみました。記事に間違いがある場合はコメントしていただけると幸いです。
## JUnitとは

> JUnitとは、Java言語で開発されたプログラムの単体テスト(ユニットテスト)を行なうためのソフトウェア。また、そこで用いられるテストコードの記述体系を含むテストフレームワーク。
> IT用語辞典 e-Wordsより

つまり、Javaで使用する便利なテストツールだと言えますね!

JUnitにはユニットテストを行うために以下のような便利な機能が用意されています。
* アノテーション
* メソッド

まずは機能を説明する前にテストをするコードとテストコードを見ていきましょう。

## テスト Level.1
### テストするコード
“`java
public class FizzBuzz {

public String FizzBuzz (int number) {
String str = “”;
if (number % 3 == 0) {

元記事を表示

正規表現でJavadoc形式のコメントを通常コメントに戻す

## はじめに

備忘録です。よしなに。
正規表現を少し調べたのでついでに記事にしました。
## 環境
+ PleiadesでインストールしたEclipse
## 概要
本記事では、以下の画像のような形式のJavadocコメントを、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797991/d770ea65-4d5d-b154-20b5-2284bc507057.png)

以下の画像のように変更する正規表現を紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797991/faa7c638-b408-62cc-22b8-2023ff7bd77a.png)

## 方法

検索文字列
`\/\*{2}\n[\t ]+\* ([^\n])*\n{1}[\t ]*\*\/`

置換文字列
`\/\/$1`

検索文字列は適宜調整してください。

## おわり

ミスがあったら

元記事を表示

[Google Maps Datasets API(V1)] Javaで地理空間データのデータセットを取得する

Maps Datasets API V1(Java)を使用して、
GoogleMapsの地理空間データのデータセットを取得する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Maps Datasets API(V1)] Javaで地理空間データを利用する](https://qiita.com/doran/items/e45e84ccbb8cfddbfee7)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[データセット一覧を取得](#1-データセット一覧を取得)|
||1|[IAM権限](#11-iam権限)|
||2|[スコープ](#12-スコープ)|
||3|[実行](#13-実行)|
||4|[レスポンスの内容](#14-レスポンスの内容)|
|2||[データセットを取得](#2-データセットを取得)|
||1|[IAM権限](#21-iam権限)|
||2|[スコープ](#22-スコープ)|
||3|[実行](#23-実行)|
||4|[レスポン

元記事を表示

(調査中)Spring MVCアプリケーションをデプロイした際に日本語が文字化けする問題

## 1. Mavenの設定
``プロパティを設定することで、プロジェクトのソースコードのエンコーディングを指定し、ビルドプロセス全体でエンコーディングが統一されるようにします。特に国際化対応や日本語を扱うプロジェクトでは重要です。

“`xml UTF-8 “`

さらに、以下のように追加の設定をすることで、テストソースのエンコーディングも設定できます。

“`xml UTF-8 UTF-8

元記事を表示

(調査中)サーバー側とクライアント側のセキュリティ設定において、keystoreとtruststoreの役割と配置について

サーバー側とクライアント側のセキュリティ設定において、keystoreとtruststoreの役割と配置について説明します。

## keystoreとtruststoreの概要
#### keystore:

証明書と秘密鍵を格納する。
主にサーバー側で使用されるが、クライアント側でも必要に応じて使用される。
自分自身の証明書と秘密鍵を管理するためのストア。
#### truststore:

信頼する証明書を格納する。
クライアント側とサーバー側の両方で使用される。
他のエンティティ(サーバーやクライアント)の証明書を信頼するためのストア。
## サーバー側の設定
#### keystore
サーバーは自身の証明書と秘密鍵を使用してクライアントに対する認証を行うため、keystoreが必要です。

keystoreの作成には、通常以下のようなコマンドを使用します

“`sh
keytool -genkeypair -alias server-alias -keyalg RSA -keysize 2048 -keystore server.keystore
“`

#### tr

元記事を表示

JavaのListと配列まとめ[配列+ArrayList +LinkedList +HashMap+HashSet]

どうも、しがない工業大学生です。

Javaの配列とかListってややこしいですよね。未だにわからなくなることがよくあるので、軽くまとめてみました。

Pythonだと、リスト=配列みたいなイメージで定着していますが、Javaにおいては少し考え方が違います。

まず、今回のお話の結論を載せておきます。
## 結論
| 配列| 違い | List |
|:-:|:-:|:-:|
| あり | 要素数指定 | なし |
| なし | 要素の増減 | あり |

配列を使うべきところ
最初の時点で要素数が確定している場合や、何度もランダムな要素にアクセスするような場合
Listを使うべきところ
頻繁に要素の入れ替えが起こったり、要素の追加や削除が行われたりする場合

# コレクションクラスとは
まず、コレクションはインターフェイスで、抽象メソッドのみからなります。(全体を包括するのグループ)
Listはコレクションを継承したインターフェイスです。他にもSet,Mapなど

元記事を表示

[open-jdk 22 + Gradle 8.7] エラー ”BUG! exception in phase ‘semantic analysis’ in source unit ‘_BuildScript_’ Unsupported class file major version 66″

## 環境
– Windows10
– open-jdk 22.0.1
– open-jdk 21
– Gradle 8.7

### エラー発生
まず、open-jdk 22.0.1 と Gradle 8.7という組み合わせで、
`gradle clean build` を叩いた際に、下記のエラーが発生しました。

“`
FAILURE: Build failed with an exception.

* What went wrong:
BUG! exception in phase ‘semantic analysis’ in source unit
‘_BuildScript_’ Unsupported class file major version 66
“`

### エラーについての情報

このエラーについては、下記のISSUEが立っていました。
下記ISSUEはJavaではなくReactに対してのISSUEですが、
Gradle 8.7を動かすのにJava22ではエラーになるとのことです。

`Java21に落とせば、エラーが出なくなる`
とのことで、実際に

元記事を表示

Javaのオブジェクト指向を初学者でもわかりやすくポケモンとかで例える

Javaのオブジェクト指向を初学者でもわかりやすくポケモンとかで例えてみます

ポケモン以外にもいろんな例で例えることで、世界中のすべての人がJavaのオブジェクト指向を一瞬で理解できるようにしてみます。

# ポケモンでJavaのオブジェクト指向を初学者に説明

元記事を表示

Javaの`Integer`クラスのキャッシュ機構とプリミティブ型の比較について

## はじめに

Javaプログラミングにおいて、`Integer`クラスのキャッシュ機構とプリミティブ型の比較は、パフォーマンスとメモリ効率に大きな影響を与える重要な概念です。本記事では、`Integer`クラスのキャッシュ機構、オートボクシング、プリミティブ型とラッパークラスの比較について見ていきます。

## コード例

以下のコードを例に、それぞれの動作を説明していきます。

“`java
class Main {
public static void main(String[] args) {
Integer a = 128;
Integer b = 128;
Integer c = 127;
Integer d = 127;
int e = 127;
int f = 127;

System.out.println(a == b); // false
System.out.println(a.equals(b)); // true

元記事を表示

EclipseのJava実行時にjava.lang.UnsupportedClassVersionErrorが発生した場合の応急処置的対処法

備忘録です。よしなに。

## はじめに

### 環境

・Pleiades (日本語化Eclipse)

### エラーメッセージ
`Exception in thread “main” java.lang.UnsupportedClassVersionError: SamplePackage/SampleClass has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 52.0`

### 原因
このエラーは、ビルド環境と実行環境の組み合わせの不都合によって起こるエラーです。

### 解決法
Eclipseの設定内容を変更することで解消できます。

## 設定
### ビルド環境の設定

`ウィンドウ(W)` -> `設定(P)` の順に開いていくと、設定画面が表示されます。

設定画面左側メニューで、`J

元記事を表示

json

“`
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.*;

public class Main {
public static void main(String[] args) throws Exception {
// JSON文字列の定義
String jsonString = “{\n” +
“\”apiVer1\”:\”$$(TEST_NO1)\”,\n” +
“\”apiver2\”:\”$$(

元記事を表示

レガシーコードにおける単体テストのハードルを乗り越える思考フロー(初心者向け)

# はじめに

ついこの前、経験の浅いメンバー向けに単体テストを書きまくってもらう研修を実施したのですが、経験が浅いと「どうすれば単体テストを書ききれるか?」の見通しがうまく立てられないんだろうな~という印象を受けました。

なので、できるだけ体系立てて説明ができるように記事に残そうと思います。

# 想定読者

– 単体テスト経験の浅いメンバー(入社1~2年目くらい)
– レガシーコードの単体テストに苦手意識を持っている人

# 大前提

– 前提1:とってもレガシーなコードである
– 前提2:「これでだいたいのテストは書ける、しかし良いテストかどうかは分かりません」

20年物のレガシーコードなので、正直、難易度めっちゃ高いと思います。レガシーコードへの単体テストは特殊技能と言っても過言じゃないです。

また、最初から良いテストを目指さなくていいと考えています。良いテストなのかどうかを考えるのは、まず「なんでもテスト書けるぜ!」の状態を満たした後でよくて、というのはテストをいろいろ書いた経験がないとそのあとの議論が腹落ちしにくいと思うからです。

# もくじ

– [基本の思考フロ

元記事を表示

[Google Maps Datasets API(V1)] Javaで地理空間データを利用する

Google Maps Datasets API(V1)をJavaで使ってみました。
今回の記事はAPIを利用するにあたり準備する必要があるものを記事にしました。

***Maps Datasets APIとは***
独自の地理空間データをデータセットにアップロードし、
データ対象物にカスタムスタイル設定を適用して地図に表示できます。

点、ポリライン、ポリゴンのジオメトリに基づいてデータを可視化したり、
データ対象物をクリックイベントに反応させたりできます。

|No|||目次|
|—|—|—|—|
|1|||[Maps Datasets APIを使用するための準備](#1-maps-datasets-apiを使用するための準備)|
||1||[プロジェクトの作成](#11-プロジェクトの作成)|
||2||[Maps Datasets APIの設定](#12-maps-datasets-apiの設定)|
||3||[APIを使用するためのキー取得](#13-apiを使用するためのキー取得)|
|||1|[サービス アカウント](#131-サービス-アカウント)|
|

元記事を表示

OTHERカテゴリの最新記事