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

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

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-サービス-アカウント)|
|

元記事を表示

(調査中)javaでhttpclientでファイルをレスポンスとして受け取る。ただし、ファイルはローカルに保存しないで別のところに渡す

JavaでHttpClientを使用して、ファイルをレスポンスとして受け取り、ローカルに保存せずに別の場所(例えば別のURLにPOSTする)に渡すには、以下の手順を踏みます。具体的には、最初のリクエストで取得したレスポンスのバイトデータを直接次のリクエストに使用します。

以下に具体的なコード例を示します。

“`java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
import java.io.IOException;
import java.nio.ByteBuffer;

public class HttpClientRelayWithoutFile {
public static void main(String[] args) {
// 最初のリクエストの

元記事を表示

Javaで「インクリメント演算子とデクリメント演算子」の動作を確認してみた

# 概要

Javaで「インクリメント演算子とデクリメント演算子」の動作を確認してみました。
以下のページを参考にしました。

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

# 実装

以下のファイルを作成しました。
“`JSample6_1.java
class JSample6_1{
public static void main(String[] args){
int num = 5;

num++;
System.out.println(num);

num–;
System.out.println(num);

++num;
System.out.println(num);

–num;
System.out.println(num);
}
}
“`

以下のコマンドを実行しました。
“`
$ java JSample6_1
6
5
6
5
“`

# まとめ

何かの役に立てばと。

元記事を表示

(調査中)Javaのkeytoolを使ったキーストアとトラストストアの処理(PKCSを使った例)

PKCS(Public-Key Cryptography Standards)を使用した例を見てみましょう。特に、PKCS#12フォーマットを使ってキーストアとトラストストアを管理し、JavaでのSSL通信に利用する方法を説明します。

## 基本概念
#### キーストア (Keystore):

自分の証明書と秘密鍵を格納するための場所です。
クライアント認証を行う際に、自分自身を証明するために使用します。

#### トラストストア (Truststore):

信頼できる証明書、特にサーバーの証明書や証明書を発行する認証局 (CA) の証明書を格納します。
サーバーとの通信を確立する際に、サーバーの証明書が信頼できるかどうかを検証するために使用します。
## PKCS#12のキーストアとトラストストアの作成

#### 1. キーストアの作成
OpenSSLを使って秘密鍵と証明書を生成:

“`sh
openssl req -newkey rsa:2048 -nodes -keyout client-key.pem -x509 -days 365 -out client-ce

元記事を表示

直近の開発の課題と解決案(SQLとコードの一般論)

# 1. 前段
とあるIT企業に所属していて、Java(Springboot)+Mybatis+MySQLで新しいシステムを立ち上げました。私自身は、プロジェクトマネージャーで必要な業務要件を理解しつつ、コードも書けるタイプです。(ただし、Springbootのフレームワークはあまり詳しく無いため、詳しい人に助けてもらいながら開発してきました。)

そして今現在、システム稼働から1年以上経過したところで、気づいたら技術負債がかなりたまってしまいました。
私としても失敗して初めて気づいたこともあったので、将来同じ失敗をしないために、ここにメモをします。なお、あまり特定の技術には偏っておらず、SQLとコードの一般的な内容ばかりです。

もし気づいたことや意見があれば、コメントいただけると助かります!

# 2. 「とりあえず」で作ったけど必要無かった

## (1) 削除フラグ(関連:SQLアンチパターン幻の第26章)

### 課題
参考のスライド内でもいろいろ書かれているが、私が困ったのは主に以下の2点。
– SELECT時に削除フラグをWHERE条件内に書き忘れる。結局、システム全体

元記事を表示

Javaのラッパークラスについて

## はじめに
Javaのラッパークラスは、基本データ型(プリミティブ型)をオブジェクトとして扱うためのクラスです。これらのクラスは、Javaのコアライブラリで提供されており、プリミティブ型をオブジェクトとして使用する必要がある場合に役立ちます。この記事では、ラッパークラスの概要、各ラッパークラスの説明、使用方法、オートボクシングとアンボクシング、そしてラッパークラスの利点と欠点について見ていきます。

## ラッパークラスの概要

Javaには、次の基本データ型があります:

– `byte`
– `short`
– `int`
– `long`
– `float`
– `double`
– `char`
– `boolean`

これらの基本データ型には、それぞれ対応するラッパークラスがあります:

| プリミティブ型 | ラッパークラス |
| ————– | ————– |
| `byte` | `Byte` |
| `short` | `Short` |
| `int`

元記事を表示

(java gold)Set

## Set

* 重複した要素を含むことができないコレクション
* 順序があるとは限らない

* Setを継承したクラス
1. `HashSet`: 値の重複を許さない順不同の要素集合を扱います
2. `TreeSet`: 値の重複を許さないソートされた要素集合を扱いま

## Setのメソッド
### 追加
| メソッド名 | 概要 |
|:–|:–|
set.add(o) | オブジェクト o を配列の末尾に追加する

### 削除
| メソッド名 | 概要 |
|:–|:–|
set.remove(o) | オブジェクト o にマッチする要素を削除する
| set.clear() | 配列をクリアする |

### 取得
:::note warn
メソッドは用意されていない
:::

### 要素数
| メソッド名 | 概要 |
|:–|:–|
|`list.size()` | 要素の個数を得る|

元記事を表示

(java gold)List

## List

* 順序付けられたコレクション。重複した要素を含むことができる、ユーザーは要素を挿入する場所やインデックスによって要素にアクセスすることを正確に制御できる

* Listはインターフェースなのでインスタンは生成できない

* Listのメリットはコレクション(データ型)に変更したい場合、宣言時に手を加えなくていい

* ListのデメリットはArrayListにしかメソッドがないときにキャストしなければならない

* Listは以下のクラスで実装されています
1. `ArrayList`: 配列を扱う一般的なクラス
2. `LinkedList`: 要素がどのように並んでいるか別で管理しているために要素を削除したり追加する場合にArrayListよりも高速に動作するが、要素を順にたどるため検索などはArrayListよりも遅くなる
3. `Vector` : ArrayList や LinkedList と同じように扱うことができますが、同期をとるためパフォーマンスが悪い(スレッドセーフ)
4. Stack

元記事を表示

OTHERカテゴリの最新記事