JAVA関連のことを調べてみた2023年08月31日

JAVA関連のことを調べてみた2023年08月31日

Google Java Style Guide問題集(全10問:初級編)

# はじめに
Google Java Style Guideを定着させるために、実際のコードでの問題集を作成しました。
特に開発で出会う頻度が高い項目に絞っています。

こちらをきっかけにぜひ↓のページを実際にご自身で参照してください。

※注記:コードはChatGPTを活用して作成しています。

### 参考記事
Google Java Style Guide
https://google.github.io/styleguide/javaguide.html

Google Java Style Guide(非公式和訳) – 2023年8月31日現在、本家と内容が変わらないのでおすすめです。
https://kazurof.github.io/GoogleJavaStyle-ja/

# 対象者
Java初級者(コーディングスタイルに不安がある人)

# 形式
全10問です。各問題に回答のリンクをつけています。

# 問題1
以下のコードをGoogle Java Style Guideに準拠して修正してください
“`Java

元記事を表示

JAVA×SQL③

# 課題
問題: JBDCを使用しupdate文を実行せよ
使用ツール: XAMPP、eclipse

## 回答

~~~~JAVA

package DBA;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class DBA3 {

public static void main(String[] args)throws SQLException {
System.out.println(“社員ID入力”);
Scanner s=new Scanner(System.in);
int ID1=s.nextInt();
System.out.println(“部署ID(変更後)入力”);
int ID2=s.nextInt();

String url=”jdbc:mysql://loc

元記事を表示

オブジェクト指向の3大要素について簡潔にまとめてみた

# はじめに
プログラムを書いててなんとなく使っていたオブジェクト指向

今回は、そんな曖昧に捉えがちなオブジェクト指向の**概念やできること**について、三大要素のサンプルコードを交えつつまとめてみました

:::note info
サンプルコードはオブジェクト指向の概念をしっかりと踏襲したJavaを用いています
:::

# オブジェクト指向の定義
オブジェクト指向とは、「**ソフトウェア開発をする時に用いる部品化の考え方**」のこと

この部品化の考え方にそって、一つのプログラムを複数に部品化すると、その内容が把握しやすくなり、我々人間の頭が追いつかない状況を避けることが出来る

# なぜオブジェクト指向で書くのか?
なぜオブジェクト指向で書くのかを考えたことはありますか?

オブジェクト指向で書く理由、それは**変更に対して柔軟に対応**するため

例えば、ある都市に複数の新しいコーヒーショップチェーンを展開するシステムを設計するとします。次第に店舗数が増加すると予想されるので、この「店舗追加」という動作は頻繁に行われる可能性が高い。このような変更が頻繁に起こる部分は、クラスと

元記事を表示

GradleでBOMを利用する時の注意点

# はじめに
Gradleにはタスクの定義/実行や依存関係のコントール等、便利な機能が様々あると思います。
今回は、ライブラリのビルド依存関係を追加する場合のTipsを記載します。
BOMを利用する場合の注意点です。

:::note info
GradleはGroovy DSLの他にKotlin DSLでも記述可能だと思いますが、本記事の例はGroovyで記載しています。
また、ライブラリは例で記述した存在しないものです。
:::

# ちょっとふりかえり
## 依存関係の定義
Gradleで依存関係を定義する際、以下の様にdependencesを利用します。
例では記載のバリエーションの為、統一感の無い記述を行っていますが、**本来は実装を統一する方が視認もし易い**と思います。

“`build.gradle
dependencies {

implementation ‘com.hulft:sample-library-a:1.0.2’

//バージョンを省略したり
implementation ‘com.hulft:sample-library-a’

//指定

元記事を表示

Javaで「オブジェクト指向とは」の動作を確認してみた

# 概要
Javaで「オブジェクト指向とは」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/about/index5.html

# 実装
以下のファイルを作成しました。
“`JSample5_2.java
class JSample5_2{
public static void main(String[] args){
Randamer r = new Randamer(10);

for (int i = 0; i < 5; i++){ System.out.println(r.getNum()); } } } class Randamer{ private int maxnum; private int lastNum; public Randamer(int maxnum){ this.maxnum = maxnum; lastNum = 0; } public int getNum(){ int

元記事を表示

Spring Securityを使ったWebアプリケーションの基本③ 〜ユーザー情報をデータベースで管理する実装〜

はじめに

前回の記事では、ログイン機能とログアウト機能を実装しました。今回は、ユーザー情報をデータベースに登録し、ユーザー情報テーブルから、ログインできるように実装をしていきたいと思います。

ファイル構成

.
├── .gradle
├── .idea
├── build
├── gradle
└── src
├── main
| ├── java
| | └── com
| | └── example
| | └── practice
| | ├── config
| | | └── SecurityConfig.j

317(A,Bだけ)

# はじめに
C 以降はお勉強をしてから取り組みます。

# A
必要量 `X - H` を diff と置いて、 diff よりも大きい数値の中で一番小さな値を探す。

-> diff を P の値のリストに突っ込んでその位置を特定する。その index + 1 が答え。

```java
import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List list = new ArrayList<>();
while (scanner.hasNextLine()) {
String s = scanner.nextLine();
if (s.length() == 0) break;
list.add(s);
}
scan

JAVA×SQL②

# 課題
問題:JAVAでdelete文を実行せよ
使用ソフト:XAMPP、eclipse

~~~~~java

package DBA;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class DBA2 {
public static void main(String[] args) throws SQLException {
System.out.println("会社ID入力");
Scanner s=new Scanner(System.in);
int ID1=s.nextInt();

String url="jdbc:mysql://localhost/JDBC";
String user ="root";
String password ="";
Connection con

Javaで「HashMapの使い方」の動作を確認してみた

# 概要
Javaで「HashMapの使い方」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/collection/index3.html

# 実装
以下のファイルを作成しました。
```JSample3_1.java
import java.util.HashMap;
import java.util.Map;

class JSample3_1{
public static void main(String[] args){
HashMap map = new HashMap<>();

map.put("リンゴ",80);
map.put("オレンジ",120);
map.put("ブドウ",90);

System.out.println(map.get("ブドウ"));
System.out.println(map.get("リンゴ"));
}
}
```
以下のコマンドを実行しました。
```
$ javac J

Java で Word を HTML ファイル形式に変換する

## はじめに
HTML ファイルは、Web ページの作成に使用される、ハイパーテキスト マークアップ言語で記述されたテキスト ファイルです。 Web ページの構造、コンテンツ、スタイルなどの情報が含まれています。 Word 文書を HTML ファイルに変換すると、Word 文書内のテキスト、見出し、段落、リスト、表、画像、その他の要素を、対応する HTML タグと属性に変換できます。 この変換により、ドキュメントのコンテンツを Web 上に簡単に公開できるだけでなく、ドキュメントがさまざまなプラットフォームやデバイス間で一貫して表示されるようになります。 関連する方法を以下に説明します。
## ツール
* IntelliJ IDEA 2018 (jdk 1.8.0)
* [Free Spire.Doc for Java](https://www.e-iceblue.com/Introduce/free-doc-for-java.html)

## Jarファイルの導入
* [Free Spire.Doc for Java](https://www.e-iceblue.com/Down

ABC317A~Eの解答[Java]

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

なお、自作ライブラリは[提出結果](https://atcoder.jp/contests/abc317/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)よりご確認ください。
では、見ていきましょう。

## A - Potions
問題文は[こちら](https://atcoder.jp/contests/abc317/tasks/abc317_a)

$P_i \lt P_{i+1}$なので、受け取ってそのまま二分探索して答えを求めました。
```A.java
final class Main {

private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner( System.in );
private static final SimplePrinte

LocalでHello Worldを表示させる

## はじめに
今回は、STSで、Hello worldを表示させるまでのやり方を記録していきたいと思います。
まず、STSのセットアップが完了していない方は、私が前回に書いた記事を見てください。

https://qiita.com/ren_g/items/4a2f0826adc26120a083

## 前提条件

|Windows10 64bit|
|---|

## 準備
まず、STSを起動させましょう。

SpringToolSuite4.exeを開いてください。

JAVA×SQL①

# 課題
問題:JAVAでSELECT文を実行せよ(IDが3以下に限る)
使用ソフト:XAMPP、eclipse

~~~~~java
package DBA;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBA1 {
public static void main(String[] args) throws SQLException {
String url="jdbc:mysql://localhost/JDBC";
String user ="root";
String password ="";
Connection con = DriverManager.getConnection(url,user,password);
PreparedStatement pstmt

Spring Securityを使ったWebアプリケーションの基本② 〜ログインとログアウト機能の実装〜

はじめに

前回の記事では、セキュリティの重要性やSpringSecurityのデフォルトのログイン機能についての説明をしました。今回はログイン機能とログアウト機能を実装していきたいと思います。

ファイル構成

.
├── .gradle
├── .idea
├── build
├── gradle
└── src
├── main
| ├── java
| | └── com
| | └── example
| | └── practice
| | ├── config
| | |

Javaで「LinkedListの使い方」の動作を確認してみた

# 概要
Javaで「LinkedListの使い方」の動作を確認してみました。以下のページを参考にしました。

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

# 実装
以下のファイルを作成しました。
```JSample2_1.java
import java.util.LinkedList;
import java.util.List;

class JSample2_1{
public static void main(String[] args){
List list = new LinkedList<>();

list.add("東京都");
list.add("大阪府");

for(String s: list){
System.out.println(s);
}

System.out.println("-- --");

list.add(1, "神奈川県");

for (int i = 0; i < lis

高度なコルーチンのテストにおけるKotlin Playgroundの応用

  テストはソフトウェア開発において極めて要要な要素とされ、テストされたコードは保守性が向上します。また、これによりテストはしばしば事実上のドキュメントとしての役割も果たします。これに関連して、読者がKotlinを既に使用した経験を有する場合、おそらくは数多くのテストコードを作成したことであります。しかしながら、Kotlin Playgroundを活用してこれらのテストを実行・検証した経験を有するかは疑問であります。

![z4643068441154_b090d9371a2d8771e4e6f01105ccddba.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92345/ae08b769-c35e-48e8-d041-4fcef2e44c48.jpeg)

高度なコルーチンのテストにおけKotlin Playgroundの応用

 本記事は、Kotlin Playgroundを通じて高度なコルーチンを用いたコードのテスト手法について詳細に探究します。さらに、非同

PowerMockito.mockStaticを一部メソッドにのみ適用したい

Junit4 + PowerMockでユニットテストを書いている際に、対象クラスの一部staticメソッドのみをモック化してテストしたかったのですが、`mockStatic`だと対象クラスの全てのstaticメソッドがモック化されてしまうのを、`spy`を使うことで回避できたので記録します。
### version
java11
```pom.xml

junit
junit
4.11
test


org.powermock
powermock-module-junit4
2.0.2
test

【make it easy】pdf-libとpdfmakeをefwに使ってみる

NashornはECMAScript 5.1を100%サポートします。だが、ECMAScript 2015およびその後のバージョンは100%サポートではありません。Efwは、Nashorn拡張となる[nashorn-ext-for-es6](https://github.com/efwGrp/nashorn-ext-for-es6)を取り込んで、最新のECMAScriptに近づいて、人気になるjavaScriptのpdf作成ツールをフレーワークに利用できるようにしました。今回の記事で紹介させていただきます。

# 環境
- efwの最新版4.07.006のjarを利用します。
```xml

io.github.efwgrp
efw
4.07.006

```
- jdkは15以上のほうを利用してください。また、最新版のNahsornをダウンロードしてください。
```xml

【Effective Java】オブジェクト生成方法(Staticファクトリ・ビルダー・コンストラクタ・JavaBeans)の採用基準と実装例

# はじめに
Javaのオブジェクトの生成方法の選択基準がわかりづらい初級者(自分も含め)が多いと感じたのでまとめ。

主に以下を参考にまとめています。

`Effective Java 第3版 `
第2章オブジェクトの生成と消滅
項目1 コンストラクタの代わりにStaticファクトリメソッドを検討する
項目2 多くのコンストラクタパラメータに直面した時にはビルダーを検討する

# この記事で学ぶ内容
* Javaにおけるオブジェクト生成方法の種類
* Javaにおけるオブジェクト生成方法の選択基準
* 対象パターン->
Staticファクトリ
ビルダー
コンストラクタ
JavaBeans

# 結論:採用基準まとめ
最初に本記事の目的である各生成方法の採用基準(つまり結論)を書きます。

`個人的にはほとんどのケースでStaticファクトリとビルダーを第一候補として採用していく予定です。`

以下ケース別にまとめます。

・ **シンプルなケース** :

パラメータが少なく、名前付きで簡単にオブジェクトを生成可能。
& 柔軟性と拡張性が必要な場合(レアケース※別記事で取

Java EEからJakarta EEへ

https://blogs.oracle.com/otnjp/post/transition-from-java-ee-to-jakarta-ee-ja

表にするとこんな感じかな?
| 順 | 仕様名| Java Package | Maven | 管理 | 備考 |Servlet|Tomcat|WebOTX|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| ↓ | JavaEE6 認定 | javax. | javax. | Oracle社 | ― |3.0|7.0.x(superseded)|9|
| ↓ | JavaEE7 認定 | javax. | javax. | Oracle社 | ― |3.1|8.5.x|10|
| ↓ | JavaEE8 認定 | **javax.** | **javax.** | Oracle社 | リリース直後に移管発表 |4.0|9.0.x(superseded)|-|
| ↓ | JakartaEE8 認定 | **javax.** | **jakarta.**