JAVA関連のことを調べてみた2021年11月18日

JAVA関連のことを調べてみた2021年11月18日
目次

シンプルな Java Servlet サンプル (Spring Boot 版)

ちょっと Java Servlet を Spring Boot で動作させてみたい時のサンプルをメモしておきます。

# Maven (pom.xml)

Spring Boot で Java Servlet を動作させるには `Spring Web` が必要です。
`Spring Initializr` を利用するなどの何らかの方法で `pom.xml` ファイルの `` に以下の `Maven Repository` 記述を追加します。 (ビルドでの自動ダウンロードの実現のためには、インターネットに接続されている必要があります)

“`xml

org.springframework.boot
spring-boot-starter-web

“`

なお、[Spring Initializr サイトはこちら](https://start.spring.io/)を参照してください。

# Java コード

元記事を表示

あるところに、創作意欲が暴走して独学で自分が欲しいAndoroidアプリをリリースしたアマチュア者がおったそうな…

#目次
[1.アプリ作成の背景](#1-アプリ作成の背景)
[2.何かを作る](#2-何かを作る)
[3.開発環境と主なライブラリ](#3-開発環境と主なライブラリ)
[4.アプリの機能](#4-アプリの機能)
[5.学習方法の概要](#5-学習方法の概要)
[6.アプリを作ってみた感想](#6-アプリを作ってみた感想)

#1. アプリ作成の背景
※変なタイトルを付けましたが、中身は基本まじめに書きました。(半分くらいポエムです)

—**とりあえず自分で何か作りたい**—
僕は電子機器のメーカーで働いています。何かものつくりがしたい、という動機で就職し、
主に生産技術の仕事をしてきました。

各製造工程専用の製造装置の生産効率とか、歩留まり(良品率)を上げるのが主な仕事です。
これはこれで重要な仕事であり、確かにものは作っていますが、
実際は全体のほんの一部しか関われず、自分が何かを作っているという感じではありませんでした。

自分で作ってる感がないまま、モヤモヤ思っていた頃、以前に録画していた学生ロボコンをなんとなく見たら
課題を設定して、自分たちで工夫していろいろ作って

元記事を表示

SpringSecurityでメールアドレス認証でログイン機能を作りユーザー名を表示させる方法

#はじめに
SpringBootでアプリケーションを開発し、ログイン機能を実装したが、メールアドレスとパスワードで認証し、その後、ユーザー情報を取得してユーザー名を表示させる仕様の実装に手間取ったため備忘録的に残しておこうと思う。

##環境
– SpringBoot2.5.6
– SpringSecurity
– Java11
– MySQL
– JPA

#SpringSecurityの設定

まずは、ログイン認証をするためにSpringSecurityの設定が必要だ。SpringSecurityではパスワードの暗号化などの設定をしないと、そもそもDBのデータを認証してくれないなど制約があるため、必須の設定となっている。

“`java
package com.example.demo.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframewor

元記事を表示

Kotlinのエラー:java.lang.NoClassDefFoundError: Could not initialize class org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel

“Kotlin サーバーサイドプログラミング実践開発“ 著者:竹端 尚人にて
第2部のアプリケーション作成でSpring Initializrをダウンロードしてビルドしただけなのにエラーが出たのでその対処

gradleのキャッシュを削除

“`
$ rm -rf $HOME/.gradle/caches/
“`

以上。

原因はJDL15で以前いじっていたことがあったからそれが原因みたい。

一応、不要なJDKは削除しておいたほうがいいかも

インストールされているJDLの削除方法

“`
//現状インストールされているJDKを一覧で取得
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
11.0.13, x86_64: “Amazon Corretto 11” /Users/nash/Library/Java/JavaVirtualMachines/corretto-11.0.13/Contents/Home
11.0.12.1,

シンプルな CSV ファイル書き出し Javaサンプル (Apache commons-csv を利用)

ちょっと CSV ファイルを書き出す Java プログラミングを実装したい場合に役立ちそうなサンプルをメモしておきます。
CSVファイル読み書きには [RFC 4180](https://datatracker.ietf.org/doc/html/rfc4180) を実装する必要がありますが、一般的にはライブラリ利用により実現します。
この例では Apache commons-csv を利用した CSVファイル書き出しサンプル記述を残しておきます。

# Maven (pom.xml)

まず最初に、CSV ファイル書き出しを実現するためのライブラリである `Apache` `commons-csv` をビルドに組み込みます。 `pom.xml` ファイルの `` に以下の `Maven Repository` 記述を追加します。 (ビルドでの自動ダウンロードの実現のためには、インターネットに接続されている必要があります)

“`xml

org.apache.commons
<

Java SE11 Gold まとめ(前半)

個人的に忘れやすかったり、重要だと感じた所のまとめ。
自分用メモ。

注:オーバーライドの不可は@Overrideアノテーションを指定した時にコンパイルエラーになるか否か。

**1.クラスとインターフェース**

ネストクラスについて

:::note info
staticインナークラスとインナークラスはインスタンスのメンバなので全てのアクセス修飾子が使用できる。
ローカルクラスはメソッド内で定義するのでローカル扱いになる、abstract,finalのみ。
匿名クラスはあるクラスのサブクラスやサブインタフェース扱いになるので全てNG。
:::

インタフェースについて

:::note info
そもそもオーバーライドされる前提なので、finalなメソッドは定義不可能
defaultメソッド…publicのみ。修飾子を指定してないと暗黙でpublic。(public以外を指定するとコンパイルエラー)オーバー

jdebプラグインを使ってMavenビルドでDEBファイルを作成する

#急遽Ubuntu対応が必要に
現在はCentOSで動かしているJavaコンポーネントを、将来的にはUbuntuで動かさなければいけないということで、Ubuntuで使われるパッケージであるDEBファイルの作成方法を調べていました。

現在はrpm-maven-pluginを使ってMavenビルドでRPMのビルドも完結させているので、DEBファイルのビルドもMavenビルドの中で済ませたいところ。

DEBファイルを作成するプラグインはいくつかあるようでしたが、jdebというプラグインが使いやすそうだったので、これを使ってみることにしました。

ちなみにビルドはRedHat上で行いましたが、問題なくDEBファイルをビルドすることができます。

#jdebのXML表記方法
かなりシンプルなものですが、以下はpom.xmlに記述するjdebのサンプルです。

“`XML
org.vafer
jdeb
1.0

Couchbase Lite機能解説:Sync Gatewayを介したCouchbase Serverとの同期〜構成例

## はじめに

ここでは、Couchbase Liteのレプリケーション構成例をサンプルコードによって紹介します。

## 概要

Couchbase Liteは、Sync Gatewayとの組み合わせにより、モバイルアプリケーションとデーターセンター/クラウド上のCouchbase Serverデータベースの間の双方向同期(レプリケーション)のためのAPIサポートを提供します。

Sync Gatewayと対話するモジュールは「レプリケーター」と呼ばれます。

アプリケーションはレプリケーター(クライアント)を実行します。レプリケーターはSync Gateway(サーバー)との接続を開始し、データベース変更のレプリケーションに参加して、ローカルデータベース(Couchbase Lite)とリモートデータベース(Couchbase Server)の同期を実現します。

## エグゼキューター

Couchbase Liteは、複数のエグゼキューターを起動します。

エグゼキューターは、非同期コールバックを処理するために、スレッドのプールと、キューを管理します。

エグゼキューターに

シンプルな JSON 書き出し Java サンプル (jackson-databind 利用)

JSON をちょっと Java で書き出したい時のサンプルをメモしておきます。

JSON書き出しには [RFC 4180](https://www.rfc-editor.org/info/rfc8259) を実装する必要がありますが、一般的にはライブラリ利用により実現します。
この例では、 `jackson-databind` を利用した JSON書き出しサンプル記述を残しておきます。

# Maven (pom.xml)

まず最初に、JSON書き出しを実現するためのライブラリである `jackson-databind` をビルドに組み込みます。 pom.xml ファイルの に以下の Maven Repository 記述を追加します。 (ビルドでの自動ダウンロードの実現のためには、インターネットに接続されている必要があります)

“`xml

com.fasterxml.jackson.core
jackson-databind

springのInvalid character found in method name […]. HTTP method names must be tokens

spring-boot使用時に以下のエラーが発生した。

“`java

java.lang.IllegalArgumentException: Invalid character found in method name [0x160x030x010x020x000x010x000x010xfc0x030x030xda0xb8Aqh0xc5,0x910xfa0xc30xc90xbf0x8a0x8f?0xf50xf80x14K0x930xf2Y0xd10xb0A%0xa30xef0x8e.Q+ ]. HTTP method names must be tokens
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:419) ~[tomcat-embed-core-9.0.54.jar:9.0.54]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:269) ~[t

JAVA 基礎的メソッドの扱いと引数、返り値について。

現在会社でJAVA研修を受けているのでそのアウトプットとして残したいと思います。

##1. クラスとは、、

クラスとはオブジェクトの「状態・性質」と「機能」をまとめたもの。

「状態・性質」をあらわす情報を**フィールドまたはプロパティ**、クラスの「機能」をあらわす情報を**メソッド**といいます。

“`Man.java
package test;

public class Man {
  public static void main(String[] agrs) {
     
    int age;
String name;

}
}

“`

このコードはオブジェクトを作成するための Man クラスです。

変数二つが宣言されていますが、これらの変数が Man クラスの**フィールド**になります。

##2.オブジェクトの作り方

“`Profile.java
package test;
public class Profile {

public static void main(String[] args) {
Man

SpringBootで一意性制約のアノテーションを自作(コピペで完成)

#はじめに
SpringBootでアプリケーションを開発中に、Emailやその他ユニークな値の制約の設定の仕方がわからず、ググったところ、Springのバリデーションでは一意性のエラーチェックがないようなので、自作することになった。

ところが、自分が参考にしている記事を超える記事がなく、小1時間ほど悩んでようやく実装できたので、備忘録として残すことにした。
※Railsならdeviceが自動で実装してくれていた…

#環境
・Java11
・SpringBoot2.5.6
・Spring Data JPA
・MySQL
・gradle

#アノテーションを自作する
まず、下記の画像のように`com.example.demo`上で右クリックをし、新規→注釈の順でアノテーションインターフェースの雛形を作成する。
![スクリーンショット 2021-11-16 6.38.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/879778/46c9b959-f78c-a5a1-dd2b-b4fa80a0bae

【Spring boot】Spring boot プロジェクトの作り方 (Java)

今度、業務でJavaのWeb-APIを使用するという話があったので、その予習のために調べた内容を記載しておきます。
今回、実際に作成したソースコードはgithubに上げておきました。
https://github.com/NagaJun1/sample_project_name

#開発環境
Javaでweb開発をするならEclipseを使用するかと思いますが、今回はVisual Studio Code を使用します。
(新しくEclipseを入れるのが手間だったので…)
最終的にはEclipseを使用することになるかと思いますが、今回はSpring bootの基本的な部分だけ分かればよいので、Eclipseは使用しません。
Spring Tool のプロジェクトを作成する場合には、Spring Tool Suite(STS)を使用する必要があります。
Visual Studio Code にSpring Tool Suite(STS)を追加したい場合は、「拡張機能」で、「Spring Boot Extension Pack」をインストールすれば、使用することができます。
(Visua

シンプルな JSON 読み込み Java サンプル (jackson-databind 利用)

JSON をちょっと Java で読み込みたい時のサンプルをメモしておきます。

JSON読み書きには [RFC 4180](https://www.rfc-editor.org/info/rfc8259) を実装する必要がありますが、一般的にはライブラリ利用により実現します。
この例では、 `jackson-databind` を利用した JSON読み込みサンプル記述を残しておきます。

# Maven (pom.xml)

まず最初に、JSON読み込みを実現するためのライブラリである `jackson-databind` をビルドに組み込みます。 pom.xml ファイルの に以下の Maven Repository 記述を追加します。 (ビルドでの自動ダウンロードの実現のためには、インターネットに接続されている必要があります)

“`xml

com.fasterxml.jackson.core
jackson-databind

シンプルな CSV ファイル読み込み Javaサンプル (Apache commons-csv を利用)

ちょっと CSV ファイルを読み込む Java プログラミングを実装したい場合に役立ちそうなサンプルをメモしておきます。
CSVファイル読み書きには [RFC 4180](https://datatracker.ietf.org/doc/html/rfc4180) を実装する必要がありますが、一般的にはライブラリ利用により実現します。
この例では Apache commons-csv を利用した CSVファイル読み込みサンプル記述を残しておきます。

# Maven (pom.xml)

まず最初に、CSV ファイル読み込みを実現するためのライブラリである `Apache` `commons-csv` をビルドに組み込みます。 `pom.xml` ファイルの `` に以下の `Maven Repository` 記述を追加します。 (ビルドでの自動ダウンロードの実現のためには、インターネットに接続されている必要があります)

“`xml

org.apache.commons
<

シンプルな HTTP クライアント Javaサンプル (Apache HttpComponents 4.5系を利用)

`curl` の基本機能相当の HTTP クライアントを Java プログラミングて実装したい場合に役立ちそうなサンプルをメモしておきます。
ここでは、Apache HttpComponents (4.5系) を利用して 特定の URL から HTTP GET するサンプル記述を残しておきます。

# Maven (pom.xml)

まず最初に、HTTP クライアントを実現するためのライブラリである `Apache` `HttpComponents` (4.5系) をビルドに組み込みます。 `pom.xml` ファイルの `` に以下の `Maven Repository` 記述を追加します。 (ビルドでの自動ダウンロードの実現のためには、インターネットに接続されている必要があります)

“`xml

org.apache.httpcomponents
httpclient
4.5.13

JavaソースコードのPropertyを獲得する

“`java
package org.tei.mvcbinding;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

@SpringBootApplication
public class MvcBindingApplication {

public static void

動画で学ぶJHipster (8) (UIの強化)

# 参考動画

## 参考テキスト
https://github.com/mraible/jhipster7-demo#make-ui-enhancements

# Hot Module Replacementの有効化
(以下テキスト(の日本語訳))
JHipsterで生成されたアプリケーションでUI開発を行う場合、ファイルを保存するとすぐに変更を確認できると便利です。JHipsterは、Browsersyncとwebpackを使用してこの機能を強化します。この機能を有効にするには、blogディレクトリで次のコマンドを実行します。

“`
npm start
“`

<<
`npm start`で、`ng serve –hmr`を起動していました。`ng serve` はAngularのコマンドで、https://angular.io/cli/serve によると、`–hmr`オプションは、Hot Module Replacement (HMR) を有効化するオプションらしいです。

:::

Couchbase Lite機能解説:ピアツーピア同期〜プログラミング構成と設定項目

## ピアツーピア同期プログラミング構成

Couchbase Liteのピアツーピア同期機能を利用するためには、`URLEndpointListener`クラスを利用します。

`URLEndpointListener`を初期化する際に、`URLEndpointListenerConfiguration`を使用して構成を実行します。

ここでは、Couchbase Liteのピアツーピア同期で行えることの理解を助けるため、`URLEndpointListenerConfiguration`で設定できる項目を紹介します。

## ピアツーピア同期設定項目

`URLEndpointListenerConfiguration`を使用して、リスナーを初期化するために使用できる構成オブジェクトを作成します。

#### `port`
リスナーがリッスンするポート。

ポートがnullまたはゼロの場合、リスナーは使用可能なポートを自動割り当てします。

#### `networkInterface`
IPアドレスまたはネットワークインターフェイス名の形式で指定する、リスナーが利用する使用するネ

【Android】新規画面の追加、別画面として扱い(Java)

最近、Android Studioを使って、JavaのAndroidアプリを独学で作成しているので、その過程で勉強した内容です。
作成したコードはGithubで公開しているので、気になる方は下記をご覧ください。
https://github.com/NagaJun1/OriginalCalendar

#新規画面作成においての前提
まず、Androidで新規画面(アプリ起動後の初期画面とは別の画面)を表示するには、Javaの場合は`setContentView();`を実行することで表示できます。
ですが、この場合、Androidのライフサイクル(`onStart()`や`onStop()`などのイベント)を使用することが難しくなります。
その問題を解消するために、`Intent`を使用した処理を実装する必要があります。

#新規画面の作成
新規画面の’.xml’作成は、プロジェクト作成時に作成される`\res\layout\activity_main.xml`と同様の作りにすればOKです。
(例として、`activity_sample.xml`としておきます。)
ついでに書いておくと