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

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

Apache Maven 再入門

## この記事の目的

入社当時に簡単にしか勉強していなかった Java 開発周りの知識を確かにするため,自分で Apache Maven のドキュメントを読んで動作確認 & まとめます.

読み返しやすいように,公式ドキュメントと記載順を若干変えて補足しています.

:::note info
こちらの記事を参考にして Apache Maven を活用した開発を行うことができます.
:::

:::note warn
こちらは[公式ドキュメント](https://maven.apache.org/index.html)をさらって記録に残した記事です.
Apache Maven の Tips 等に関する記事は既に世の中に多々ありますので,必要に応じて調べてみてください.
また,Apache Maven プロジェクトのアーキテクチャ[^MAVEN/REF]やコミュニティ[^MAVEN/COMMUNITY],コントリビュート手順[^MAVEN/CONTRIBUTE]などはこちらの記事からは省きます.
:::

[^MAVEN/REF]: https://maven.apache.org/re

元記事を表示

Java Silverを受験しての所感

## はじめに
Java Silverに合格したので、合格までの道のりを記録として残します。(正答率89%で合格したので、わりと効率的な学習方法ではないかと思っています)
アウトプットする機会が少ないので、それに危機感を感じて記事にしてみることとしました。
最後に試験直前に確認していた確認リストも公開するので、ぜひ参考にしてみてください!

## この記事の内容
1. Java Silverとは
2. 受験のきっかけ
3. スケジュール感
4. 学習方法
5. 受験しての感想
6. 直前に確認していた内容
7. 最後に

## Java Silverとは
Java Silverとは、プログラミング言語Javaの技術レベルをOracle社が認定する資格で、正式には「Oracle Certified Java Programmer, Silver SE SE 11」と言います。

Javaアプリケーション開発のためのプログラミング知識や、さまざまな状況への対応能力を有していることを証明される、開発初心者を対象とした資格です。

## 受験のきっかけ
転職を考えるようになったのですが、その際

元記事を表示

for文と拡張For文の備忘録

### はじめに
エンジニア歴1年目。
業務でJavaを触り始めて3か月程度の駆け出しエンジニア。
Javaには苦手意識があるが、技術力、実践力を身に着けたい。
学んだことや調べたことなどの備忘録。

### javaのfor文とは
繰り返し処理の中でも、繰り返す回数が決まっている場合に用いる構文。
“`
for(初期化処理; 繰り返し条件; 繰り返し時処理) {
// 条件式がtrueの時に繰り返す処理
}
“`
“`
for(i = 0; i < 10; i++) { System.out.print(i); } // 実行結果 0 1 2 3 4 5 6 7 8 9 ``` #### 初期化処理 for文の最初に1回だけ実行される。 #### 繰り返し条件 ブロックの内容を実行する前に評価される。 ループを継続するか否かを判定する条件式。 #### 繰り返し時処理 for文内のブロックを最後まで処理し、ブロックの最後まで処理が終了した後に自動的に実行される文。 ### javaの拡張for文とは JDK5から、拡張for文が利用可能。 配列を渡すと、全ての要

元記事を表示

【初心者向け】Javaソースコード解説

### :pushpin:前回の記事

https://qiita.com/nukoxo/items/47b7bd001c3a6b542043

こちらの記事の続きとなっております。

### :ledger:メソッドの定義

メソッドとは一連の処理をまとめたものと説明しました。
mainメソッド以外にもメソッドは自分でつくることが出来ます。

メソッドの定義
~~~
[アクセス修飾子] [その他の修飾子] 戻り値のデータ型 メソッド名( [引数リスト] ) {
// メソッドの処理内容
}
~~~

こちらをもとにサンプルコードを見てください。
~~~
public static void sample(int num1, int num2) {
int result = num1 + num2;
System.out.println(result + “sample”);
}
~~~

記入内容 <

バックオフ戦略 (Backoff Strategy)について

## はじめに
とあるリトライ処理するとき徐々にリトライの間隔を伸ばしたほうが良さそうだな〜となんとなく実装していました。後々そのリトライ時に間隔を伸ばしてくことをバックオフ戦略と呼ぶと知ったので深堀りしてみます。

## バックオフ戦略とは
リトライ間隔を徐々に増加させながらリトライする処理のこと。

例:0.5秒後、1秒後、2秒後、4秒後…にリトライ

## メリット・デメリット
:::note info
**メリット**
・トラフィックの軽減:
待機時間を設けることで、サーバーやネットワークへの負荷を減らせる。

・リトライ成功率上昇:
待機時間を徐々に増加させることで、システム障害から回復するまで時間を稼げる。
:::

:::note warn
**デメリット**
・レスポンス時間の増加
システム全体のレスポンス時間が増加する可能性

・適切なリトライ時間調整
処理や負荷、様々な状況により適切なリトライ時間を設定する手間や難しさがある。

:::

## 実装例

### 指数バックオフ Exponential Backoff
Swiftで指数バックオフを記述して

[Google Sheets API] セルを結合、結合解除する

Google Sheets API v4(Java)を使用して、
スプレットシートのセルを結合、結合解除する方法
についてご紹介します。

コードを実行する際は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。
“`
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
“`
|No|目次|
|—|—|
|1|[セルの結合](#1-セルの結合)|
|2|[セルの結合解除](#2-セルの結合解除)|

## 1. セルの結合
指定したシートのセルを結合します。
結合方法は下記が指定できます。
・指定範囲を全部結合 : MERGE_ALL
・指定範囲を横のみ結合  : MERGE_COLUMNS
・指定範囲を縦のみ結合  : MERGE_ROWS

**サンプル コード**
“`
public static Request

オーバーライド

オーバーライドはスーパークラスで定義したメソッド等をサブクラスで再定義する事です。

オーバーライドの方法は、スーパークラスで定義したメソッド等と同じ名前のメソッドを定義し、動作を記入する事です。

これを利用する事によって継承の際に、内容の修正が必要な部分だけを、サブクラス側で上書き出来る為、クラスの再利用やプログラムの簡略化が見込めます。

【初心者向け】Java ソースコードの解説①

# :writing_hand_tone1:はじめに
2023年12月18日からJava言語を学び始めた初心者です。
これまでにプログラミングに触れた機会は小学生のころにホームページをHTML,cssで
作成したことくらいです。
商業高校だったので情報処理などの授業は受けていましたが、全商2級程度です。
情報系の専門学校、大学ではありません。

# :page_with_curl:Java ソースコードの解説
サンプルコード
~~~
public class Test {
public static void main(String[] args) {
System.out.println(“はじめてのJava”);
}
}
~~~~
### :ledger:クラスとは

プログラムの1単位を `クラス` という。
サンプルコードでは` class Test { … } ` と記載しているためここでは
` Testというクラス `を作成している。

Javaのプログラムを作成する際は
` public class クラス名 { … }` と記述す

GWTにおけるフロント側の処理はどうなのか?

# 割と知らないGWTのフロント側処理
・JavaからjavaScriptに変換されます。
・サイズを縮小します=ダウンロード時間の短縮
・難読化→セキュリティー向上

[Google Sheets API] セルをコピペ(コピー&ペースト)、カピぺ(カット&ペースト)する

Google Sheets API v4(Java)を使用して、
スプレットシートのセルをcopy and pasteまたはcut and pasteする方法
についてご紹介します。

コードを実行する際は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。
“`
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
“`
|No|目次|
|—|—|
|1|[セルのコピペ(copy and paste)](#1-セルのコピペcopy-and-paste)|
|2|[セルのカピぺ(cut and paste)](#2-セルのカピぺcut-and-paste)|

## 1. セルのコピペ(copy and paste)
指定したセルの範囲をコピー&ペーストします。
コピーするシート、ペーストするシートは異なるシートでも可能です。

Paper プラグインでカスタムヘッドを描画する[Minecraft]

# 環境
– Paper API : `1.20-R1-SNAPSHOT`
– JDK : `JDK 17`

:::note warn
Paper API は基本的に Spigot API と互換性がありますが、一部機能については独自の実装がされています。
そのため、本記事に掲載しているコードをそのまま使用しても動作しない恐れがあります。その場合は Spigot の公式 JavaDoc をご確認の上ご利用ください。
:::
# カスタムヘッド(Custom Head)とは?
プレイヤーの頭やゲーム内に存在するモブ以外の絵柄の頭のこと。
[Minecraft-Heads](https://minecraft-heads.com) などに多数掲載されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2403016/457da152-6360-68cc-61da-d0527e54d7d2.png)

# 頭を描画するには
(実在する)プレイヤーの頭を描画するには以下のコードだけで済み

throw / throws 

“Throw”の和訳は「投げる」
javaにおいて、
1. `throw`は、意図的に例外を発生させたい場合などに使う
1. `throws`は、メソッドの呼び出した側に例外処理を投げる

参考にしたサイト:
[【Java初心者向け】throwとthrowsの違いとその使い方](https://eng-entrance.com/java-throw-and-throws)

# throw
コード上、入力された値に問題はないが、意図して例外処理を発生させたい場面に使う。
以下は、整数の値である`19`を渡しているので問題はないけれど、if文で20未満の値が入力された場合は例外処理を発生させている。
この際の例外クラスは、「メソッドの引数に不正な引数が渡された場合」に例外を発生させる`IllegalArgumentException`を使用する。
“`Java:Throw 実装例
public class Exception_Test5 {

public static void main(String[] args) {
// 年齢を表す変数age
int age = 19

コンストラクタ

コンストラクタを用いるとクラス側で初期化を行う事が出来ます。

コンストラクタはプログラムで直接呼び出す事は出来ません。
クラスがnewで作成された後、コンストラクタも自動的に実行されます。

クラスメイト全く同じ名前でメソッドを作成すると、コンストラクタとして扱われます。
ただし、コンストラクタではvoidを含めた戻り値の型を使用する事は出来ません。

例外処理 try-with-resource文 / try-catch-finally文 / InputMismatchExceptionクラス

# 例外処理とは
例外処理はプログラムを実行中に異常な事態が起きた時に、対処する場合に使う

##### 障害の種類は3種類
##### 1. エラー
javaの動作環境の問題など、プログラムでは対処できない致命的な状況を表す
##### 2. 検査例外
例外処理が実装されたことをコンパイラがチェックする例外なので、実装する必要がある
##### 3. 非検査例外
例外処理が実装されたことをコンパイラがチェックしない例外なので、実装するかは任意

**Exceptionクラス**
例外を処理するクラスの継承元となるクラス

Exceptionクラスの継承先は、
* 非検査例外であるRuntimeExceptionクラスと、
* 検査例外であるクラスの2つに分かれる 

[参考URL](https://zenn.dev/kojikaya/articles/ad6903f3f6bbc8)
>非検査例外とは
非検査例外は RuntimeExceptionクラス配下の例外クラスが対象になります。
非検査例外は try-catchが必要ないため、「非」検査例外と言われます。
非検査例外

[Google Sheets API] シートを追加・複製・削除する、シートの情報(名前等)を更新する

Google Sheets API v4(Java)を使用して、
スプレットシートのシートの追加、更新、複製、削除する方法
についてご紹介します。

コードを実行する際は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。
“`
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
“`
|No|目次|
|—|—|
|0|[シートの情報](#0-シートの情報)|
|1|[シートを追加](#1-シートを追加)|
|2|[シートの更新](#2-シートの更新)|
|3|[シートの複製](#3-シートの複製)|
|4|[シートの削除](#4-シートの削除)|

## 0. シートの情報
シートの情報は***SheetPropertiesクラス***で設定します。
|項目名|メソッド|内容|
|—|—|—|
|シートID|s

Java の文字化け対策 on Powershell

Java の文字化けって厄介ですよね。いろいろな要因が影響し、ひどいときには二重・三重に文字化けして見たこともないような化け方をします。しかもオブジェクトによってデフォルトの文字コードの決定方法が違ったりして、標準出力に複数の文字コードが混在したりします。

さらに困ったことに、PowerShell 上で動かしたりコンパイルしようとすると、問題は更に複雑になります。

この記事では文字化けの直し方は勿論、原因箇所の特定方法を含めて細かく解説させていただきます。

尚、この記事では基本的にすべてのエンコードを UTF-8 (BOM無し) に揃える前提で進めます。

# 実行環境
当記事執筆時に利用した Java の実行環境は以下です。
> openjdk 11.0.2 2019-01-15
> OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
> OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

※ PowerShell は Windows PowerShell 5.1

CAP JavaでリモートのODataサービスを利用する

## はじめに
CAP JavaでリモートのODataサービスを利用したい場合、2つの方法が考えられます。一つはCAPの[Querying API](https://cap.cloud.sap/docs/java/query-execution)を使用して、SQLライクな書き方でクエリを実行する方法、もう一つはSAP Cloud SDKの[OData Client](https://sap.github.io/cloud-sdk/docs/java/features/odata/vdm-generator)を使う方法です。
この記事では、Querying APIを使ってリモートサービスに接続し、データを読み込んだり更新する方法について紹介します。接続先はBTPにDestinationとして登録されていることを前提とします。

CAPireの[ドキュメント](https://cap.cloud.sap/docs/guides/using-services)に説明がありますが、ドキュメントでは省略されているステップもあって**かなり**苦労したので、記事に残しておきます。ソースコードは以下

Java学習1

## 変数
+ データ型と変数名で変数宣言して変数を作る
“`java
int length; //整数 lengthを宣言
length = 3; //length に3を代入
“`
+ 型推論で変数を作る
“`java
var length = 3; //lengthに3を代入して型推論
// 代入された値からデータ型が決まるので、宣言不要
“`
## 演算子
特に変わった使い方はしてない

【Java初心者】Google Tinkを使った電子署名

# 電子署名とは

Wikipediaには
“`
電子署名とは、電磁的記録に付与する、電子的な徴証であり、
紙文書における印章やサインに相当する役割をはたすものである。
主に本人確認や、改竄検出符号と組み合わせて偽造・改竄の防止のために用いられる。
電子署名を実現する仕組みとしては、公開鍵暗号方式に基づくデジタル署名が有力である。
“`
とあります。

自分の秘密鍵でファイルに署名し、それを予め配布しておいた公開鍵で検証することで、送信者が「正しい人」であることがわかります。

# Javaで書いてみました

Tinkは、バージョンアップのたびに、APIが変わり、以前書いたコードが非推奨となることが多いため、その都度ドキュメントを見ながら修正しています。

以下に示すコードはtink-1.12.0.jarを用いています。依存ライブラリーとして protobuf-java と gson が必要です。

“`java
package sample2024;

import com.google.crypto.tink.CleartextKeysetHandle;
import co

メソッド

# メソッドとは
public static voidを使用するとメソッドが作成されます。
メソッドでは引数を渡すことも可能です。

~~~:メソッドの作成方法
public satic void メソッド名(引数){
メソッドで行う処理内容
}
~~~

~~~:メソッドの呼び出し方法
メソッド名(引数)
~~~

# メソッドの利点
メソッドは複数の処理をまとめ、一つの処理として扱う事が出来ます。
これにより、複雑な処理を行う際もプログラムが見やすくなり便利です。