JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

SpringBootでシステム起動時に独自処理を追加(ログ出力など)

# この記事はこれの続きです

https://qiita.com/waokitsune/items/a6b2f281b99135cbc5b8

# ApplicationRunnerクラスの実装

SpringBootにはApplicationRunnerという名前の抽象クラスが用意されています。
これを実装するとシステム起動時に独自処理を追加できます。

“`java:NekoApplicationRunner.java
package com.example.demo;

import java.net.InetAddress;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Component
p

元記事を表示

Javaおすすめの書籍(2024)

## 概要
私がこれまでに読んだJava関連書籍からおすすめのものを抜粋して分類・評価しました。
> **抜粋2冊**

## 本ページの見方
点数は、下記の基準で5段階に★を付けました。
(抽象的で平易な場合)
> **具体的 ★★★★★ 抽象的**

> **平易 ★☆☆☆☆ 難解**

# おすすめの書籍一覧
## 文法解説書
[『Javaプログラマ Silver SE11 スピードマスター問題集』](https://www.amazon.co.jp/%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%91%E6%9B%B8-Java%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E-Silver-%E3%82%B9%E3%83%94%E3%83%BC%E3%83%89%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E5%95%8F%E9%A1%8C%E9%9B%86-%E8%A9%A6%

元記事を表示

Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionExceptionの解決方法

### はじめに
AndroidStudioで開発しているとたまに以下のようなエラーが発生してビルドが通らなくなったりします。

“`
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
“`
そんな時に僕が試している解決方法を備忘録として残しておきます。

### キャッシュの削除

File → nvalidate Cashesを選択。
![スクリーンショット 2024-04-14 15.56.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113615/1b0a2008-7d1a-aa35-e5b2-12ab2e5a5deb.png)

キャッシュをクリアする項目を選択してから

元記事を表示

【ChatGPT】30分でAndroidアプリ作ってみた

## はじめに
はじめまして、記事主は2023年8月からAndroidエンジニアとして働いています。
最近個人開発を始めようと思い、Androidの開発環境を整えてみたのですが、ふとChatGPTに作成依頼したらどこまでのものができるのか興味が湧いたので、試してみたいと思います。
使用する言語はKotlinになります。
また、今回作成するアプリは簡単な**ToDoアプリ**です。
それではいきましょう。

## まずは雑に依頼してみる
まず依頼した内容がこちら

![スクリーンショット 2024-04-13 15.03.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113615/cb7fe4b9-a970-420f-81c2-bcb2a5582141.png)

なんとも雑ですね。回答がこちら

### MainActivity

“`kotlin
import android.os.Bundle
import android.widget.ArrayAdapter
import androi

元記事を表示

ジェネリクスのワイルドカード

## ジェネリクスとは
異なるデータ型に対して同じ処理を行うための仕組み。
→データ型ごとにメソッドを作る必要がなくなる

## ワイルドカードとは
より柔軟に扱うための構文。
IntegerはNumberのサブクラスなので
“` java
Number num = Integer.valueOf(10);
“`
↑はOK
“` java
List list = new ArrayList();
List integerList = new ArrayList();
list = integerList;
“`
↑はNG

変数には親クラス型で宣言したものに、サブクラスのインスタンスを格納することができる。
ジェネリクスを使ったものについては、サブクラスのインスタンスを格納することはできない。

### 非境界ワイルドカード型
あらゆる型のオブジェクトを受け入れる型。
``と記載する。
“` java
List myList = new ArrayList<>();
List

元記事を表示

最近最も人気のあるプログラミング言語

![lamp-3219397_1280.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3769164/36cbee7b-130f-cdd9-2196-e4b10deacecb.jpeg)

近年、プログラミングの需要は急速に増加しており、多くの人々がこの分野でスキルを磨くことに関心を持っています。その中でも特に人気のあるプログラミング言語は何でしょうか?以下に、最近最も人気のあるプログラミング言語をいくつか紹介します。

Python(パイソン):
Pythonは、そのシンプルな構文と豊富なライブラリのおかげで、初心者から経験豊富な開発者まで幅広い層に人気があります。データサイエンスや人工知能(AI)、Web開発など、さまざまな分野で広く使用されています。

JavaScript(ジャバスクリプト):
JavaScriptはWeb開発に欠かせない言語であり、フロントエンドおよびバックエンドの開発に使用されます。ReactやAngularなどのフレームワークやライブラリの登場により、JavaScript

元記事を表示

SpringBootでApachePOIを使ったxlsxに印刷設定

# この記事はこれの続きです

https://qiita.com/waokitsune/items/be5f171ed781dfc3980e

# 概要

xlsxの生成とダウンロードは以前の記事でやってるので説明は省略。
印刷設定がメインです。

『全ての列を1ページに印刷』は試行錯誤して、想定通りになるまでけっこう時間かかったので、そのノウハウも書いてます。

# Controllerクラス

“`java:DemoController.java
package com.example.demo;

