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

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

Webエンジニア「Kotlin」を学ぶ

現在Webエンジニアとして受託企業で働いているものです。
この度、転職を機にAndroidアプリエンジニアへキャリアチェンジをすることになったため、備忘録としてKotlinの学習記録を残すために投稿しています。
この記事ではKotlinとはどのような言語なのかということについてまとめています。

# Kotlinとは何か?
JetBrains社によって開発されたモダンなプログラミング言語。
2017年にGoogleからAndroid開発の公式言語として採用されており、Android開発において非常に人気が高い言語になっている。
また、マルチプラットフォームをサポートしており、JVM, Android, JavaScript, ネイティブ向けのコードをコンパイルすることができる。そのため、1つのコードベースから複数のプラットフォームに対応したアプリケーションを構築することができる。

# Kotlinの持つ特徴
### 静的型付け言語
– コンパイル時に型がチェックされるため、型安全性が高く、実行時のエラーリスクが減少し、信頼性の高いコードを書くことができる
– 型推論により、型を省略す

元記事を表示

Nothing Phoneの背面についてるライトをいじれるSDKが公開されてたので試す【Glyph Interface】Glyph Developer Kit

NothingPhoneの背面に無駄に搭載されているライト「Glyph Interface」をいじれるSDKが公開されていることを今日知りました

https://jp.nothing.tech/pages/glyph-developer-kit

https://github.com/Nothing-Developer-Programme/Glyph-Developer-Kit

Phone(2a)をメインで使用しているので試してみます

## 今回作ったもの

https://github.com/SousiOmine/GlyphInterfaceExample

## 環境
– Windows11 64bit 23H2
– Android Studio Koala Feature Drop 2024.1.2
– Nothing Phone(2a) 国内版
– Nothing OS 2.6

## セットアップ
プロジェクトはEmptyViewsActivityテンプレートから言語をJavaに、MinimumSDKはNothingPhone以外サポートする必要がないので、API31

元記事を表示

Javaのメモ(struts)

## はじめに
StrutsとSpringの連携とかがあるようです。

## struts-config.xml
“`struts-config.xml




“`
`struts-config.xml` ファイルの記載に関する説明をします。

まず、`struts-config.xml` は、Struts フレームワークの設定ファイルで、リクエストに対するアクションやビューへのフォワー

元記事を表示

Java Gold メソッド逆引き早見表 Stream型を返すメソッド

### Stream型を返すメソッド

| メソッド名 | 宣言されたクラス・インターフェイス | 戻り値の型(Stream) | メソッドの動作 | 引数 |
|————|—————————–|———————-|—————–|——|
| `Stream.of(T… values)` | `Stream` | `Stream` | 可変長引数で指定した要素を含む Stream を返す | `T… values` |
| `Arrays.stream(T[] array)` | `Arrays` | `Stream` | 配列から Stream を生成する | `T[] array` |
| `Collection.stream()` | `Collection` | `Stream` | コレクションから Stream を生成する | なし |
| `Collection.parallelStream()` | `Collection` |

元記事を表示

Java Gold メソッド逆引き早見表 Optional型を返すメソッド

Optional型を返すメソッド一覧

| メソッド名 | 宣言されたクラス・インターフェイス | 戻り値の型 | メソッドの動作 |
|————|—————————–|————–|—————–|
| `Optional.of(T value)` | `Optional` | `Optional` | 指定した非 `null` 値を持つ `Optional` を返す。`null` 値が指定されると `NullPointerException` がスローされる。 |
| `Optional.ofNullable(T value)` | `Optional` | `Optional` | 指定した値が `null` でない場合はその値を持つ `Optional` を返し、`null` の場合は空の `Optional` を返す。 |
| `Optional.empty()` | `Optional` | `Optional` | 空の `Optional` を返す。 |

元記事を表示

Java Gold 例題 比較演算

# 問1

次の配列を比較する式`insert code`に適切なコードを書いてください。
ただし、配列の要素が同じ場合、`true`を返してください。
“`java
int[] numA = {1, 2, 3};
int[] numB = {1, 2, 3};
boolean isSameArrays = /* insert code */
“`

解答

“`java
Arrays.equals(numA, numB);
“`
配列同士の比較で`==`または`numA.equals(numB)`の使用は、配列の中身ではなく参照の比較となり、`false`を返します。
予期せぬ結果を招く可能性があるので、あえて参照の等価性を比較する場合を除き、使うべきではありません。

