JAVA関連のことを調べてみた2020年08月07日

JAVA関連のことを調べてみた2020年08月07日
目次

Java: ストリームとループってどっちが速いの問題

やる前から予想は付いてるけど、形にしておくことも重要だと思います。

# ストリームの処理速度ってどうなんでしょうか

Java言語におけるストリームは、流れにそった記述ができるということで、うまく使えば可読性に優れたコード、すなわち挙動の予測が付きやすいものへと移行できる可能性を持つ機能です。分岐の発生しにくい流れで記述できると気持ちよくなりますよね。

とはいえ、実行時のことを考えたとき、本当にストリームで良かったのかということになります。
良くありそうなのが、ループ処理で書いていたことをストリームにするような行為です。

# 試してみよう

ということで、**100万回乱数を発生してすべて足し込む**という処理にかかる時間を計測してみます。実行環境はWin10Pro(i5, 8GB RAM)です。

“`java:InfinitTest2_loop.java

public class InfinitTest2_loop {

public static void main(String[] args) {
Double result = 0.0;
var start

元記事を表示

Microsoft Graph を 標準Javaで使う

# 標準JavaパッケージでMicrosoft Graph

[Microsoft SDK for Java](https://github.com/microsoftgraph/msgraph-sdk-java) を使うといいのですが、これを使うと関連Jarファイルがたくさん必要です。本質的にやっていることを理解するために、標準JavaパッケージだけでMicrosoft Graphの問い合わせを書いてみます。

やることは、
1. Azure AD にアプリケーションを登録してクライアントIDとシークレットを作る(手順は[チュートリアル](https://docs.microsoft.com/ja-jp/graph/tutorials/java?tutorial-step=2)を参考)
2. Azure AD からOAuth2でアクセストークンをもらう。JSONで返ってくる。
3. Microsoft Graph API のエンドポイントに問い合わせする。JSON返ってくる。
だけです。

# ひとまずCurlコマンドで書くとこうなります

### アクセストークンを取得する。

元記事を表示

【CodePipeline×Elastic Beanstalk】JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする、のエラーとその対応方法まとめ

[JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする](https://qiita.com/C_HERO/items/387bb394f5862421513a)
で発生しうるエラーとその対応方法まとめです。

## 環境
– OS:Windows10
– IDE:Eclipse 2020-03
– JDK:Amazon Correto 8
– フレームワーク:Spring Boot
– AWS
– CodePipeline
– CodeCommit
– CodeBuild
– CodeDeploy
– Elastic Beantalk
– Java SE(Java 8 バージョン 2.10.8)

→ ※2020年6月3日公開の最新版ではないです。ご了承を。
– RDS:MySQL Community Edition(バージョン8.0.17)

## エラーとその対策集

### 1. Elastic Beanstalk
#

元記事を表示

Java で Mustache テンプレートエンジンの JMustache を使うサンプルコード

## 概要

– Java で Mustache テンプレートエンジンの JMustache を使う
– 今回の動作確認環境: Java 14 (AdoptOpenJDK 14.0.2+12) + JMustache 1.15 + Gradle 6.5.1 + macOS Catalina

## サンプルコード

### ソースコード一覧

“`
├── build.gradle
└── src
└── main
├── java
│   ├── SampleApp.java
│   └── SampleData.java
└── resources
└── my_template.html
“`

### build.gradle

“`groovy
plugins {
id ‘application’
}

repositories {
mavenCentral()
}

