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

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

# Javaのあれこれを調べたのものをAIで要約した記事

## Javaの歴史

– **1995年**: Sun MicrosystemsがJavaを開発。当初はインタラクティブテレビ向けに作られましたが、幅広いプラットフォームで使えることから、企業のソフトウェア開発にも利用されるようになりました。

– **1998年**: Javaのコミュニティ「Java Community Process (JCP)」が設立され、Javaの成長を支えるための組織的なサポートが開始されました。

– **2007年**: Javaがオープンソース化され、Sun Microsystemsがソースコードを公開。

– **2010年**: OracleがSun Microsystemsを買収し、Javaの管理を引き継ぎます。それ以降、OracleはJavaの商用サポートやアップデートの提供で中心的な役割を担っています。

– **2011年以降**: OracleはJava SEのオープンソース実装をリリースし、クラウドやセキュリティ対応といった企業ニーズに応える形でJavaが進化を続けています。

– **最近**: Javaはクラウドネイティブ技術やマ

元記事を表示

【Spring Boot入門】#7 更新機能を作成する

## はじめめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。

詳細画面の作成については、前回の記事を参照ください。

https://qiita.com/ioaio/items/0096af612698cc6547da

## 概要
企業情報一覧画面の「編集」リンクから更新画面へ遷移し、特定の企業に関する情報を更新できるようにします。

#### 完成イメージ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/30a27eb8-3217-c144-a67d-ce3cb3d58f55.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/3d0fe37a-0f87-0796-e2ef-d07b92aa92e1.png)

