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

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

JUnit未経験者がテストコードを書ききるためにまずやったことと、初心者的悩みポイントを逆引き解説

# はじめに : ユニットテストを書いたことない頃の私の声
わかっているんです。知っているんです。ユニットテストを書いた方がいいのは。

だけどさ何から始めればいいの?
どうやってテストコード追加するの?
なんかアノテーションがやたらあるのは知ってる。ただ使い方がわからん。
ていうか時間がない!書く時間というか、そもそも最初のキャッチアップの時間が!作れない!

というのは数か月前までの私の心の声。

その後、ユニットテストを2つほど書いてみたところで、とりあえず上記のような心の声には「大丈夫だよ、これで始められるよ」と寄り添えるようになった気がします。
そこで

– ユニットテストナニモワカラナイ・・から、どきどきしつつも挨拶ができるようになるくらいまでに何をしたか
– テストを書くにあたって最初に直面した「これってどうしたらいい・・・?」を逆引き解説※

をまとめます。

※解説とか大層なことを言っていますが、初心者です。間違っているところや「もっとこう書いたらいいよ!」ということがあると思うのでぜひご意見お願いします

# 環境
– Windows10
– Eclipse ID

元記事を表示

Springでコンポーネントの起動・停止処理を実装する

Springでコンポーネントの起動・停止処理(初期化・破棄処理)を実装する方法を調べてみました。

# SmartLifecycleを実装する

起動・停止処理という切り口の場合は、`SmartLifecycle`を利用するのが良さげっぽい。DIコンテナ起動時に`start`メソッドが呼び出され、DIコンテナ停止時に`stop`メソッドが呼び出される。

