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

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

JavaGold 例題 乱数

以下のコードについて適切な選択肢を選んでください

“`java
import java.util.Random;

public class Example {
public static void main(String[] args) {
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; i++) { sb.append(random.nextInt(10)); } System.out.println("Generated password: " + sb.toString()); } } ``` 1. コンパイルエラー 1. 実行時エラー 1. ランダムな出力結果が出るが、問題がある 1. ランダムな出力結果が出る、特に問題はない

解答

3:
このコー

元記事を表示

AWS LambdaとSnapStart

# はじめに
AWS Lambdaは、開発の面ではプログラミングが簡単で、運用の面では変化する使用パターンに迅速に対応できるアプリケーションです。Lambdaの特徴は、**関数が安全で、隔離された環境**で実行される点です。各環境のライフサイクルは、**Init**、**Invoke**、**Shutdown**という3つの段階で構成されます。

## AWS Lambdaのライフサイクルごとの特徴

| Category | Desciption |
|————|——————————————————————————|
| Init | 関数のランタイムをブートストラップし、静的コードを実行 (INIT_REPORT) |
| Invoke | APIリクエストに応答してLamb

元記事を表示

Java 8のPeriodとDurationメモ

2つの日時の間隔を求めたい場合に思いつく、なんとなく似ている響きの `java.time.Period` と `java.time.Duration` を比較してみました。

# `java.time.Period`

こちらは「年月日」単位での間隔を表現できます。
例えば、2024-08-01 〜 2024-08-10の間であれば

“`kotlin
import java.time.LocalDate
import java.time.Period

fun main() {
val start = LocalDate.of(2024, 8, 1)
val end = LocalDate.of(2024, 8, 10)

Period.between(start, end)
// P9D (9 days)
}
“`

終了日 `end` は含まれないので、1,2,3 … 9 と数えていき、答えは9日間となります。

## Periodの生成方法

### `between`

2つの `LocalDate` の差分から生成します。

元記事を表示

PostgreSQL+MyBatis Generator+EclipseでエンティティやSQLの自動生成

# はじめに
MyBatis Generatorではエンティティー、Mapper、SQLを自動生成してくれます。
それにより、テーブルと1対1のエンティティーを自前で生成する必要がなく、とても開発効率があがります。
また、INSERT文、PKをキーとしたUPDATE文、SELECT文も自動で生成してくれます。

テーブルの仕様変更が起こった場合も、カスタマイズ部分には手を加えずに変更部分を反映してくれますので、非常に便利です。

ここでは、PostgreSQL利用時の設定内容についての例を紹介したいと思います。

# 開発環境
* JDK 21
* Eclipse 2024
* PostgreSQL 16
* クラスパスにPostgreSQLのJDBCのjarがあること

# 導入方法
* メニューの「ヘルプ」→「Eclipse マーケットプレイス」を選択
* Eclipse マーケットプレイスのダイアログで、検索欄に「mybatis」を入力して「Enter」キーを押下
* 「MyBatis Generator x.x.x」の「インストール」を押下
![マーケットプレイス.png](h

元記事を表示

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()`や`rollback(

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事