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

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

Javaでxml形式のデータをリストに変換する

“`main.java
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import java.util.ArrayList;
import java.util.List;

public class Main {

public static void main(String[] args) {
List items = parseItems(“example.xml”);
items.forEach(System.out::println);
}

private static List parseItems(String filePath) {
List itemList

元記事を表示

ICU4Jの変換が強力すぎるので文字種を規制したい

## とどのつまり…
UnicodeSetを使って正規表現で文字種を規制してFilterに設定すべし
“`java
// カタカナとか巻き込まれて半角になると困る!全角英数字だけ半角にさせてくれ!!
Transliterator transliterator = Transliterator.getInstance(“Fullwidth-Halfwidth”);
transliterator.setFilter(new UnicodeSet(“[0-9a-zA-Z]”).freeze());
return transliterator.transliterate(“FULL width text”);
“`

元記事を表示

JavaプログラムからRPGプログラムの呼び出し

## 初めに
IBMi (AS/400)は優れたシステムであるが、企業における業務を記述するプログラムは手続型言語RPGやCOBOLで記述された資産が多くある。一方でオンプレ・オープンやクラウド環境を利用、Javaをはじめとするオブジェクト指向型言語で業務プログラムを記述するケースが多々あり、若手技術者はRPGやCOBOLでのプログラミングを忌避する傾向が強い。これによりRPGやCOBOLで記述された業務プログラムの保守・拡張を担う人材の減少が加速し、RPGやCOBOLで業務プログラムを記述している企業では、IBMiをモダナイズして業務システムの刷新に取り組む機会が多く見られる。
この記事では、RPGで記述されたプログラムを段階的にJavaプログラムにモダナイズしていく手順について解説を行う。

## クライアント・サーバシステムにおけるRPGプログラムの役割
IBMiをサーバサイドシステムと使用しRPGの業務プログラムとして動作させる手法は多々あるがここでは、クライアントシステムとIBMiをソケット通信で接続し、業務データを電文交換でやりとりしているシステムを一例として提示する。
#

元記事を表示

【Java】instanceofした後のキャストが要らない件(Java 16)

# はじめに
`instanceof`を使う時って、↓のようにキャストすることあるじゃないですか。
“`java
if (obj instanceof String) {

String s = (String) obj;

// do anything
}
“`
これがJava 16からキャスト不要だったらしいです。

https://openjdk.org/jeps/394

「そんなん知ってるわ」って方は以下読む必要ないです。

# こうなる
`instanceof`のパターンマッチングと言います。

最初のコードは↓のように書けます。

“`java
if (obj instanceof String s) {

// do anything
}
“`
この1行で↓が行われます。
1. `obj`が`String`だった場合は`String`にキャスト
1. 変数`s`に代入(ここでは`s`のことをパターン変数と呼びます)

よって、後続の処理では`s`を使っていろいろと処理が書けるわけです。

## パターン変数のスコー

元記事を表示

[初心者向け] 日付の取り扱いでビックリした話

# はじめに
* 本来はあまり発生するような話ではないので、読み物としてお楽しみいただければと思います。

# ある日の会社でのできごと
後輩 「UTCからJSTに変換する際に、冬場に該当する月(12月~3月)だと正しく変換できない。JavaのDate().getTimezoneOffset()を使っている。なんでDateだとうまくいかないのかは不明!」

我 「(今時、java.util.Date使ってることなんてあるのかな…いにしえのコードなのか?はたまた海の外から納品されたレアなパターン踏んじゃったのかな…) 理由があることをきちんと説明しないといけない!(謎の使命感)」

# 日付の取り扱い(歴史)
## Java8以前の話
![日付を取り巻くクラス.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180558/67c72835-43c6-68f9-523f-6100d12d310d.png)

* 日付を表すのに、`java.util.Date` 、計算するために、`java.util

元記事を表示

JUnitのテストケースにおけるパターン表の管理

