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

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

Javaで「文字列の中で指定した文字または文字列が出現するインデックスを取得する」の動作を確認してみた

# 概要

Javaで「文字列の中で指定した文字または文字列が出現するインデックスを取得する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/string/index18.html

# 実装

以下のファイルを作成しました。
“`JSample18_1.java
class JSample18_1{
public static void main(String[] args){
String str = “Hello World”;
System.out.println(str.indexOf((int)’o’));
System.out.println(str.lastIndexOf((int)’o’));
}
}
“`

“`JSample18_2.java
class JSample18_2{
public static void main(String[] args){
String str = “東京都と京都府”;

System.out.p

元記事を表示

【Spring Boot】ログイン機能とログインユーザーの取得

Spring Bootを使ってログイン機能を作成しようとしたら思ったより複雑だったので記録(2022時点で動作確認済み)

## 前提
version
“`
java 11
maven 3.6.3
Spring Boot 2.7.0
“`

必要なdependencyの追加
“`pom.xml

org.springframework.boot
spring-boot-starter-web


org.springframework.boot
spring-boot-starter-security

“`
次のようなアカウントのEntityクラスを使用想定
“`Account.java
@Entity
@Table(name = “accounts”)
@Getter
@Setter
publ

元記事を表示

Java初学者へのサポートする事を考える

# 概要
会社の人材育成を目的にJavaを知らない人がJava初学者へサポートできることを考える

# 確認事項
## 受験資格はOracle Certified Java Programmer, Silver SE 11(これで間違いない?)
https://www.oracle.com/jp/education/certification/1z0-816-jpn-31705-ja.html
> 関連資格:Oracle Certified Java Programmer, Silver SE 11
> 受験料(税込):37,730 円 価格ポリシーについて
> 出題形式:選択問題
> 試験時間:180 分
> 出題数:80 問
> 合格ライン:63 %

180分の試験なので、きつそうな印象であるが、合格ラインは低い。

## 学習教材
あとで正式名を確認するが、すでに購入済

# 出来る事リスト(案)
1. 希望があれば、なんでもどうぞ。
1. 模擬試験でわからないところの解説
1. 業務の即戦力になりたいなら、資格取得を辞めてアプリケーションを作る学習にシフトしましょう
1. ま

元記事を表示

【Java】開発未経験者が10日間でJava Gold SE11に合格した話

# ■はじめに
運よくまとまった時間が取れて10日間でJava Gold SE11に合格出来たので、その時の勉強方法をまとめてみました。
受験時の自分のレベルとしては以下のような感じです。

**・現場での開発は未経験**
**・Spring Bootを使用して簡単なサービスを作ったり個人的にJavaの学習はしていた。**

# ■この記事の対象者
・Java Goldの資格取得を考えている方

※Java Goldを受験するにはJava Silverに合格している必要があります。
 よろしければJava Silverに合格したときの記事もご参照ください。

https://qiita.com/kiiiiiinusu/items/256bd648312536683a24

# ■もくじ
**1.使用教材&試験日までのスケジュール**
**2.学習ロードマップ**
**3.まとめ**

# 1.使用教材&試験日までのスケジュール
**使用教材:**
黒本のみ
Jmeter導入方法

# 概要
負荷試験を行う為、`Jmeter`を使用しました。今回は、`Jmeter`の導入方法について記載します。

