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

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

Java Gold SE 8 合格に際して

# はじめに

 この度、11月某日にJava SE 8 Programmer II(Gold)を受験し、無事合格致しました。

様々な合格体験記がこのQiitaにはございますし、私自身、Gold受験を思い立ったのが5月ごろということでお世辞にも効率よい勉強の仕方が出来たとは思いません。

しかし、時間をかけた分操作のプロセス、思想などを深く掘り下げて理解することが出来たと感じています。実際満点とはいきませんでしたが、問題に対してプロセスを追い、噛み砕きながら解いていくことが出来ました。

資格を取るにあたり、ただ問題集を闇雲に頼らず、己の知識として吸収することが出来たのは良い経験になりました。

本記事では、頻出とかは関係なく面白いと思った内容を辿っていこうと思います。

# Stream Pipeline

Goldを受験する際避けて通れないStream APIですが、操作の流れが一見誤解されそうな仕組みをとっています。しかし、一度理解すればStream関連の問題にしっかり活きてくる内容だと思います。

 以下に例を示します。

“`example.java
public cl

元記事を表示

用解説語:インターフェースについて

【インターフェース/interface】とは
 ・境界面、接点、連絡役、橋渡し、などの意味を持つ
 ・何かと何かが接する部分、もしくはその間
 ・クラスに含まれるメソッドのひとつ
 ・メソッドの型と変数のみを定義している
 ・メソッドの具体的な処理内容は記述していない
 ・メソッドを利用する直前で処理内容を記述することが可能
 ・複数のインターフェースを継承し、新しいインターフェースを作ることも可能(多重継承というらしい)

(例)インターフェースの宣言/実装
——————————-

『宣言』
→ interface インターフェース名 {}

『実装』
→ class クラス名 implements インターフェース名{}

——————————-

【抽象クラス/abstract】とは
 ・abstract:抽象、の意
 ・抽象メソッドを1つ以上持つクラスのこと
 ・定義のみを宣言するメソッド(メソッド名・引数など)
 ・具体的な処理内容を記述しないメソッド
 ・メソッドのオーバーライドが可能

元記事を表示

用語解説:アクセサ / アクセサメソッド、カプセル化

アクセサメソッドに入る前の補足

【カプセル化/ encapsulation】とは

 ・オブジェクト指向言語の特徴の一つ
 ・関連性のあるデータやプログラムを容器の中に収納すること
 ・容器 = オブジェクト
  (※容器の名前はオブジェクト、と記載していました。修正いたします。)

 ・フィールド、メソッドを収容する
 ・収容したものは、クラスの外から干渉できない
  (※干渉できるものもあるようです。ご指摘ありがとうございます。)

 ・オブジェクトの中に収容したフィールドやメソッドは、外から干渉できないように保護されている
 ・オブジェクトに入れて他から触れなくすることをカプセル化という(みんな箱入り娘?)

 
【アクセサ/アクセサメソッド】とは

 ・フィールドのアクセスを仲介する目的で用意されるメソッド
 ・フィールドの値の更新や取り出しは、そのオブジェクト(容器)のメソッドを経由する
 ・全てのフィールド値は『set○○』『get○○』というメソッドがないとアクセスできない
 ・この『set○○』『get○○』のことをアクセサという

【フィールド】とは
 ・clas

元記事を表示

JavalinでWebアプリケーションを構築する

[Javalin](https://javalin.io/)というフレームワークを試してみたので投稿します。

このフレームワークは、参考書や日本語のサイトなどの情報が少ないですが、DocsとTutorialがとてもわかりやすく、特にTutorialには、それぞれサンプルプログラムがGitHUBに投稿されているので、Intellijにそのままインポートしてカスタマイズできたりしますので、WEBアプリを作成するのにあまり困らないでしょう。

# 環境

| カテゴリ | 値 |
|:—————–|——————:|
| os |windows 10 home 64bit |
| Java| 1.8 |
| framework| Javalin 3.6|
| 開発環境| IntelliJ IDEA 2019.2|

#1. Hello World

Gradleプロジェクトを新規作成して、以下を実装するだけで

元記事を表示

用語解説:オーバーロード

オーバーロードとは

・多重定義、overload
・同一クラスの中で行う(?)
・オブジェクト指向プログラミングの技法のひとつ
・引数や戻り値が異なるが名称が同一のメソッドを複数定義すること
・同一名称の関数(メソッド)を複数個定義し、引数の違いで区別する
 ※メソッドは、クラス内に定義した関数。処理の塊、手法。

・引数の型が異なる同名のメソッドを予め複数定義しておく
 → メソッドを呼び出すときに選択肢ができる
 → 引数・戻り値の型に応じて適切なメソッドの呼び出しが可能
 → 呼び出し時のチェック・メソッド内部での条件分岐を減らせる
 → 可読性・保守性が向上する

【メリット】
 ・メソッドの煩雑化防止
 ・似て非なるメソッドの大量記述の防止

【デメリット】
 ・増えすぎると機能を理解しづらいメソッドを生む可能性あり

”オーバーロードの本質は
『引数や戻り値、個々の振る舞いは異なるが、振る舞いの本質は同様』の場合のメソッドかコンストラクタに対して適用するべきであり、
『引数の型が異なるだけで振る舞いは同様』の場合のメソッドをオーバーロードしても混乱のもととなりやすい。”

元記事を表示

Google App Engine (Java 11) + Spring Boot + Gradle で Hello World

## 概要
– Google App Engine Java 11 スタンダード環境 + Spring Boot の構成でシンプルな Hello World 表示 Web アプリケーションを作る
– Google App Engine Java 11 スタンダード環境の正式版リリースは2019年10月30日にアナウンスされている
– Java 11 リリースは2018年9月25日にアナウンスされている

## 環境
– Google App Engine Java 11 スタンダード環境
– Spring Boot 2.2.0
– Gradle 6.0
– JUnit 5
– Thymeleaf 3

## Java 8 スタンダード環境から Java 11 への基本的な箇所の変更点
– インスタンスクラスのメモリが2倍に増えた (例えば F1 は 128MB が 256MB になった)
– アプリケーション設定ファイルが appengine-web.xml から app.yaml に変更された
– war ファイルではなく、実行可能な jar ファイルをデプロイする必要がある

#

元記事を表示

Javaにおける入力した5個の数字の内、最大値と最小値を求める

初投稿です。文章やコードに読みにくい部分や足りない部分があるかもしれませんが、温かい目で見ていただけると幸いです。
#まえがき
本日は Java において、「自分が入力した5個の数字の中から最大値と最小値を求める」というプログラムを作っていきたいと思います。説明の流れとしては実際に書いたコードの写真をお見せした後に具体的に言葉で説明していきたいと思います。ちなみに開発環境はEclipseを使っています。

#実際にプログラムを作る
##コードの記述
“`Java
package max_min;
import java.util.*;

