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

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

Javaを基本からまとめてみた【オブジェクト指向】

## 参考サイト
[オブジェクト指向の必要性とメリットが理解できる!【Java入門講座】3-1 オブジェクト指向](https://www.youtube.com/watch?v=mGEUZcKx4CE)

元記事を表示

Template Method Patterh

Template Method

abstract methodや実装されたmethodを活用して、全体の流れ(シナリオ)を定義しておいたメソッド、
finalで宣言し、再定義できなくします。

Template Method Pattern

Design Patternの一種です。 frameworkで多く使用される設計パターンです。
abstractクラスである上位クラスでabstract methodを使用して実装全体の流れを定義し、具体的な各メソッド実装は下位クラスに委任します。
下位クラスが異なる実装をしたからといっても、template methodで定義されたシナリオどおりに実行されます。

“`java:Car.java
public abstract class Car {
// 下位クラスに強制します。
public abstract void drive();
public abstract void stop();

public void startCar() {
Syst

元記事を表示

そうだ、Java SE 11 Silverをとろう!

# はじめに
こんにちは、ひで丸です。
Java SE 11 Silver(以下Java Shilver)の資格を急に取得しようと思い立ったので、取ろうと考えている人の参考になればと思い記事にしました。

記事の目次としては下記になります。

・ 背景
・ Java Silver とは
・ 受験方法・試験内容
・ 勉強方法
・ まとめ
・ 参考サイト

# 背景
今回、何故Java Shilverを取得しようと思い立ったかというと、私が仕事でJavaを勉強することとなり、日々だらだらと勉強するのではつまらないなと思ったので、目標としてJava Shilverを取ろうと考えたからです。
また、今の会社では資格を合格すると受験費用が戻ってくるため、実質タダで取れます!それならもう取るしかない!と思い今に至っています。
※Java Silverの受験料は税込37,730円なので比較的高め

# Java Silverとは
正式名称は「Oracle Certified Java Programmer, Silver SE11」 で、Javaアプリケーション開発に必要な基本的なプログラミングの知

元記事を表示

JAVA 基本文法[5] – 配列

##### 「配列」とは
「配列」とは、「同じ型の複数の値をまとめて扱うためのデータ構造」。
※ある一定のルールに従ってデータを格納する形式を「データ構造」という。
変数のような個々の独立したデータではなく、1つのグループに属するデータをまとめて扱える特徴を持つ。

変数のような箱が連続して並んでおり、この箱1つ1つを「要素」という。
配列の各要素には同一種類のデータしか格納できない。つまり1つの要素に数値、1つ目の要素に文字列は出来ない。
配列内の各要素には、番号が付いている。この番号を「添え字(index)」と言い、「先頭から順に、0から始まる決まりになっている」。


###### 配列の書き方
●配列の作成方法
徹底攻略Java SE 11 Gold問題集[1Z0-816]対応の総仕上げ問題62(module)について

gold問題集の問題62の回答に、選択肢B)module clientでrequires provider;する必要がある
というのが回答になっている、が、切らなくても正常に動く。

requiresはあくまでもmoduleとしての依存であって、class依存ではない認識

usesは公開というよりも使用する、消費するという意味。

ちなみに1モジュールのmodule-info.javaではprovideを1個しかかけないようだが
providerモジュールを追加すれば、そちらでもprovideできる。
その場合、ServiceLoader.load(SampleInterface.class)は、provideされた2個の
implが登録されている。for(xx:ServiceLoader x)で回してやると2個分のimpleが
動かせる。

自分はこんな環境で実行できた。
“`Api\module-info.java
module Api {
exports api;
}
“`
“`Provider\module-info.java
module Provider {

元記事を表示

Oracle JMS設定、入門の入門編 〜貴社のJavaポートフォリオの管理強化に向けて、オラクルクラウドサービスJMSを、触ってみよう! 

<本マニュアルの趣旨>
OCIクラウドサービスとして、組織内のJavaポートフォリオをモニター管理するJMS機能の関しての「入門の入門編」です。
詳細は、下記Workshopに記載されておりますが、オプション設定等も詳述されており、いきなり下記の資料を読むのは、初めての方には非常に敷居が高いと思います。

■ Manage Java Runtimes, Applications and Managed Instances Inventory with Java Management Service (Workshop)
https://apexapps.oracle.com/pls/apex/r/dbpm/livelabs/view-workshop?wid=912&clear=RR,180&session=106831188377065

■ Getting Started with Java Management Service (Document)
https://docs.oracle.com/en-us/iaas/jms/doc/getting-started-java-ma

元記事を表示

Javaを基本からまとめてみた【演算子・基本データ型の型変換】

## 演算子

| 演算子の種類 | 記号 |
| —- | —- |
| 算術演算子 | +, -, *, /, % |
| 比較演算子 | >, >=, <, <=, ==, != | | 代入演算子 | =, +=, -=, *=, /=, %= | | インクリメント・デクリメント演算子 | ++, –- | | 条件演算子 | &, |, ^, !, ||, && | | シフト演算子 | <<, >> |

## 基本データ型の型変換

– 数値同士の演算や代入をする時、データ型の変換が自動で行われる。
表現できる値の幅が 小 ➡︎ 大

– 数値同士の演算や代入をする時、データ型の変換がキャストで明示する。
表現できる値の幅が 大 ➡︎ 小

## 基本データ型の暗黙変換
“`
//→ → 暗黙に型変換が行われる → →

『byte』 → 『short』 →
       『int』 → 『long』 → 『float』 → 『double』
     『char』 →

//

元記事を表示

Javaを基本からまとめてみた【配列】

## 配列
– 配列は同じデータ型の変数を複数まとめて管理するもの
– 配列の生成には『new』を使う。生成時にデフォルト初期値が設定される。
※ 初期値:整数や少数なら0,文字なら空文字 (“”) , 真偽値ならfalseが設定される

“`
データ型[]配列名 = new データ型[要素数];
例)int[] score = new int[3];
score[0]= 80;  //添字([]内の数字)は0から
“`
– 配列の初期化

“`
データ型[] 配列名 = {値1, 値2,・・・}
“`
– 配列名.lengthで配列の要素数を取得できる

“`sample.java
public class Array01 {
public static void main(String[] args) {
int score[] = new int[3];

score[0] = 35;
score[1] = 64;
score[2] = 43;

String[]name = {“A”,”B”,”C”};

System.

元記事を表示

Spring Boot 2.7からSpring Boot 3.0へ切り替えて、gradleプロジェクトアプリケーションを起動できるようにするまでの奮闘記

# 概要
Spring 2.x系のEOLが2023/11とのことで、Web/APIアプリケーションのSpring Boot 3.0への切り替え対応を検証しています。
mavenを使っている場合、spring-boot-migratorなるものが提供されていて、ある程度移行を自動化できそうです。

https://github.com/spring-projects-experimental/spring-boot-migrator

一方でうちのチームはgradleを使っているのですが、このmigratorがgradleに対応していません。
そのため、ある程度手作業で切り替えをする必要がありました。
この記事ではざっくりとした移行手順方法やハマったポイントなどをメモしたいと思います。

なお、Spring 2.7 -> 3.0の機能変更点とその対応をすべて書いていくときりがないので、
この記事は「最低限コンパイルが通せて、アプリケーションを起動できるところまでもっていく」というところまでをターゲットにしています。

移行前のアプリケーションの環境は以下を想定しています。

|

元記事を表示

Java SE11 Gold試験に合格したので要点をまとめてみる

# はじめに
【内容】
先日JAVA SE11 Gold試験(Java SE 11 Programmer II)に合格した為、備忘録も兼ねて重要な箇所をまとめておくもの。
【想定読者】
JAVA SE11 Goldの受験を考えている方、受験勉強中の方。
※そもそも**Silverに合格していないとGoldの受験が出来ない**為、それなりにJavaのソースが読め、問題形式(選択式)についても理解されている方を想定。

# 時間がない方向けの説明
・**黒本を買って問題の内容、解説までを把握しておくこと**
・**問題の半分(体感)にはラムダ式(関数型インタフェース)、ストリームAPIが絡んでいるので特に対策しておくこと**
・**試験前日は良く寝ておくこと**

# 学習方法
基本的に黒本(以下問題集)を使用。
SE8用の書籍もあるが、試験範囲が相当に違っているので**決して使い回したり**(経験談)しないこと。
あと「回答解説が本体」と言わんばかりに豊富に記載されているので、
単に問題解いて、答えの選択肢見て「合ってた(間違ってた)」の繰り返しだけでは足りない。
「なぜ他の選択肢は間違

元記事を表示

Spring Boot Webサービスを Docker 環境で起動する (Dockerfile 使用)

# Spring Boot Webサービスを Docker 環境で起動する (Dockerfile 使用)

こんにちは、株式会社船井総研デジタルの @fsdg-adachi_h です。今回は、WSL Ubuntu 22.04 の Docker 環境で Spring Boot Web アプリケーションをコンテナとして起動する方法を紹介します。

## 目的

Spring Boot Web アプリケーションをカスタムコンテナ化します。

## 実現すること

ローカル環境の WSL Ubuntu の Docker 環境で、Dockerfile からビルドした Spring Boot Web サービスのカスタムコンテナイメージを起動します。

:::note alert
Spring Boot では、**コマンドで簡単にコンテナイメージを作成できる機能**があります。しかし、この記事では Dockerfile を使用してコンテナイメージをビルドすることで、Docker の基礎的な使い方を学習することを目的としています。ご注意ください。
:::

## 技術トピック

### Docke

元記事を表示

ABC292A~Fの解答[Java]

## はじめに
今回はコンテスト中に書いたA、B、D、Fとコンテスト後に書いたC、Eを載せようと思います。

では、見ていきましょう。

なお、ライブラリを見たい方は[こちら(提出結果)](https://atcoder.jp/contests/abc292/submissions?f.Task=&f.LanguageName=&f.Status=AC&f.User=viral)からどうぞ。

## A – CAPS LOCK
問題文は[こちら](https://atcoder.jp/contests/abc292/tasks/abc292_a)

StringにはtoUpperCaseメソッドがあるのでそれを使いましょう。
“`A.java
final class Main {

private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner( System.in );
private static final SimplePr

元記事を表示

よく目にするHTTPコードのまとめ

サービス運用業務に伴い、よく見るエラーコードをまとめておく。

# 200番台 (正常レスポンス)
|番号|内容|概要|
|:—|:—|:—|
|200|OK|リクエスト処理を正常に完了|
|201|Created|リクエストが成功してリソースの作成が完了した場合。
リクエストボディ情報などによりDBにレコードが生成された場合など|
|202|Accepted|リクエストを受け取ったが処理はしていない|
|203|Non-Authoritative Information|リクエストは成功したけど、変換プロキシによって元のサーバーの200(OK)レスポンスからペイロードが変更された場合|
|204|No Content|リクエストに対して送信するコンテンツが無い時。
リクエストした情報のヘッダに関しては問題が無いので正しく処理されている。|

# 400番台 (クライアント側エラー )

|番号|内容|概要|
|:—|:—|:—|
|400|Bad Request|一般的なクライアントエラー。
サーバー側で承認していない誤ったパラメーターが送

元記事を表示

java Singleton Patternとは

singleton patternとは

プロジェクト内にたった1つだけ存在しなければならないインスタンスがある可能性があります。
例えば、学校といえば、学校には多くの生徒がいますが、学校自体は一つだけ存在しなければなりません。
会社も同じ。
会社には複数の部署が存在しますが、会社は1つの会社しか存在しません。
学校や会社が何度もnew()された時、複数のインスタンス変数を持つようになって問題が発生することを防止するために
singletone patternを使用します。
singleton patternでは、あらかじめ生成されているインスタンスをpublic getMethod()を通じて取得して使用します。

singleton pattern方法

“`java
package singleton;

import java.util.Calendar;

public class Company {
// 内部でInstanceを生成
private static Company instance

元記事を表示

【Java】native修飾子でC,Cpp,アセンブラを呼び出す

# 経緯

javaの修飾子`native`の存在を知ったので、実際にどのように使うのかを調べる。

![スクリーンショット 2023-03-04 13.14.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/777324/a798cd62-a1a1-f161-a5cb-c772fc47addf.png)

> 画像引用:https://www.tohoho-web.com/java/modifier.htm

# native修飾子とは

cやcppで書かれた関数(ネイティブメソッド)を呼び出すことができる。

これを使うことによって、

* **システムのパフォーマンスを向上。**
* **マシンレベル/メモリレベルの通信**を実現。
* **Java以外のコードも使用できる。**

みたい。

外部を呼び出すことは、同時にjavaのメリットである**クロスプラットフォーム**が損なわれる可能性があるので「パフォーマンスの向上」で言うとその時その時で変わってきそう。

https://www.ge

元記事を表示

JAVA 基本文法[4] – 制御構文(条件構文/繰り返し構文)

:::note
前提知識:プログラムの流れ
代表的な「制御構造(制御フロー)」
・順次: 上から順に文を実行する
・分岐: 条件によって違う文を実行する
・繰り返し: 条件が満たされるまで同じ文を繰り返す
:::

#### 「制御構文」の構成要素
※「制御構文」:if/while文のような制御構造を表す文のこと。
「条件式」と「ブロック」から成り立つ。

●ブロックの書き方
ブロックとは、複数の文をひとまとまりとして扱う為のもの。

・ルール①:スコープの範囲を抜けると、その変数は消滅する。
「ブロック内で宣言した変数は、そのブロックが終わると同時に消滅する」ため、ブロック内で宣言した変数はブロック外では利用できない。
このような「変数が利用可能な場所の範囲」のことを「スコープ」という。

元記事を表示

Files.move

test.txtをtest dirに移動するプログラム
移動先は…testではなく…test\test.txtを指定する

“`java
public class SampleProject {
public static void main(String[] args) throws Exception{
Path p1 = Paths.get(“c:\\dirtest”);
File f = p1.toFile();
method2(f);
Path p2 = Paths.get(“c:\\dirtest\\test.txt”);
Path p3 = Paths.get(“c:\\dirtest\\test\\test.txt”);
Files.move(p2,p3);
method2(f);
}
static void method2(File pf) {
System.out.println(“————

元記事を表示

Spring Boot内の現在日時を変更する

# 前提
プロジェクトをテストする中でどうしてもアプリ日時を変更したいときがあると思います。
アプリを起動するコンテナの日時を変更しても実現はできますが、HTTPS通信をする際にエラーが発生することがありました。そのためClockクラスを利用して日時変更をする方法を試したのでメモです。

コードサンプルはこちらです。

https://github.com/y5347M/clock-config-sample

# 環境
– macOS: 12.6
– IntelliJ IDEA: 2022.2.3 (Community Edition)
– Gradle: 7.5
– Java: temurin 17.0.3
– Spring Boot: 2.7.10-SNAPSHOT

# 手順

## プロジェクトの作成

#### spring initializrでプロジェクト作成
[https://start.spring.io/](https://start.spring.io/)でプロジェクトの雛形を作成します。
以下の画像のような構成にしています。

元記事を表示

system.properties

javaのsystem propertyを確認する方法
System.getProperties()
“`java
public class SampleProject {
public static void main(String[] args) {
Properties ps = System.getProperties();
ps.list(System.out);
}
}
“`
“`
sun.desktop=windows
awt.toolkit=sun.awt.windows.WToolkit
java.specification.version=11
sun.cpu.isalist=amd64
sun.jnu.encoding=MS932
java.class.path=C:\Users\java\Documents\NetBeansProje…
java.vm.vendor=Oracle Corporation
sun.arch.data.model=64
user.variant=
java.vendor.ur

元記事を表示

Javaのクラスパスについて

クラスパスを指定する方法は2つある。

①javaコマンド実行時にオプションで設定する。
②環境変数で設定する。

# ①javaコマンド実行時にオプションで設定する。

“`
javac -classpath [パス1]; [パス2]; …
“`

複数設定する場合はセミコロンで区切る。

省略形もある。
“`
javac -cp [パス1]; [パス2]; …
“`

# 環境変数を使用する方法
“`
set CLASSPATH=[パス1]; [パス2]; …
“`
※等号の前後に空白を入れないように注意

# その他注意事項
## 実行時にカレントディレクトリを含める場合
デフォルトは実行時のカレントディレクトリ。上記設定をするとオーバーライドされる。
そのため、クラスパス設定時にカレントディレクトリを含めたい場合は「 . 」を含める必要がある。

## クラスパスの内容
設定内容は.zip, .jar, .classファイルへのクラスパス

* .jar / .zipの場合:クラスパスは.zipまたは.jarファイルの名前で終わる
* 無名パッケージ

元記事を表示

OTHERカテゴリの最新記事