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

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

中間コード方式について簡単に

## 概要
– コンパイラ方式とインタープリタ方式の中間的な方法
– 言語特有の環境用機械語にコンパイルし、実行時に逐次実行か機械語に翻訳後実行される
– Java、Pythonで採用

## この方式の特徴と利点
– コンパイラ方式には及ばないが、インタープリタ方式よりは早い
– 一度中間コードにコンパイルするとwindowsでもmacでも動く

## なぜ同じ方式のJavaとPythonで実行速度に差があるのか
– Javaは静的型付け、Pythonは動的型付けであるので型チェックの時間で差が生まれる
– JavaはJITコンパイラでネイティブコードに変換されるがPythonは逐次解釈するから

元記事を表示

私がJavaプロジェクトが嫌いな7つの理由

### Java vs Kotlin: 7つの違いとコード例、比較表

JavaとKotlinの違いを比較しながら、Javaにおける課題とKotlinが提供する解決策について解説します。

### 1. 冗長なコード

**Java**ではシンプルなモデルクラスを作成するだけでも多くのボイラープレートが必要です。Kotlinは`data class`によって、ボイラープレートなしで`equals`、`hashCode`、`toString`などが自動生成されます。

#### コード例

**Java:**
“`java
public class User {
private String name;
private int age;

public User(String name, int age) {
this.name = name;
this.age = age;
}

public String getName() { return name; }
public void setNa

元記事を表示

javaのapiにレスポンスのbody設定して返却したら、改行コードがあるから解析できずエラーについて、原因として考えられること

JSONの改行コードによる解析エラーが発生する場合、相手先のJavaのAPIの実装が原因である可能性があります。一般的には、JSONのパースは改行やインデント(整形されたJSON)の影響を受けず、正しいフォーマットの文字列であれば正常に解析されるはずです。

**考えられる原因**としては次のようなことが挙げられます:

## 1. **APIが改行や空白を処理できない設計**

JSON文字列を受け取る際に改行をそのまま文字列として扱う実装になっており、パースに失敗している可能性があります。一般的には改行やインデントを取り除くか無視するような設計が求められます。

## 2. **特殊な文字列エスケープ処理の問題**
改行コードが適切にエスケープされていない、もしくはJSONライブラリが何らかの理由で改行を誤って扱っている可能性があります。

## 3. **文字エンコーディングの違い**

JSONが正しい形式で送信されていても、エンコーディングの問題が絡んでくることがあります。例えば、UTF-8で送信されたJSONを受け取る側が別のエンコーディングで解析しようとした場合、エラー

元記事を表示

JavaGold 主要な関数型インターフェースと使い方

| パッケージ | インタフェース | 戻り値型 | メソッド |
| — | — | — | — |
| java.util.function | Supplier\ | T | get() |
| java.util.function | Consumer\ | void | accept(T) |
| java.util.function | BiConsumer\ | void | accept(T, U) |
| java.util.function | Predicate\ | boolean | test(T) |
| java.util.function | BiPredicate\ | boolean | test(T, U) |
| java.util.function | Function\ | R | apply(T) |
| java.util.function | BiFunction\ | R | apply(T, U) |
| java.util.function |

元記事を表示

Gradleでビルドすると’Task :resolveMainClassName FAILED’で失敗する

こんにちは。

この記事を閲覧しているということはエラーメッセージをピンポイントで検索したと思われますので、細かい話は抜きにして早速見ていきましょう。

# 環境
自分の環境はこちらです。

:::note info
Gradle:v8.10.2
Java:__Amazon Corretto v23.0.1_8__
SpringBoot:v3.2.2
IDE:IntelliJ IDEA 2024.1.4 (Community Edition)
:::
後述しますがJava22以降で同様の現象が起こるようです。
IDEやGradleではなくJavaのバージョンが強く影響していました。
 

# エラーメッセージ
“`powershell
PS C:\Users\User\IdeaProjects\sample-project> gradle build

元記事を表示

chart.jsを利用してDBに登録してあるデータをグラフ描画する

## 記事のゴール

画像左上のプルダウンで指定されたアイテムの月別の金額をグラフ表示できるようになる。(UI的な部分は一旦おいといて)

![スクリーンショット 2024-11-07 22.10.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630554/0527b7b5-ed05-e2e5-b6a2-49b813cd517f.png)

## HTMLを記載

“`HTML


“`

chart.jsを利用するには、`canvas`タグを利用する。その部分にJSで記載したグラフ情報が乗っかってくる。

## JavaScriptを記載

“`JavaScript
`use strict`

// ①sele

元記事を表示

# 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`が何度も呼び出され)、デッドループが発生してしまいました。

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

元記事を表示

OTHERカテゴリの最新記事