:::note
[`JEXP02-J. 配列の中身を比較するには2引数の Arrays.equals() メソッドを使う`](https://www.jpcert.or.jp/java-rules/exp02-j.html)
:::

元記事を表示

Java Gold メソッド逆引き早見表 Collection Map 返し値

# 主要メソッド

| メソッド名 | 宣言されたインターフェイスおよびクラス名 | 引数の型 | 戻り値の型 | 要素が空の場合の動作 |
|—————————|——————————————|————————–|———————–|————————————–|
| `add(E e)` | `Collection` | `E` | `boolean` | `false`を返す(失敗時)、例外を投げる可能性あり |
| `remove(Object o)` | `Collection`

元記事を表示

Java Gold 例題集 ローカライズとフォーマット

次の問題の出力結果を答えてください

# 問題 Locale設定

“`java
import java.util.Locale;

public class Main {
public static void main(String[] args) {
Locale locale = new Locale(“ja”, “JP”);
System.out.println(locale.getDisplayCountry(Locale.US));
}
}
“`

解答
Japan

このコードは、`Locale`オブジェクトを使用して日本の国名を英語で表示します。`Locale.US`を指定することで、表示が英語になります。

# 問題 数値のフォーマット

“`java
import java.text.NumberFormat;
import java.util.Locale;

publ

元記事を表示

(調査中)Java。keytoolコマンド

#### キーストアの内容を確認

“`bash
keytool -list -v -keystore <キーストアファイル名>
““

#### -rfc オプションを使用する

“`bash
keytool -list -rfc -keystore <キーストアファイル名> -alias <エイリアス名>
“`

元記事を表示

Javaのstrutsメモ

## はじめに
Javaでの実装経験はありませんが、Javaの案件に入るとstrutsばかりに出くわします。
いいかげんにして欲しいのですが、メモとして記載します。

## jspでhtmlタグやlogicタグ、name、property
StrutsのJSPで使用される`html`タグや`logic`タグ、`name`や`property`属性は、Strutsフレームワークのタグライブラリを用いて、JSPで効率的にデータを扱うためのものです。これにより、JSPでビジネスロジックを直接書くのではなく、MVC(Model-View-Controller)の設計パターンに従って、コードを整理して記述することができます。

### 1. `html`タグ
`html`タグライブラリは、HTMLフォーム要素を簡単に生成するために使用されます。例えば、フォーム、テキストボックス、ラジオボタン、チェックボックスなどのフォーム入力要素を作成するのに使用されます。

– **例:**
“`jsp

元記事を表示

Java Gold 例題 ジェネリクス

次のコードについて、正しい選択肢を選んでください

“`java
HashSet set = new HashSet<>() {{
add((short)0);
add((short)1);
add((short)2);
}};

for(short i = 1; i <= 3; i++) { set.remove(i - 1); } System.out.println(set); ``` 1. [0, 1, 2]が出力される 1. 何も出力されない 1. []が出力される 1. コンパイルエラー 1. 実行時エラー

解答

正解: 1
“`
[0, 1, 2]
“`

{}の中はインスタンス初期化ブロックで、このブロック内でaddメソッドを使ってセットに要素を追加しています。
この時点で、setには`Short`型の0, 1, 2の3つの要素が含まれています。
`remove(i – 1)`では`short`と`int`の式なので`Intege

元記事を表示

SpringBoot 3.x 循環依存関係問題の概要と解決策

### 問題の説明
——————————
**SpringBoot** 3.x バージョンでは、**SpringBoot 2.6.x** 以降、数多くの変更が行われました。

**SpringBoot 2.7.5~x** バージョンを使用したことがある開発者は、**SpringBoot** プロジェクトに循環依存関係が存在すると、プロジェクト起動時に例外エラーが発生することに気付くでしょう。エラーメッセージの内容は、おおよそ「プロジェクトに循環依存関係があり、プロジェクトが正常に起動できない」といったものです。

**SpringBoot 2.7.5~x** バージョン以降から **SpringBoot 3.x** では、この問題が存在しています。Springは循環依存関係の問題を扱わなくなり、開発者が自分で解決するか、開発中に循環依存関係を避ける必要があります。

古いバージョンのプロジェクトをアップグレードする場合、循環依存関係のコードをすべて調整しなければならず、注意しないとコードが崩壊して動作しなくなる可能性があります。

### 循環依

元記事を表示

【Spring Boot】Spring Bootにおける例外ハンドリング

# これまでの記事紹介
| | URL |
|:———–|:————|
| 第1回 | [【Spring Boot】個人的に推奨するディレクトリ/ファイル構成](https://qiita.com/rpc_tk/items/b60adb5e55206585d98a “【Spring Boot】個人的に推奨するディレクトリ/ファイル構成”) |
| 第2回 | [【Spring Boot】【Java】定数宣言はfinal staticが良いのか、enumが良いのか](https://qiita.com/rpc_tk/items/c525c04f157f376e6c1e “【Spring Boot】個人的に推奨するディレクトリ/ファイル構成”) |

9/5:記事タイトルをREST APIにおける例外ハンドリング→Spring Bootにおける例外ハンドリングに修正しました。内容的にREST APIについて語り切れていないので本記事、もしくは次回記事に記載します。

# はじめに
皆さん例外ハンドリングに悩

元記事を表示

【Java】Mapの概要及び使い方について

# はじめに
現場で新規参画者に対してMapの説明をする機会が度々あるため、
自身の説明用のレジュメも兼ねて記事として投稿しようと思いました。
# Mapとは
Mapは、Javaの標準APIであるコレクションフレームワークのインタフェースの一種です。
ListやSetといった、Collectionインタフェースとの違いとしては、キーと値をペアとして管理するデータ構造であることが挙げられます。
Mapは一意のキーに対して一つの値を関連付けることができるため、キーを使って効率的にデータを管理できます。
上述の通り、Mapはインタフェースのため、
一般的にプログラム上で扱う際にはMapの各クラスをインポートして使用します。

# Mapの種類
Javaでよく使われるMapの実装には、以下の3つがあります。
* HashMap:
最も一般的なMapの実装で、キーのハッシュコードを使って高速な検索と格納を行います。注意点として、要素の順序は保証されません。
* TreeMap
キーを順序通りに自動でソートするMapです。ここでいう順序とは、自然順序を基本としますが、指定したコンパレータ

元記事を表示

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(

元記事を表示

OTHERカテゴリの最新記事