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

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

【Java】継承とオーバーライドを覚える

通常のクラスのインスタンス化に対して、スーパークラスを継承したサブクラスをインスタンス化すると何ができるのか、覚えるための自分用メモです。

# 継承とは?
既存のクラスのフィールドとメソッドを引き継いで、新しいクラスを定義することです。
例えば、以下のクラスを“`Cat“`クラスに継承するとします。
“`java:Animal.java
public class Animal {
String name;

public Animal(String name) {
this.name = name;
}

public void talk() {
System.out.println(“私は” + this.name + “です。”);
}
}
“`
その場合、以下のように記述します(親クラスに引数なしのコンストラクタが無い場合、“`super()“`でコンストラクタを呼び出す必要あり)。
“`java:Cat.java
public class Cat extends Animal {
p

元記事を表示

javaとtypescriptでの環境構築

前回javaとtypescriptの環境構築を行い、その後ホットリロード(ymlファイルにマウント設定追加しただけ)を実装しました。

次に、今回のアプリケーションで使うdbを設定します。
簡易的に 下記ファイルを含むmysqlフォルダを作りました。
my.cnf: MySQLの設定ファイル。
init.sql: データベース初期化用SQLスクリプト。

現在のディレクトリツリーはこちらになります。
javaのディレクトリ名がspring bootで設定しなかったのでdemoのままになってたりtypescriptのディレクトリ名がmy-appで違和感ですね…
命名はちゃんとしましょう

my-java-ts-project/
├── demo/
│ ├── Dockerfile
│ ├── pom.xml
│ ├── mvnw
│ ├── .mvn/
│ │ └── (その他のMaven設定ファイル)
│ └── src/
│ ├── main/
│ ├── java/
│ │ └── com/

元記事を表示

【JavaEE】CDIのDI

## まえがき
研修でJavaEEを学んでいる中で、CDIのインジェクションに苦しみました。とりあえず、現時点で理解したところまでを備忘録として書き留めました。

## CDIとは
簡単に言うと、newを使わずにインスタンス化する仕組みのことです。
Context and Dependency Injectionの略で、訳は「コンテキストと依存性注入」。
今回はDIの部分である依存性注入についてまとめます。

### 結局何がいいのか

– クラス間の依存関係を弱くしてくれる(疎結合に)
– テストしやすくなる
– インジェクトするクラスとされたクラスのスコープを互いに独立関係にできる

## 依存性注入

通常、とあるクラスで別のクラスのオブジェクトを使う場合、

“`java:Game.java
public class Car {
Tire tire = new Tire();
public void CreateCar(){
start(tire);
}

}
“`
というようにnewを使ってインスタンス化する。

元記事を表示

Javaプログラミング入門:ステップ8 デプロイとテスト

# Javaプログラミング入門:ステップ8 デプロイとテスト

ステップ8では、開発が完了したプロジェクトをテストし、本番環境にデプロイする方法について解説します。テストは品質を保証し、デプロイはユーザーに提供するために重要なプロセスです。

1. テストの実施
– 単体テストの作成
– 結合テストの実施
– ユーザビリティテスト
2. デプロイ
– 本番環境へのデプロイ
– デプロイ後の確認とフィードバック

## 1. テストの実施

### 単体テストの作成

単体テストは、プログラムの各部分(メソッドやクラス)が正しく動作することを確認するためのテストです。JUnitを使用して単体テストを作成します。

#### JUnitの設定

Mavenプロジェクトの場合、`pom.xml`に以下の依存関係を追加します。

“`xml

junit
junit
4.13.2

元記事を表示

Javaプログラミング入門:ステップ7 実践的な開発

# Javaプログラミング入門:ステップ7 実践的な開発

ステップ7では、これまで学んだ技術を統合し、実際のプロジェクトに適用していきます。具体的には、Web画面にデータを表示し、データの登録処理を行う方法を学びます。HTMLとプログラムの連携を通じて、動的なWebアプリケーションを構築します。

1. プロジェクトに必要な技術の統合
2. Web画面にデータを表示
3. 登録したデータの処理
4. HTMLとプログラムの連携

## 1. プロジェクトに必要な技術の統合

まず、プロジェクトで必要な技術を統合します。これには、以下の要素が含まれます。

– **Webフレームワーク**: Struts、Spring MVCなど
– **データベースアクセス**: JDBC、ORM(Hibernateなど)
– **フロントエンド**: HTML、CSS、JavaScript

これらの技術を組み合わせることで、Webアプリケーションの基盤を構築します。

## 2. Web画面にデータを表示

データベースからデータを取得し、Web画面に表示する方法を学びます。

### データの

元記事を表示

Javaプログラミング入門:ステップ6 プロジェクトの準備