dependencies {
// https://mvnrepository.com/arti

元記事を表示

【CodePipeline×ElasticBeanstalk】JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする その3

Javaアプリケーション(データベースから値を取得し、JSON形式で結果を返す)をCodePipelineでElasticBeanstalkにCI/CDするハンズオンです。
[【CodePipeline×ElasticBeanstalk】JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする その2](https://qiita.com/C_HERO/items/37b931cca5892c2345ff)
の続きです。

## 環境
– OS:Windows10
– IDE:Eclipse 2020-03
– JDK:Amazon Correto 8
– フレームワーク:Spring Boot
– AWS
– CodePipeline
– CodeCommit
– CodeBuild
– CodeDeploy
– Elastic Beantalk
– Java SE(Java 8 バージョン 2.10.8)
→ ※2020年6月3日公開の最新版ではないです

元記事を表示

【CodePipeline×ElasticBeanstalk】JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする その2

Javaアプリケーション(データベースから値を取得し、JSON形式で結果を返す)をCodePipelineでElasticBeanstalkにCI/CDするハンズオンです。
[【CodePipeline×ElasticBeanstalk】JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする その1](https://qiita.com/C_HERO/items/387bb394f5862421513a)
の続きです。

## 環境
– OS:Windows10
– IDE:Eclipse 2020-03
– JDK:Amazon Correto 8
– フレームワーク:Spring Boot
– AWS
– CodePipeline
– CodeCommit
– CodeBuild
– CodeDeploy
– Elastic Beantalk
– Java SE(Java 8 バージョン 2.10.8)

→ ※2020年6月3日公開の

元記事を表示

【CodePipeline×ElasticBeanstalk】JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする その1

Javaアプリケーション(データベースから値を取得し、JSON形式で結果を返す)をCodePipelineでElasticBeanstalkにCI/CDするハンズオンです。

長いので、

– 【CodePipeline×ElasticBeanstalk】JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする その1(本記事)

→ 1. Java(Spring Boot)アプリケーションの作成, 2. Gitリポジトリの作成
– [【CodePipeline×ElasticBeanstalk】JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする その2](https://qiita.com/C_HERO/items/37b931cca5892c2345ff)

→ 3. Elastic Beanstalk環境の作成, 4. データベースの設定
– [【CodePipeline×ElasticBeanstalk】JavaアプリケーションをCodePipelineでElasticBe

元記事を表示

Retrofit2とOkhttp3とGsonを使用してAPIを作成(Java)

API作成時の備忘録。
細かい説明は抜きにして、とりあえずこれで通信できた。

– [Retrofit2](https://square.github.io/retrofit/)
– [Okhttp3](https://square.github.io/okhttp/)
– [Gson](https://github.com/google/gson)

##手順
– manifestfileに通信を許可するように設定
– リクエスト、レスポンスを受け取る用のクラスを定義
– エンドポイントの作成
– HTTPクライアントの作成
– 実行

## manifestFileに通信を許可するように設定

“`AndroidManifest.xml“` に以下を記述する

“`java:AndroidManifest.xml

“`

## リクエスト、レスポンスを受け取る用のクラスを定義

ログイン用のリクエストクラス、 requestのbodyがこの形式で送ら

元記事を表示

[Java]MinecraftのModを作成しよう 1.14.4【6. レシピの追加】

(この記事は一連の解説記事の一つになります)

先頭記事:[入門編](https://qiita.com/koteko/items/7afadf8261eac49bacad)
前の記事:[5. 防具の追加](https://qiita.com/koteko/items/34e6cb63288cd30571b5)
次の記事:7. 実績の追加

# レシピの追加
さて、[1. アイテムの追加](https://qiita.com/koteko/items/76910dbf9eb126bdfdf9)、[2. ブロックの追加](https://qiita.com/koteko/items/c904b3bfdd90f0b9a98a)、[4. ツールの追加](https://qiita.com/koteko/items/0c3a73d1ed299cfbde02)、[5. 防具の追加](https://qiita.com/koteko/items/34e6cb63288cd30571b5)と各種アイテムを追加してきましたが、これらをクラフトするレシピがまだありません。今回はいくつかのパターンのレシピ

元記事を表示

Javaアノテーションの歴史

Javaのアノテーションの役割と歴史をまとめる。

#歴史

「@」アノテーションとは、Java 1.5で導入された、

– `@Override`のようにコンパイラにヒントを与えるコメントとして生まれたのがきっかけ。

##アノテーションを使用するメリット。

– コードの正確性:`@Nullable`、`@Deprecated`、`@Override`などのアノテーションにより、メソッドやフィールドに重要な意味情報を追加し、コンパイラによってその情報が強制されるようにすることができる。

– テスト・メソッド:TestNGとアノテーションが登場するまで、JUnitは リフレクションを使用してメソッドがテスト・メソッドであることを判別していました。この判別には、特別なネーミング規則が必要でした。
アノテーションの採用によって、ネーミング規則を使用する必要がなくなった。

– 永続性(Hibernateなど):アノテーションを付加することで、フィールドやメソッドをデータベースに保存されているデータと紐付けることができる。

– 依存性注入:インジェクションする必要があるクラス

元記事を表示

[自分用メモ]Springフレームワークについて

### 自己紹介
Javaを勉強したての社会人一年目です。
業務でspringフレームワークを使用しているので、メモとしてまとめています。

Javaに関するアドバイス等募集中です。

### Springフレームワークとは
JavaでWebシステムを開発する時にとても便利なフレームワーク(簡単に言いすぎてるかな笑笑)。

springMVC、springsecurity…等、spring〇〇がいっぱいある。

### 構成(処理の流れ)
くそ雑な図ですが笑笑

![springmvc-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/685853/89f0c93f-32ae-733f-4b23-61a3b2a37910.jpeg)

クライアント側
1.HTMLファイルやJSPファイル

サーバ側(2~6はJavaファイル)
2.controller
 画面処理等

3.service
 DBから取得した値を使ったりする処理等

4.form
 1で入力された値を保持する場所

5.entity

元記事を表示

[自分用メモ]よく使うJava文法 随時更新

### 自己紹介
Javaを勉強したての社会人一年目です。
Javaの文法についてメモみたいな感じでまとめています。
文法については、「調べるのめんどくせーw」「覚えるのめんどくせーw」って感じなので、完全個人用メモです笑笑
※業務等でこれからよく使ったり、便利な文法が見つかり次第更新する予定です。

Javaに関するアドバイス等募集中です。

### 文字列分割
“`java:例
String str = new String(“星野みなみ,齋藤飛鳥,堀未央奈”);
String[] oshi = str.split(“,”);

// 出力
for (int i=0; i < oshi.length; i++) { System.out.println(oshi[i]); } ``` ```java:出力 星野みなみ 齋藤飛鳥 堀未央奈 ``` ### 正規表現 **日付** 文字列ymdに格納された日付が、YYYY/MM/DDの形になっているかを判定。 ```java:例 Pattern p = Pattern.compile("^[0-9]{4}/[0-9]{2}/

元記事を表示

【Java】電卓プログラムの作成1

#目的
Javaの学習を独学で初めておよそ1ヶ月が経ち、Javaを使用してGUIアプリケーションを作成したいと思い、電卓アプリを作成してみる。今回は、まず電卓アプリの見た目を作成していく。

#参考
▼webサイト
・[Let’sプログラミング-Swingを使ってみよう](https://www.javadrive.jp/tutorial/)
・[Javaで始めるプログラミング-Chapter12電卓を作ってみる](http://msyk.net/keio/JavaBook/eclipse-indigo/ch12.html)
・[クラスBorderLayout](https://docs.oracle.com/javase/jp/8/docs/api/java/awt/BorderLayout.html)

#使用環境
OS:Mac
言語:JavaSE1.8
Eclipse

#成果物
プログラム作成時に参考にさせて頂いたWebサイト
[Javaで始めるプログラミング](http://msyk.net/keio/JavaBook/eclipse-indigo/ch12.html)

#

元記事を表示

【Java】splitメソッド

splitメソッドは、
Stringで定義した区切り文字列を分割することで、
文字列の配列に分ける。
(文字列を指定された正規表現に一致する位置で分割する)

#サンプルコード
“`java
String str = “りんご,レモン,すいか,ブドウ”

String[] fruit = str.split(“,”, 0);

/**
*結果:
*fruit[0] = “りんご”
*fruit[1] = “レモン”
*fruit[2] = “すいか”
*fruit[3] = “ブドウ”
*/
“`
最後の0のところは、
**分割する回数**を指す。
負の値を指定すると制限なし。

元記事を表示

[Java]MinecraftのModを作成しよう 1.14.4【5. 防具の追加】

(この記事は一連の解説記事の一つになります)

先頭記事:[入門編](https://qiita.com/koteko/items/7afadf8261eac49bacad)
前の記事:[4. ツールの追加](https://qiita.com/koteko/items/0c3a73d1ed299cfbde02)
次の記事:[6. レシピの追加](https://qiita.com/koteko/items/4e6f4e25db43907770d9)

# 防具の追加
[4. ツールの追加](https://qiita.com/koteko/items/0c3a73d1ed299cfbde02)では剣を含むツール類の追加をしました。武器を手にした次に欲しいのはやはり防具ですね!今回は防具類の追加をしていきましょう。

“`java:ItemList.java
//…
public class ItemList {
public static Item ExampleHelmet = new ArmorItem(ArmorMaterial.IRON, EquipmentS

元記事を表示

Mockito 3 + JUnit 5 で基本的なモック化とテストをするサンプルコード

## 概要

– Mockito 3 + JUnit 5 で基本的なモック化とテストをするサンプルコードを示す
– 今回の動作確認環境: Java 14 (AdoptOpenJDK 14.0.2+12) + Gradle 6.5.1 + Mockito 3.4.6 + JUnit 5.6.2 + macOS Catalina

## サンプルコード

### ソースコード一覧

“`
├── build.gradle
└── src
├── main
│   └── java
│   ├── Client.java
│   └── Worker.java
└── test
└── java
└── ClientTest.java
“`

### build.gradle

ビルド・テスト実行用 Gradle 設定ファイル。

“`groovy
plugins {
id ‘java’
}

repositories {
jcenter()
}

dependencies {

元記事を表示

==(同一性)とequalsメソッド(同値性)の違い、オーバーライドしよう

javaには二つの「同じ」がある。
#==(同一性)
==演算子は、同一であることを判定する。つまり、複数の変数が同じインスタンスを参照していることを判定する。

“`java

A a = new A(); // A型というインスタンスを生成
A b = a; // aのインスタンスごとそのままbへコピー
System.out.println(a == b);
“`
“`
true
“`
###例題

“`java

public class Sample {
private int num;
public Sample(int num) {
this.num = num;
}
}
“`
“`java
public class Main {
public static void main(String[] args) {
Sample s0 = new Sample(5); // Sample型のインスタンス生成
Sample s1 = s0; // s1にコピー
s0 = new Sample(5); // 新たにSample型インスタンス生

元記事を表示

Mavenでjettyを使って、動作確認をする。

# はじめに
eclipseを使って動的ファイルの動作確認をしていると、その端末でしか動かなったりする。なので、jettyを使って、動作確認をする。
あと個人的にeclipseでmavenプロジェクトはディレクトリ構成ちがったりめんどくさいので。

# 手順

## pom.xml編集

以下のプラグインを追加する。

“` org.mortbay.jetty
maven-jetty-plugin
6.1.10

10

[自分用メモ]修飾子について軽く勉強してみた

### 自己紹介
Javaを勉強したての社会人一年目です。
昨日書いた以下の記事のコメントで、「**アクセス修飾子**」「**class設計**」というワードが出てきたので、それらについて勉強してまとめようとこの記事を書いています。
https://qiita.com/N46_myHearter/items/891b660b8748171779b1

Javaに関するアドバイス等募集中です。

### 修飾子とは
クラスやメソッド、変数に指定することができ、指定する修飾子によって様々な効果があるみたい。
自分は、Javaで修飾子だとpublic private等のアクセス修飾子ぐらいしかまだ知らなかったのですが、修飾子ってむっちゃあるんですね笑笑

アクセス修飾子、abstract、static、finalまでは知ってたが、transient、volatile、synchronized、native、strictfp….って何や!?笑笑

### アクセス修飾子
public、protected、privateがあり、アクセス修飾子を設計しているクラスやその変数、メソッドがどこから

元記事を表示

Java画像を最小化する方法

この記事では、**Spring Boot**ベースの**Java**アプリケーションを例に、**Java**イメージを最小化するための一般的なコツをいくつか紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/common-tricks-for-minimizing-java-images_594956)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#背景
コンテナ技術の普及に伴い、コンテナベースのアプリケーションが増えています。コンテナは頻繁に使用されていますが、ほとんどのコンテナユーザーは、コンテナイメージのサイズという単純だが重要な問題を無視しているかもしれません。この記事では、コンテナイメージを簡素化する必要性について簡単に説明し、Spring Boot ベースの Java アプリケーションを例に、Java イメージを最小化するための一般的なトリックをいくつか紹介します。

#コンテナイメージを簡素化する必要性
コンテナ

元記事を表示

OTHERカテゴリの最新記事