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

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

【Androidアプリ開発】Hilt Unable to instantiate activity 解決策

## はじめに

DIをやりたかったのでH

元記事を表示

ACSのサポート(推奨)Java について ~2024.10月時点

主題の通りです。

## ACSのサポートJavaに関するドキュメント

こちらの情報を参照してください。

Java Options for IBM i Access Client Solutions?
https://www.ibm.com/support/pages/node/719405

## 2024年10月時点での推奨Javaバージョンについて

***ACS 1.1.8.0以降はJava 8 以降がサポートになります。上記ドキュメントによれば、推奨はJava 11です。(2024/10現在)***

## ACSが推奨するJavaディストリビューターは?

上記のウェブページに記載があるのは下記4つです。推奨、と明確に書かれていないものもありますが、わざわざ3つ挙げていますのでほかのJavaよりは推奨、と言えると思います。

**1.Oracle OpenJDK**

**2.IBM Semeru Runtimes IBM OpenJ9 (Eclipse OpenJ9)**
https://developer.ibm.com/languages/java/seme

元記事を表示

【Java】Spring BootとMySQLを使ったREST API構築入門 – データベースからテーブルのデータを取得する

この記事では、`build.gradle` に必要な依存関係を追加済みの状態で、Spring BootアプリケーションからMySQLデータベースに接続し、`test_table` テーブルのデータを取得するREST APIを構築する手順について解説します。

## 準備

### 1. テーブル作成
A5でテーブルを作成し、データを投入しておく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782903/b4727166-7b6b-6634-f36b-14c58ba894a1.png)

## 手順

### 1. `TestTable` エンティティの作成

まず、データベースの `test_table` テーブルに対応するJavaクラスを作成します。このクラスはJPAのエンティティとして設定され、Spring Data JPAがデータベースのテーブルとマッピングを行います。

#### エンティティクラスコード例

“`java
package com.example.demo

元記事を表示

Java 文字列⇔数値 変換

Java の 文字列⇔数値 変換に関する、自分用のメモです。

# 数値 ⇒ 文字列
## valueof() メソッド
### 使用例
“` Java
int i = 0;
long l = 0L;
String s1 = String.valueof(i);
String s2 = String.valueof(l);
“`

### メソッドの説明
“` Java
String クラス
public static String valueOf(int i)

public static String valueOf(long l)
“`
int / long 引数の文字列表現を返す。

## +演算子
### 使用例
“` Java
int i = 0;
String s = “” + i;
“`

## toString() メソッド
### 使用例
“` Java
int i = 0;
String s = new Integer(i).toString();
“`
### メソッドの説明
“` Java
String クラス
public String

元記事を表示

【Java】配列中の最大値検索をJavaで実装してみる【アルゴリズム】

## はじめに
基礎的なアルゴリズムをJavaで実装していきます。
今回は **「配列中の最大値検索」** です。

## 配列中の最大値検索
目的:
カンマ区切りの複数の数値を受け取り、その中で最も大きい数値を検索します。

手段:
「配列に格納した値を先頭から1つずつ取り出して比較し、前より値が大きければ戻り値を更新する。
 配列の最後の値を比較し終わった時点で戻り値に入っている値が、その配列の最大値になる。」というアルゴリズムです。

## 設計
カンマ区切りの値を1つ1つ配列に格納するために `split()` を使っています。
また、1行単位で標準入力を読み込んだ場合String型になるので、それをint型に変換する処理を挟んでいます。(数値の大小比較をしたいため)

## ソース
### フォルダ構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524566/1dd917c6-8a51-f265-a341-e3677264ab6c.png)

