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

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

【Java】IT未経験でJavaをやってみたい方にオススメの書籍

# はじめに
Java初心者のころにいろいろな本に手を出して苦戦したので、IT未経験でJavaをやってみたい方の役に立つようなオススメ書籍と読む順番をまとめてみます。
世の中こういう記事は大量にあるので、まあ誰かの役に立てば。。

# Java
初心者におすすめのタイトルを、読む順番に書いていきます。
内容については本の公式ページを見ればわかると思いますので、超個人的なコメントと共に書いていきます。

## 独習Java
https://www.shoeisha.co.jp/book/detail/9784798151120

はじめてJava言語を学ぶのにまず読むといいんじゃないかなと思います。
最初はソースコードを書く開発環境の用意をどうすればいいか分からない、そもそもその考えに至らない(私はそうでした)と思いますが、初めのイントロダクションで開発環境の使い方を説明しているので、書いて身につける環境がそろいます。
数年IT業界に従事して思ったんですが、技術者は知ってるだけでなく使えないと意味がないと思うので。。
この本で開発環境をそろえて、自分でコードを書いて動かしながら学習を進め

元記事を表示

日本語プログラミング言語 なでしこ3 Java C# で関数を介した整数カウントアップ実行時間を仲良く競う

# はじめに
日本語プログラミング言語 なでしこ3 とJava C# とで関数呼び出しを介した整数カウントアップの反復実行時間を仲良く競い合わせてみます。いわゆるファンクションコールのオーバーヘッドとはどんなものなのかを切り分けます。なでしこワンはレガシーかもしれませんのでなでしこ3の検証を急ぎましたので、関数呼び出しが最初の記事となります。

https://qiita.com/advent-calendar/2023/nadesiko

## この記事内容の作業環境
Windows11 Pro 22H2
VSCode(Visual Studo Code) 1.78.2
java Eclipse Adoptium jdk-20.0.2.9-hotspot
C# 10 dotnet-sdk-6.0.404-win-x64
nadesiko version 3.4.5 nadesiko3win32-3.4.5
Node.js v20.10.0.
CPU Intel(R) Core(TM) i3-5005U 2.00 GHz

## この記事内容の保証
※この記事の実行結果は参考情報です

元記事を表示

VSCodeでJavaの開発環境をサクッと構築する

:::note info
本記事は新人向け社内研修資料の一部として作成したものです。
一部冗長な説明をしている箇所がありますがあしからず。
:::

## はじめに
javaの開発には、**テキストエディタ**と**javaのコンパイラ**と**javaの実行環境**が必要です。

どういうことかというと、例えばあなたが知らない国の舞台の脚本を任されたとします。そのとき、まずはあなたは自国語で台本を作成する必要がありますね。そして台本を作成したら、それを通訳に翻訳してもらって翻訳版の台本ができあがります。そして翻訳版の台本を知らない国の劇団に渡せば、知らない国で舞台が行われます。[^1]
上記の
– 自国語で台本を作成
– 通訳に翻訳してもらう
– 翻訳された台本をもとに舞台が行われる

がそれぞれ

– テキストエディタでソースコード作成
– コンパイラでソースコードをコンパイル
– コンパイルされたファイルを実行環境で実行

にあたります。

軽くそれぞれについて説明をすると、

テキストエディタはjavaのソースコードを作成するのに使います。
windowsユーザはメモ帳、mac

元記事を表示

Amazon CloudWatch Application Signals 徹底解説

## はじめに
こんにちは、Datadog Japan で Sales Engineer をしている AoTo(@AoTo0330) です。

