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

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

Spring BootでExcel作成

## 概要

ApachePoiを利用してExcelファイル出力を行う。
通常はAbstractXlsxViewを継承したクラスを作成して、Excel出力を行う。
ただこの場合、レスポンスを返すときにExcelを作成しているので、出力に失敗した場合にController上でハンドリングできない。
以下では、AbstractViewを継承して、一部AbstractXlsxViewを踏襲したクラスを作成する。
またxlsにも対応させ、テンプレートのExcelファイルがある場合はこれも利用できるようにして、汎用的なクラスにしている。

## AbstractXcelView

“`Java
public abstract class AbstractXcelView extends AbstractView {

protected String templateFile;

private Workbook workbook = null;

public void createWorkbook(Map model, HttpServletReque

元記事を表示

FutureオブジェクトをCompletableFutureオブジェクトに変換する

Java5で追加されたFutureクラスは、未完了かもしれない非同期処理の結果を保持するクラスですがget()メソッドがあって完了までブロックするだけという低機能なものです。.thenなんちゃら() みたいな、完了時のコールバックを与えるということができません。これは非常に不便。

完了時のコールバックを .then 系メソッドで与えられるようになったのはJava8で登場したCompletableFutureクラスです。

では、CompletableFutureのように完了時コールバックを差し込みたいのに手元に受け取ったのがFutureオブジェクトだった場合はどうすればいいでしょう?

こんな簡単なコードで変換できます。

“`java
Future f = …
CompletableFuture cf = CompletableFuture.supplyAsync(f::get);
“`

元記事を表示

JavaSilverの試験で多分問われない演算子の話①

# はじめに
JavaSilverの黒本や紫本で下記のような図があり、個人学習でも実務でも出会ったことがなかった演算子があったのでまとめていきます。

![001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639462/749c9147-292d-bdcf-09d2-d89829ce2554.jpeg)

ちなみにJavaSilverの試験対策として問題をいくつか解きましたが、
筆者は本記事で紹介する演算子が登場する問題は見たことがありません。
そのため、知らなくても合格はできるはず。

# ビットを反転する演算子「~」
単項演算子のひとつ。
ビットを反転してくれます。
基本情報を学習したことがある人は思い出して欲しいのですが、
ビット反転とは「0」のものを「1」に。
もしくは逆のことを行います。
例えば、「1010」なら「0101」になります。

“`java:Hanten1.java

public class Hanten1
{
public static void ma

元記事を表示

【Android Studio】コピペで使えるWebViewの導入方法

# はじめに
Android StudioでWebViewを使いたいけど、使い方がよくわからないという人向けにコピペで使えるWebViewの導入方法を作成しました。本記事通りに作業を進めることで、Androidアプリ上でGoogle.comを開くことができます(言語はjavaを使用しています)。

# 導入方法

New Project -> Empty Views Activityを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3287818/02601b1b-4ff8-d316-763e-f9f00580fa16.png)

以下の通りプロジェクト作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3287818/d7b2b161-91c9-a5bd-de95-cb8f7ccfa67e.png)

