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

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

EfwフレーワークのTomcat10対応のメモ

## 背景
Efwがいままではtomcat7・8・9対応ですが、最近tomcat10も対応するようにしました。

Githubには、従来とjakarta対応2つフォルダに分けてソースを格納するようにしました。
https://github.com/efwGrp/efw4.X/tree/master/src
https://github.com/efwGrp/efw4.X/tree/master/src4jakarta

リリースのjarファイルも従来とjakarta対応を2つjarにしました。
“`xml
io.github.efwgrpefw4.07.019
io.github.efwgrpefw4.07.019jakarta
“`

元記事を表示

SQLとデータベースの連携 

自分なりのまとめ  
MySQLを使用してます  。。

## JDBC
Java Datebase Connectivityの略
Javaプログラムとデータベースを接続するためのAPI。Javaプログラムからデータベースに対してSQLクリエを実行したり、データを操作ができる。

## 主な機能
**①データベース接続**
Javaプログラムからデータベースに接続し、操作を行う為の接続オブジェクト(`Connection`)を作成

**②SQLクリエの実行**
SQLクリエ(`SELECT`,`INSERT`,`UPDATE`,`DELETE`など)を実行するための  `Statement`,`PreparedStatement`,`CallableStatement` オブジェクトを提供

**③結果セットの処理**
`SELECT`クリエの結果として得られるデータを処理するための`ResultSet`オブジェクトを提供

**④トランザクション管理**
データベース内でのトランザクション(複数のSQL操作を1つの単位として扱う)の制御を行う。`commit()`や`rollbac

元記事を表示

Jackson CSVを利用してCSVファイルを読み書きする

# はじめに
CSVファイルの読み書きライブラリと言えば、以前は“OrangeSignal CSV“を使用していたのですが、2014年で開発が止まってしまっています。
とは言え、上記ライブラリでも今でも十分だったりはするのですが、Javaのバージョンが上がって利用できなくなってしまうことがなくはないので、出来れば現在進行形でアクティブなライブラリを使用したいと思っていました。
“Open CSV“は今なおアクティブなのですが、Mapのサポートがない、ということで、何か良いライブラリがないか探していたところ、Jackson CSVを見つけました。

# 前提条件
* Excelで出力したCSVファイルが読めること
* 出力したCSVファイルをExcelで読めること
* UTF-8に対応していること

上記条件を満たすためには、以下の必要があります。
* BOM付きファイルを読めること
* 出力ファイルはBOM付きであること
* 区切り文字は”,”、改行はCRLF
* 項目中に、”,”、改行(CRLF,LF,CR)、”(ダブルクォーテーション)を含む場合は、項目はダブルクォーテーシ

元記事を表示

[Java]コンストラクタ引数が増えたらBuilderパターンを採用しよう

# 導入
ソフトウェア開発を進める中で、クラスのコンストラクタに渡す引数が増えてくることはよくあります。
特に、**複雑なオブジェクト**を生成する必要がある場合、その引数の数はどんどん増えてしまい、コードの可読性やメンテナンス性に悪影響を及ぼすことがあります。私自身、最近、新しい機能を実装しようとした際、コンストラクタ引数が多くなりすぎて、困っていました。

ちょうどそのときに本棚に眠っていた[Effective Java](https://www.amazon.co.jp/Effective-Java-%E7%AC%AC3%E7%89%88-Joshua-Bloch/dp/4621303252)を読んでみると、Builderパターンを利用して問題を解決する手法が載っていたので、自分の理解を深めるためにも記事を書いてみました。

# Builder以外のパターン
まずは自分が行っていたパターンであり、Effctive Javaにもアンチパターンとして紹介されているパターンについて解説していきます。

## JavaBeansを利用するパターン
これまでの開発では、このパターンを採用し

元記事を表示

Apache CXFプラグインを用いて、WSDLファイルからコード生成する

# はじめに
Apache CXFに含まれるWSDLファイルからJavaコードを生成するMavenプラグインの使用方法を記す。

# 実行環境

– Eclipse (4.32.0)
– Maven (3.9.7)

# POMの設定

~~~~XML
4.0.0
java.camel.soap.example
java.camel.wsdl2java.example
0.0.1-SNAPSHOT

元記事を表示

Javaあれこれ

1. Javaのバージョンを取得

“`
System.getProperty(“java.version”);
“`

2. OSの種類を取得

“`
System.getProperty(“os.name”);
“`

3. データ型を取得

“`
オブジェクト.getClass();
オブジェクト.getClass().getSimpleName();