# Javaプログラミング入門:ステップ6 プロジェクトの準備

プロジェクトの成功には、適切な準備と計画が不可欠です。本記事では、要件定義とプロトタイプの作成、そしてJSONのパース方法について解説します。

1. 要件定義の基本
2. プロトタイプの設計と実装
3. JSONのパース

## 1. 要件定義の基本

要件定義は、プロジェクトの目的や機能を明確にするための重要なプロセスです。要件定義には、以下のステップが含まれます。

### ユーザー要件の収集

プロジェクトのステークホルダーやエンドユーザーから要件を収集します。インタビュー、アンケート、ワークショップなどの方法を使用します。

### 機能要件と非機能要件の定義

– **機能要件**: システムが提供する具体的な機能や動作を定義します。
– **非機能要件**: システムの性能、セキュリティ、ユーザビリティなどの品質に関する要件を定義します。

### 要件ドキュメントの作成

収集した要件をドキュメントにまとめ、ステークホルダーと共有します。ドキュメントには、要件の概要、詳細な仕様、優先順位などを含めます。

元記事を表示

Javaプログラミング入門:ステップ5 開発環境の構築

# Javaプログラミング入門:ステップ5 開発環境の構築

Webアプリケーション開発の効率を高めるためには、適切な開発環境の構築が重要です。本記事では、Eclipseを使用したJava開発環境の構築方法と、XAMPPとTomcatを使用したWebアプリケーションのデプロイと実行方法について解説します。

1. Eclipseの基本操作
2. プロジェクトの作成と管理
3. デバッギングツールの使用
4. XAMPPとTomcatの使用

## 1. Eclipseの基本操作

Eclipseは、Java開発において広く使われている統合開発環境(IDE)です。Eclipseの基本操作を理解することで、効率的に開発を進めることができます。

### Eclipseのインストール

