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

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

java bronze silver合格

大分前ですがOracle認定のJava bronzeとsilverのSE8合格しました。
bronzeもsilverも対策は一緒なのでひとまとめに。

# 勉強時間の目安(bronze)
1. プログラミング未経験:50h
1. 何らかのプログラミング言語を習得している:30h
1. java経験者:10h

いきなりsilverを受験する場合は+10h程度

# 参考資料
[黒本](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5-Java-Silver-%E5%95%8F%E9%A1%8C%E9%9B%86-1Z0-808/dp/4844339931/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5+Java+SE+8+Silver+%E5%95%8F%E9%A1%8C%E9%9B%86&qid=1584927815&sr=8-1)と[白本](htt

元記事を表示

GCPでJava版Minecraftサーバを建てた話(ついでにホワイトリストも設定)

# はじめに
前回建てた ubuntu のサーバにそのまま Java 版 Minecraft サーバを建てたときのメモです。
Java のチューニングについては書かないので別途調べてください┏(<:) AlwaysFree(一生無料)の「f1-micro」だとメモリサイズが小さすぎるので、事前に「n1-standard-1」に拡張しておきました。 # 1. Java 版 Minecraft サーバの構築 ## 1.1. Java のインストール サーバに SSH で接続して、root ユーザにスイッチしておきます。 ```shell su ``` root ユーザでログインしたら mkdir コマンドでサーバをインストールするディレクトリを作ります。 作ったら cd コマンドで移動します。 ```shell mkdir /mcjava cd /mcjava ``` Minecraft サーバをインストールしようと思いましたが、Java が入ってなさそうなので先に Java を入れましょう。 ```shell apt install default-jre ``` ディス

元記事を表示

AtCoderの挑戦環境構築(Java8)

# はじめに
AtCoderの挑戦環境が自分として満足できるところまで構築できたので
皆様のお役に立てるかはわかりませんが情報共有を兼ねて記事にまとめさせていただきました。

# モチベーション
– 自社風潮よりJavaを学習しておいたほうが良さそうに感じだしていた
– 3/1より本格的にJava学習を開始
– 習うより慣れよということで[CodingBat](https://codingbat.com/java)にて問題を解きまくり
– 問題の易しさもあり飽きが来ていたので情報収集から[AtCoder](https://atcoder.jp/?lang=ja)に到達
– 2020/3/14(土)開催の[パナソニックプログラミングコンテスト2020](https://atcoder.jp/contests/panasonic2020)にて初参加。
平方根の誤差調整ができずA,B2問のみという惨敗を喫した。
– その後過去問題の演習に励むが、はじめに利用していたCodingBatとは違い、
テストケースの容易や提出が徐々に手間と感じるようになる。
(問題選択ミスや言語選

元記事を表示

Java(jdk1.8以降)のファイル入出力のサンプルプログラム

Javaの(jdk1.8以降)のファイル入出力のサンプルプログラムのメモです。

# 1. バイナリファイルの読み込み

### 1.1. 一括読み込み

`C:/dk/input.xlsx`を一括で読み込み、16進数で標準出力に出力するサンプルプログラムです。
一括で読み込む場合、Outofmemoryにならないようサイズに注意する必要があります。

“`java:BinaryFileInputNio.java
package test.nio;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
* バイナリーファイルを読み込む
*/
public class BinaryFileInputNio {

/**
* @param args
*/
public static void main(String[] args) {

// 読み込みファイルの名前
Path path

元記事を表示

spring-batchで複数DataSource定義時に使用する@BatchDataSource

spring-batchで複数のDataSourceを定義する場合、“`@BatchDataSource“`でspring-batchのauto-configurationで使用する方を指定できる。“`@BatchDataSource“`のjavadocによると“`2.2.0“`で追加されたものらしい。

その定義は以下のようになっており、実態は単なる“`@Qualifier“`。javadocによると典型的な使い方としては、“`@Primary“`を付与するメインのDataSourceと、このアノテーションを付与するspring-batch用のセカンドDataSource、というもの。メインとなるDBと、メタデータ格納先DBが分かれてる場合にこれを使う、といった感じだろう。

“`java
/**
* Qualifier annotation for a DataSource to be injected into Batch auto-configuration. Can
* be used on a secondary data source, if t

元記事を表示

【Java】JavaでMethod/ConstructorからKFunctionを取得する【Kotlin】

# やること
`Java`の`Method`/`Constructor`から`KFunction`を取り出します。

# やり方
下記の`Method.kotlinFunction`/`Constructor.kotlinFunction`を`Java`から呼び出せばできます。

– [kotlin/ReflectJvmMapping\.kt at master · JetBrains/kotlin](https://github.com/JetBrains/kotlin/blob/master/core/reflection.jvm/src/kotlin/reflect/jvm/ReflectJvmMapping.kt)

具体的には以下のようになります。

“`java
KFunction function = ReflectJvmMapping.getKotlinFunction(Foo.class.getConstructors()[0]);
“`

## 注意点
`Class`からの`Method`/`Constructor`取得にはジェネリクスの型パラメータ

元記事を表示

[Java] UbuntuにJavaの開発環境を構築&実行確認

# 環境
Ubuntu
VSCode

# インストール
以下、aptアップデートとjavaインストールとjavaバージョン確認をまとめて行うので注意です。

“`
sudo apt update && sudo apt install default-jdk && java -version
“`
“`:実行結果
openjdk version “11.0.6” 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1)
OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1, mixed mode)
“`

# JAVA_HOME設定

jdkのインストール場所は/usr/lib/jvm/にあるのでこちらのパスを〇〇rcファイルへ追記する

“`~/.〇〇rcファイル
# ——————————————————

元記事を表示

gh-ost実行履歴をflywayのバージョン管理下に置くにはどうするか

## gh-ostとflywayについて
– [gh-ost](https://github.com/github/gh-ost) : オンラインスキーマ変更ツール
– [flyway](https://flywaydb.org/) : DBマイグレーションツール

なぜgh-ostを使うのか/なぜflywayを使うのかは公式に任せる

## 解決したい問題
flywayでバージョン管理したいが、gh-ostを直接実行してスキーマ変更すると、その変更はflyway管理下に置けない
`flyway migrate` したときにgh-ostコマンドが実行されて、成功/失敗がマークされるようにしたい

## どうするのか
flywayの [Custom Migration resolvers & executors](https://flywaydb.org/documentation/api/hooks#custom-migration-resolvers–executors) を使って `gh-ost` コマンドを実行できるようにする
公式は使い方が全く書いてないので、以下使い方を解

元記事を表示

分子系統学演習をdockerで(作業中)

分子系統学演習 データセットの作成から仮説検定まで 田辺晶史 2015/10/20
https://www.fifthdimension.jp/documents/molphytextbook/molphytextbook.ja.html

をdockerで動かそうと悪戦苦闘中(作業中)

# java

最適な Java の Docker イメージを選びたい
https://k11i.biz/blog/2018/05/17/base-docker-images-for-java/

Java 11 リリース後のオススメ Docker イメージを考える
https://k11i.biz/blog/2018/10/29/base-docker-images-for-java11/

Javaのサポートについてのまとめ2018
https://qiita.com/nowokay/items/edb5c5df4dbfc4a99ffb

JDKの公式Dockerイメージを使って手っ取り早くjshellを使うメモ
https://qiita.com/hi5san/items/d2f2fc7768

元記事を表示

Effective Java 第3版 「ほぼ全章」を「読みやすい日本語」で説明してみました。

Effective Javaは「一人前」のJavaエンジニアになるために避けては通れない書籍だと思います。特に公開APIを作るような立場にいるエンジニアは、この書籍に書かれてあることを把握していないと、まともなものを作れません。

素晴らしい書籍だということは言うまでもありませんが、一方で「要するにこういうことだよね」という理解をしづらい書籍であるとも感じます。

その原因は、おそらく以下のとおりでしょう。

* 表現が回りくどいです。
* 全部で90の項目がありますが、項目内の構造が分かりづらいです。
* コード例が必要以上に複雑な場合があります。

内容の本質そのものはあまり難しくないのに、こういった理由でこの書籍の敷居が上がるのは、何と言うかもったいないと思います。

そこで、本記事では(ほぼ)全項目について、できるだけ「読みやすい日本語」で内容を説明してみたいと思います。

ただし、あまりにも当たり前の話だったり、読むのが簡単な項目などについては、解説を省略しました。また、私見も混ざっています。そういった前提でご覧いただければと思います。

なお、Effective Java

元記事を表示

Java 14で最低限押さえておきたい新機能をEclipseで使ってみた

# はじめに
2020/3/17にJava 14がリリースされました。
以下の機能が追加されたようです。
下の表の「本記事の対象」列に〇がついているものを少し触ってみたので後で紹介します。

|JEP(※1) | 概要|本記事の対象|
|—|—|—|
|305 | [Pattern Matching for instanceof (Preview)](https://openjdk.java.net/jeps/305)(※2)|〇|
|343 | [Packaging Tool (Incubator)](https://openjdk.java.net/jeps/343)(※3)|×|
|345 | [NUMA-Aware Memory Allocation for G1](https://openjdk.java.net/jeps/345)|×|
|349 | [JFR Event Streaming](https://openjdk.java.net/jeps/349)|×|
|352 | [Non-Volatile Mapped Byte Buffers](https

元記事を表示

エンジニア体験会での初心者への教え方(Java,Eclipse)

先日、自社で行っているプログラミング体験会で、未経験者に「プログラミングとは」を話す機会を頂いたので、次の機会の為に良かったことや改善していきたいことを自分用にまとめておきます。

## –はじめに–
【体験会に来る人の経歴】
体験会には様々な経歴の人が来ます。
・大学の時にJava学んでました~
・接客業をしていてパソコンはあまり触ったことないです~
・転職を考えている中でIT業界に興味を持ちました~
など、他業種や未経験の人が多かったです。

【体験会に来る人が求めていること(体験会後の交流会で多かった質問など)】
・完全未経験
→ プログラミングってなんか難しそう・・・
→ どうやって作るの?
・業務未経験だけどちょっと触ったことある(大学とか)
→ この会社で大丈夫か?(普通に企業説明会的な感じ)
→ エンジニアの仕事ってどんな感じ?

レベルもまちまちなのでその人たち全てに同じようなレベル感で教えることはできない。

今回は完全未経験向けに教える方法をメモしていきたいと思います。
この会社で大丈夫かどうかは体験会が終わった後にでも答えてあげましょう。

##プログラムとは

元記事を表示

Java for All!みんなのJavaを読みました #minjava

みんなのJavaを読みました!

Javaでログイン機能を作ってみた

![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566570/d065ef0e-edd0-a4d9-d56f-ce5a713a038b.png)

# 作った動機
訓練校でアプリを8人チームで制作することになったのだが、機能要件にログイン機能が必須だった。
登録したロールによって表示できるページを分けたいが、やり方がいまいちわからなかった。
3連休だし作ってみよ!

# 機能
+ 新規登録。
+ ログイン、ログアウト。
+ 管理者とユーザーでロール分け。
+ 管理者には管理者ページしか表示されない。
+ ユーザーにはユーザーページしか表示されない。
+ ログインしてない場合はログイン画面と新規登録画面へ誘導。

# よかったこと
4時間くらいで作れた。
3か月前なら3~5倍くらい時間がかかっていたと思う。
成長してるんやなあ。

# 環境
Java version 13.0.1
mysql 8.0

# DAO
“`Java:AccountDAO.java
package dao;

元記事を表示

java コールバックパターン

javaでコールバックパターンの簡単なサンプル

文字列を
・CamelCase → snake_case
・小文字 → 大文字
した後に表示する処理を例にやってみる

### コールバックパターンを用いない場合

“`NoCallbackPattern.java
public class NoCallbackPattern {
/**
* CamelCaseからsnake_caseへ変換
*/
private String camelToSnake(String input) {
return CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, input);
}

/**
* 小文字から大文字へ変換
*/
private String capitalize(String input) {
return input.toUpperCase();
}

/**
* 変換して表示
*

元記事を表示

Java 14 (OpenJDK: AdoptOpenJDK) を Homebrew で macOS にインストールする

## 今回の環境

– macOS Catalina 10.15.3

## AdoptOpenJDK 14 をインストールする

公式資料を参考にしてインストールする。
[GitHub \- AdoptOpenJDK/homebrew\-openjdk: AdoptOpenJDK HomeBrew Tap](https://github.com/AdoptOpenJDK/homebrew-openjdk)

“`
$ brew tap AdoptOpenJDK/openjdk
$ brew cask install adoptopenjdk14
“`

## java_home コマンドでインストールされたディレクトリの場所を確認する

“`
$ /usr/libexec/java_home -v 14
/Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home
“`

## 環境変数 JAVA_HOME と PATH を設定する

必要に応じて ~/.bashrc や ~/.zshrc などに記述す

元記事を表示

SpringBoot + IntelliJで簡単なHelloWorldを表示

# 概要

SpringBootを使用すると、Javaを使用したWebアプリを比較的簡単に作成することができます。

今回、Spring BootとIntelliJを使用した、簡単なHelloWorldを表示するプログラムを作成して行きたいと思います。

また、以下のリポジトリに今回作成した内容を掲載しております。

https://github.com/kymx1983/first_springboot

# 1.使用する環境

今回使用する環境は以下の通りです。

## 1.1 Java

Javaのバージョンは特に指定しません。サンプルの例ではJava11を使用しています。

Javaは以下からダウンロードできます。

https://www.oracle.com/java/technologies/javase-downloads.html

まず、インストールしたいバージョンの`JDK Download`をクリックします。

[![Image from Gyazo](https://i.gyazo.com/e09c33095284819e362fc577e5be4d13.pn

元記事を表示

GWT 2.8.2 と Maven で Hello World する

[Liberica JDK 11 の JavaFX 11 (OpenJFX) で Hello World する](https://qiita.com/takuya0301/items/39b5de96cd671bc3bb76)を書いて、[JavaFX で作ったミニゲームを GWT で Web ブラウザに移植してみる](https://qiita.com/old_horizon/items/5616ba2eaa22b0d7e996)を読んで、[GWT](http://www.gwtproject.org/) ってあったなぁと懐しく思い、[Getting Started](http://www.gwtproject.org/gettingstarted.html) をやってみたのでメモっとく。

最近の Web アプリケーションで、REST という概念との整合性に疲れてきているので、クライアント開発をする上で GWT って素晴らしいんじゃないかなと思ったりしている。[サーバーとブラウザークライアント間の RSocket 通信を Spring Boot と rsocket-js で実装する]

元記事を表示

Liberica JDK 11 の JavaFX 11 (OpenJFX) で Hello World する

『みんなの Java OpenJDK から始まる大変革期!』を読んでいて、何となく Liberica JDK 11 の JavaFX 11 で [Getting Started with JavaFX](https://openjfx.io/openjfx-docs/) をやってみたのでメモっとく。

ほとんどの OpenJDK ディストリビューションには JavaFX (OpenJFX) は含まれていない。なので、Getting Started with JavaFX の手順を素直にやるとちょっと手間がかかる。でも、Liberica JDK 11 を SDKMAN! などでインストールすれば簡単に JavaFX 11 で遊べる。

# SDKMAN! で Liberica JDK 11 をインストールする

[SDKMAN!](https://sdkman.io/) で Liberica JDK 11 をインストールする。JavaFX が含まれないバージョンもあるので注意する。インストールできる Java バージョンの一覧は `sdk list java` コマンドで確認できる。

元記事を表示

Eclipseのショートカットキー(Windows,Mac)

自宅ではmac、現場ではwindowsを使用しています!
エンジニア経験がまだ浅い為、開発効率を上げるという事で辞書がわりにここにショートカットを記しておこうと思いました!

絶対覚えておいたほうが良い!
———————-

| | windows | mac |
|:——————|————:|———:|
|インデント|Ctrl+shift+F|command+⇧+F|
|コメントアウト(解除)|Ctrl+/または
Ctrl+Shift+C|command+/または
command+⇧+C|
|宣言を開く|F3|F3|
|javadockコメント|Alt+Shift+J|option+command+J|
|ステップイン|F5|F5|
|ステップオーバー|F6|F6|
|ステップリターン|F7|F7|
|再開|F8|F8|

**補足**

javadockコメント