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

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

詳細設計書なんて、書きたくない・・・・Doxygenを使って自動生成してみる

# はじめに
お客様に提案をしているときの会話です。

お客様:「お客様と納品物の会話をしているときに、詳細設計書は作りますか」
私:「昔ながらの詳細設計(ロジックを日本語で書くもの)は作りません。クラス図とか、シーケンス図は複雑であれば作りますが、今回のシステムはそこまで必要なものはないものなので、割愛しようと思っています。」
お客様:「保守をお願いするかどうか未定なので、場合によっては引継ぎのために作ってもらうかもしれません」
私:「・・・・」

といった感じで、私がこの業界に入った30年前は、確かにプログラムを作る前に、詳細設計書と呼ばれるプログラムを日本語で書いていました。
最近、詳細設計と呼ばれるものを作った記憶がなく、無駄なものは作りたくないなぁという思いから、コードから自動生成できないかなと思って、いろいろ試してみました。

# Doxygenって
いろいろ調べてみると、[Doxygen](https://www.doxygen.nl/) にたどり着きました。

色々な言語に対応した、ドキュメントジェネレータです。アウトプットもHTMLだけでなくMarkdownや、PDF

元記事を表示

Javaで「文字列から指定したインデックスの文字を取得する」の動作を確認してみた

# 概要

Javaで「文字列から指定したインデックスの文字を取得する」の動作を確認してみました。
以下のページを参考にしました。

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

# 実装

以下のファイルを作成しました。
“`JSample5_1.java
class JSample5_1{
public static void main(String[] args){
String msg = “東京都港区赤坂”;

for (int i = 0; i < msg.length(); i++){ System.out.println( i + ";" + msg.charAt(i)); } } } ``` 以下のコマンドを実行しました。 ``` $ javac JSample5_1.java $ java JSample5_1 0;東 1;京 2;都 3;港 4;区 5;赤 6;坂 ``` # まとめ 何かの役に立てばと。

元記事を表示

(調査中)クラスローダーを使用してリソースのURLを取得。特定のディレクトリの指定されたパターンのプロパティファイル名を取得

“`java
import java.io.IOException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.regex.Pattern;

public class JarFileUtils {

public static void main(String[] args) {
try {
// ディレクトリパスとパターンを指定
String directoryPath = “/config”;
String pattern = “.*\\.properties”;
List p

元記事を表示

(調査中)Java。クラスローダーを使用してリソースのURLを取得。ディレクトリリスト取得

“`java
import java.io.IOException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

public class JarFileUtils {

public static void main(String[] args) {
try {
List directories = getDirectoriesFromJar(“/example.txt”);
directories.forEach(System.out::println);
} catch (IOException e) {
e.prin

元記事を表示

Javaのソースコードを実装する時の心得

上司にアドバイスをいただいた
Javaのソースコードを実装する際に
やった方がいい事
こうした方が効率が良くなるよ
とかを記録、メモ
(随時更新)

# Javadocは、メソッドとかクラスを作った(書いた)時点で書いてしまった方がいい

**経緯:**
時間があまり無い状況で、「まずは動くものを作ることを優先しよう!!」と考え、Javadocの記載を後回しにしていた。
しかし、上司から「後から書くと、二度手間になるし、記載漏れも出てくるでしょ。後回しにする理由も無いし、すぐに対応してしまった方がいいよ。」とご指摘をいただいた。
(上司の場合、Javadocは、メソッドとかクラスを作った(書いた)時点で書いてしまっているとのこと)


1. 実装し終わったクラスやメソッドにまた戻ってこなくてはいけない
1. 『これってなんのクラス、メソッドだっけ?引数、戻り値はなんだっけ??』と、思い出す(考える)必要がある
1. 1.で戻る際に、記載漏れが発生するかも

→1、2の時点で二度手間
 3で記載漏れ(修正の場合は修正漏れ)が発生する

# Javadoc

公式サイト

ht

元記事を表示

セグメントツリーについて調べる時間

# Intro
部分和を求める方法はいくつかあります。最初に考えた方法は、for文を使用して条件が合う場合にsum変数に合計を加える方法です。しかし、この方法は時間計算量がO(n)であるため、速度面で非効率的です。これをより速く求める方法は何でしょうか?それはセグメントツリー(Segment Tree)です。

## セグメントツリーは、
二分木構造を活用して部分和を効率的に求めるデータ構造です。他の方法としては、インデックストリー(Index Tree)があります。セグメントツリーが再帰関数で最下層のノードからルートノードまで上がる方式であるのに対し、インデックストリーはルートノードから最下層ノードへ下がる方式です。両方とも同じ問題を解決できますが、私はセグメントツリーの方が理解しやすいため、部分和問題を求める際に使用します。

セグメントツリーを作成する際には、部分和を求めたい配列より約4倍長い配列を宣言する必要があります。そして、leftノードはn*2、rightノードはn*2+1のインデックス番号を持ちます。

部分和を求める時はsum関数を使用し、n番目の数字を変更する時はu

元記事を表示

build.gradleのdependencies依存関係指定方法

– implementation
– コンパイルと実行時に必要な依存関係を指定。
– 依存関係はほかのプロジェクトから見えず、依存関係の依存関係も含めてコンパイル時に使用される
– compileOnly
– コンパイル時にのみ必要な依存関係のみを指定する。
– 実行時にはこれで指定された依存関係は含まれない。
– アノテーション処理やコンパイル時のチェックに必要な依存関係を指定するのに使用
– developmentOnly
– 開発環境でのみ必要な依存関係の指定。
– 本番環境ではこれで指定した依存関係は含まれない
– testImplementation
– テストのコンパイルおよび実行時に必要な依存関係を指定。
– テスト用フレームワークやモックライブラリに使用される
– runtimeOnly
– 実行時にのみ必要な依存関係を指定。コンパイル時にはこれらの依存関係は含まれないが実行時に必要なもの。
– 他にも
– compileClasspath
– annotationProce

元記事を表示

JTracker: A JetBrains IntelliJ IDEA. Supports JPA, MyBatis, and JDBC log formatting.

# JDBC Log

MyBatis や JPA ORM フレームワークを使用しているのであれば、MyBatis Log Formatting プラグインを使用しているはずです。
しかし問題があります。通常、フォーマットの効果しか見ることができず、誰がこのSQLを実行したのか、呼び出しのリンクを知る方法はありません。
下図に示すように

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3796327/8e4cb385-122e-ce1a-2a74-f188cbc25555.png)

では、コールリンクと誰がそれを実行したかを知る方法はあるのだろうか? 方法はある。それがこのスレッドの主人公である “[JTracker](https://plugins.jetbrains.com/plugin/24694)”だ。

# What’s JTracker

JTrackerはJavaコード追跡ツールです。 現在、それは唯一のMyBatisログの追跡をサポートしています、フォローアップは、J

元記事を表示

配列に対する処理 for, forEach, find, filter

新人エンジニアの三上です。
今回は、配列に対する操作の中で、私が実際に使用したことのあるものをまとめてみようと思う。

## for
配列の要素をループごとに変数に代入し、そのループ内で変数を使用する。
以下にサンプルコードを示す。

“`Kotlin:for
val sampleList = [0,1,2,3,4,5]

for (sample in sampleList) {
if (sample == 2) {
println(sample)
}
}
“`

配列 sampleList の要素を 変数 sample に設定し、sample に対し、条件判定を行うことで、任意の要素を出力する。

## forEach
for と処理は同様だが、記載の方法が異なる。
以下にサンプルコードを示す。

“`Kotlin:forEach
val sampleList = [0,1,2,3,4,5]

sampleList.forEach {sample =>
if (sample

元記事を表示

java csv比較ツール

比較元と比較先のSJISエンコードされたCSVファイルをSQLiteデータベースにインポートし、その差分をSJISエンコードされたCSVファイルとして出力するSwingベースのアプリケーションです。

“`java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.sql.*;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
import com.opencsv.CSVReader;
import com.opencsv.CSVReaderBuilder;
import com.opencsv.CSVWriter;
import com.opencsv.exceptions.CsvValidationException;

public clas

元記事を表示

Javaの利用状況についてのトレンドを知ろう!「 Javaエコシステムの現状」レポート概説 (2024年版)

# 「Javaエコシステムの現状」レポートとは?
Javaエコシステムの現状(State of the Java Ecosystem Report)」レポートは、ITシステムにおけるJavaの利用状況についての調査結果をまとめたもので、New Relicが概ね年次で公開しているものです。日本を含む全世界のJavaの利用に関するトレンドが把握できるものになっています。

2022年, 2023年もレポートが公開されていますが、なんと2024年のレポートはユーザー登録なく見ることができます!

今回は、2024年のJavaエコシステムの現状から読み取れる動向についてざっくり解説していきます!! 詳細はレポート本体👇をご覧ください。

:::note info
[「2024年 Javaエコシステムの現状」レポートはこちらから
](https://newrelic.com/jp/resources/report/2024-state-of-the-java-ecosystem-jp)
:::

※なお、本レポートのデータはNew RelicのエージェントをJ

元記事を表示

Javaで「文字列の文字の数(コードポイントの数)を取得する(String.codePointCount)」の動作を確認してみた

# 概要

Javaで「文字列の文字の数(コードポイントの数)を取得する(String.codePointCount)」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/string/index9.html

# 実装

以下のファイルを作成しました。
“`JSample9_1.java
class JSample9_1{
public static void main(String[] args){
String msg1 = “東京都港区赤坂”;
String msg2 = “𪛊あ”;

System.out.println(msg1.codePointCount​(0, msg1.length()));
System.out.println(msg2.codePointCount​(0, msg2.length()));
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample9_1.java
$ java JSample9_1

元記事を表示

【Servlet/JSP】初心者のJDBCエラーメモ

プログラミング初心者がServlet/JSPでJDBCを初めて使った際、エラーがいくつか出たので対処したメモです。

# 使用環境
PC:MacBook Air 2018
macOS:Sonoma 14.3.1
IDE:Eclipse
DB:MySQL
JDBCドライバ:MySQL Connector/J

# No suitable driver found
“`No suitable driver found for 接続先DB名(MySQLの場合はjdbc:mysql://localhost/DB名)“`は、JDBCドライバが見つからないため、DBに接続できないエラーです。
自分の場合は、Eclipseで作成したプロジェクトのクラスパスにJDBCドライバを追加したものの、Apache TomcatのクラスパスにJDBCドライバを追加していないのが原因でした。

## 対処法
Eclipseで「起動構成」から、「Apache Tomcat」→「Tomcat10_Java21」を右クリック→「編集」→「クラスパス」→「ユーザー・エントリー」→「外部JARの追加」からJDBCドライ

元記事を表示

Java Silver合格体験記

## Javaに関する知識レべル
エンジニア2年目がJava silverを受験し、合格したのでその体験記を書いていくよ。
ちなみに筆者はプログラミング未経験で入社し、プロジェクトでJavaを書くようになって半年程度だよ。
言語はJavaをメインに使っていて、少しPythonを触っているよ。
Javaの資格は、`Java SE Bronze`の資格を持っているよ。
これから勉強方法を記載していくよ。

## Java Silverの概要
Java Silverの試験には、`Java SE 8 Programmer I`と`Java SE 11 Programmer I`があるので注意してね。
難易度としては、Java初級者から中級者程度で、実際のコードを読み解いて解決できる力がいるそうだよ。
“`
試験名:Java SE 11 Programmer I
試験番号:1Z0-815-JPN
関連資格:Oracle Certified Java Programmer, Silver SE 11
受験料(税込):37,730 円 (2024年6月現在)
出題形式:選択問題
試験時間:180

元記事を表示

[Mac] [Eclipse]「Spring スターター・プロジェクト」作成でエラー

# 環境

– MacBook Pro 2019 (Intel Mac)
– macOS Monterey 12.6

– Eclipse 2023-12 (4.30.0) Intel Mac 最終版

https://willbrains.jp/index.html#/pleiades_distros2023.html

# 新規プロジェクト作成

scr 2024-07-01 15.41.11.png

新規に「Spring スターター・プロジェクト」を作成すると、しばらくして、エラーが発生した。

scr 2024-07-01 15.50.27.pngword2vecを使うバッチをサーバー上で動かそうとしたらjava.lang.RuntimeException: ND4J is probably missing dependencies.

忘れないうちにメモを残します

word2vecを使って単語間の類似度を測るアプリを作っていて、ローカルPC(Win)では動いていたのにサーバ環境にデプロイしたら動かなくなった
いろいろ調べた結果対処方法がわかったのでそれをメモ

### 何が起きたのか

ローカルPCでは動いたJavaバッチをサーバ(AmazonLinux2023)にデプロイして実行したら下記の例外が出ました

“`java
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘initW2V’ defined in class path resource []: Failed to instantiate [void]: Factory method ‘initW2V’ threw exception with message: null
at org.springframework.beans.factory.support.ConstructorResolver.insta

元記事を表示

Java奮闘記: JARファイルって初めて見るぞ

# はじめに

## 筆者について
新卒3年目のデータエンジニアです.

– https://github.com/KazuSh1geru
– https://www.linkedin.com/in/%E5%92%8C%E5%8F%B2-%E9%AB%98%E8%8D%89%E6%9C%A8-7b912b2a6/

## 執筆の背景
初めてJARファイルを作成しようとした時、そのプロセスが意外と複雑であること、そして必要な情報がWeb上に十分に存在しないことに気づきました。これが、JARファイルの作成過程を詳細に解説するブログを書くことにした主な理由です。
このブログを通じて、同じような課題に直面するかもしれない他の開発者たちに向けて、参考となるTIPSを提供したいと思います。

## JARファイルとは何か?
Java ARchiveの略で、Javaクラスファイルとリソースを一つのファイルにまとめたものです。
依存関係を含めて配布や実行が簡単になるため、Javaアプリケーションの管理と配布を効率的に行うことができます。

私は初めてJARファイルを触るきっかけとしては、Salesfo

元記事を表示

Javaのアプリ

コンソールではなくGUIで対話式のインターフェースを提供するために、JavaのSwingを使用します。以下に、Swingを用いて対話式のファイル比較ツールを実装したコードを示します。

### Swingを用いた対話式ファイル比較ツール

“`java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.nio.file.*;
import java.util.*;
import java.util.concurrent.*;

public class FileComparator extends JFrame {
private static final int THREAD_POOL_SIZE = 4; // Intel i5の4コアに合わせて設定
private static final int BUFFER_SIZE = 8

元記事を表示

Javaで「文字列の長さを取得する(String.length)」の動作を確認してみた

# 概要

Javaで「文字列の長さを取得する(String.length)」の動作を確認してみました。
以下のページを参考にしました。

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

# 実装

以下のファイルを作成しました。
“`JSample6_1.java
class JSample6_1{
public static void main(String[] args){
String msg1 = “Hello”;
String msg2 = “東京都港区赤坂”;

System.out.println(msg1 + “の長さは ” + msg1.length());
System.out.println(msg2 + “の長さは ” + msg2.length());
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample6_1.java
$ java JSample6_1
Helloの長さは 5
東京都港区赤坂の長さは 7
“`

# ま

元記事を表示

Java on Ubuntu on QEMU for RISC-V on Ubuntu on WSL2 をやってみる

この所、[Eclipse Temurin 21 が RISC-Vで利用可能になった](https://adoptium.net/blog/2024/04/eclipse-temurin-21-and-22-available-on-riscv/)り、[Ubuntu 24.04 が RISC-V 搭載 SBC「Milk-V Mars」を正式サポートしたり](https://gihyo.jp/admin/clip/01/ubuntu-topics/202405/31)しましたね。ということは、RISC-V な市販ボード PC で Ubuntu の起動も、さらには Temurin の動作もサポートされることになります。30 億のデバイスで走ることが知られる Java ですが、まだまだその版図を広げていくつもりのようです。せっかくなので Milk-V Mars を買って試してみたかったのですが、どうやら品切れ中のようでした。というわけで、Ubuntu on QEMU for RISC-V on Ubuntu on WSL2 で Java を走らせてお茶を濁すこととします。

## Ubuntu

元記事を表示

OTHERカテゴリの最新記事