import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.PageMargin;
import org.apache.poi.ss.usermodel.PrintSetup;
import o

元記事を表示

SpringBootでApachePOIを使ったxlsxに列幅と行高さ設定

# この記事はこれの続きです

https://qiita.com/waokitsune/items/4bb38434e398dde52e7b

# 概要

xlsxの生成とダウンロードは以前の記事でやってるので説明は省略。
列幅と行高さの設定がメインです。

# Controllerクラス

“`java:DemoController.java
package com.example.demo;

import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util

元記事を表示

SpringBootでApachePOIを使ったxlsxにセル書式設定

# この記事はこれの続きです

https://qiita.com/waokitsune/items/6f7d8c87e330c3c4f054

# 概要

xlsxの生成とダウンロードは前回の記事でやってるので説明は省略。
枠線、背景色、フォント、文字揃え位置などの書式設定についてがメインです。

# Controllerクラス

“`java:DemoController.java
package com.example.demo;

import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.FillPat

元記事を表示

CentOS7でJenkinsを建てる

# はじめに
CentOS7でなにか作りたかった。
業務ではいくらでもつかっているJenkinsを建てたことがなかった。
ちょっと作ってみようと思う。

# 前提
firewalld,selinux無効化済みのCentOS7サーバが作ってある前提。

# Javaのインストール
JenkinsはJavaで動くのでまずJavaをインストールする。

“`ruby:Javaのインストール
yum -y install java-11-openjdk
“`

# wgetインストール
Jenkinsのリポジトリをダウンロードするためにwgetをインストールする。

“`ruby:wgetインストール
yum -y install wget
“`

# Jenkinsリポジトリインストール
Jenkinsのリポジトリをインストールする。

“`ruby:Jenkinsリポジトリインストール
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
“`

# Jen

元記事を表示

(staticでない)インナークラスにstaticなメンバを定義できない???

Java Gold11の勉強をしていて分からない設問があった。
(使用している参考書は[黒本](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5Java-SE-11-Gold%E5%95%8F%E9%A1%8C%E9%9B%86-1Z0-816/dp/4295012564)です。)