“`java
@Component
public class MyComponent implements SmartLifecycle {
private boolean active;

@Override
public void start() {
System.out.println(“start ” + getClass());
this.active = true;
}

@Override
public void stop() {
System.out.println(“stop ” + getClass());
this.active = false;
}

元記事を表示

ABC258A~Dの解答[Java]

## はじめに
今回から自作ライブラリ(テンプレ)が他クラスにまとめられた書き方をしています。ご注意ください。
なお、今回用いたライブラリは最後にまとめてあります。適宜ご確認ください。

では、コードを見ていきましょう。

## A – When?
問題文は[こちら](https://atcoder.jp/contests/abc258/tasks/abc258_a)

実はprintfの書き方を知らなくて、全部条件分岐しました。
“`A.java
class Main{
public static void main(String[] args)throws IOException{
//テンプレ用オブジェクト
Library Sys = new Library();
//Nの受け取り
int N = Sys.readInt();
//22時台で0~9分の時用
if(N>=60&&N>=70){
Sys.out.println(“22:”+(N-60));
}
//22時台で10分以降の時用
else if(N>=60){
Sys.

元記事を表示

検査例外、非検査例外

検査例外、非検査例外

非検査例外(RuntimeException)
try-catchでエラーを捕捉しなくてもよい。
というより、むしろすべきでない。
コードの書き方で起こるもの。

検査例外(Exception配下のRuntimeException以外)
これは、必ずどこかでtry-catchしなくてはならない。
コードで防ぎようのないエラーだから。(正しくコードを書いていても起きるときには起きる。目的のファイルがない、SQLの接続がうまくいかなかったなど)

それが発生するメソッド内でtry-catchしなくてもthrowsで、呼び出し元でエラーハンドリングすることができる。

元記事を表示

IntelliJでVisual VMを使ってメモリリークを解消する

# はじめに
初めてメモリリークに遭遇したため、対処方法を勉強してみました。

# 環境
+ IntelliJ IDEA 2021.1.2 (Community Edition)
+ Windows 10
+ Java11

## メモリリークとは
Javaプログラムの実行中にJVMのヒープ・メモリが不足することにより、
OutOfMemoryエラーが発生し、プログラムの実行ができなくなる事象です。

通常であればGC(ガベージコレクション)で不要なメモリの解放を行ってくれますが、
GCで削除できないリソースが存在すると、リソースを使い果たしてしまうということがあります。

GCは不要になったオブジェクトを削除してくれますが、逆に不要扱いにならないオブジェクトがプログラムの実行のたびに増えていくと、GCで捨てられるものがないために利用できるヒープ領域がどんどん減っていきます。不要扱いにならないオブジェクトを見つけ出すことがメモリリークの解消方法と言えそうです。

# 対応方法
今回はIntelliJ公式のチュートリアルに沿って実践してみます。
https://pleiades.io/h

元記事を表示

Swingでいろいろ作ってみる

# Swingでいろいろ作ってみます

# 事前学習とまとめ

http://wisdom.sakura.ne.jp/system/java/awt/Gjava8.html

“`Java
repaint();
“`
を実行することで

1. paint()を再度呼び出し

を実行します。
背景色のぬりつぶしをなくすにはupdate()をオーバーライドして

“`Java
public void update(Graphics g) {
paint(g);
}
“`
に変更するらしい。

マウスイベントは抽象クラスMouseListenerに対し処理内容を記述すればよい。ただし、抽象クラスのためすべて定義が必要。

“`Java
public void mousePressed(MouseEvent me) {}
public void mouseClicked(MouseEvent me) {}
public void mouseEntered(MouseEvent me) {}
public void mouseExited(MouseEven

元記事を表示

Java+GradleでOpenCV(JavaCV)を使う

# 前提

Gradle を使って Java のアプリケーションを作成します。
Gradle のインストール方法、基本的な使い方などについては記載しません。

筆者の実行環境は次の通りです。
“`
$ gradle –version

————————————————————
Gradle 7.4.2
————————————————————

Build time: 2022-03-31 15:25:29 UTC
Revision: 540473b8118064efcc264694cbcaa4b677f61041

Kotlin: 1.5.31
Groovy: 3.0.9
Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM: 11.0.11 (JetBrains s.r.o

元記事を表示

[サーブレット&JSP]子供の身長予測するwebアプリケーションを作成 JAVA

#### サーブレット&jspで子供の身長を予測するwebアプリケーションを作成しました。
#### 今回MVCを完全に無視しました。なのでサーブレット側にロジック部分も記述しております。

## プルダウンから男子か女子を選択する

![スクリーンショット 2022-07-03 0.14.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675188/147b1a26-5937-69c5-9509-21aa767a844c.png)

## お父さんの身長とお母さんの身長を入力

![スクリーンショット 2022-07-03 0.14.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675188/18892aea-a01a-cdd1-1681-7a2fb1e0d165.png)

“`java:form.jsp
<%@ page language="java" contentType="text/html;

元記事を表示

等価判定のNullPonterExceptionの回避方法〜

## 目的
– Javaの等価判定でNullPonterExceptionが発生してしまう場合の、回避方法を学ぼう

## 対象読者
– Java入門者
– Javaの等価判定をなんとなくでコードを記載している
– 等価判定ってなに?って人

## 等価判定とは
複数のオブジェクトが同じであればtrue,異なればfalseとなることを言います。
似たような比較に**等値判定**がありますが、使用方法は若干違います。

### 等価判定の使用方法
オブジェクトを生成して、実際に等価判定を行ってみました。

“`java:Main.java
// 等価判定の場合
// 型:String
String s1 = “サンプル”;
String s2 = “サンプル”;
String s3 = “さんぷる”;

System.out.println(“s1,s2を比較” + s1.equals(s2));
System.out.println(“s1,s3を比較” + s1.equals(s3));

“`

“`java:実行結果
true
false
“`

###### 解説
*

元記事を表示

[Java] 列挙型・enum

### はじめに
Java学習中です
今回はenumについてまとめました

### 列挙型(Enum)とは
プログラムの中で定義する定数を拡張(列挙)し、さらに安全かつ便利にする**仕組み**のこと

### 書き方
“`java
// 通常のクラスの書き方
public class Dessert {

}

// enumの書き方
public enum Dessert {
APPLE, ICE_CREAM, CAKE, // 最後のカンマはなくてもok
}
“`
呼び出す時
(staticの定数を呼ぶときと同じ)
“`java
System.out.println(Dessert.APPLE);
System.out.println(Dessert.CAKE);

#=> APPLE
CAKE
“`

### 特徴
##### 変数への代入ok
`Dessert apple = Dessert.APPLE;`Dessert型のインスタンスが出来上がる
`System.out.println(apple);`でさっきと同じ結果

##### メソッドの引数の型に

元記事を表示

2022年版 VSCodeでJavaを気持ちよく開発する環境構築

# 背景 (自分語りなのでとばしてもいいです)

筆者は普段はPython、C++、Rust、Goを主に書いていて機械学習、数理最適化関連のアプリケーションやWebAPIの開発をしています。機械学習はPython、数理最適化はC++ or Rust、WebAPIはPython or Goというような使い分けをしています。今の会社のプロダクトの内、あまり機械学習と関係ないのにPythonで書かれているものがあり、しかもMyPyが導入されていなく、型hintも適当であまりにも可読性が低いものがあって改修しようと考えています。その際、せっかくなので今後外注もしやすいようにJavaで書き直すことも検討し、気持ちよく開発できる環境をいろいろと試行錯誤しました。

# なぜJavaなのか? (自分語りPart 2)

本当はRustで書きたいし、社内の自分の部門はこの用途でRustメインで書こうと決めましたが、SIerに今後の保守を外注することも考えるとJavaになりました。Kotlinも考えましたが、外注先がJavaしか書けない場合もありますし、何よりVSCodeにはMicrosoft社、あるい

元記事を表示

プログラミング初学者がプログラミング言語と周辺知識の概要を知るための記事

# どのような人向けの記事か
私のような、【駆け出しエンジニアの方やプログラミングに関心のある方、初心者の方】向けにどんなプログラム言語があるのかをざっくりわかるようにゆる〜くまとめたものです。また、備忘録としても投稿しておこうと考えました!

※当方も未経験エンジニアの立場で実務未経験であるため、間違いはあると思いますので適宜ご指摘いただければ幸いです。

# なぜ、この記事を記述するに至ったのか
理由としては、3点あります。
・自分自身が今後フルスタックエンジニアを目指しており、さまざまな言語や技術を習得したいと考えているから
・各言語の特徴を知ることで今後の開発等で最適な言語やライブラリ・コンポーネントへの理解が必須であると考えたから
・自分の武器を増やす上で特徴をまずはざっくり理解したいと考えたから

# 本編
ここからが本番です!自分自身が記事等で学習したものをざっくばらんに言語化していきます。気になる言語があれば、ご自身でも深く調べてみることで、どんな言語なのか実感できるはずなので是非深掘りして見てくださいね!
### 【注意点】
・言語名の横に(マークアップ言語)と記載

元記事を表示

Java Silver SE 11 対策・ポイントメモ(配列の操作・インスタンスとメソッド)

Java Silver SE 11を現在勉強中のものです。
最近やっと模擬問題で合格点を取れるレベルまでになれたので、これまでのポイントをまとめていこうと思います。
※今回は配列とインスタンス・メソッドについて

## ①配列と操作

### 配列の宣言方法

#### パターン①
大括弧とnew演算子を利用した宣言
“`java
int[] array = new int[3];

int[][] array = new int[2][2];
“`

#### ポイント

“`java
// ①大カッコの中は整数しか記入できない。
int[] array = new int[2.3]; // コンパイルエラー

// ②配列の中で変数や計算ををすることができる。
int x = 3;
int y = 2;
int[] array = new int[x * y];

/*
* ③多次元配列の場合、
* 変数宣言時の大カッコの数と、代入する側の大カッコの数が違うと
* コンパイルエラーになる。
*/
int[][] array = new int[2];
int[

元記事を表示

【Android Java】いまさら聞けないActivityとは?

## はじめに
Android Javaって何?という初学者向けの記事になります。
アンドロイド特有の`Activity`についての内容です。

仕事でAndroid Javaを使って修正、開発をしています。
業務に携わってから約半年が経ちました。

Android Javaを使うにあたって、学んだことをアプトプットしようと思い記事にしました。

エンジニアになって1年の未熟者なので暖かい目で見ていただけると助かります。

## あなたは誰?
> 現職:SESエンジニア(歴1年)
前職:営業
年齢:27歳
使用言語:Java, Android Java, C++
工程:テスト、実装(設計もやってみたい…)
好きなこと:サウナ/登山/ダーツ/ピアノ/酒/運動全般
もくもく会主催:[新宿もくもく会](https://shinjuku-realize0707.connpass.com/)

## Acyivityとは
簡単に言うと`Activity`とは、スマホでいう**一つの画面全体**のことを言います。
StreamAPIの概要

# はじめに
業務でよく使用しているStreamAPIについてまとめました。
煩雑な処理をわかりやすいコードで短く記述することができる便利な拡張APIです。
Java8以降から使用できるため興味のある方は是非試してみてください。

# StreamAPIとは
StreamAPIとは、Java8で導入された機能で、配列やCollectionなどの要素の集合に対して行う
煩雑な処理をわかりやすいコードで短く記述することができるイテレーションの拡張APIです。

# サンプルコード
説明に使用するサンプルコードを用意します。
StreamAPIには、直接的な関係はありません。
### `Tweet`クラス
“`java:Tweet.java
public class Tweet {

/** 投稿者 */
private String contributor;

/** 投稿日 */
private LocalDate date;

/** コンストラクタ */
public Tweet(String contributor, LocalDate date) {

元記事を表示

Javaの定数はコンストラクタで初期化できた

Javaの定数は変数名の前にfinalが付き、一度初期化したらあとは変更できないというものです。

1度は必ず初期化しないとコンパイルエラーになります。

“`
final int a = 1;
“`
のような初期化以外にもコンストラクタでも初期化できることを知りました。
そこでやってみたソースが以下です。
“`php:FinalFormat.java
package sample;

public class FinalFormat {

final int f;

//コンストラクタ
FinalFormat(int g){
f = g;
};

}
“`
“`php:Main.java
package sample;

public class Main {

public static void main(String[] args) {
FinalFormat finalformat = new FinalFormat(123);

System.out.println(finalformat.f);

}

}
“`
実行結果は画

元記事を表示

Log4j Append機能を使ったKafkaへログ転送

## Inspiration
Javaアプリのログからデータ分析を行うことはできるかが気になり、まずログを収集する方法について調べました。
他のライブラリも同様にできますが、初めに目についたものがLog4jだったのでできるかを検証してます。
結果はできたものの、これによってアプリにさらなる外部ライブラリ依存が発生します。

## 環境
– JDK 8 以上
– kafka-client-3.2.0
– log4j-api-2.17.2
– log4j-core-2.17.2
– log4j-iostream-2.17.2
– log4j-slf4j-impl-2.17.2
– log4j-web-2.17.2
– lz4-java-1.8.0
– slf4j-api-1.7.36
– snappy-java-1.1.8.4
– tjconsole-1.7-all
– zstd-jni-1.5.2-1

## 実装
下記のソースコードを使います。
コードについて出力するだけのロジックになります。

“`Java
package com.tutorial;

import org.

元記事を表示

Javaの開発環境を整理する(Mac+VScode)

しばらく個人PCを触ってなかったので更新します。

## やりたいこと
・Javaのインストール
・VScodeのインストール
・SpringBootのサンプルPJを動かす

使ってる機器はMacBook Air (M1, 2020)です

### Javaのインストール
最近のJDKはいくつか選択肢があり以下の記事が大変参考になります
https://qiita.com/gishi_yama/items/ee3526e7e7a922148333

JDK17を使いたかったので以下の17をインストールする
https://aws.amazon.com/jp/corretto/

“`sh
kaikusakari@kais-MacBook-Air ~ % java -version
openjdk version “17.0.3” 2022-04-19 LTS
OpenJDK Runtime Environment Corretto-17.0.3.6.1 (build 17.0.3+6-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.3.6.

元記事を表示

Mr.Nam 先生の講義要約 Chapter 3, 1-8

1강 Spring DI 흉내내기 (1)
1)변경에 유리한 코드(1) – 다형성, factory method
//변경 포인트 2개
SportsCar car = new SportsCar();
–> Truck car = new Truck();

==>

//다형성 –> 변경에 유리
//변경 포인트 1개
Car car = new SportsCar();
–> Car car = new Truck();

==>

Car car = getCar(); // getCar()메서드 하나만 고치면 됨
static Car getCar() {
return new SportsCar();
}
2)변경에 유리한 코드(2) – Map과 외부 파일

2강 Spring DI 흉내내기 (2)
객체 컨테이너(ApplicationContext) 만들기
Map map 객체 저장소
Properties에 저장된 내용을 Map에 저장
반복문으로 클래스 이름을 얻어서 객체를 생성해서 다시 map에 저장
자동 객체 등록하기 –

元記事を表示

駆け出しエンジニアのJava Silver 受験記

少し前に受けたJava Silver受験記。
参考になるかはわからないけど、いち駆け出しエンジニアの受験記録です。

# 受験時の状況

まず受験当時の状況はこちら
→Javaを勉強し始めてから2カ月弱
→勉強期間:3週間

# 勉強内容

### 試験3週間前~1週間前
受験を決意し、テキストを買い、申し込みをしたのが試験3週間前。
資格試験の勉強はなるべく短期間で効率的にやりたいという気持ちから先に試験日を決め申し込むスタイル。

ただ思ったよりエンジンがかからなくて、テキスト購入から約2週間でやっと1周終了。
というか第1・2章を解いたときに、当時の自分は、
「こんなことまで問われるのか、細かい・・・」思ってしまい、あまり勉強が進まなかった。
1周目は正解を求めず、「へえ、こんなことが聞かれるのねー-」くらいの軽い気持ちでいたほうがサクサク進めそう。
問題解いても全然当たらないから、楽観的に考えないと心折れそうだった。
ちなみに第11章までを1周した後、第12章の総合問題を解きましたが、
結果は、_28/80(35%)_
合格は6

元記事を表示

OTHERカテゴリの最新記事