“`

4. ヒープサイズ

“`
Runtime.getRuntime().totalMemory();
Runtime.getRuntime().freeMemory();
Runtime.getRuntime().maxMemory();

java -Xms1m -Xmx3m クラス名 // 実行時にヒープサイズを指定

“`

元記事を表示

DB Index 最適化方法

# はじめに
データベースには大量のデータが蓄積されていきます。データが増加するにつれて自然に発生する問題の一つは、検索速度に関する課題です。インデックスは、テーブルの操作速度を向上させる重要なデータ構造であり、DBメモリ内に一定のスペースを使用して保存されます。効果的なインデックス管理は、データベースのパフォーマンスを最適化するために不可欠です。

# インデックスの特徴
– **WHERE句に使用するカラムの効率化**: インデックスは、主に検索条件に頻繁に使用されるカラムに設定されます。
– **単一および複合インデックス**: インデックスは、1つのカラムまたは複数のカラムを組み合わせて設定できます。単一インデックスを複数設定したり、複数のカラムを組み合わせて複合インデックスを設定することができます。
– **過剰なインデックスは非効率的**: インデックスを多く設定したからといって常に検索速度が向上するわけではありません。インデックスは追加のストレージを必要とし、データの更新時にインデックスも同時に更新されるため、パフォーマンスに悪影響を与える可能性があります。
> 検索

元記事を表示

初学者のためのJavaの学習方法/内容に関して

# Qiitaに書く内容を尽きたところで
隔週更新していくとなると、ネタも尽きてくる。そのため、少人数ではあるものの、議論する機会があったので、今一度Javaを学ぶにあたってどんな感じで学んでいけばいいのかを考えてみた。

# 学ぶ内容
最初、自分が発表するにあたり、以下の項目に関して紹介すれば、初心者(初学者)がJavaをわかるようになるのではないかと思っていた。
1. 変数/class/intefrface
1. 配列/List/Map
1. for文/拡張for文
1. if文

これに加えて、enumやstream、三項演算子を加えておいた。ただし、番号が附番していない項目に関しては補助的な項目として必須の学習項目から外した。

# 実際に議論してわかったこと

実際に話してみて、足りないといわれた項目は以下。

1. getter/setter
1. アノテーション

上記の2つに関しては追加しておいたほうがよいのではないかと言われた。確かにわかっておいたほうがいいかもなって思う項目ではあるが。

# 今週から書く記事として

以下の項目に関して記載をしていこうと思う。

1

元記事を表示

[Android その3] Androidのアプリケーションの基本開発

# Android APP 基本開発(Java)
今回作るAPPはとーーーーーーっても簡単なやつです。(なぜなら私もほぼ初めてといえるので)
間違いもあると思いますが、頑張ります(頑張りましょうm)
## プロジェクトの作成
Android Appでのプロジェクトの開発については、調べて作ってみてくださいmm

## メモアプリ
単純なメモアプリを作りたいと思います。
画面の作成、ボタンの作成、ボタン押下で、テキストボックスのダイアログを表示させて、入力したら、画面に表示させるようにします。

## 実装
### UIの設計
メモアプリの基本UIを設計します。シンプルなリストビューでメモの一覧を表示し、メモの追加ボタンを用意します。

###### activity_main.xml の編集
このファイルはプロジェクトのres/layoutフォルダにあります。
“`xml

staticについての簡易まとめ(Java初心者向け)

## staticをざっくり一言でいうと
フィールドやメソッドを、クラス間で共用できる魔法の修飾子!

## staticにできるもの
* フィールド
* メソッド

フィールドやメソッドをクラス間で共用や上書きができると便利なときもありますよね。
しかし、不意な変更をしてしまう可能性もあるので注意しましょう。

## ざっくり説明
まず、通常のフィールドやメソッドの場合、クラス間で共用するには
1. クラス内でフィールドやメソッドを定義
2. 別のクラスで、使用したいフィールドやメソッドが記載してあるクラスのインスタンスを生成
3. インスタンスを経由してフィールドやメソッドにアクセスする

