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

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

Kotlin Coroutineのサンプルをコマンドラインから実行する方法

## やりたいこと
みんな最初に実行する以下のコードをコマンドラインでビルドして実行する。

“`kotlin

import kotlinx.coroutines.*

fun main() {
GlobalScope.launch { // launch a new coroutine in background and continue
delay(1000L) // non-blocking delay for 1 second (default time unit is ms)
println(“World!”) // print after delay
}
println(“Hello,”) // main thread continues while coroutine is delayed
Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive
}
“`

## 前提条件
– MacOS
– Javaインストール済

元記事を表示

[jackson]JSONの値「0」「1」をbooleanとして受け取りたい

## 動機
* JAVA SpringBootを利用したWEBシステム
* JSON文字列を入力として用い、データを保持するオブジェクトに変換する
* JSONにおける「0」の値をfalse、「1」の値をtrueとしてbooleanに変換して受け取りたい。

## 参考
* https://stackoverflow.com/questions/34297506/how-can-i-serialize-de-serialize-a-boolean-value-from-fasterxml-jackson-as-an-in

## 概要
* JsonDeserializer を継承したデシリアライザクラスを作る
* public static class になる
* @JsonDeserialize(using=作成したデシリアライザクラス.class) で指定する

### シリアライズとデリシアライズ
* シリアライズ
* ソフトウェアが扱うオブジェクトを、文字列表現に変換すること。
* オブジェクト→JSON。
* デシリアライズ
* 文字列表現の

元記事を表示

WebFluxのセッションを実装してみる

引き続きWebFluxの話です。
今回はWebFluxでのSessionの使い方を紹介します。
なお、ここで紹介するのは最小構成のRedisを使わないインメモリの実装例です。

# サンプルの環境
– Java 8
– Spring Boot 2.2.6