public class Max_Min{

public static void main(String[] args){
//TODO 自動生成されたメソッド・スタブ
Scanner scanner=new Scanner(System.in);
double max=0;
double min=0;
int i;
double a;

System.out

元記事を表示

Alfresco CEのトラッキングタグを削除する方法

# やること
Alfresco Community Edition のshareページに設置されるトラッキングタグを除外する。
自身の備忘録として。

# バージョン
Alfresco 6.1.0-RC3
Java 8
Maven 3.6.1

# 手順

– [Alfresco/shareのリポジトリ](https://github.com/Alfresco/share)をローカル環境にクローン(稼働中のAlfrescoとは別の環境に)
– share/share/src/main/java/org/alfresco/web/scripts/MessagesWebScript.java内の if isCommunty() {} 部を削除し上書き保存
– ビルドして、生成されたMessagesWebScript.classを稼働中のAlfresco環境に配置し、再起動

元記事を表示

javaでOptionalのstreamからempty以外のコレクションを得る

javaで“`Optional“`のstreamから空で無いものを得ようとするのは結構面倒だった。https://www.baeldung.com/java-filter-stream-of-optional にあるように“`filter()“`か“`flatMap()“`で頑張るしかなかった。が、java 9から“`Optional::stream“`が追加されてだいぶ楽になった。

いま、以下のような、もし空文字であれば“`Optional.empty()“`を返す関数がある、とする。これを文字列リストの各要素に適用し、非空文字のリストを得たい、とする。

“`java
static Optional map(String s) {
if (s.length() == 0) {
return Optional.empty();
}
return Optional.of(s);
}
“`

filterで頑張るのはこんな感じ。

“`java
List.of(“1”, “2”, ,””, “

元記事を表示

リクエストパラメータのログ出力サンプル Java & SpringMVC

# 前書き
SpringMVCを使用していて、
**リクエストURLやリクエストパラメータをログに出したい!**
ということが度々あり、その度に専用のfilterクラスを作っていたので、

いっそ自分のために記事に残しておいたら今後幸せになれるのでは?

と思い記載しました。完全に自分用のメモです。

# 環境

* Java 8 (11でも動きます)
* Spring Boot 2.2.1
* Spring MVC (バージョンはBootの規定を使用)
* Lombok (バージョンはBootの規定を使用)

※Spring WebFluxでは試していません。

# コードサンプル

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

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import

元記事を表示

IntelliJ gradle2.2→2.6環境移行で躓いたときにやったこと

#概要
会社でPCの交換を強要されて仕方なくIntelliJのgradle環境を移行したときに盛大に躓いたので、
そのときに解決までにやったことをメモします。

知らぬ間にGradleさんのアイコンがぞうさんになってたんですね~

#環境
### 元の環境
– IntelliJ IDEA CE 2017.3
– gradle 2.2

### 移行後の環境
– IntelliJ IDEA CE 2019.2
– gradle 2.6

#先に結論
とりあえず以下の手順でやったら元の環境と同じように動いてくれました。
1. 元の環境から「.idea」フォルダをコピーしてプロジェクトフォルダ内に置く
2. intelliJから開きたいフォルダを「inport project」で開く
3. build.garadleすると以下のエラーが出るので、そいつに従ってgradleを2.6に引き上げる
4. もう一度build.garadleすると多分通る

“`
Support for builds using Gradle versions older than 2.6 was removed

元記事を表示

自動読み込み機能のゲームランチャー を作った話[Java]

#1. はじめに
 私は大学でゲームなどを製作する部活に所属しています。学園祭で長年ゲームを展示するために使われていたゲームランチャー(以下、ゲームランチャー のことをランチャーということがあります)の仕様を知っている人が少なくなってきたので自分で一から作り直そうとしました。色々、間に合わなかったものもありますが形にはなったのでお話ししたいと思います。
 
 この記事ではランチャーのデザイン面についてはあまり触れません。
 **主にどのように自動読み込みをするかどうかについての話や、データのフォルダ構造、苦労した点などをお話しします。**作ろうとしている言語がJavaではなくてもわかりやすく説明できたらなと思います。

スクリーンショット 2019-11-11 22.01.36.pngjava初級編 3

##インクリメントとデクリメント

プログラムの=は代入なので、自己代入ができます。
僕は(右辺を左辺に代入する。)と覚えてます!

“`
int x = 5;
x = x + 1;
//xは6になる

“`

++はインクリメント演算子と言います。変数の値に1を追加して代入する命令です。
x++;

“`
x = + 1;
//どっちも同じ、 xに1追加される

–はデクリメントといい、1引きます。

“`

##真理値
booleanと言う型があります。
booleanは、true(真)またはfalse(偽)を入れられます

真理値とも言います。

本当の事ならtrue 嘘ならfalseと覚えましょう。
あるいは、スイッチがオンならtrue,オフならfalse

“`
boolean a = true;
“`

##比較演算子

比較演算子は左辺と右辺を比較して、booleanを返します。

“`
==  //等しい(数学の=に近いのはコレ)
!= //等しくない
> //左が右より大きい
<  //左が右未満 >= //左が右以上
<= //左が

元記事を表示

java初級

##画面に入力する命令

今回はScannerを使います。この行を1行目に書きます
import java.util.Scanner;

mainの中に準備をします。
Scanner sc = new Scanner(System.in);

入力を受け取りたいところで受け取って変数に代入します。
int x = sc.nextInt(); //整数を取りたい場合
String s = sc.next(); //文字列を取りたい場合

元記事を表示

ようこそJavaライブラリの沼へ!!

こんにちはNev(ネブ)です。
Javaを勉強し始めて早10日、すでにJavaの面白さに取りつかれているので調子に乗りつつ勉強したことをログとして投下したいと思います。

本日の投下は[SpringBoot](https://spring.io/projects/spring-boot)に関してです。

Javaを勉強していく上で気づいたのですが、Javaはライブラリがとんでもなく優秀。
どれくらい優秀かというと、画面製造・単体テストまでほぼオートで製造できてしまうくらいには優秀です。
生PHPいじくってた私からしたらドン引きするレベルです(笑)
そんなライブラリの魅力に取りつかれたので「サボテン並みのIQ」しかない私でも初ライブラリ使用時にめちゃくちゃわかりやすかった資料をまとめました。

##お世話になった神サイト

■初めてのSpringBoot(2015/8/28資料)
└https://www.slideshare.net/shintanimoto/spring-boot10
→少し古いですが、この資料がSpringBootの精神も含め最高にわかりやすいです。
 なぜSp

元記事を表示

Android Studioを使ってGoogle Playを介さずにリアル(SHARP 304SH)で自作アプリを動かす方法

本内容を利用した場合の一切の責任を私は負いません。

#バージョン
– OS
OS 名: Microsoft Windows 10 Home
OS バージョン: 10.0.18362 N/A ビルド 18362
システムの種類: x64-based PC
– Android Studio
Android Studio 3.5
Build #AI-191.8026.42.35.5791312, built on August 9, 2019
JRE: 1.8.0_202-release-1483-b03 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
– Android
4.4.2
– ADB USBドライバ
17.1(8698791byte 2019/7/9)

#準備
Android Studioを公式からダウンロード&インストールする。
ADB USBドライバを下記からダウンロード&

元記事を表示

Spring Security の認証処理アーキテクチャを学ぶ

Spring Security は割となんとなくで動作してくれるイメージだけど、カスタマイズしようとするとハマったりするので、アーキテクチャを知れば何とか分かるようになるのではないかという発想から調べてまとめてみた。

以下のようなフォーム認証を行うシナリオに沿って、どのようなクラスがどのような役割を担っているのかを調べる。

1. 未認証の状態で認証が必要なページへアクセスする
2. ログイン画面にリダイレクトされる
3. 情報を入力しログイン処理を実行する
4. ログインが完了し 1でアクセスしていた画面にリダイレクトされる

なお、バージョンは 5.2.1.RELEASE で確認している。

# ログイン画面へリダイレクトされるまで

認証が必要なページに対してまだ認証されていないユーザがアクセスした場合、ログイン画面へ飛ばされる仕組みについて。
ざっくりとしたフローは以下の通り。なお、今回はアクセスした際のチェック処理は説明しないが `AuthenticationException` がスローされるところからスタートする。

![ログイン遷移.png](https://qiit

元記事を表示

Spring injectionいろいろ

#下準備
containerに登録するクラスを作ります。

“`java:Triangle.java

package com.springLearning;

public class Triangle {

public void draw(){
System.o

元記事を表示

外部サービスを使って大量メールを送る – Java & Mailgun

# 前書き
外部サービスのメールAPIを使用して、
添付ファイルを送信したい!となった場合の参考に。
メール送信APIは各種存在していますが、今回はMailgunを使用しています。
メリデメの考察や登録方法などは割愛します。

なお、タイトルにある「大量メール」ですが、会員登録されたユーザにメールを送る際に使用することを想定したため「大量メール」と付けています。Mailgunは課金次第になりますが大量メールに耐えられるAPIを提供されています。無料登録だとそこまで大量というほど送信できるわけでは無いですが…。

# 環境
* Java 8
* Spring Framework
* メールサービス:MailgunAPI ([リファレンスリンク](https://documentation.mailgun.com/en/latest/api_reference.html#api-reference))

※lombokは今回は使用していません。使ってもよかったのですが…。

## リファレンスにサンプル載ってるけど?
はい。載ってます。
ただし、サンプルに使用されているJavaのHTTPラ

元記事を表示

OpenShiftによるJava EEアプリケーションのモダナイゼーションをやってみた。

# はじめに
IBM CloudのOpenShiftのマネージドサービスである「 Red Hat OpenShift on IBM Cloud 」を使った「OpenShiftによるJava EEアプリケーションのモダナイゼーション」の記事を寄稿しました。
https://www.atmarkit.co.jp/ait/articles/1911/15/news002.html

その記事で使用している「 Red Hat OpenShift on IBM Cloud 」は有料サービスのため、たくさんの人に記事の手順を試してもらうのは難しいと思います。 そこで、**無料で利用できるMiniShiftを使って、気軽にOpenShiftでJava EEアプリケーションのモダナイゼーションを体感してもらえるように、リライトしました。**

**今回はアプリケーション・データベース共に全てコンテナ化するケースを試したいと思います。記事を読んでいただいた方は、記事の内容に加えて複数コンテナの連携(アプリケーションとデーターベース接続)について学べるようになってます。** 記事では、データベースはIB

元記事を表示

OTHERカテゴリの最新記事