### ソースコード
“`

元記事を表示

JSP&サーブレットによるwebアプリケーション作成の覚書

# はじめに

JSP&サーブレットで web アプリケーションを作成する際に学習した事項を絞って覚書にしました。あまり触らなくなりましたが、基本的な部分を忘れかけていたので、ここに覚書として残しておきます。

:::note warn
最新の情報では無い場合があります。
:::

# Tomcat

Tomcat はオープンソースのサーブレットコンテナ。サーブレットコンテナとは、端的に言うと「JSP に対応したウェブサーバ」のこと。Tomcat では、サーバ上のプログラムを「アプリケーション」という単位で管理しており、一つのサーバの中に複数のアプリケーションを配備することができる。

### アプリケーションフォルダの設定

1. webapps フォルダに配置する方法
アプリケーション(WAR ファイルまたは展開されたフォルダ)を Tomcat の webapps ディレクトリに配置する。Tomcat は起動時にこのフォルダ内のアプリケーションを自動的に検出して展開する。
1. 外部設定ファイルを使用する方法
Tomcat にアプリケーションフォルダの場所を設定するには

元記事を表示

先輩社員がどうやって不具合を解決しているのか

## 自己紹介

– opengl-8080
– たまに Qiita で技術メモを書いたり
– 関西在住・SIer 勤務

## はじめに

– システム開発をしていると、いろいろな場面で不具合と遭遇する
– 当然、不具合は解決しなければならない
– 下に若手がついて一緒に開発をすることがあるが、不具合の解決方法が分からないと相談を受けることがよくある
– 経験が浅いと、不具合調査のために何から着手すればいいか分からない
– ある程度パターン化された手順を踏むことで、多くの不具合は解決できるという経験的な認識がある
– 私がどういう手順で、何を考えながら不具合の解決を行っているかを整理・説明することで、若手の成長に繋がれば幸い

Java SE Gold で勉強したことメモ(Predicate編)

関数型インターフェースのPredicate\の使いどころについて以下のような場合が挙げられるようです。
Predicateを用いて説明用変数を導入し、処理内容を分かりやすくできます。

“`php:Type.java
public enum BloodType{ //血液型を表すEnumクラス
A,B,AB,O;
}
“`
“`php:Patient.java
public class Patient{ //患者を表すクラス
private BloodType bType;
private int age;

public Patient(BloodType bType, int age){
this.bType = bType;
this.age = age;
}
//getter類は省略
}