1. [Eclipseの公式サイト](https://www.eclipse.org/downloads/)からEclipse IDE for Java Developersをダウンロードします。
2. ダウンロードしたファイルを解凍し、インストーラを実行します。
3. インストールが完了したら、Eclips

元記事を表示

Javaプログラミング入門:ステップ4 データベースとの連携

# Javaプログラミング入門:ステップ4 データベースとの連携

Webアプリケーションにおいて、データベースとの連携は欠かせません。Javaでは、JDBC(Java Database Connectivity)を使用してデータベースにアクセスできます。本記事では、データベースとの連携を学ぶためのステップ4として、以下の内容を順を追って解説します。

1. JDBCの基本操作(接続、クエリ実行、結果の処理)
2. DB2の基本的な操作方法
3. データベースアクセス層の設計

## 1. JDBCの基本操作(接続、クエリ実行、結果の処理)

JDBCは、Javaプログラムからデータベースに接続し、SQLクエリを実行するためのAPIです。JDBCの基本操作は、次のように進めます。

### データベース接続

データベースに接続するためには、JDBCドライバをロードし、`DriverManager`を使用して接続を確立します。

### SQLクエリの実行

接続が確立したら、`Statement`または`PreparedStatement`を使用してSQLクエリを実行します。

##

元記事を表示

Javaプログラミング入門:ステップ3 フレームワークの習得

# Javaプログラミング入門:ステップ3 フレームワークの習得

JavaのWebアプリケーション開発において、フレームワークを利用することで効率的に開発を進めることができます。Strutsは、Java EE(Enterprise Edition)プラットフォーム向けの代表的なフレームワークの一つです。本記事では、Strutsの基礎を学ぶためのステップ3として、以下の内容を順を追って解説します。

1. Strutsの基本概念
2. Strutsの設定(struts-config.xmlなど)
3. アクションフォームとアクションクラスの作成
4. JSPとの連携

## 1. Strutsの基本概念

Strutsは、Apache Software Foundationが開発したMVC(Model-View-Controller)アーキテクチャに基づくWebアプリケーションフレームワークです。Strutsは、以下の主要コンポーネントで構成されています。

– **モデル(Model)**: ビジネスロジックやデータアクセスを担当します。
– **ビュー(View)**: ユーザーに

元記事を表示

Javaプログラミング入門:ステップ2 Webアプリケーションの基礎

# Javaプログラミング入門:ステップ2 Webアプリケーションの基礎

Webアプリケーションの開発において、Javaは強力なツールとなります。特にJSP(JavaServer Pages)とサーブレットは、動的なWebページを生成するための基本技術です。本記事では、Webアプリケーションの基礎を学ぶためのステップ2として、以下の内容を順を追って解説します。

1. JSPの基本的な使い方
2. サーブレットの基本
3. JSPとサーブレット間のデータのやり取り
4. フォームデータの送受信
5. JSPのカスタムタグ
6. 標準タグライブラリ(JSTL)
7. カスタムタグの作成と使用

## 1. JSPの基本的な使い方

JSPは、HTMLにJavaコードを埋め込んで動的なWebページを作成するための技術です。基本的なJSPファイルは`.jsp`拡張子を持ち、HTMLコードにJavaのスクリプトレットを挿入して動的なコンテンツを生成します。

### JSPの主な要素

– **スクリプトレット**: `<% ... %>` の中にJavaコードを記述します。
– **宣言*

元記事を表示

Javaプログラミング入門:ステップ1 基本知識の習得

# Javaプログラミング入門:ステップ1 基本知識の習得

Javaは、世界中で広く使われているオブジェクト指向プログラミング言語です。特に初学者にとっては、Javaの基本文法と概念を理解することが重要です。本記事では、Javaプログラミングの基礎を学ぶためのステップ1として、以下の内容を順を追って解説します。

1. 変数とデータ型
2. 制御構造(if文、forループ、whileループ)
3. クラスとオブジェクト
4. メソッド
5. 配列とコレクションフレームワーク(List, Set, Map)

## 1. 変数とデータ型

Javaでは、変数を宣言してデータを格納します。変数にはデータ型があり、格納できる値の種類が決まっています。主なデータ型は以下の通りです。

– `int`: 整数を表します。例: `int num = 10;`
– `double`: 小数点数を表します。例: `double price = 19.99;`
– `boolean`: 真偽値(trueまたはfalse)を表します。例: `boolean isTrue = true;`
– `char

元記事を表示

Spring 掲示板機能で、投稿時に作成日を表示させる方法 備忘録#1

## Spring 掲示板機能で、投稿時に作成日を表示させる方法

### 実行しようとした昨日
今回以下のように“作成日を、投稿と同時に自動的に付けてくれる機能“を実装しようとしました。
無事作成できたので、備忘録として投稿しようと思います。

![スクリーンショット 2024-06-03 22.54.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3807467/5fd7fd26-6c18-eaeb-38fe-37b256f0a511.png)

### データベース設計

– schema.sql

“`
— テーブル削除
DROP TABLE IF EXISTS posts;

— カテゴリーテーブル
CREATE TABLE posts
(
id SERIAL PRIMARY KEY,
title TEXT,
content TEXT,
create_date DATE,
comments TEXT
);
“`

– Entity
Eniti

元記事を表示

Javaで「while文を使った繰り返し処理」の動作を確認してみた

# 概要

Javaで「while文を使った繰り返し処理」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/for/index6.html

# 実装

以下のファイルを作成しました。
“`JSample6_1.java
class JSample6_1{
public static void main(String[] args){
int num = 1;

while (num < 100){ System.out.println("num = " + num); num *= 2; } } } ``` 以下のコマンドを実行しました。 ``` $ javac JSample6_1.java $ java JSample6_1 num = 1 num = 2 num = 4 num = 8 num = 16 num = 32 num = 64 ``` # まとめ 何かの役に立てばと。

元記事を表示

美しくパフォーマンスの良いJavaの書き方(Javaのイディオムを学ぼう)

## なぜこの記事を書こうとしたのか?
どうも、ラクーンホールディングス(https://www.raccoon.ne.jp/) のシュウヤです。
私は普段Javaで開発をしていますが、美しくパフォーマンスの高い書き方を知らずに、保守性もパフォーマンスも悪いコードを書いていました。このままではいけないと思い、美しくパフォーマンスの高いコードの書き方を調べたところ、「イディオム」という概念にたどり着きました。イディオムとは、ソフトウェア工学におけるアルゴリズムやプログラミングのノウハウ、ティップス(tips)を集めたもので、要するにベストプラクティスに基づいてコードを書くためのヒントのようなものだそうです。これらをまとめることで、少しでも美しくパフォーマンスの良いJavaのコードが書けるのではないかと思いました。

## 目的
– 美しくパフォーマンスの良いJavaの書き方を学べる

## 目次
– Stringリテラルまたは既知のオブジェクトでequals()を呼び出す
– HashMapをループする際のentrySetの使用
– Enumをシングルトンとして使用
– Collecti

元記事を表示

【Java】初心者向け_データベースを操作するコード例(SELECT/UPDATE/INSERT/DELETE)

# 目次
この記事は5分ほどで読めます。
[1. この記事のターゲット層](#1-この記事のターゲット層)
[2. 今回使用するテーブル](#2-今回使用するテーブル)
[3. 4大命令](#3-4大命令)
[4. おわりに](#4-おわりに)

# 1. この記事のターゲット層
「本などで学習したが、Javaからデータベースを操作する方法がよくわからなかった方」
「クラスをしっかりと分けて設計したい方」
「DAO・DTOクラスパターンを使って設計したい方」

– もしこの記事の内容が難しいと感じられたら、先にこちらの記事を参考にすることをおすすめします。データベース操作を0から演習ベースで詳しく解説しております。
→[【Java/SQL】 データベースを使ったログイン処理 DAO/DTOパターン](https://qiita.com/fsdg-goto/items/9ec73bf4e997731328e5)

# 2. 今回使用するテーブル
“`
CREATE TABLE item (
id INT NOT NULL AUTO_INCREMENT,
item_name VARCHA

元記事を表示

windowsjavaとtypescriptでアプリケーションを作成

windows11で開発

javaとtypescriptでwebサイトの作成

サーバー側
java
・spring boot
・projectはMaven 3.2.6 javaのバージョンは17
.titleはdemo
これで作成してひな型を作成

docker buildとrunで実行
コントローラーを追加してhello spring bootを表示させるようにした
ポート番号を8080で実行

フロント側
typescript,react

npx create-react-app my-app –template typescriptでmy-appプロジェクトを起動

フロント、サーバー側どちらにもDockerfileを作成
サーバー側にはmavenのコピーとビルドを記載
フロント側にpackage.jsonなどの設定を記載
ルートディレクトリ配下にdocker-compose.ymlを作成

以下のようなディレクトリで作成

my-java-ts-project/
├── demo/
│ ├── Dockerfile
│ ├── pom.xml
│ ├──

元記事を表示

opencsv を使ってみよう

# opencsv を使ってみよう

– 今回、会社の業務中に、AI が学習するデータを csv で入力する機能を実装する必要があり、Java で csv を操作するために使用するいくつかのライブラリの中で最もよく使われている opencsv を使ってみました。使うついでに基本的な使い方について記録しておけばいいと思い、整理してみました。
– なお、この資料はまだ完成しておらず、近いうちにサンプルコードが完全に追加される予定です。

## 目次

1. [依存性の追加](#1-依存性の追加)
2. [基本的な使い方](#2-基本的な使い方)
3. [JavaBeans と連携して使用する](#3-javabeansと連携して使用する)
4. [その他の便利な機能](#4-その他の便利な機能)
5. [まとめ](#5-まとめ)
6. [参考資料](#6-参考資料)

## 1. 依存性の追加

1. `build.gradle`に次のように opencsv の依存性を追加します [サンプルコード](https://github.com/foreverfl/study-java-openc

元記事を表示

クラスなしむき出しmainのjavaを試してみた

### サンプルソース

“`sample.java
void main(String[] args){
System.out.println(“hoge”);
}
“`

### 実行結果

“`
$ java –enable-preview –source 21 sample.java
Note: sample.java uses preview features of Java SE 21.
Note: Recompile with -Xlint:preview for details.
hoge
“`

### Javaのバージョン

“`
$ java –version
openjdk 21.0.2 2024-01-16
OpenJDK Runtime Environment (build 21.0.2+13-Ubuntu-120.04.1)
OpenJDK 64-Bit Server VM (build 21.0.2+13-Ubuntu-120.04.1, mixed mode, sharing)
“`

### 解説

– 今どきのJav

元記事を表示

Javaで「for文を使った繰り返し処理」の動作を確認してみた

# 概要

Javaで「for文を使った繰り返し処理」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/for/index2.html

# 実装

以下のファイルを作成しました。
“`JSample2_1.java
class JSample2_1{
public static void main(String[] args){
int sum = 0;

for (int i = 1; i <= 5; i++){ System.out.println(i); sum += i; } System.out.println("合計=" + sum); } } ``` ```JSample2_2.java class JSample2_2{ public static void main(String[] args){ int i; double d; for (i = 1, d = 2.4; i <= 5; i++

元記事を表示

Kotlinのファイル比較関数

# 問題点
ファイル比較方法が多く、適切な関数の調査に時間がかかる
~~(また、古いバージョンの関数を使用した記事が上位にヒットすることも問題である)~~

# 解決策

本記事では、以下の場合に使用するファイル比較関数を紹介する
また、逐次更新し、最新の比較関数を紹介し続けたい(願望)
1. ファイルのバイナリ情報が一致するか
2. 画像イメージが一致するか

## 1. ファイルのバイナリ情報が同様であるか

■ FileUtiles.contentEquals
(org.apache.commons.io ライブラリ)

“`
// Fileクラスを比較する
val checkFlag = FilesUtiles.contentEquals(file1, file2)
“`

■ contentEquals
(Kotlin専用 標準ライブラリ)

“`
// 各ファイルのバイト配列を作成
val byteArray1 = Files.readAllBytes(path1)
val byteArray2 = Files.readAllBytes(path2)

// バイト配

元記事を表示

OTHERカテゴリの最新記事