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

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

Java Jsp サーブレット フォームの値取得。出力。

### ■完成画面

・Eclipse使用

1:入力画面(insert.jsp)

![スクリーンショット (106).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/e80c779a-4ce2-bdda-5cdf-b60ff572e7da.png)
2:処理(ShainInsertComplete.java)
![スクリーンショット (107).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/76ddeafe-ac07-650a-8b3b-d53b80e2cb96.png)

### ■ソースコード
・insert.jsp
“`jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>



元記事を表示

Mustacheテンプレートを使用したソース自動生成

# はじめに
何十年も前からプログラムソース自動生成は行われてきました。今でこそ、生成AIが自動生成してくれますが、昔はルールベースで、テンプレートエンジンと呼ばれるライブラリがその役割を担っていました。**Apache Velocity**等はHTMLを生成するJSP等の代わりに使用するエンジンとして使用されるケースも多かったですが、私が携わっていたプロジェクトではソース自動生成ツールのテンプレートとして使用していました。

また、多くのOSSでもテンプレートエンジンは使用されており、例えば**OpenAPI Generator**は内部に**Mustache**を使用しています。
今回、私もMustacheを使用してソース自動生成を作ってみたのですが、多少ハマったため、Mustacheについてご紹介いたします。

尚、今回はソース自動生成を目的としたMustacheの利用になりますが、Mustacheは**Velocity**や**Thymeleaf**等と同様に動的HTMLを生成することもでき、**SpringBoot**でもサポートしてます。ただ、今回はあくまでプログラムソース

元記事を表示

韓国語の形態素解析をJavaで行う

# 概要

韓国語の形態素解析器はいくつか存在するようですが、「open-korean-text」がよさそうでした。

https://github.com/open-korean-text/open-korean-text?tab=readme-ov-file

# maven

“`xml

org.openkoreantext
open-korean-text
2.1.0

“`

# サンプルコード

“`java
package hello;

import java.util.List;

import org.openkoreantext.processor.KoreanTokenJava;
import org.openkoreantext.processor.OpenKoreanTextProcessorJava;
import org.open

元記事を表示

Javaのメモリ管理とガベージコレクションの仕組みについて

## ■ はじめに

初めに**GarbageCollection**とい言葉について。

**garbage(ガベージ)** : 「ごみ」や「くず」、「がらくた」などのこと。
**collection(コレクション)** :「収集」や「回収」、「収集物」などのこと。

garbage + collection = GarbageCollection (ガベージコレクション)
つまりガベージコレクションは直訳で**ごみの収集** といった意味合いになります。

Javaでいうガベージコレクションとは**プログラムで使用していないメモリを開放すること**です。
またガベージコレクタというものが、定期的にメモリの開放を行います。

このガベージコレクションはメモリリーク[^1]の発生を防ぎ、
アプリケーションを効率よく動作させるための最適化に役立ちます。

この記事ではJavaのメモリ構造やガベージコレクションの役割、
ガベージコレクションチューニングの基礎知識について解説していこうとおもいます。

## ■ 目次

1. [Javaのメモリ構造](#1-j

元記事を表示

【備忘録】Spring Securityの導入

# Spring Security
Spring Security実装のメモ書き
## 開発環境
javaのバージョン : 21
springbootのバージョン : 3.3.5
依存関係の管理 : gradle

## Spring Security の追加
gladleに依存関係を追加します。
“`gradle:build.gradle
dependencies {
implementation ‘org.springframework.boot:spring-boot-starter-security’
}
“`
プロジェクトを再ロードすることでSpring Securityがプロジェクトに追加されます。

## ログイン画面の表示
Spring securityの追加が完了すれば、ログイン画面が使えるようになります。
プロジェクトを実行し、http://localhost:8080 にアクセスするとログイン画面が表示されます。
![ログイン画面](https://qiita-image-store.s3.ap-northeast-1.amazon

元記事を表示

【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メソッドは載っていないようです。

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

元記事を表示

OTHERカテゴリの最新記事