# プロジェクトのビルド構成
Mavenの場合、[基本編のビルド構成](https://qiita.com/kilvis/items/fb18be963da6cac03ee9#%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90)に以下のdependencyを追加します。

“`xml:pom.xml
〜 省略 〜

org.springframework.session
spring-session-core

“`
Gradleの場合は以下のdependencies

元記事を表示

ムーモ(moomo)の口コミや評判は悪い?実際に使用した方の口コミを調べました

ムーモ(moomo)の口コミや評判は悪い?実際に使用した方の口コミを調べました

実際の所どうなのでしょうか?

詳しい内容はこちらです

ムーモ(moomo)の口コミは悪い?実際に使用した方の評判を調べました

元記事を表示

Could not find tools.jar in the active JRE.となった時の対応方法

– 環境
– Windows10 64it Pro バージョン1903
– Eclipse Version: 2019-12

# 事象 : Eclipseでクラスを新規作成したら怒られた。
しかも、Eclipseを起動するたびにメッセージが出るようになった。

“`text
Could not find ‘tools.jar’ in the active JRE.

Spring Boot Live hovers will not work without it.

The JRE you are running Eclipse with is:
…省略…
“`

![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/1737b453-926f-8118-bf27-282ad6b7c053.png)

## 原因 : Eclipseで使用しているのが`tools.jar`のないJREだから
`Spring Boot Live hovers`さんが`tools.

元記事を表示

ガベージコレクションを意識してメモリリークを避ける

メモリリークを避ける為に、ガベージコレクションが機能する時としない時を自分の知る限り列挙してみました。

#ガベージコレクションについて
オブジェクトがどの変数からも扱われなくなった場合にJavaの判断によって自動でオブジェクトが破棄される機能のこと。
「finalize()メソッド」がオブジェクトを破棄しているのだが、Javaの場合はこのメソッドを定義してもタイミングを管理することができない。

##ガベージコレクションが機能するケース
>単純な処理で確かめたので、メモリリークしやすいようにヒープ領域を下げて実行してます。
>(2Mでメモリリークするように)
>ヒープの初期サイズ -Xms1m
>ヒープの最大サイズ -Xmx2m

###①オブジェクトを参照している変数がすべてnullになった時
『変数にnullを代入する=変数はどのオブジェクトも表さなくなる』なので、あるオブジェクトを表している変数が全てnullになった場合に機能します。
nullを代入=「これもう使わないです」と言ってるようなものなので、ガベージコレクションさんが不要と判断してくれます。

“`
public

元記事を表示

プログラマーのための「圏論入門」入門

$\require{AMScd}$

# はじめに – 「圏論入門」は難しい!
 タイトルは誤字ではありません。
 この記事は、圏論の門を叩こうとして諦めたという人を、とりあえず圏論の門の内側に入れるだけ入れてあげようという趣旨で書かれたものです。入門記事や入門書を読むための準備のつもりで、軽い気持ちで読んでください。発展的な内容は一切ありません。物足りなく感じられたら、もっときちんとした入門を読むことをお勧めします。
 この記事では、分かりやすい圏の例として型のあるプログラミング言語を使います。タグに困ってJavaをC++を付けましたが、ほとんどそれらの成分はありません。すみません。

# 圏の定義
 あまり真剣に読まなくても大丈夫です。型は「対象」、関数は「射」です。

## 対象 (Object)
* この記事では$A$, $B$ のように大文字で書きますが、小文字で書かれる場合もあります。
* ある圏$C$ の対象全ての集合を $Obj(C)$ や$|C|$ などと書きます。
* プログラミング言語でいう「型」です。対象は構造を持たない、いわばプリミティブな型です。継承関係や暗

元記事を表示

屋内環境を手軽にモニタリングする~⑪BH1750FVI(代用)から照度をJavaで取得する(I2C / Pi4J)~

以前、[こちらの記事](https://qiita.com/s5uishida/items/9c31e6fd9b6eb0fa9c96)で紹介した、環境情報をモニタリングする簡易ツールは、照度の情報を[テキサス・インスツルメンツ社のSensorTag CC2650](http://processors.wiki.ti.com/index.php/CC2650_SensorTag_User’s_Guide)から取得します。ただ、BLE環境センサータグとして、永らく世界的に知られたCC2650は[生産中止](http://www.ti.com/tool/CC2650STK)のため、今後、入手が困難になると思われます。そこで、別のセンサーにも対応することにしました。

今回、新たな照度センサーとして、ROHMの[BH1750FVI](https://www.mouser.com/datasheet/2/348/bh1750fvi-e-186247.pdf)を選択しました。手頃な価格であり、数百円で入手できます。

## BH1750FVIセンサーとは
このセンサーは、照度を測定することができま

元記事を表示

屋内環境を手軽にモニタリングする~⑩BME280(代用)から温度/湿度/気圧をJavaで取得する(I2C / Pi4J)~

以前、[こちらの記事](https://qiita.com/s5uishida/items/9c31e6fd9b6eb0fa9c96)で紹介した、環境情報をモニタリングする簡易ツールは、温度、湿度、気圧の各情報を[テキサス・インスツルメンツ社のSensorTag CC2650](http://processors.wiki.ti.com/index.php/CC2650_SensorTag_User’s_Guide)から取得します。ただ、BLE環境センサータグとして、永らく世界的に知られたCC2650は[生産中止](http://www.ti.com/tool/CC2650STK)のため、今後、入手が困難になると思われます。そこで、別のセンサーにも対応することにしました。

世間には、温湿度センサーは数多く存在し、どれを選べばよいか正直悩みます。ちょうどその時、[参考になる情報](http://www.kandrsmith.org/RJS/Misc/Hygrometers/calib_many.html)を見付け、結果、Boschの[BME280](https://www.bosch-

元記事を表示

新しいJavadocのタグ @apiNote @implSpec @impleNote

# 初めに

javadocを眺めていたらふと見たことが無い`@apiNote`というタグを見つけました。
少し調べてみると `@apiNote` `@implSpec` `@impleNote` というタグがJava 8から追加されているようです。

公式ドキュメントなどを探しても記載がないため少し調べてみました。

# 概要

これらのタグはLambda式の仕様策定の副産物で生まれたそうです。
2013年4月にJDK Javadoc maker が更新され使えるようになったとのこと。

ただし、これらのタグはJDKドキュメントで使用する以外に普及させる計画が無いそうです。
そのため公式ドキュメントにも記載がされていないということのようです。

# 各タグの詳細
それぞれのタグで記載されている内容を見ていきます。

## `@apiNote`

APIに関する解説、根拠、または例を記載します。
通常javadocに記載するAPI仕様の補足的な記載をします。

[Object#isNull](https://docs.oracle.com/javase/jp/8/docs/api/ja

元記事を表示

Java Silver SE8 (Oracle Certified Java Programmer, Silver SE 8)に合格した話

# はじめに
4月から入社3年目になるエンジニアです。
Javaに関する知識は業務でJavaのWebアプリをServletで作成したくらいです。ほぼ初心者です。
今回この試験の学習を通してオブジェクト指向言語またはJava特有の言語仕様の知識を深めることができたと感じています。
自分のように会社から何かベンダー資格を取れと言われている方や、エンジニアとしてのスキルアップとして何を取ろうか迷っているという方におすすめできる資格だと思います。

# Oracle Certified Java Programmer, Silver SE 8とは?
公式からの抜粋です。
>Javaアプリケーション開発に必要とされる基本的なプログラミング知識を有し、上級者の指導のもとで開発作業を行うことができる開発初心者向け資格です。日常的なプログラミング・スキルだけでなく、さまざまなプロジェクトで発生する状況への対応能力も評価することを目的としています。

# 学習時間
試験1か月前から平日は1日あたり30分、休日は2~3時間くらいしました。

# 学習方法
[徹底攻略 Java SE 8 Silver 問題

元記事を表示

初めてのSpring案件を終えたメモ ~データベース編~

#はじめに
ピュアJavaとDBの基本知識のみスタートからのSpring案件が波乱の末ひと段落したので、所感や覚書などを。:speech_balloon:
記事の内容としてはチュートリアル以上、実践未満のイメージ。
掲載コードは動作確認できていないのであくまで参考で。:pray:

#開発環境
RedHat(開発環境はCent)7系
Java8
SpringBoot2.1.6
MySQL8系
STS

#SpringDataJPAについて
関連用語が難しい。
JPA(仕様)を実装したもの(Hibernate)を利用したフレームワークがSpringDataJPA。自信ない。
動的クエリ作成で使うCriteriaAPIはJPAの機能だから参考にしていい。
サンプルで見かけるEclipseLinkはHibernateとは違う実装なので参考にしないほうがよさそう。
でも[Hibernateの機能でなくSpringの機能を推奨してたりするから、油断ならない。]
(https://qiita.com/suke_masa/items/392976749fce94a8ef1f#hibernate-va

元記事を表示

初めてのSpring案件を終えたメモ ~MVC編~

#はじめに
ピュアJavaとDBの基本知識のみスタートからのSpring案件が波乱の末ひと段落したので、所感や覚書などを。
記事の内容としてはチュートリアル以上、実践未満のイメージ。:speech_balloon:
掲載コードは動作確認できていないのであくまで参考で。:pray:
英語は目が滑るので日本語多様してる、許して。:pray::sob::pray:

#開発環境
RedHat(開発環境はCent)7系
Java8
SpringBoot2.1.6
MySQL8系
STS

#MVCについて
ロジック(Model)と、画面(View)とそれを繋ぐコントローラ(Controller)に分けて設計しましょう、という理解。
でもSpringではViewとControllerでやりとりするデータのことをModelと呼んでいる。
自分がそもそもMVCを理解できていたか不安になったけど、言葉の定義はフレームワークごとに異なるので深く考えるのはやめた。:innocent:
https://qiita.com/yo1000/items/a6acbf5f454a7f53aef9
https://q

元記事を表示

初めてのSpring案件を終えたメモ ~Springとは編~

#はじめに
ピュアJavaとDBの基本知識のみスタートからのSpring案件が波乱の末ひと段落したので、所感や覚書などを。:speech_balloon:
記事の内容としてはチュートリアル以上、実践未満のイメージ。

#開発環境
RedHat(開発環境はCent)7系
Java8
SpringBoot2.1.6
MySQL8系
STS

#Spring Framework について
10年もののフレームワークで、大体のことができる、つまり、ごちゃごちゃしてる。
情報を入手するときは書籍にせよネットにせよ、鮮度を確認する。
特に設定に関して、XML地獄からはすでに解放され、アノテーションやapplication.propertiesに記述できることが多い。
https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html

#application.propertiesについて
後から知った application.yml のほうが見やすそう。

元記事を表示

【GradleでJakartaEE 8 アプリケーション開発】2. プロジェクト作成

#はじめに
本記事は [【GradleでJakartaEE 8 アプリケーション開発】1. 環境構築](https://qiita.com/sunnycloudy764/items/1431d78f05dc092a23b2) の続きです。
前回の記事では開発環境の構築を行いました。本記事ではGradleプロジェクトを作成します。

#EclipseのGradle設定
EclipseでGradleプロジェクトを使う際、前回の環境設定でインストールしたGradleを使用するために下記設定を行います。
Eclipseを起動し、ウィンドウ > 設定 を開き、Gradle を選択し、下記の変更を行います。

| 項目 | 内容 |
|:——|:——–|
| ローカル・インストール・ディレクトリー| Gradleのインストールフォルダ |
| Java ホーム | Jakarta EE 8 |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226889/47bf4ab9-91d1

元記事を表示

VisualStudioCodeにおけるデバッグコンソールへの出力設定

vscodeにてJavaのデバッグ環境を作ろうとしたところ、実行結果をデバッグコンソールに表示させられず、かなりつまづいたので書いておきます。

##デバッグ環境を構築&デバッグ
まずは適当なサイトを参考にしながらJDKや拡張機能をインストール。そして、テストのためにJavaのファイルを作り、デバッグコンソールに文字列を表示するだけの簡単なコードを記述してみました。
![alt](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527091/0879597f-5463-9542-c79c-b648dded4b1c.png)
参考にしていたサイトでは、この段階でデバッグを開始したら実行結果がデバッグコンソールに表示されていましたがここで問題発生。なぜかデバッグコンソールに「hello world」の文字列が表示されないのです。
JDKをインストールし直しても、拡張機能を入れ直しても、ファイルを作り直しても、一向に表示されない…
![alt](https://qiita-image-store.s3.ap-northe

元記事を表示

`get()`を使うな ~ 敗北者の Optional

Java の Optional に関する記事を見ると “この教え方では **Optional の意味がまるっきりない使い方するやつ**ばかりが生まれるぞ……” というのを数多く見てしまったので,せめてもの反抗にこの記事を書きます。

## TL; DR

`isPresent()`と`get()`しか知らない奴は

![yamero.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241027/bdc325bf-4dd7-e91d-b11e-bc21f5b6281e.png)

## こういう書き方をしてはいけない

記事を見ていると

> null チェックは`Optional#isPresent()`で行い,値は`Optional#get()`で取り出します。

みたいな解説が多すぎる。

**そういうことをしてはいけない**。それでは**従来の null チェックとなにも変わらない**。変わらないどころかタイプ数が増え,実行時間が増え,メモリ使用量が増え**,デメリットだけが上乗せされている**。メ

元記事を表示

Elasticsearchにおける「32GBメモリの壁」の境界線を調べる

## はじめに
Elasticsearchでは以前からJVMヒープメモリサイズの設定における「32GBの壁」の存在が語られてきました。
デフォルト設定はXms,Xmxともに1gですが、ノードに搭載されるメモリ量に応じてこのパラメータは適宜サイジングすることが必要です。

Elasticsearch 2.xの時代にはすでに[Elasticsearch Definitive Guide](https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html)にて、JVMのヒープサイズの設定で32GBを超えないことが性能上のTipsとして言及されていました。
現在の[公式document](https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html)にも、このサイズは「約」32GBを超えないこととして推奨がされています。

本記事ではある環境において、この正確なしきい値となるメモリサイズを調べる方法をまとめます。

元記事を表示

java弄ってた時に出たエラー

Not only pythonエラー備忘録 but also java備忘録

#メモ
文字列の設定
String型に値を設定する場合は””、char型に値を設定する場合は”を使おう。

#エラー集
###java.lang.IllegalStateException: closed
エラーメッセージ

“`java:example.java
example E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
Process: example, PID: XXXXX
java.lang.IllegalStateException: closed
at okio.RealBufferedSource.select(RealBufferedSource.kt:83)
at okhttp3.internal.Util.readBomAsCharset(Util.kt:254)
at okhttp3.ResponseBody.string(Res

元記事を表示

ストライクガンダムでオブジェクト指向(java)

#はじめに
オブジェクト指向の学習のために作成しました。
ストライクガンダムとストライクダガーの組み立てをイメージし、それぞれの特徴と共通する部分を意識して作成しました。
#手順
以下の手順で作成しました。
1. インターフェースの作成
 →3種のストライカーパックをインターフェースとします。
2. 親クラスの作成
 →X100系フレームを親クラスとします。
3. 子クラスの作成
 →ストライクガンダムとストライクダガーを子クラスとします。
4. Factoryクラスの作成
 →Factoryクラスに出力するための記述を行います。
#インターフェースの作成
エール、ソード、ランチャーをインターフェースの形で作成し、それぞれの武装を以下のように記述します。

“`IAile.java
package practice;

public interface IAile {

public String WEAPON_Aile[] = {“57mm高エネルギービームライフル”, “ビームサーベル”, “対ビームシールド”};

}
“`
エールストライカー

“`ISword.j

元記事を表示

OTHERカテゴリの最新記事