# 手順
– [Homebrew](https://brew.sh/ja/)を使用して、[jmeter](https://jmeter.apache.org/)をインストールする
“`sh
brew install jmeter
“`

– jmeterのみでは正常に動作しない為、Homebrewから[Java](https://www.java.com/ja/)をインストールする
“`sh
brew install java
“`

– Homebrewを使用して[OpenJDK](https://openjdk.org/)(オープンソースのJava開発キット)を再インストールする
“`sh
brew reinstall openjdk
“`

– シンボリックリンクの作成とPATH環境変数の設定を行う
“`sh
# シンボリックリンクの作成
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openj

元記事を表示

【Spring Batch】Jobについて

## はじめに
Spring Batchを使用した大量データの移行を最近行ったのでアウトプットできればと思います。
1つの記事にまとめるには情報がありすぎるので、まずはJobについて書いていければと思います。
※間違いなどがあれば指摘していただけますと幸いです。

## 想定読者
– Javaの基礎を学習済みの方
– DIやBeanについて理解している方
– これからSpring Batchを学習していきたい方

## 動作環境
言語:Java
フレームワーク : Spring Boot(Spring Batch, Spring JDBC)
ツール : PostgreSQL, VSCode, Git

## 1.Spring Batchってなに?
まずは、そもそもSpring Batchってなに?というところから解説していければと思います。
Spring Batchとは、Spring Frameworkを中心としたSpringプロジェクトのひとつで、バッチ開発用のフレームワークです。SpringがもつDIコンテナやトランザクション管理機能をベースとした、さまざまな特徴を持っています。

元記事を表示

Springフレームワークで曲解的アジャイル開発を考えてみる#1 準備編

# 1.曲解的アジャイルとは
造語です。機能を絞って早く機能が使える段階にあればいいよね?という、深みがあるアジャイルを馬鹿にしたような考え方なので曲解と言ってみました。
新人研修4か月目の朝の時間で一つ記事を書いてみようと思います。

# 2.開発環境
・Eclipse IDE(pleiades2023-12)
・jdk:1.7
・tomcat:9.
・mysql:8.

### eclipseでダウンロードするもの
 下記のものはeclipse→ヘルプ→マーケットプレイスからダウンロード
・Spring4
・Spring Tools 3 Add-On for Spring Tools 4

# 3.プロジェクト準備
 https://start.spring.io/ にアクセスしてMaven,Java,3.3.1,Artifactの名前をアプリ名に、ADD DEPENDENICE S…から以下のライブラリを設定。
Spring Boot DevTools
・Lombok
・Spring Web
・Thymeleaf
・My

元記事を表示

Javaで「指定した区切り文字で複数の文字列を連結し新しい文字列を作成する」の動作を確認してみた

# 概要

Javaで「指定した区切り文字で複数の文字列を連結し新しい文字列を作成する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/string/index17.html

# 実装

以下のファイルを作成しました。
“`JSample17_1.java
import java.util.List;

class JSample17_1{
public static void main(String[] args){
String str1 = String.join(“-“, “Apple”, “Grape”, “Melon”);
System.out.println(str1);

List strings = List.of(“One”, “Two”, “Three”);
String str2 = String.join(” * “, strings);
System.out.println(str2);
}
}
“`

以下のコマ

元記事を表示

[備忘録 その2] Java Silver ~Javaプログラミング基礎~

# パッケージとインポート

## パッケージ
パッケージとはJavaプログラムにおいて関連するクラスやインタフェースをまとめるための仕組みです。パッケージはフォルダのようなものであり、関連するクラスやインターフェースを階層的に整理し、名前の衝突を避けることができます。これにより、大規模なプロジェクトでも管理しやすくなります。

例えば、‘com.example.myproject’ というパッケージには、‘com.example.myproject.PaymentProcessor’ や ‘com.example.myproject.TransactionManager’ などの関連するクラスが含まれます。

### パッケージ化
パッケージ化は、Javaプログラムを整理し、管理しやすくするために、関連するクラスやインターフェースをまとめてパッケージに分けるプロセスです。

#### パッケージ宣言
各クラスファイルの先頭に、そのクラスが属するパッケージを宣言します。

“`java
package com.example.myproject;

public class Paym

元記事を表示

Sprint Bootの環境を構築したときのメモ

# 背景・目的
今まで、Sprint Bootについてあまり触ってきませんでした。どのような特徴があるのかを[ドキュメント](https://spring.io/projects/spring-boot)を基に整理しようと思います。

# まとめ
下記に特徴をまとめます

|特徴|説明|
|:–|:–|
|Spring Boot|Springを使ったアプリケーションを高速開発するためのもの
SpringのFramworkを駆使したアプリケーションを素早く作成できる|
|Spring | Springのコア部分|

# 概要
[Sprint Boot](https://spring.io/projects/spring-boot)を基に整理します。

– Spring Bootを使用すると、製品グレードのSpringベースのアプリケーションがすぐに作成できる
– 最小限の労力で始めることができる
– ほとんどのSpring Bootアプリは、最小限のSpring構成が必要

## 特徴
– スタンドアロンのSpring アプリケーションを作成する
– WARファイルは、不要。T

元記事を表示

Javaでzipしてみた

# Javaでzipしてみた

KotlinだとふたつのListをzipでかんたんに噛み合わせることができる。Javaにもあったらいいのにな、とずっとおもっていた。
Java22で導入されたGathererを眺めていたら、なんとなくzipできそうな雰囲気があったので、試してみた。

## Gatherer
Java22でjava.util.stream.Gathererが導入されました。まだ、previewですが。
* [java.util.stream.Gatherer](https://docs.oracle.com/en%2Fjava%2Fjavase%2F22%2Fdocs%2Fapi%2F%2F/java.base/java/util/stream/Gatherer.html)
* [JEP 461: Stream Gatherers (Preview)](https://openjdk.org/jeps/461)

## windowSlidingをためす

Gatherers#windowSliding()をつかうと、zip的なことができそうですが、ふたつのStream

元記事を表示

Java CSV 比較ツール2

1. まず、JListの代わりにJTableを使用して、カラムの選択と順序の変更を可能にします。
2. カラムの順序変更のために、JTableをドラッグ&ドロップ可能にします。
3. 選択されたカラムとその順序を取得するメソッドを追加します。
4. SQLクエリの生成部分を修正して、選択されたカラムと順序を反映させます。

以下に、修正したコードの主要な部分を示します:

“`java
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.util.*;
import java.util.List;

public class CsvToSQLiteApp extends JFrame {
// … 他のフィールド …
private JTable columnTable;
private DefaultTableModel columnTableModel;

public

元記事を表示

Java JDBC

Java 11 Gold 取得に向けた学習記録
# Java JDBC
Javaプログラムから
– データベースへの接続
– SQLクエリの実行
– 結果操作

を行うためのAPIを**JDBC**(Java Database Connectivity)と言う。

データベースには、

– Oracle Database
– SQL Server
– PostgreSQL
– MySQL

など各社から開発された複数の製品があるが、JDBCは特定の製品に依存しない作りになっている。そのため利用時に特定の製品を意識する必要がない。

具体的にはインターフェース、例外クラスが`java.sql`パッケージ、`javax.sql`パッケージから提供される。これらはどちらも`java.sql`モジュールに属している。

https://docs.oracle.com/javase/jp/11/docs/api/java.sql/java/sql/package-summary.html

https://docs.oracle.com/javase/jp/11/docs/api/java.sq

元記事を表示

Javaで「文字列の一部を別の文字や文字列に置換する」の動作を確認してみた

# 概要

Javaで「文字列の一部を別の文字や文字列に置換する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/string/index16.html

# 実装

以下のファイルを作成しました。
“`JSample16_1.java
class JSample16_1{
public static void main(String[] args){
String str1 = “Herro Java”;
System.out.println(str1);
System.out.println(str1.replace(‘r’, ‘l’));

String str2= “東京都港区”;
System.out.println(str2);
System.out.println(str2.replace(“港区”, “中央区”));
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample16_1.java
$ java

元記事を表示

モナド則のテスト

モナド則を満足するコードをJavaで書こうとしています。
実行出来るコードが出来たが、自信が無いので、chatGPTに検証を求めました。
chatGPTには大丈夫と言ってもらえたが、検証過程が怪しいので、人のコメントがもらいたいです。
特に実用性は考えてはいないので、クイズ的な演習問題と考えて下さい。
以下にコードとchatGPTとのやりとりを記載します。
長いです。

“`java:モナド則のテストコード
import java.util.function.Function;

class Monad {
private final T value;

private Monad(final T value) {
this.value = value;
}

public T getValue() {
return value;
}

public Monad flatMap(final Function> f) {
return f.appl

SpringFrameworkの主要機能モジュール紹介

## SpringFrameworkの主な機能モジュール
SpringFrameworkは主に四つの大きな機能モジュールに分けられます。

| 機能モジュール | 機能紹介 |
|:-:|:-:|
| Core Container | Spring環境であらゆる機能を使用するには、IOCコンテナに基づいている必要があります |
| AOP&Aspects | アスペクト指向プログラミング |
| TX | 宣言的トランザクション管理 |
| Spring MVC | Webアプリケーション向けの統合機能を提供します。 |

Springの中で最も重要なのはIOC(Inversion of Control)とAOP(Aspect-Oriented Programming)に関連する機能です。次のノートでも重点的に説明します。

##### TIPS:最初にSpringフレームワークを学び始めた頃、英単語の日本語訳にいつも深く掘り下げていました。もしあなたも同じようなら、今、私には一つアドバイスがあります。

:::note warn
それは、英単語の日本語訳を深く掘り下げ

Javaで「文字列の最後に別の文字列を連結する」の動作を確認してみた

# 概要

Javaで「文字列の最後に別の文字列を連結する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/string/index15.html

# 実装

以下のファイルを作成しました。
“`JSample15_1.java
class JSample15_1{
public static void main(String[] args){
String str = “東京都”;

System.out.println(str.concat(“港区赤坂”));
System.out.println(str + “港区赤坂”);
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample15_1.java
$ java JSample15_1
東京都港区赤坂
東京都港区赤坂
“`

# まとめ

何かの役に立てばと。

BASIC言語のインタープレタをJavaで作る話

このweb記事を読んだ。

– [“Easy intro to writing a BASIC interpreter (with ANTLR)” by Matei, Nov_2017](
https://mateiw.github.io/antlr-intro/)

この記事は[BASIC](https://ja.wikipedia.org/wiki/BASIC)言語のインタープレターをJava言語で実装した事例である。BASIC言語の文法を記述したファイルをパーサー・ジェネレータ[ANTLR](https://www.antlr.org/)に与える。ANTLRがパーサを構成するJavaコードを生成する。自動生成されたコードを利用する形でインタープレタをJava言語で実装している。ビルドツールMavenを用いている。

わたしはこの記事が紹介するJavaコードを写経して動かしてみた。そのコードはよくできていてほとんど修正不要だった。それでもいくつか課題にでくわした。

わたしが見つけた解決方法を記述し公開しようと思う。

## 前提条件

わたしは下記の環境で作業した。

Javaで日付をインクリメンタルにフォーマットする方法:IncrementalDateFormatterクラスの使い方

# IncrementalDateFormatterの使い方

この記事では、Javaで日付をインクリメンタルにフォーマットするためのIncrementalDateFormatterクラスの使い方について説明します。このクラスは、指定した初期日付から特定の時間単位ごとに日付をインクリメントし、フォーマットされた日付文字列を生成します。

# クラスの概要
IncrementalDateFormatterクラスは、以下のパラメータを使用して初期化されます。

“`
pattern:日付のフォーマットパターン(例:”yyyyMMdd-HHmmss”)。
initialDate:初期の日付文字列。
calendarUnit:日付をインクリメントするカレンダーの単位(例:Calendar.HOUR_OF_DAY)。
amount:インクリメントする量。
repeat:インクリメントを繰り返す回数。
“`

# 使用例

以下は、IncrementalDateFormatterクラスを使用して日付をインクリメントする方法を示すテストコードです。このテストでは、初期日付を「2024/1/1

Jettyベースで作ったWebアプリケーションを1個のJARにまとめて配布する

# 目的

Java で動作するWebアプリケーションをJARファイル1つにまとめて配布することが目的です。簡単なのかと思いきや意外にコツが必要でした。

# Maven

## ディレクトリ構造

Mavenプロジェクトのディレクトリ構造は以下のようになっているものとします。標準的な構造かと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110265/a14384ca-238a-e7ea-119d-03d95c2631d1.png)

# Main クラス

“`java
package nlp4j.servlet;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.webapp.WebAppCont