下記のコードを実行するとどうなるか?
“`java:
public class Outer{
void test(){
Inner.message = “Hello, Java”;
}

class Inner{
private static String message;
public void test(){
System.out.println(message);
}
}

public static void main(String[] args){
Outer outer

元記事を表示

【試し】SpringプロジェクトをDocker上で起動させてみる

## やること
### Springプロジェクトをdockerコンテナ上で動かす

#### 使用するもの
– Springプロジェクト(DB接続なし、簡素なものがよい)
– 例:「ファイルダウンロードアプリ」
– https://github.com/yusuke/text-file-download
– 起動させて、アクセスするとテキストがファイルダウンロードするだけ
– Docker(ver 20.10以上)

**※注意**:勉強記録として失敗した内容も残しています

## 実施記録
こちらの記事を参考に実施
**SpringBootのアプリケーションをDockerコンテナで動かす**

https://qiita.com/ke_suke0215/items/1b0128c140dd051b5993

### 手順
1. DockerFileの作成
1. GradleでJarファイル作成
1. Dockerイメージをビルドし、コンテナ作成 `docker build`
1. コンテナ起動 `docker run`
1. アプリ実行

#### Docke

元記事を表示

JVM – Native Method Interface (JNI)

Java Virtual Machine(JVM)は、Javaプログラムが異なるプラットフォーム上で一貫した動作をするための環境を提供しますが、すべてのタスクをJavaのみで実行することが最適とは限りません。パフォーマンスの要求が高い、またはプラットフォーム固有の機能にアクセスする必要がある場合、JavaプログラマーはNative Method Interface(JNI)を利用して、ネイティブプログラミング言語(主にCまたはC++)を使用してJavaアプリケーションを拡張することができます。

![jvm_architecture_hotspot.drawio (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260307/a5c76eb7-dfdb-bd73-4260-90c09d047e87.png)

## JNIとは

JNIは、Javaコード内からネイティブメソッド(CやC++で書かれたメソッド)を呼び出すためのプログラミングフレームワークです。これにより、JavaアプリケーションはOS

元記事を表示

【Java】ConsumerとかSupplierってなに?

## はじめに
久しぶりにJavaに触れたら、Consumer\とSupplier\が分からなかったため、復習を兼ねて本稿にまとめます。

## 要約
– ConsumerやSupplierは関数型インターフェース
– 関数型インターフェース:abstractメソッドが1つだけ含まれているインターフェース
– Consumerインターフェース:引数を受け取ってその引数を使った処理を実行する
– Supplierインターフェース:引数を受け取らずに値を戻す
– ほかにも様々な関数型インターフェースがある

## 関数型インターフェースとは

Javaの公式ドキュメントでは以下のように記載されています。

> A functional interface is an interface that is not declared sealed and has just one abstract method (aside from the methods of Object), and thus represents a single function contract.
Thi

元記事を表示

【Java】バナナのナス,バナナスを作れるアプリを制作しました.

### バナナスとは
本記事ではバナナのナス,バナナス.コロンビアのアールグレイ,コロンビアールグレイのような言葉遊びでできる言葉のことを総称してバナナスと読んでいます.

### 環境
WSL2にUbuntuの22.04を乗せて,VSCodeをリモートで開いて開発していました.
Java17で開発しました.特にMavenとかは使っていません.(この程度のアプリを作るためにそこまで勉強したくなかった.)

### 使用したライブラリ
[ICU4J](https://icu.unicode.org/download/74)
ひらがなとカタカナの区別をなくすために導入しました.

### 苦労した点
初めてGitを活用して開発したことと,外部のライブラリを使うことも初めてだったので,そのあたりに苦労しました.また,バナナスの肝である末尾と先頭の文字照合の部分を実装するのも少しだけ苦労しました.

### 感想
とても面白かったですが,自分の適当な着想から制作を始めただけなので,ある程度できてしまうとモチベーションが落ちてしまうなと感じました.
最初は「JavaF

元記事を表示

Dockerコンテナ化したJavaアプリのヒープのサイズ調整オプションの検証

# はじめに

こんにちは。私は弊社で企画・運営している、Dot to Dotという個人の同意の元に様々なデータを連携することができる分散型データ連携プラットフォームの開発・保守を担当しています。
Dot to Dotではデータ連携をしたい事業者向けに、データ連携用の通信モジュールを、Spring Bootを使用したJavaアプリケーションとして作成したDockerイメージ形式で配布しています。

昨今ではDockerでアプリケーションを実行するのが当たり前の風潮になりつつありますが、実際に本番で適用する際に必要なチューニングの話はあまり聞かないかと思います。
そこで本記事では、JavaアプリケーションをDockerコンテナで運用する場合に必要な、ヒープのチューニングについて説明します。これからJavaアプリケーションをDockerコンテナ化して運用したい人や、すでに運用中でもヒープチューニングしておらずメモリが効率的に利用できていない人には参考になるかと思います。

# まとめ
* ヒープサイズを固定値で指定する`-Xms`や`-Xmx`は使わない
* Java 8u191およびJ

元記事を表示

[Google Tasks API(V1)] Javaでタスクリスト内のタスクの順序変更や親タスクを設定する

Google Tasks API V1(Java)を使用して、
タスクリスト内のタスクの順序変更や親タスクを設定する方法
についてご紹介します。

なお、このAPIでは同一タスクリスト内のみ移動が可能です。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Tasks API(V1)] JavaでTasks APIを使う](https://qiita.com/doran/items/8a3b7e24d9e0417a7f9a)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[タスクを移動](#1-タスクを移動)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[親タスクの指定](#2-親タスクの指定)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|

## 1. タスクを移動
指定したタスクを指

元記事を表示

【Android/Java】OkHTTPでDigest認証

## やりたいこと
AndroidアプリからDigest認証で通信したい
OkHTTPを使用することとしたらSingletonで作らないと、メモリを食いまくるようなので、それを意識する

## Step1.実装方法
#### app¥build.gradle
~~~gradle
android {
:(略)
}
dependencies {
:(略)
implementation ‘com.squareup.okhttp3:okhttp:4.11.0’
implementation ‘io.github.rburgst:okhttp-digest:3.1.0’
}
~~~~

#### AndroidManifest.xml
~~~xml

元記事を表示

【Android/Java】Bluetoothペアリング機器の削除(任意のもの以外)

## やりたいこと
製品に付随しているBluetooth機器(例えば、AndroidTVに付随しているBluetoothリモコン)以外のペアリング機器を削除したい。
ネットカフェのPCなど、不特定多数の使用が想定される状況で、利用者がペアリングした機器を、利用終了後に削除したいのが目的での調査メモ

## Step1.実装方法
#### AndroidManifest.xml
~~~xml



【Android/Java】アプリ間データ共有 その2(Android11)

## やりたいこと
アプリ間でデータの共有を行いたい
片方のアプリがプロセスKillされている状態でもデータの参照を行えるようにしたい

以前、非推奨のSharedUserIDを使って実現したが、推奨、かつ簡単に行える実装(SystemProperties)をみつけたので備忘録

## Step1.SystemPropertiesとは
Androidのデバイス動作や設定を制御するキーと値のペアが格納されているもの。
#### ADBコマンド例
~~~cmd
# デバイスのモデル名をシステムプロパティから取得する
adb shell getprop ro.product.model
~~~~

## Step2.実装方法
### SystemPropertiesへの書き込み
任意のキーを指定して、値を書き込む
~~~java
public void writeSystemProperties(String key, String val) {
try {
@SuppressLint(“PrivateApi”)
Class SystemProp

元記事を表示

OTHERカテゴリの最新記事