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

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

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

元記事を表示

DAO(Data Access Object)

### DAO(Data Access Object)

1. **DAO**とは?
データにアクセスするためのオブジェクト。DatabaseにセーブされたデータをCRUDするために作られ、使われる。DBテーブルごとに1つのDAOを作成する。

2. **分離**
Controllerが直接DBにアクセスすることもできるが、複数のコントローラがDBに直接アクセスすると重複メソッド作業が何回も行われる可能性が100%に近い。ここで重複メソッドを分離して別途のオブジェクトにしたのがDAOだ。
(1) 階層の分離:DAOは永続階層(Persistance Layer)と言われ、DBに接近する役割をする。それに反してコントローラは表現階層(Presentation Layer)と言われ、データを表示する役割をする。
(2)関心の分離:コードの分離と同時に役割を分離して関心の分離になるとも言える。こう分けられたことで、作業効率が高まり、メインテナンスも容易になる。

“`mermaid
graph TD;
Controller1–>DAO;
Controller2–>

元記事を表示

【初めてのAndroidアプリ開発】気温変化の通知(暫定版)

はじめに

某所にてJavaプログラミングを学んだので、何か対外的にアピールできる成果があればと思い、ある程度実用的なAndroidアプリ開発を行なった。

※内容の不備や著作権上の問題などございましたらコメントなどでご指摘いただけると幸いです。

アプリの目的

春先から日ごとに気温が不安定で、前日と同じような服装でも暑すぎる・寒すぎると感じることが多かった。一方で天気予報を見る習慣はあまりなく、とりわけ忙しい朝に「予報の確認→服装の調整」の流れを毎日実行するのは難しく感じてしまう。
そこで、スマホに毎朝自動で今日の気温と前日比が通知されれば、さすがに服装調整に意識を向けられるのではと考え、初めての開発としてその目的に適うアプリを作成を目指した。

動作の概要

  1. 設定画面(MainActivity)から都道府県・通知時間を設定
  2. 都道府県(ListView_PrefSetting)、通知時間(ListView_TimeSetting)はそ

元記事を表示

業務見える化ー(nobuglady-network)

# :izakaya_lantern:nobuglady-network:izakaya_lantern:

![](https://img.shields.io/badge/license-Apache2.0-yellow)

### :blue_book: 使い方

#### 導入

FlowRunnerから継承されるクラスを作成して、フローの構成ファイルと同じフォルダに格納することが必要です。

MyFlow1.java

“`
public class MyFlow1 extends FlowRunner {

@Node (label= “a” )
public void process_a() {
System.out.println( “processing a” );
}

@Node

元記事を表示

[Java] 内部クラスについて まとめ

### はじめに
Javaの学習を始めたのでアウトプットとして投稿しています
今回は内部クラスについてまとめました

### 内部クラスとは?
名前の通りクラスの中にクラスがあり、ネストしているような状態のクラスのこと
通常は1ファイルの中に1クラスを定義するが、言語仕様上は1ファイルの中にいくつもクラスを持つことが出来る

クラスAの中に内部クラスB、の中に内部クラスCを持つ
“`java
public class A {
public class B {
public class C {
}
}
}
“`
これは1ファイルに複数のクラスを持っているだけで内部クラスではない
“`java
public class A {

}

class B {

}
“`

### 使い方
クラス同様インスタンス化ができるが制約もある
– staticクラスは、クラス外から直接インスタンス化できる
– 非staticクラスは、外部クラスのインスタンスからのみインスタンス化できる
(非staticな場合のみ内部クラスと呼ぶ、それ以外は「ネスト

元記事を表示

APIリリースの手順(1)

# Eclipceを使用したJarファイルの生成

## 1. Pleiadesのセットアップ
### 1-1. Eclipceのインストール

 下記URLよりEclipceをインストールする
  https://mergedoc.osdn.jp/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2297939/c96ee219-ce18-6a5c-5e2

元記事を表示

Javaで実装されていたシステムをRubyに移行した話

https://tech.speee.jp/entry/java-to-ruby

元記事を表示

OTHERカテゴリの最新記事