このような手順となります。
しかし、staticの場合はこれが簡略化されます。
1. クラス内でフィールドやメソッドを**static**を付けて定義
2. そのままフィールドやメソッドを利用できる!

## 説明
なぜインスタンスを作らなくても使用できるのかについて見ていきましょう。
### プログラムの動き
Aクラス(メイン)とBクラス、Cクラスを使用するプログラムを例に考えます。
それぞれ

元記事を表示

Spring アノテーション一覧

| カテゴリ | アノテーション | 説明 |
|——————————|—————————–|——————————————————————————————–|
| **依存性注入関連** | `@Autowired` | 自動的にBeanを注入します。コンストラクタ、フィールド、セッターに使用可能。 |
| | `@Qualifier` | 特定のBeanを指定して注入する際に使用します

元記事を表示

ABC365A~Eの解答[Java]

## はじめに
今回はコンテスト中にEまで解けたのでそれを載せようと思います。

なお、僕のライブラリは[GitHub](https://github.com/viral8code/viral-Library)よりご確認ください。
では、見ていきましょう。

## A – Leap Year
問題文は[こちら](https://atcoder.jp/contests/abc365/tasks/abc365_a)

問題文の通りに実装しました。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter out = new SimpleWriter(System.out,autoFlush);

public static void main(String[] args){

//

元記事を表示

EclipseでのKotlin開発ガイド:バージョン互換性、非公式プラグインの活用と代替IDEの選択

# はじめに

Kotlinは、シンプルでモダンなプログラミング言語として人気を集めていますが、Eclipseでの開発環境の整備には注意が必要です。Eclipseは多くの開発者に親しまれているIDEですが、Kotlinの開発においてはバージョン管理やプラグインの選択が非常に重要です。本記事では、EclipseでのKotlin開発におけるバージョン互換性、非公式プラグインの利用方法、そしてEclipseの代替としてIntelliJ IDEAの利点について解説します。

# EclipseとKotlinのバージョン互換性

## 1. 安定したKotlinバージョン:1.5, 1.6
– **推奨Eclipseバージョン**: Eclipse 2020-03 (4.15) 以降
– **対応JDKバージョン**: Java 11からJava 17
– **特徴**:
– Kotlin 1.5および1.6はEclipseの公式Kotlinプラグインで安定してサポートされており、幅広いJDKのバージョンと互換性があります。業務システム開発に適したバージョンです。

## 2. 実験的サポ

元記事を表示

【超初心者向け】MyBatis超入門

# はじめに
とても久しぶりの超入門シリーズです。
何年も前にMyBatisの勉強をしたのですが、まとめていませんでした。
MyBatisは文献が豊富で、わざわざ自力でまとめなくてもよかったのですが、超入門シリーズの別の記事の準備をしていて、その中でMyBatisを使い、結構手間取ったので、まずはMyBatisの記事を執筆することにしました。
では、さっそくはじめます。

# 環境構築
しばらく開発をしていなかったので、開発環境を新しく構築しました。
今回使用した開発環境は次の通りです。

■開発環境一覧
|種別|製品名|バージョン|特記事項|
|:————– |:————————–|:———|——-|
|実行環境|Java|Java SE 21|Eclipse付属のJRE|
|統合開発環境|Pleiades All in one Eclipse|2024-06||
|DBMS|Oracle|19c|Oracle社が配布してくれている構築済みVMを使いました。
Oracle様、ありがとうございます。|
|SQ

元記事を表示

ABC364A~Eの解答[Java]

## はじめに
今回はコンテスト中にDまで、コンテスト後にEが解けたのでそれを載せようと思います。

なお、僕のライブラリは[GitHub](https://github.com/viral8code/viral-Library)よりご確認ください。
では、見ていきましょう。

## A – Glutton Takahashi
問題文は[こちら](https://atcoder.jp/contests/abc364/tasks/abc364_a)

2個連続で甘いものを食べたときに最後じゃなければ`No`、それ以外は`Yes`と判定することで本問題を解きました。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter out = new SimpleWriter(System.ou

元記事を表示

ポリモーフィズムとReflectionでランタイム環境からクラスにアクセスしてみた

# はじめに

こんにちは。

この記事では初めての現場に配属されてから、任された初開発業務に対して、
どのような悩みがあって、それをどのように解決したのかについて記録を兼ねて書いていこうと思います。

### 開発環境
– 言語:**JAVA 1.5**
– フレームワーク:seaser2
– DB:PostgreSQL

### この記事で使う用語

– **セクション**:診療情報の中で、**情報の枠**を意味します

例)患者情報、処方情報など(Javaではclassを意味)
– **項目**:実際の**診療情報のデータ**を意味します

例)患者情報の患者名・性別、処方情報の症状・服薬指導など(Javaではfieldを意味)

# プロジェクトの概要

当時、自分は病院向けの電子カルテパッケージを開発するチームに参加していました。

HL7 FHIRという国際規格に合わせて、オンライン紹介状の機能を改修するプロジェクトを行うことになりました。

HL7 FHIRは患者の診療情報を複数のセクションに分けている構造になっていたため、
紹介状に記載されている内容の中で、**印刷した

元記事を表示

ABC363A~Fの解答[Java]

## はじめに
今回はコンテスト中にFまで解けたのでそれをそのまま載せようと思います。

なお、僕のライブラリは[GitHub](https://github.com/viral8code/viral-Library)のものをご確認下さい。
では、見ていきましょう。

## A – Piling Up
問題文は[こちら](https://atcoder.jp/contests/abc363/tasks/abc363_a)

答えは$\lfloor\frac{R+100}{100}\rfloor\times100-R$で求まるのでこれを実装しました。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter out = new SimpleWriter(System.out,autoF

元記事を表示

ABC362A~Eの解答[Java]

## はじめに
今回はコンテスト中にEまで解けたのでEまで載せようと思います。

なお、僕のライブラリは[GitHub](https://github.com/viral8code/viral-Library)よりご確認ください。
では、見ていきましょう。

## A – Buy a Pen
問題文は[こちら](https://atcoder.jp/contests/abc362/tasks/abc362_a)

$C$に該当する変数に適当な大きさの値を代入することで選択しないようにさせて解を求めました。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter out = new SimpleWriter(System.out,autoFlush);

public static

元記事を表示

JavaでAWSのS3ストレージからファイルをアップロードする方法

こんにちは、東です。
今回はJavaを利用してファイルをS3ストレージへアップロードする方法を
まとめたいと思います。

あくまでも参考程度なので大まかな外枠の仕組み程度に捉えていただければ幸いです。

# 必要なことは?
まず必要なものは以下のものです。
・**「ユーザーID」** →IAMユーザーのユーザーID
・**「シークレットアクセスキー」** →IAMユーザーのシークレットアクセスキー
・**「S3バケット名」** →S3コンテナ名
・**「ルートディレクトリパス」** →S3コンテナ内のルートパス
・**「リージョン名」** →S3コンテナが配置されている地域のリージョン名
・**「ファイル情報」** →アップロードするFile(JavaのFile型)
となります。

流れとしては
1.認証情報を用意

2.S3へアクセスするクライアントを作成。

3.ファイルをアップロードする。

という流れになります。
では、詳しく見ていきましょう。

# 手順
### 1.認証情報を用意
AWSのS3ストレージへアクセスするためには、
**「アクセスID」** **「シークレッ

元記事を表示

【Java勉強法】業界未経験からJava Goldを20日で取得したので勉強方法などまとめてみました!

![スクリーンショット 2024-08-31 12.04.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3874571/6e009a34-205d-0bfb-ac96-68e3b31cb286.png)
# はじめに

今回、勉強期間20日ほどでJava Gold SE11の資格を取得することができたので、自分が行った勉強方法や注意点などをまとめてみました!

*おことわり*

初学者のため、間違い等あるかと思います。Javaの知識というよりは、勉強方法の参考やモチベーションアップのために読んでいただければ幸いです。

# この記事の対象

・これからJava Goldの取得を考えているけど「どうやって勉強するねん」って思ってる人
・Java Silver取ったけどGoldって取れるの??って考えている人

# 自分について

私は今年の7月にエンジニアとして会社に入社し、その後10日ほどの勉強期間でJava Silverを取得しました。その後、SQL Silverの勉強を10日ほど行

元記事を表示

OTHERカテゴリの最新記事