この投稿は **[Japan AWS Jr. Champions Advent Calendar 2023](https://qiita.com/advent-calendar/2023/jr-champions) 3日目**の記事です。

AWS re:Invent 2023 で発表された多くの内容から、Observability や APM というキーワードに関連する重要な新機能を今回はご紹介します。その名も **Amazon CloudWatch Application Signals** です!

https://aws.amazon.com/about-aws/whats-new/2023/11/amazon-cloudwatch-applications-signals-observe-preview/

## A

ForwardではなくRedirectをした場合

# ForwardではなくRedirectをした場合
1~5までは[SpringMVCの大きな流れ](https://qiita.com/eunaa2934/items/8974cde05a15947956c2)を参照
6. **View名の代わりに**redirectが入った文字列を返す。(ex. return “redirect:/member/signup”;)
7. ViewResolverをスキップし、RedirectViewを通じて応答ヘッダーを作り出し、クライアントに応答を伝える。 (302: redirect)
![스크린샷 2023-12-02 22.19.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3567846/ada0f13b-205e-ad57-7938-f00a576965b8.png)
8. クライアントは応答を受けて、ステータスコードが3xxだからLocationに書かれているurl(/member/signup)で**再リクエスト**するべきだと考え

なぜJavaではインターフェースだけ多重継承が許されているのか

# はじめに
Javaではクラスの多重継承ができませんが、例外的にインターフェースのみ多重継承が許されています。なぜこうした例外が許されているのでしょうか。

初心者向けの記事です。なぜこんな言語仕様にしたのか、といった話はしないのでよろしくお願いします。

# 多重継承ができない理由

一言で言うと親クラスが同名のメソッドを持っていた場合、子クラスの処理内容に矛盾が生じる可能性がからです。

便宜的にParent1とParent2の2つのクラスを用意します。

“`java
public class Parent1 {
public void sing() {
System.out.println(“演歌を歌う”);
}
}

“`

“`java
public class Parent2 {
public void sing() {
System.out.println(“ロックを歌う”);
}
}

“`

2つのクラスは同名のsingメソッドを持っていますが、処理内容が異なります。
もし、Parents1と

JAVA の勉強メモ-double とfloat の違い

floatの場合↓

“`java
class Main {
public static void main(String[] args) {
// Name
String name =”HPP”;
// 年齢
int age = 20;
// 身長
float height = 162.8f;
// 体重
float weight = 60.0f;

// 変数bmiにBMIを計算
float bmi = weight / height / height ;

// 名前、年齢、身長、体重、BMIに関する情報を出力してください
System.out.println(“名前は” + name + “です”);
System.out.println(“年齢は” + age + “歳です”);
System.out.println(“身長は” + heigh

いまさら初めて Ant のビルドファイルを書いたので、逆引きの備忘録を残す

# はじめに
これまで、CI/CD のプロジェクト導入を通じて、各種のビルドプロセスの自動化に関わってきましたが、今になって初めて Ant のビルドファイルを書く機会がありました。

現在、Java のビルドツールでは主に Maven もしくは Gradle が使われています[^1]。そのため、Web上の記事も Maven/Gradle に比べ Ant は比較的少ないようで、欲しい情報にたどり着くのに苦労しました。例えば、Qiita で Maven/Gradle/Ant のタグがついた記事はそれぞれ 932/1723/89 記事でした。桁が違いますね。

ちなみに、Google Trend で過去10年の人気度推移を比較すると以下のようなグラフになりました。

一応 [公式ドキュメント](https://ant.apache

Keycloak23.0.1のセットアップ

:::note info
※本記事は、Keycloakのバージョンアップに伴い、「[Keycloakのセットアップ](https://qiita.com/tamura__246/items/13fc301e9409fef77bf3)」の記事を最新化したものです。
:::

概要

2023年12月2日時点での最新版Keycloak23.0.1を使用できるようにセットアップする手順について説明します。

セットアップ手順は以下の通りです。

1.Keycloakのダウンロード
2.サーバの起動
3.管理ユーザの作成
4.管理コンソールへのログイン

これに加えて、このページでは、Keycloakを日本語化する方法とアンインストールする方法についても触れます。

なお、詳細については、Keycloakの[各種ガイド](https://www.keycloak.org/documentation.html)を参照してください。NRI OpenStandiaで[ガイドの日本語訳](https://openstandia.jp/oss_info/keycloak/document.html)も

複数の同型の Bean がある場合に `@Qualifier` や `@Primary` を使用せず inject する

## 結論
inject 先のフィールド名を Bean 名に合わせるだけで OK。

## 前提
`Example` を実装した Bean が 2 つ存在しているとする。
“`java
@Coponent
public ExampleImplA implements Example {
……
}
“`
“`java
@Coponent
public ExampleImplB implements Example {
……
}
“`
こんな感じで実行すると当然エラーが出る。
“`java
// Example 型の bean を使用
@Component
@RequiredArgsConstructor
public class BeanConsumer {
private final Example example;
……
}
“`
“`bash
……
BeanConsumer required a single bean, but 2 were found
…..
Consider markin

Mac上でGraalVMでネイティブイメージを作ってHello Worldしようとしたが挫折した話

この記事は Javaのカレンダー 2日目の記事になります。

https://qiita.com/advent-calendar/2023/java

# はじめに

最近コードを触ることから離れていたのですが、最近少し時間ができたので、前から気になっていたGraalVMを触ってみることにしました。

本番環境で動かしている会社もあるんだろうか?

ということで、やってみた系の記事になります。

# GraalVMとは

Javaコードからネイティブバイナリを作る事ができるツールです。
ネイティブアプリを作れるということは、JVMを利用する場合の良くない特徴の、JVM特有の起動の遅さやJVMのランタイムを環境に入れなければ動作できないことを回避することができます。

つまり、アプリ高速に起動できたり、アプリ単体で起動できるということです!
もしかしたらアプリのパフォーマンスも高いのでは?

しかし、デメリットもあります。ネイティブアプリになるため、ビルドした環境と同じ環境でしか動かなかったり、JVMがOSなどの環境の違いを埋めていた部分の影響を受けることになります。

ただ、最近は

SpringBoot2.7.x以前から3.2.xへOpenRewriteでアップグレード

## 概要
アップグレードの作業を出来るだけ再現しやすい手順にまとめようと思います。
このアップグレードには下記の要素が含まれます。

– Java11からJava21へのバージョンアップ
– Gradleのバージョンアップ
– Spring Boot3.2へのグレードアップをOpenRewriteで半自動化

インパクトが大きい変更が多いので、2.7.x以前の環境も残したうえで、3.2.xで開発できる状態を目指します。

## 環境
この記事で想定している環境は下記となります。

– Gitを使用
– Gradleを使用(Mavenでも応用はできると思います)
– Spring Bootを使用
– OpenRewriteを使用
– 筆者のIDEはEclipse
– 筆者のOSはWindows

IDEやOSによる差異はあまり多くないと思いますが、参考にしていただければと思います。

## 下準備
### 現(2023/11/21)時点でのJava21およびSpringの環境を確認
現時点ではツールやライブラリのJava21対応が遅れている場合があります。

例えばEclipseではJ

【前編】Javaでオブジェクト指向を学びなおす

:::note warn
初学者向けではないです!
前提となるところは節々省略しています!
:::

前回「Hello World」を出力するコードがなんとなくでしか分からなかったので勉強をしました。

https://qiita.com/suda_imagitech/items/d24deca20e4795f55225

次は何かと考えるとオブジェクト指向でした。
なんだかんだエンジニア4年目なので未学習の言語でもぱっとみで何やってるかなんとな~く分かりますが、オブジェクト指向となると話が変わってきます。

何故かというとあまり覚えていません。。。
ここで改めて勉強しなおしこれからの開発に役立てようと思います。

以前PHPを使ったプロジェクトに携わっていた時期もありましたが、オブジェクト指向を考えて開発していませんでした。普通に良くない。

# 1.オブジェクト指向とは

おさらいです。

なんとなく分かっていますがいざ説明しろと言われるとできず、自分の中で言語化できていません。
ChatGPTさんに聞いてきましょう。

![image.png](https://qiita

分割圧縮ファイルの解凍

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class FileProcessor {

public static void main(String[] args) {
splitAndCombineFiles(“/input/sample.docx”, “/split”, “/output/sample.docx”);
}

private static void splitAndCombineFiles(String inputPath, String splitFolderPath, String outputPath) {
try {
// Split the original file
splitFile(inputPath, splitFolderPath);

// Combine the split files

Babashkaことはじめ – Clojureでシェルスクリプティングを代替する

この記事は[FOLIO Advent Calendar 2023](https://adventar.org/calendars/8882)の2日目です。

![00213-3321221044.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231669/79a49e89-3458-25d0-998d-d400c5237d22.png)

# この記事は?

この記事はClojureランタイムであるBabashkaを簡潔に紹介します。また、いくつかの役に立つコードスニペットを示し、チートシート的に使えることも目指します。

# 対象読者

* シェルスクリプトに疲れた人
* Babashka/Clojure固有の複雑な機能は使いませんが、LISP/Javaの右も左もわからない方には厳しいかも

# Babashkaとは?

Clojureは、LISP系のプログラミング言語で、JVM上で動くことが特徴です。

Babashkaは、Clojureのランタイムの一つで、GraalVMを利用し、Clojure

Java メモ

## Javaについて
### Java
– Javaのプログラムは、OSやハードウェアに依存しないバイトコード(中間言語)と呼ばれる抽象的なコードで表現されています。
– [公式サイト](https://www.java.com/ja/)
– [GitHub](https://github.com/topics/java)

### Apache Tomcat
– Java Servletを動かすときに必要なソフト(サーブレットコンテナ)のひとつです。

### Apache Maven
– Apache Mavenは、Java用プロジェクト管理ツールである。
– Javaプログラムをビルドするためのツールです。
– Apache Antに代わるものとして作られました。
– Apacheライセンスにて配布されているオープンソースソフトウェアです。
– [公式サイト](https://maven.apache.org/)

### JavaServlet
– サーブレットは、サーバーマシン上で実行されるJavaアプリケーションプロク

【Kotlin】lambda関数の書き方

こんにちは、GxPのチョウキです。
こちらはグロースエクスパートナーズ Advent Calendar 2023の3日目の記事です。

現在、私はアプリ開発に携わっており、その過程でKotlinを使用しています。別のプロジェクトではJavaを用いていましたが、JavaからKotlinへの移行にはいくつか困難が伴います。JavaとKotlinは100%互換性があるとされていますが、一方で似ている部分と大きく異なる部分が存在します。特に、よく使われているLambda関数の観点から、Kotlinの書き方を紹介したいと思います。Lambda関数を使用する際、初見では意味が分かりにくいことがしばしばあり、それを難しく感じることがあります。そのため、この知識をまとめることにしました。

## JavaとKotlinにおけるLambda関数と高階関数の使用
Lambda関数に入る前に、高階関数から説明します。
高階関数とは、簡単に言うと、関数型をパラメータや戻り値に持つ関数を指します。
### Javaでのメソッドの扱い
Javaでは、一つのメソッド内で別のメソッドを呼び出すことは一般的です。

`

【プログラミング】メソッド・型

# 0.はじめに
大学の講義でJavaを使用するため学習を始めました
自身の備忘録として投稿してます

##### 関連学習
[【プログラミング】Java用語](https://qiita.com/AkihideKato/items/13ba72a0c61eabc540c3)
[【プログラミング】メソッド・型](https://qiita.com/AkihideKato/items/753ad55b10b29f184b0f)
[【プログラミング】Java注意点・ルール](https://qiita.com/AkihideKato/items/63402744493932e9f87b)
[【プログラミング】オブジェクト指向](https://qiita.com/AkihideKato/items/3eb988a962774a409f52)
[【プログラミング】コード記述向上ポイント(個人用)](https://qiita.com/AkihideKato/items/33fd1400be6be2e25f5a)

# 1.メソッド
まとまっと処理の道具のこと
|メソッド|詳細|
|

SpringBootでgRPCアプリを作成し、Auth0などでJWT認証を行う

この記事は[SRA Advent Calendar 2023](https://qiita.com/advent-calendar/2023/sra)の1日目の記事です。

こんにちは! 関西事業部の佐々木です。

# SpringBootでgRPCアプリを
RESTアプリケーションなど、SpringBootを使ってWebアプリを作るのに慣れているJava技術者は少なくないはずです。
gRPCアプリを作る時にも慣れ親しんだSpringを使いたいと思うのは自然でしょう。
SpringBootを使ってgRPCアプリケーションを作るのは簡単で、LogNetのgrpc-spring-boot-starter([https://github.com/LogNet/grpc-spring-boot-starter] (https://github.com/LogNet/grpc-spring-boot-starter)) を依存関係に追加します。

gradleなら

“`deuild.gradle
dependencies {
implementation ‘io.github.logne

[Java]staticとは何なのか

初投稿です。

牛尾剛氏著の『世界一流エンジニアの思考法』を読んで光の速さで感化され、とりあえず今のプロジェクトで使っているJavaとSpring bootを徹底的に基礎から勉強しなおそうと思い立ちました。
※エンジニアとしては6年目とかですが、これまでJavaは表層をさらっと理解した程度でググりながらor他のプログラマの見よう見まねで現場を乗り越えてきたド三流エンジニアです。

まずはJava、ということで定番書でもあるEffective Java 第3版を読み始める。
読み始めてすぐ、
staticファクトリメソッドとは?という疑問にぶちあたりました。
というか、そもそもstaticって何?ちゃんと理解しているか?していない。

じゃあまずはstaticについてちゃんと理解しよう。

### staticなメンバとは
結論から言うと、「インスタンスではなくクラスに紐づくメンバ」である。

ちょうど業務でいい例があったのでそれを使って整理してみます。

この日のタスクで解消したい課題は以下の通り。
「CSVから取り込んだ値に対して、数値項目を最終的なデータ連携先のDBの桁数に合わせて