res/layout/activity_main.xmlを以下の通り編集(画面上部

元記事を表示

SpringBoot でファイルダウンロード

SpringBootにて、ファイルをダウンロードするユーティリティメソッドを作ったのでメモとして残します。
引数は、ダウンロード対象のファイルパス、出力ファイル名、HttpServletResponseです。
Controllerの引数でHttpServletResponseを読み込むことで、これを利用することができます。

“`Java
/**
* ファイルダウンロード
*
* @param originFilePath ダウンロードファイルパス
* @param outputFileName 出力ファイル名
* @param response HttpServletResponse
*/
public static void downloadFile(String originFilePath, String outputFileName, HttpServletResponse response) {
String CONTENT_DISPOSITION_FORMAT = “attachment; filename=\”%

元記事を表示

初めてのアプリ製作過程をQiitaに記録していく

## はじめに
9月からJavaをProgateで学び始めた30代の初学者です。
目標はエンジニアデビューですが道のりは遠く険しそうです。
## 9月に学んだこと
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569128/f3422bd8-12c3-d77a-8a5a-d100dae975ee.png)

9月1日から始めたProgateのjavaコースを5日程で終えた後は、[スッキリわかるJava入門](https://amzn.asia/d/665RcEN “スッキリわかるJava入門”)を読みながら[北ソフト工房様](https://kitako.tokyo/lib/JavaExercise.aspx “Java 練習問題集”)のJava 練習問題集を一通りやりました。
その辺りで明らかに成長速度の鈍化と何をすれば伸びるのかわからなくなり、paizaラーニングでCランクの問題を解きながら、Progateの他の基礎的な講座を並行して受けることにしました。

## 学んだProgateの講

元記事を表示

JUNITテスト作っといてと言われたら…

## この記事の対象者
* 環境がPJ側ですでに用意されている
* JUnit未経験/JUnit初心者
* JUnitでテストをするってことは分かるけど、どうコーディングすればいいかわからない

### あなたが考えるべき流れ
#### 1. テスト対象のメソッドを理解しよう
 例えばテスト対象のクラスがServiceImplだった場合。
 ServiceImplには、呼ばれるべきpublicな __メインメソッド__ があり、その中で実行される __外部メソッド__ や __privateメソッド__ があるはず。

 テスト観点は
 ”__メインメソッド__ が __外部メソッド__ の結果に左右されず正常終了し、かつ、想定通りの異常終了をするか”
 である。
 なのでまずは動作を確認すべき __メインメソッド__ がどれであるかを把握しよう。

#### 2. 得たい結果を把握しよう
 JSON、ResultCode、インスタンス…etc
 テスト実行後にどのような結果が返れば終了か、文字列系であればどこかに控えておこう。

#### 3. MOCK(モック)とは何か知ろ

元記事を表示

spring

# Spring BootにおけるUTのプラクティス

## `@SpringBootTest`の弊害

## UTにおけるテストスコープの候補

元記事を表示

Oracle CloudWorld 2023探訪記

# はじめに
はじめまして!NTTデータの津野です!
今回初投稿になりますが、10月に現地参加した**Oracle CloudWorld 2023**の模様をお伝えします。
現地の雰囲気を知りたい方や来年以降参加される方の参考になればと思います。

※本記事はサービスや技術の話より雰囲気を中心にお伝えしています。
 発表されたサービスなどを知りたい方は以下のサイトなどを見てみてください。

https://blogs.oracle.com/oracle4engineer/post/ocw2023-ja

# Oracle CloudWorldとは
Oracle CloudWorld(OCW)とは、Oracleが毎年開催する最大規模のグローバルイベントです。今年は9月18日~21日の4日間、アメリカ・ラスベカスで開催されました。
キーノートを含む約1200のセッションや展示でOracleの最新情報が発信され、世界中から4万人以上、日本からも300人以上が参加したそうです。

https://www.oracle.com/cloudworld/

# ラスベカスへの道のり
日本からラスベカ

元記事を表示

JacksonでCSV書込み

CSVファイル作成のユーティリティメソッドを作ったのでメモとして残します。
引数には出力クラス、ファイルパス、追記フラグ、クォートフラグ(ダブルクォーテーションのありなし)、改行コードを用意しました。

“`Java
/**
* CSVファイル書込み
*
* @param CSV出力クラス
* @param filePath ファイルパス
* @param csvList CSV出力リスト
* @param appendFlg 追記フラグ
* @param quoteFlg クォートフラグ
* @param lineSeparator 改行コード
*/
@SuppressWarnings(“unchecked”)
public static void writeCsv(String filePath, List csvList, Boolean appendFlg, Boolean quoteFlg,
String lineSeparator)

元記事を表示

Windows 11 への Java 21 のインストール

「Java」は無料で使えるプログラミング言語です。Javaは企業アプリケーション、ウェブアプリケーション、モバイルアプリケーション、組み込みシステム、大規模なデータ処理など、さまざまな分野で利用されています。ここでは 18 歳の新入社員向けに Java のインストール方法を紹介します。

## Java を使う目的
Java は以下のような用途で使われます。

### デスクトップアプリケーション開発
Java は Windows、macOS、Linuxなどさまざまなプラットフォームで利用できます。それぞれの環境でデスクトップアプリケーションを開発するためのツールとして使用できます。

### モバイルアプリケーション開発
Android アプリケーションの開発に Java が広く使用されています。

### ウェブアプリケーション開発
Java はサーバーサイドプログラミング言語として広く使用され、大規模なウェブアプリケーションやサービスを構築するために利用されます。

## 主要な Java のインストーラ
Javaはオラクル社を中心に開発と保守が行われていますが、他の会社も異なる

元記事を表示

[GCP] Operations 機能x実装

# GCPのOperationsの概要と機能

GCP(Google Cloud Platform)のOperationsは、クラウドサービスの監視、管理、トラブルシューティングに用いられるツールです。Operationsを使用することで、アプリケーションやインフラストラクチャの健全性とパフォーマンスを維持し、サービスの可用性を向上させることができます。

Operationsには以下のような機能があります。

## 1. ログの監視と分析
Operationsは、サービスやアプリケーションのログをリアルタイムに監視し、集約して表示します。さまざまなログソース(例:VMインスタンス、データベース、ネットワーキング)からのログを収集し、分析することで、重要な情報やエラーを素早く発見することができます。

## 2. ダッシュボードの作成
Operationsでは、カスタムダッシュボードを作成することができます。ダッシュボードには、重要なメトリクスやログデータを配置し、サービスのパフォーマンスをリアルタイムで可視化することができます。これにより、アプリケーションの動作状況を把握し、適切な対

元記事を表示

Java 言語仕様・JVM仕様のバージョンごとの差分を見れるページを作りました。

世界 30 億の Java エンジニア向けに、Java 言語仕様・JVM仕様のバージョンごとの差分を見れるページを作りました。

* [The Java Language Specification diffs](https://github.com/YujiSoftware/java_spec_diff)
* [The Java Virtual Machine Specification diffs](https://github.com/YujiSoftware/jvm_spec_diff)

ぜひご利用ください!

# なにこれ?

Java の各バージョンごとの言語仕様・JVM仕様はこちらのページで公開されています。
[Java Language and Virtual Machine Specifications](https://docs.oracle.com/javase/specs/index.html)

ただ、バージョンごとの変更点がありませんでした[^diff]。
そこで、各ページからテキストを抜き出して[^text]、GitHub 上で差分が見れるようにしました

元記事を表示

【Java Silver試験関連】クラスの継承とオーバーライド どのメンバが呼び出されるのか

この間、Java SE 11 Programmer I (1Z0-815-JPN) 試験を受けて合格しました。
試験範囲でややこしい部分があったので、どういう場合にどのメンバを呼び出すのかまとめました。

## クラスの継承の基本
まず、クラスの継承の基本です。以下のように`extends`をつけるとクラスが継承できます。
“`java
// 親クラス
class Parent {}

// 子クラス。Parentクラスを継承したChildクラス
class Child extends Parent {}
“`

基本的には子クラスには親クラスのメンバが引き継がれます。
(private修飾子がついているメンバは引き継がれません。
また、修飾子なし(デフォルト)の場合、パッケージが異なると引き継がれません。)

## オブジェクト生成の時の挙動
子クラスのオブジェクトは、親クラスとその差分のオブジェクト両方を合わせて子クラスのオブジェクトとしています。
子クラスのオブジェクトを生成するとき、親クラスのオブジェクトを生成してから差分のオブジェクトが生成されます。つまり、親クラスのコン

元記事を表示

SpringContainerを使った Singleton

Singleton自体は大丈夫だが、Springで使用するには以下のような問題点があった。
1. Singletonパターンを具現するコード自体が多く入る。
2. 依存関係上、クライアントが具体クラスに依存し、DIP、OCPに違反する。
3. 内部属性を変更したり初期化したりすることは難しい。
4. private生成者で子供クラスを作るのは難しい。

# Spring Container

以前のコード

“`java
package hello.hellospring.singleton;

public class SingletonService {

// 1。 static領域にオブジェクトを1つだけ生成しておく。
private static final SingletonService instance = new SingletonService();

// 2。 publicで開いてオブジェクトインスタンスが必要な場合、このstaticメソッドを通じてのみ照会することが

元記事を表示

IOCとDI

# IOC #
– Inversion of Control
– 既存のプログラムは、クライアント実装オブジェクトが自ら必要な実装オブジェクトを生成し、接続し、実行した。 一言で言って、実装オブジェクトがプログラムの制御フローを操作した。
– **AppConfigは制御フローに対する権限をすべて持って行き、具現オブジェクトは自分のロジックを実行する役割だけを担当する。** つまり、実際にどの実装オブジェクトが実行されるかクライアントは知らない。

# DI #
– Dependency Injection
– アプリケーション実行時点(ランタイム)に外部から実際の実装オブジェクトを生成し、クライアントに伝達してクライアントとサーバの実際の依存関係が連結される。

元記事を表示

ABC326A~Fの解答[Java]

## はじめに
今回はコンテスト中にEまで、コンテスト後にFまで解いたのでそれを載せようと思います。

なお、僕のライブラリは[提出結果](https://atcoder.jp/contests/abc326/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)よりご確認ください。
では、見ていきましょう。

## A – 2UP3DOWN
問題文は[こちら](https://atcoder.jp/contests/abc326/tasks/abc326_a)

問題文で指定されている範囲か判定して解きました。
“`A.java
final class Main {

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

元記事を表示

【解決】Failed to find Build Tools revision 34.0.0 rc3 

javaプロジェクトとkotlinプロジェクトを統合させるため、環境構築を行なっていた。

kotlinのバージョンを上げたところ

Failed to find Build Tools revision 34.0.0 rc3 のエラーが出た。

Build-Toolsの34.0.0 rc3というバージョンがインスールされていないことが原因らしい。

Tool>SDK Manager>Language&Frameworks>Android SDK>SDK Tools

と開いていって、必要なBuild-Toolsのバージョンにチェックを入れてOKでインストール。

![名称未設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3562838/533bb92a-d7ee-9ced-8f76-083928ca9a72.png)

無事エラー解消;

元記事を表示

Javaのデータ構造の選定でいつも迷ってしまう。

いろいろあるからね、しょうがないよね?

:::note warn
注意
* 当記事では、私が普段よく使うデータ構造の話だけをしています。当記事で触れられていない技術もこの世にはたくさんあります。
* 当記事には「これはあまり使わない」や「こうすればよさそう」といった個人的見解が多く含まれていますが、これは普段私がコーディングしている現場での話であり、私にとって無用なものも私以外にとっては有用かもしれません。
:::

# List(リスト)

* **ArrayList**
* いつものやつ。
* **LinkedList**
* 連結リストなので先頭要素のremoveとかが高速、だがあまり使わないかも。

配列に慣れちゃうと、`list.add(5, “hoge”);` みたいな感じで途中挿入できることを忘れがち。

# Set(集合)

* **HashSet**
* 高速。普段はこっちを使

元記事を表示

【COBOL:Java対応チートシート】Java開発者が読み解くCOBOL

# はじめに

Javaの開発者がCOBOL開発者と会話する際の共通言語を整理したい
「COBOLのコレはJavaでいうとコレだよね」みたいな説明をする。

## 想定読者
– Javaの技術研修を受けたのに、COBOLの現場にアサインされた方
– COBOL->Javaのマイグレーション案件にアサインされたJava経験者の方
– JavaもCOBOLも扱う現場担当。両方の現場担当とコミュニケーションをとる方

## お願い?
– 実務経験者のみなさま
– 間違いや改善についてお気づきの点がございましたら、コメントいただけると嬉しいです
– それぞれの言語の専門家からのご意見をお待ちしています
– COBOLの学習が必要な方
– こういうカテゴリでもまとめてほしいなど、コメントいただけると嬉しいです
– 順次、追加していきたいと思います

# COBOLとは

COBOLは、ビジネスアプリケーションを目的としたプログラミング言語の一つです。

### どのような背景から登場したのか?
COBOLは1959年にアメリカ国防総省の支援を受けて開発されまし

元記事を表示

OTHERカテゴリの最新記事