![image.png](https:/

元記事を表示

【Spring Boot入門】#6 登録情報詳細画面を作成する

## はじめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。

ID検索機能の作成については、前回の記事を参照ください。

https://qiita.com/ioaio/items/ce9eb5fc732f830b9ca7

## 概要
企業情報一覧画面から「詳細」リンクを押下すると、特定の企業に関する詳細情報が表示されるようにします。

#### 完成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/9c347075-ff8d-935e-7f61-65a51f8b71c9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/228a08bf-6cf7-bbae-980a-75ea0f572bbf.png)

## パッケージ構成
赤枠で囲ったHTML

元記事を表示

Java JSP,サーブレット MVCモデル。とりあえず、DB接続、SELECTで一覧表示。

## ■ディレクトリ構成

![スクリーンショット (110).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/99ae0175-50f7-a8f5-1ed1-c455e5f18183.png)

・表示画面
![スクリーンショット (111).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/1ebec0c6-c237-290b-d55d-76b3020e52ca.png)

## ■DB接続用(データソース)
・context.xml
“`.xml context.xml



【Java】DIとは何か (備忘録)

## はじめに
今回はJavaを学習した中で出会ったDI(dependency Injection)について記事を書いていきます。

## DI(dependency Injection)とは
DI(Dependency Injection)とは、クラス同士の結合度を低くする設計思想を指します。ここで述べる結合度とは、クラスAがクラスBに対してどれだけ依存しているかを表す概念です。

結合度が高い状態とは、クラスAがクラスBを呼び出すときに、クラスBのインスタンス(オブジェクト)を毎回生成して利用する状態を指します。この場合、クラスAはクラスBがなければ動作できません。そのため、クラスBに変更があった場合、クラスAにも大きな影響を及ぼします。

一方、DIを用いて結合度が低い状態とは、クラスAがクラスBを呼び出す際に、一度クラスCを経由することです。クラスCを介入させることで、クラスAとクラスBは独立した状態で動作できるようになります。これにより、いずれかのクラスに変更があった場合でも、影響を最小限に抑えることが可能となります。

## 例えるなら
DIの概念をわかりやすくするために

元記事を表示

Java が提供する制御文をまとめました

## はじめに
現在、私が進行しているJavaの勉強会でまとめた内容です。

内容に不正確な点があれば、ご指摘いただけるとありがたいです。

https://github.com/whiteship/live-study/issues/4

韓国人として、日本語とコンピュータの勉強を同時に行うために、ここに文章を書いています
翻訳ツールの助けを借りて書いた文章なので、誤りがあるかもしれません

## 制御文
ソースファイル内の文は、通常、上から下に向かって記述された順に実行されます。しかし、制御フロー文を使用すると、実行の流れを分岐させたり、条件に応じて特定のコードブロックを実行したりすることができます。

1. **条件文 (Decision-Making Statements)**
– `if`
– `if-else`
– `switch`

2. **繰り返し文 (Looping Statements)**
– `for`
– `while`
– `do-while`

3. **分岐文 (Branching Statements)**

元記事を表示

Spring Boot学習後の備忘録

# はじめに
Spirngbootの学習を行うために、書籍を購入し最後まで学習完了したので備忘録としてQiitaに残しておきます。

学習時期:2024/9~2024/10末(約2ヶ月)
学習時間:平日1~2h 休日2~3h程度
使用した書籍:【Spring Bootが丸わかり Sprin解体新書 第2版】

目次
1章:Springの概要
2章:開発環境の構築
3章:HelloWorld・・・簡単なサンプル
4章:Webアプリケーションの概要
5章:Dependency Injection(依存性の注入)
6章:バインド&バリデーション(入力チェック)
7章:画面レイアウト
8章:MyBatis
9章:AOP
10章:エラー処理
11章:Springセキュリティ
12章:REST
13章:Spring Data JPA

# 苦戦した章
6章:バインド&バリデーション(入力チェック)
8章:MyBatis
11章:Springセキュリティ

# 疑問点解決方法

・Qiitaにて問題点の投稿
・エラー文を参考にネットで解消方法検索
・チャットGPTを利用

元記事を表示

Java初学者が簡単なプログラムを作ったときに詰まったところ~オブジェクト指向、クラスの定義、フィールド、メソッドの定義、コンストラクター…etc~

## はじめに

Javaに入門し、基本的な記述方法(MapとかListとかforとかstrieamとか)は掴めたものの、プログラムを実際に組む段になっていろいろ詰まったので、理解を深めることも兼ねてアウトプットしておきます。

## 作成したプログラムの内容

– 図書管理システムを作る
– 書籍を管理する情報を持つオブジェクト(class)を作って、そこに情報を格納する
– 図書館見ないなものを作ってそこにBookをListで持つようなものを保持する
– mainメソッドからこのLibraryclassに対して検索できるようにする。Libraryクラスは書籍検索の機能を持つ
– タイトル検索、著者検索、番号検索メソッドをLibraryに持たせる
– それをmainメソッドから実行して、実行結果をコンソールに出力する

## 詰まったところ

### そもそも何をすればいいかわからない

オブジェクト指向については簡単に学んでいたので、まずは課題内容からオブジェクトを作ることから始めました

– 個々の本のオブジェクト:Book class

元記事を表示

IntelliJで日本語が文字化けしたときに確認したい3つの項目

## はじめに
Javaの勉強を始め、はじめてIntelliJを触りました。
ただ、自分の環境ではコンソール画面で日本語の文字化けが発生してしまい、解消に時間がかかってしまったので、解消した方法を記録しておきます。

### 環境
– Windows11
– IntelliJ IDEA 2024.2.4 (Community Edition)
– Oracle OpenJDK 21.0.5

## 問題
– コンソール画面で日本語が文字化けする
“`java
// ソースコード
package org.example;
public class Main {
public static void main (String[] args) {
System.out.println(“こんにちは!”);
}
}
“`
“`bash
// 実行結果
9:18:07: ‘:org.example.Main.main()’ を実行中…

> Task :compileJava
> Task :processResources NO-SOURCE
>

元記事を表示

【AWS SDK】SdkClientException(例外)対策…リトライ処理を記述しよう【Java】

# 背景(はじめに)
 AWS SDK for Java 2.xのAPIを呼び出しているプログラム内で、SdkClientException(例外)が不定期に発生していました。そのプログラム内ではSdkClientExceptionを想定してなかったため、発生するとプログラムが異常終了していたようです。
 本記事に、簡単にですが説明と実施した対策を残します。

:warning: **こちらは社内に2022年8月頃に公開したメモです。**

## SdkClientExceptionって何?
[SdkClientException](https://docs.aws.amazon.com/ja_jp/sdk-for-java/latest/developer-guide/handling-exceptions.html#sdkclientexception)
> SdkClientException は、AWS にリクエストを送信しようとしたとき、または AWS からの応答を解析しようとしたときに、Java クライアントコード内で問題が発生したことを示しています。SdkClientEx

元記事を表示

SpringBootにおけるコントローラからの画面遷移(超基本)

# 概要
表題の件について、基本がわかっていなかったので、まとめてみました。

# 前提条件
コントローラのクラスに`@Requestmapping(“/home”)`を設定、`doGet()`メソッドに`@Getmapping(“/foo”)`を設定している場合に、`return “記述部分”;`の記述部分に何を書くかという前提条件です。

# パスのみ記述した場合
例えば、`home/foo`と記述した場合、それをビュー名として解釈し、ビューリゾルバによって適切なビュー(Thymeleafであれば、resources/templatesフォルダの中のhome/foo.html)を探してレンダリングします。ビューリゾルバは、ビュー名をどのように解釈するかを設定ファイルやビューテンプレートエンジンに基づいて判断します。

# forward:パスと記述した場合
現在のリクエストが/homeであり、`forward:home/foo`を指定した場合、Springはこれを相対パスとして解釈し、/home/home/fooのように/homeを基準に相対的に解決することになります。

# re

元記事を表示

初心者向け:Java WebSocketクライアントのススメ

もし、あなたがJavaアプリケーションをリアルタイムで通信させる方法について疑問に思ったことがあるなら、あなたは正しい場所に来ました。このガイドでは、Java WebSocketクライアントの魅力的な世界に飛び込んでみます。WebSocketsが何であるか、それがなぜ重要なのか、そして自分のJava WebSocketクライアントを構築する方法について探ります。さらに、開発プロセスをスムーズにするためのツール、例えばapidogについても触れます。

## WebSocketsとは何ですか?
[WebSockets](https://apidog.com/articles/websocket-protocol/)は、単一のTCP接続を介して全二重通信チャネルを提供するプロトコルです。HTTPのようにリクエスト-レスポンスに基づくものとは異なり、WebSocketsは継続的な双方向通信を可能にします。これにより、チャットアプリケーション、ライブスポーツの更新、オンラインゲームなど、リアルタイムでの更新が必要なアプリケーションに最適です。

## なぜJavaを使ってWebSocketク

元記事を表示

Google がサポートする Java ランタイムと作成済み SpringBoot の jar を使用して Cloud Run にアプリケーションをデプロイする方法

gradle bootjar で作成済みの jar を使って、コンテナイメージの作成からサービスのデプロイまでを gcloud run deploy で行う方法についてまとめます。

Dockerfile を使って Docker Hub からイメージを呼び込むと Google のサポート外のランタイム環境になってしまうのは [Google のサポートを受けられるように Python アプリをデプロイする方法](https://qiita.com/mushufushu/items/8ee9215e7e01ba74f9a8)で書いたことと同様です。

# 前提条件
SpringBoot の jar ファイル作成済みであること
※この記事では gradle bootjar コマンドを使用して jar を出力しています。

# 1 デプロイ用のワークディレクトリを作成
“`
mkdir deploy
cd deploy
“`
# 2 jar ファイルを配置
cp などで deploy 配下に持ってくる。

# 3 ビルダーと Java のランタイムの固定
同階層に project.toml

元記事を表示

SessionスコープのBeanを利用しようとしたらハマった話

# はじめに
SessionスコープのBeanを利用したかったので、`@SessionScope`を使った実装をしたところ、デッドループが発生してしまったので、その原因と解決方法を調べた際の記録です。

# SessionスコープのBeanを利用したかったが、デッドループが発生
SessionスコープのBeanを利用して、そのSession中で有効なBean(例えば、ECサイトのショッピングカート)を作るため、`@Component`と`@SessionScope`を付与したクラス(仮に「Cart」クラスとします。)を作成しました。
そして、セッション開始時にCartクラスが持つカートの中の商品を表すリスト`itemList`を初期化するため、`HttpSessionListener`において`ArrayList`を生成して初期化をしようとしました。
ところが、その初期化をする処理が何度も呼び出され(`HttpSessionListener`の`sessionCreated`が何度も呼び出され)、デッドループが発生してしまいました。

# 原因はプロキシ?
ここでかなりハマって色々と調

元記事を表示

【Spring Boot入門】#5 ID検索機能を作成する

## はじめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。

登録情報一覧画面の表示については、前回の記事を参照ください。

https://qiita.com/ioaio/items/8fde25d6c2c27a95d9a3

## 概要
検索ボックスを追加し、企業IDに紐づく企業情報を検索できるようにする機能を作成します。

#### 完成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/52b635b5-8acd-2a85-11e4-10fa4462bbf3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/5525a929-8588-cf6f-453a-7c2ffefd044a.png)

未登録の企業IDが検索された場合は、エラーメッセージ

元記事を表示

【Spring Boot入門】#4 登録情報一覧画面を作成する

## はじめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。

入力チェックの追加については、前回の記事を参照ください。

https://qiita.com/ioaio/items/d382212eeae4434cae9c

## 概要
既に登録済みの企業情報の一覧を表示する画面を作成していきます。
新規登録画面にページ遷移できるようにアンカーリンクも追加します。
また、新規登録後に登録完了画面を表示していたのを、企業情報一覧画面を表示するようにも修正します。

#### 完成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/7985036e-cb94-2412-d598-b15d5f4cd204.png)

## パッケージ構成
赤枠で囲ったHTMLファイルを今回作成していきます。また、青枠で囲ったクラスを編集していきます。

![image.png](https://

元記事を表示

EclipseでTomcatサーバーが起動失敗する件について

初めて書きます
自分の備忘録と同じ問題があった誰かのために

## エラーの内容について

Udemyの動画で勉強していた時、
以下エラーがEclipseでTomcatサーバーを再起動しようとしたときに発生した
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3634569/202d09ce-0cbb-05ae-734f-614439cc686b.png)

いろいろ調べたがいまいち原因がわからん。
教えて偉い人

## 試したこと

・Eclipse再起動
・PC再起動
・直前に作成したサーブレットやJSPを削除

どれをやっても解決せず

## 解決方法
ネットで検索してweb.xmlが勝手に作成されていて削除したら解決したという記載を発見したため
以下のファイルを削除してみた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3634569/1e5a5476-011e-6443-cb7

元記事を表示

JUnitの使い方 #忘備録

## JUnitのユーザーガイド
以下のJUnitのユーザーガイドを参考にJUnitの基本的な使い方を
まとめました。

https://junit.org/junit5/docs/current/user-guide/

## 基本的な使い方
 1、テスト対象クラスを作成する
 2、テストメソッドを作成する
 3、アノテーションを付けてテストを実行する
 4、テスト結果を確認する

### 1. テスト対象のクラスを作成
Calculator.javaというクラスを作成しています。
足し算・引き算を行う簡単なメソッドを定義しています。

“`java

package hogehoge;

public class Calculator {

// テストメソッド:足し算
public int add(int a, int b) {
return a + b;
}

// テストメソッド:引き算
public int subtract(int a, int b) {
return a – b;
}

}

“`

### 2. テストクラスを作成
Calcu

元記事を表示

Javaの基本データ型とラッパークラス: BoxingとUnboxingの仕組み

Javaには、基本データ型(プリミティブ型)とそれに対応するラッパークラスが存在します。基本データ型は直接メモリに格納されるシンプルなデータ型ですが、Javaのコレクションフレームワークなどのオブジェクト型が必要な場面ではラッパークラスが利用されます。この基本データ型とラッパークラス間の自動変換を、それぞれ Boxing と Unboxing と呼びます。この記事では、BoxingとUnboxingの仕組み、各基本データ型に対応するラッパークラス、そして実際の使用例をご紹介します。

## 1. BoxingとUnboxingとは?
Boxing: 基本データ型から対応するラッパークラスへの自動変換のこと。Javaでは基本データ型(int, double など)をラッパークラス(Integer, Double など)に自動的に変換できます。
Unboxing: ラッパークラスから基本データ型への自動変換のこと。
Boxingの逆で、Integer から int などの変換が自動で行われます。
Java 5 以降では、BoxingとUnboxingは自動的に行われるため、コードがシンプ

元記事を表示

スタックを活用した文字列展開アルゴリズム

## 問題概要
与えられた文字列には、括弧で囲まれたパターンと繰り返し回数が含まれています。この文字列を解釈し、括弧内のパターンを繰り返して最終的な文字列を返すことが目標です。括弧は入れ子になっている場合があり、それぞれのパターンは括弧の外にある数字に基づいて複数回繰り返されます。

### 例
– 入力: `”3(a2(b))ef”`
出力: `”abbabbabbef”`
– 入力: `”2(2(ab)3(2(ac)))”`
出力: `”abacabacabacabacabacabacabacabac”`

## 使用するデータ構造
### 1. **スタック (Stack)**
– **スタック**はLIFO(Last In, First Out)構造で、最後に追加された要素が最初に取り出されます。
– この問題では、括弧を効果的に処理するためにスタックを使用します。入れ子になった括弧に遭遇したとき、スタックを利用してその括弧内のパターンを抽出し、繰り返し処理を行います。

## 問題解決のアプローチ

### 1. **文字列の走査と文字の処理**

元記事を表示

OTHERカテゴリの最新記事