“`
Predicateを使用しない場合
“`php:Main.java
public class Main{
public static void main(String[] a

元記事を表示

Spring Bootをマスターするまでのロードマップ

# はじめに
業務でSpring Bootを使って、REST APIの開発する予定なので、マスターするまでのロードマップを生成AIに聞いてまとめてみました。

私のスキルレベルはこんな感じ
– Javaは学生の頃からちょくちょく触ってて、業務でもコーディングはしてきた。(半年 ~ 1年未満)
– Spring Bootに関しては、1ヶ月程度研修で勉強したレベル (1年前ぐらい)  
DIコンテナあたりの概念は知ってて、超基本的な実装だったらできるつもり

# 生成AIに質問してみた
こんな感じで質問してみました、結構良さそう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561504/7ac57199-03d0-6c82-7200-2340bc448d87.png)

# 作成したロードマップ
内容精査して、整理してみた。ねずみ色はこれから学習しようと思っていること。
苦手意識があり、注力してしっかり勉強したいことは赤色にしました。
※括弧内は到達レベルの目標です。
## 基本編 (

元記事を表示

Javaで例外からスタックトレースを文字列として取得する

`StringWriter` と `PrintWriter` を組み合わせて使用する方法があります。
例外のスタックトレース全体を文字列に変換することができます。

## サンプルコード
“`StackTraceToStringExample.java
import java.io.PrintWriter;
import java.io.StringWriter;

public class StackTraceToStringExample {
public static void main(String[] args) {
try {
// 例外を発生させる(例として、0で割り算)
int result = 10 / 0;
} catch (Exception e) {
// スタックトレースを文字列として取得
String stackTrace = getStackTraceAsString(e);
System.

元記事を表示

Spring Session JDBC デフォルトテーブル名の変更

## 環境
Mac OS Sonoma : 14.6.1
Eclipse IDE : 2024-09 (4.33.0)
Spring Framework : 6.1.13
Spring Boot : 3.3.4
Spring Security : 6.3.3
Spring Session JDBC: 3.3.0
Eclipse Embedded Maven : 3.9.9
JDK (Java Development Kit) : 21
MySQL Server : 8.0.28 MySQL Community Server – GPL(Dockerコンテナ上に構築)

:::note warn
注意
情報が正確かつ明確であるよう努めていますが、間違いや不完全な説明があるかもしれません。
内容を改善するためのフィードバックや修正を歓迎します。 ご理解のほど、よろしくお願いいたします。
:::

## 前提
①なんらかのSpring Bootプロジェクトが作成済みであること。
②セッション管理を必要とする処理が実装されていること。(今回はあらかじめ、ログイン機能が実装されています。)

元記事を表示

ログイン認証について

# はじめに

SpringSecurityを使用したログイン認証については、framework内で処理が行われているため、少々わかりにくいことがあるかと思います。認証プロセスを理解することで認証周りの開発も躓くことなく進められると思いますので、認証プロセスについて解説していきます。

# SpringSecurityを使用した認証プロセス

ログイン認証時のユーザー名とパスワードの検証は、Spring Securityの認証プロセス内で行われています。具体的には、以下の流れになります。

1. ユーザがログインフォームからユーザ名とパスワードを入力して送信します
1. “`UsernamePasswordAuthenticationFilter“`がリクエストを受け取り、ユーザー名とパスワードを抽出します
1. “`AuthenticationManager“`によって認証プロセスが開始されます
1. 取得したユーザー情報のパスワードと、入力されたパスワードを“`PasswordEncoder“`を使用して比較します
1. パスワードが一致すれば認証成功となり、ユーザーの

元記事を表示

【Java】JUnitの基本操作

# 概要
JUnitの基本操作について学習した際の備忘録です。

# JUnitによるテストのメリット
– テストに要する工数の削減。テストケースが体系化されており、一度作成したテストケースは何度も利用可能であるため
– 使用やソースプログラムの機能が明確になる
– コード変更による退行を防ぎ、リファクタリングを促進させる

# 網羅条件
– 命令網羅(statement coverage)(C0)
全ての命令を少なくとも1回は実行するテストを行う
– 分岐網羅(branch coverage)(C1)
分岐のパスを全て少なくとも1回は通るテストを行う
– 条件網羅(condition coverage)(C2)
分岐の際の判定条件が複数ある場合に、それぞれの条件が真あるいは偽になる場合を少なくとも1回は含むテストを行う

# JUnitの設定と基本操作
Eclipseを使用する場合の設定と基本操作です。バージョンはEclipse(pleiades all in one)2023です。
### テストケースの作成
1. テスト対象クラスを右クリック
1. 新規>その他>Java>JUn

元記事を表示

Java SE Gold で勉強したことメモ(Enum編 その2)

JavaのEnum型のクラスにはコンストラクタを定義することができるみたいです。
Enum型の列挙子はEnumを使用するタイミングでJVMが自動であまねくインスタンス化するらしいです。

また、JavaのEnumはほかの言語のEnumとちがってクラスとして定義されていて、Objectを継承、Serializable、Comparableを実現しているため、toString()やhashCode()、compareTo()などのメソッドが用意されています。

それを踏まえたうえで、以下のコードは次のような結果になります。

“`php:EnumSample.java
public enum EnumSample{
Gold(“Gold!”),Silver(“Silver!”),Bronze(“Bronze!”);
private String value;

private EnumSample(String value){
this.value = value;
System.out.println(this.value);

元記事を表示

Java SE Gold で勉強したことメモ(Enum編)

JavaのEnum型のメソッドで以下のようなものがあるみたいです。
“`php:EnumSample.java
public enum EnumSample{
Gold,Silver,Bronze
}
“`
“`php:Main.java
public class Main{
public static void main(String[] args){
//EnumSampleの列挙子を配列型で返すvaluesメソッド
for(EnumSample e: EnumSample.values()){
System.out.println(e);
}
}
}
“`
[Java SEのAPI](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Enum.html)にもvaluesメソッドは載っていないようです。

使いどころあるかもしれなさそうだったのでメモしておきます。
間違っている箇所があれば教えてください。

元記事を表示

Singly linked list (単純連結リスト)

LeetCode で初見の下記の表記にビビって扱いの理解に数時間かかったがどうもしっくりこない。

“`
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
“`

https://leetcode.com/explore/learn/card/the-leetcode-beginners-guide/692/challenge-problems/4426/

このチュートリアルの動画がとても詳しく説明してくれていて初心者にためになる。
10分で理解できるのでこれを見るべし。

元記事を表示

Spring Retryを使用してリトライ処理を簡単に実装する

## はじめに

Webアプリケーションにおいて一時的なネットワーク障害や外部APIの応答遅延といったエラーが発生することがあります。
これらのエラーは再試行(リトライ)によって回避できる場合がありますが、手動でリトライロジックを実装するのはなかなか面倒です。
そこでSpringに備わっている機能のSpring Retryを使うことで、簡単にリトライ機能を実装することができます。

## Spring Retryとは?

Spring Retryは、Springプロジェクトに含まれるライブラリで、例外発生時に処理を再試行するための簡単な方法を提供してくれます。
このライブラリを使うことで、以下のようなケースでリトライロジックを自動的に実装できます。

– ネットワークの一時的な障害
– 外部APIのタイムアウト
– 一時的なデータベースエラー

Spring Retryは、アノテーションベースで簡単に設定でき、リトライ間隔やリトライ回数、特定の例外に対してのみリトライを行う設定が可能です。

## Spring Retryのセットアップ

まず、Spring Retryを使用するために

元記事を表示

カスタムバリデーターを作ってより厳密にチェックをする

## `@Email`アノテーションとは

Springフレームワークの`@Email`アノテーションは、メールアドレスの妥当性を検証するための一般的な手段です。

## `@Email`アノテーションの問題

`@Email`アノテーションは、メールアドレスのフォーマットをチェックしますが、特殊文字や全角スペースのチェックは行いません。
そのため、ユーザーが不正な文字を含むメールアドレスを入力してもエラーが発生せず、登録が完了してしまうケースがあります。
この問題に対処するためにカスタムバリデーターを実装する方法を解説します。

## カスタムバリデーターによる解決策

この問題を解決するために、カスタムアノテーションとカスタムバリデーターを実装し、全角スペースを削除してからバリデーションを行う仕組みを導入します。

カスタムアノテーションの実装は次の通りです。

“`java
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Eleme

元記事を表示

JAVA で 単体テストを自動化するための JUnit についてを解説

## ■ はじめに

JAVAでコーディングしたコードの単体テストを行う際には様々な方法がありますが、
今回紹介する`JUnit`はJavaで単体テストを自動化するためのフレームワークです。

テストを自動化することは人為的なテストの漏れやミスを減らし、プロジェクトの品質向上に繋がります。
この記事ではJUnitの基本的な使い方から実際のテストケースの作成方法を解説していきます。

## ■ 目次

1. [JUnitのインストールとセットアップ](#1-junitのインストールとセットアップ)
2. [JUnitでの基本的なテストの書き方](#2-junitでの基本的なテストの書き方)
3. [アサーションを使ったテストの実施](#3-アサーションを使ったテストの実施)
4. [JUnitのライフサイクルメソッド](#4-junitのライフサイクルメソッド)
5. [まとめ](#5-まとめ)

## 1. JUnitのインストールとセットアップ

まず最初にJUnitを使うための環境をセットアップを行う必要があります。
`Maven`や`Gr

元記事を表示

JavaScript以外でもどんどん変数を定数として宣言しようという話

# はじめに
JavaScriptだとかなり認知が広まりつつある「変数はできるだけ`const`で宣言して、厳しい場合だけ`let`を使おう」という話。
なぜかJavaScript限定で話されがちですが、よく考えたらJava等でも同じようにしたほうが良いのでは?

# 例
Salesforceの文法なので厳密には違うかもしれませんが、まあJavaと似たようなもんのはず。
“`java
public static void testMethod(String inputValue) {

Boolean isXXX = checkValue(inputValue);

// 色んな処理がずらっと何十行

if (isXXX) {
// 色んな処理
}
}
“`

さあこの時、下の`if`分岐のときに`isXXX`が最初の宣言通りかどうかは、きちんとコードを全部見ないといけません。
(検索したら良いというのはもちろんですが、それは一旦置いておいて)

こういうのを避けるためにJavaScriptでは「`const`を使おう

元記事を表示

OTHERカテゴリの最新記事