:::note info
この記事は [BABY JOB Advent Calendar 2023](https://qiita.com/advent-calendar/2023/babyjob) の 6 日目の記事です。
:::

# まえおき

久しく投稿してなかったが、会社でアドベントカレンダーなる祭典を教えてもらい、乗っかってみる。

今回はJUnitにおけるパターン網羅の方法。
ではなく、パターン網羅したことをどのように残すかについて考えたので、披露したい。

今まで様々なプロジェクトに携わってきたが、こういった議論は一度もなかった。
もしかしたら、開発史上初の試みなのかもしれない。
そうなのであれば、私は喜んでそのパイオニアとなろう。
ただ、既に議論され尽くしていても、そっとしおいてほしい。
そして、パイオニア気分に浸らせたままにしてほしい。

# 問題提起

さて、このほど新しい環境で新しいプロジェクトに関わることになった。
そこでは、アジャイル開発が行われ、CICDが取り入れられて、モダンな開発が行われていた。
その中では当然単体テストツールによるテストがあるのだが、

元記事を表示

マイクラをヴァンサバライクにするプラグインの開発

## はじめに
アドベントカレンダー6日目!! 担当は3年の片平です。
昨日は、桃山さんのLINEでのカレンダー共有についての記事でした。
共有カレンダーをLINEで通知してくれる便利な機能で是非触ってみたいです!

アドベントカレンダーは初めてなので、至らないところがあったらすみません。
今日は僕の好きなMinecraft関連の記事です!

Minecraftのマルチサーバーで使えるプラグインを作成したので、それの解説となります!
昔は全くできなかったことが宮治研に入ってできるようになって、成長を感じています。

## 作るもの
マイクラをヴァンサバライク(Vampire Survivorsというゲーム風)なゲームに変えるプラグインを作成しました。
機能としてはマイクラの進捗(実績のようなもの)を獲得するたびにプレイヤーのレベルがあがり、能力値を選んで上昇させることができるものです。

実際に作ったのは夏休みで、追加したい機能は他にもあるのですがとりあえずレベルアップとステ振りの機能だけ実装しました。

言語はJavaでIntelliJ IDEAを用いて開発しました。

## セット

元記事を表示

JacksonのアノテーションをGsonでも(どうしても)利用したい時の対処

[Jackson](https://github.com/FasterXML/jackson)も[GSON](https://github.com/google/gson)もJavaのオブジェクトとJSONを変換したいという要望に答えるものです。
Jacksonで使ってるアノテーションを、Gsonでも使いまわしたいという状況に(両方使うのがベストプラクティスではなさそうということは置いておいて)対処します。
この記事では、Java->JSONの変換、アノテーションは後述の2種類という条件に絞って記述します。

# Jacksonでのアノテーションの使われ方
Jacksonでは[@JsonProperty](https://www.javadoc.io/static/com.fasterxml.jackson.core/jackson-annotations/2.16.0/com/fasterxml/jackson/annotation/JsonProperty.html)や[@JsonIgnore](https://www.javadoc.io/static/com.fasterxml

元記事を表示

コンストラクタについて復習

# はじめに
コンストラクタについて何度か学習しているのに
出くわすと初めて見た並みに「?」になるので
この記事でコンストラクタのみを再度振り返ります。

# コンストラクタって何者?
直訳は構築者という意味。

個人的によく見かける「初期化」というワードがあまり納得がいっていない。

クラスのインスタンスを発行したときに実行されるもの。
変数の初期値を設定しておくもの。
引数の受け方を事前に定義しておくもの。

クラスのインスタンス化、これがわからんのよ。
クラスのインスタンス化ってなんやねん!!!

“`java:
クラス名 変数名 = new クラス名(引数);
//これがクラスのインスタンス化。
“`

もうすこし具体的な話
設計図が書かれているAクラスがあったとして、
別のBクラスで`Aクラス 変数名 = new Aクラス(引数);`が他クラスで実施されて
クラスのインスタンス化がなされたときに、その引っ張られてくるクラスの値を設置する方法。

2023年に出版された洋書・日本書籍まとめ

# 自己紹介
Javaのアドベントカレンダー、5日目を書かせていただきます。
Shiryuと申します。
SES企業で業働いています。

コミュニティのイベントに出席したり、イベントの主催をしていたりします。
新卒一年目です。

今回は、Javaを主軸に洋書についてお話を書きます。

# 経緯
今回の執筆のきっかけは、 最新の本を読みましょうと言われたことです。

ある勉強会で自分が発表した内容の中で、参考にした書籍が5年ほど前のものであったことが原因でした。
自分自身では最適な選択をしたつもりでしたが、 どうやら海外ではその分野の本が出版されていたようです。
なるべく洋書にもアンテナを立てなければいけないとは思いつつも、なかなか一歩が踏み出せず…。

良い機会なので、今回調べてまとめてみました。

ちなみに、「五年前以上、Java8前の書籍はやめておいた方が良い」とのことでした。
簡単に調べたのですが、Java8以前はXMLファイルに依存したという書き方だったようです。

# 対象者
– 洋書の調べ方がわからないなぁと漠然と考えている方

# 書籍リスト
今回まとめた書籍のリストはこち

SpringBootで『Project ‘※’ has no explicit encoding set』警告の解消

# この記事はこれの続き

https://qiita.com/waokitsune/items/d7fa0ab0c538f8e86729

# 概要

下記のような警告が出ているので、警告が出ないようにします。

> Project ‘※’ has no explicit encoding set

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/b1e70689-e942-4cd2-277e-60dec683d13c.png)

『常に警告が出ている状態』だと『本当に対応しなくてはいけない警告』が出てきた時に見過ごす可能性があるためです。
狼少年のようなことが起きないように。

# やり方

プロジェクト上で右クリック → 『Properties』。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/00b2215b-3bc7-2786-f8b4-a6b3d564

テスト工程とは(初心者向けの基本解説記事)

# はじめに

単体テスト,結合テスト,結合テストについての学習をまとめて備忘録として投稿させていただきました。内容は初心者向けの基本的な手順や違いの説明になります

## 単体テスト,結合テスト,総合テストの違い

単体テスト:機能単体のテストを実施すること
結合テスト:機能同士を組み合わせたテストを実施すること
総合テスト:システム全体のテストを実施すること

## 単体テストとは

プログラムの最小単位である、メソッド単位で行われるテストです。場合によってはクラス全体を対象とすることもあります。

### 単体テストの目的

単体テストでは単体のメソッド(関数)が期待通りの結果を返すかどうかを確認します。これにより、そのメソッドが正しく機能することを確認します。しかし、そのメソッドが複数の他のメソッドやクラスと連携して機能する場合は、それらの相互作用もテストする必要があります。

単体テストとは、基本的にメソッド単位から始まりますが、そのメソッドが属するクラスや他の関連するメソ度との連携も考慮されます

### 単体テストの例

以下の計算するメソッドがあります
`

SpringBootのバージョンを3.1.5から3.1.6へアップ

# この記事はこれの続き

https://qiita.com/waokitsune/items/c8dfe4a0a90020bdb556

# 概要

現行は3.1.5。
下記警告が出ていたのでバージョンアップをしてみます。

> Newer patch version of Spring Boot available: 3.1.6

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/67e3230b-2c77-e4b7-9311-6a25509280f6.png)

デモ環境なので、バージョンアップによるデグレは考えなくてよいという判断です。

# build.gradle変更

警告文をダブルクリックすると…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/ae91a9c7-5e56-f3b7-eb89-2c077757169f.png)

build.grad

【Java】Value-Based Classってなんやねん

# はじめに
Java 17のソースコードで遊んでいると、下記コードの`synchronized`ブロックで警告が出ました。
“`SynchronizedSample.java
public class SynchronizedSample {

Integer integerObject = 1;

void sampleMethod() {

synchronized(integerObject) {

System.out.println(“a”);
}
}
}
“`
:::note warn
`Integer is a value-based type which is a discouraged argument for the synchronized statement`
:::
「`integer`は`value-based`型で`synchronized`構文では推奨されないよ」ですって。
「なんじゃこりゃ」と思い調べてみたので記事にします。

# Value-based ってなんやねん
https://docs.oracle.com/en/j

Development methods that should not be done on site

現場で良くみる分かりにくいコードが何故ダメなのか?
分かりやすく解説してくれています。

https://www.ulsystems.co.jp/archives/039.html

【Java】SDKMANがインストールできない。

# 初めに
JavaのフレームワークQuarkusを触るためにSDKMANをインストールしました。
そのときに出会ったトラブルを書きます。

# 動作環境
– WSL Ubuntu 22.0.4.2 LST

# `curl -s “https://get.sdkman.io” | bash`でエラー発生
JVM言語バーンジョン管理ツールSDKMANの[公式ドキュメント](https://sdkman.io/install)に従ってインストールすると以下エラーが発生した。
“`bash
$ curl -s “https://get.sdkman.io” | bash

-+syyyyyyys:
`/yho:` -yd.
`/yh/` +m.
.oho. hy

日本語プログラミング言語 なでしこ3 Java C# で整数カウントアップ実行時間を仲良く競う

# はじめに
日本語プログラミング言語 なでしこ3 とJava C# とで整数カウントアップの反復実行時間を仲良く競い合わせてみます。関数呼び出しは意外と重い処理なので、いったん素の処理でどんなものなのか検証します。なでしこ3のコンソールアプリです。

https://qiita.com/advent-calendar/2023/nadesiko

## この記事内容の作業環境
Windows11 Pro 22H2
VSCode(Visual Studo Code) 1.78.2
java Eclipse Adoptium jdk-20.0.2.9-hotspot
C# 10 dotnet-sdk-6.0.404-win-x64
nadesiko version 3.4.5 nadesiko3win32-3.4.5
Node.js v20.10.0.
CPU Intel(R) Core(TM) i3-5005U 2.00 GHz

## この記事内容の保証
※この記事の実行結果は参考情報です。実行環境に大きく依存します。

# お題のソースコード
#### Java
“`Java:m

未経験からエンジニア転職した話

@newta 様の[エンジニア転職 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/change-jobs)に参加させていただいております。
企画いただきありがとうございます!

# まえがき
こんにちは。えくれあと申します。
未経験からエンジニアに転職して数ヶ月経ちました。
自分がエンジニアを目指して学習している際には、よく転職報告記事を見ていて参考にさせてもらっていたので、
今回は先人たちへの感謝と、エンジニアを目指している皆様への応援の気持ちを込めて、記事を書く側に回ってみようかと思います。

# 略歴
年齢:20代後半
大学:中退
1社目:エンタメ系企業 企画職 メンバー
2社目:エンタメ系企業 企画職 メンバー→準マネージャー
退職後:職業訓練校 修了(6ヶ月間)
現在:業務系システム開発(Java) 客先常駐メイン

行動力だけはあると自負しており、紆余曲折ありながらもその時々でやりたいことはやれているな〜と感じております。
ただ、大学は中退しているし、特別なスキルももともとないし、コンプレックスあり

Javaの商標と大文字小文字

 しばしば話題になるJavaの商標とその大文字小文字について。

## 実際に登録されている商標

 Java™ の商標権は2023年現在、米Oracle社が保有しています。

https://trademarks.justia.com/866/94/java-86694276.html

 歴史的な経緯としては1995年に 米Sun Microsystems がJavaを発表し商標権も取得していたわけですが、経営が傾き、Oracleに買収されました。買収の完了が2010年1月27日とされます。

## 米国の商標における大文字小文字

アルファベットの商標は大文字と小文字どちらで登録した方がいいでしょうか?

> 米国出願では、全て大文字で記載した場合には、小文字や頭文字のみ大文字での使用も商標の使用と認められますが、小文字での権利化の場合、小文字での使用しか商標の使用と認められない場合があります。

 アメリカでの商標の取り扱いとしては上記のような理由で、大文字で商標登録する事情があるようです。

## Javaのロゴ

 Jav

【Java】jdbctemplateメモ(DataClassRowMapper)

## jdbctemplateでDBのデータを扱う際の型について

現在SoringBootについて学習中ですが、参考書(プロになるためのSpring入門)にて、jdbctemplateの使用方法で便利な機能を見つけたので忘れないようにアウトプットするために下記に殴り書きしていきます。

SpringBootのjdbctemplateにてDBから1レコードを取り出す際に、
今まではqueryForMapを使用してDAOファイルで変換を行っていました。

下記のコードは予約管理システムに使用した予約情報をIDを使用して検索するためのコードです。
引数で予約に紐づくIDを受け取りReserve型をインスタンス化して型ごとにmapを使用して変換していました。

“`java
public Reserve idFind(String id) {
String sql = “SELECT * FROM reserve WHERE id = ?”;
try {
Map map = jdbcTempla