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

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

システムトレイに常駐するプログラムのサンプルコード

Javaでシステムトレイに常駐するプログラムを作成する機会があったので、サンプルコードを紹介します。

# サンプルコードの概要

– システムトレイに常駐するプログラムを作成する
– アイコンには指定のpngファイルを利用する
– https://www.irasutoya.com/2017/06/blog-post_572.html
– アイコンを右クリックするとポップアップメニューが表示される
– Helloメニューを押下すると、通知を表示する
– Exitメニューを押下すると、プログラムが終了し、システムトレイからアイコンが削除される

# サンプルコード

“`Main.java
import java.awt.AWTException;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.TrayIcon.MessageType;
import java.i

元記事を表示

java初学者の学習メモ

# 概要
今回はjavaで基礎学習用のコードを書いてみました。
これから少しずつjavaの学習記録を残してまいります。
学習のメモ程度に記述していますのでご承知ください。

## 実行環境
・windows:Windows11Pro 23H2
・java:22.0.1
・統合開発環境:Eclipse

## クラス
“`Java:Sample.java
package helloworld;

public class Sample {

public static void main(String[] args) {
Car car1 = new Car();
car1.num = 5;
int get_num= car1.getNum();
System.out.println(“get_num >>>” + get_num);
int set_num = car1.setNum();
System.out.println(“set_num >>>” + set_num);

}

}
“`
“`java:Car.java
package h

元記事を表示

Java Silver資格試験にむけた学習ページ

## 今回の目的
java silver資格試験に向けて勉強中のエンジニアがjava学習のために書いている記事です。
用語やjavaルールを忘れないために学習の一環として書いています。
どうぞお手柔らかに。

## プログラム実行までの流れ
①java言語仕様にそってプログラムを作成して、拡張子.javaファイルを作成
②コンパイラが起動して、作成したプログラムがコンパイルされる。コンパイルされると拡張子.classファイルが作成される。
③javaコマンドによって、プログラムがJVM上で実行される

## リテラリ
ソースプログラムの中で直接書き込まれたもの。
表現できるデータには、数値、文字列、null、真偽値がある

## データの型
基本データ型は以下の8種類ある

| 種類 | データの型 | サイズ | 表現できる値 |
|:-:|:-:|:-:|:-:|
| 整数 | byte | 8ビット | -128~127 |
| | short | 16ビット | -32768~32767 |
| | int | 32ビット | -2147483628

元記事を表示

Javaでマウスポインタを動かしたい

以下のステップでマウスポインタを動かすことができます。

1. `MouseInfo.getPointerInfo`で現在のマウスポインタの位置を取得する
2. `Robot.mouseMove`を利用してマウスポインタを動かします

例: x軸方向に1ピクセル、y軸方向に1ピクセル、マウスポインタを1分おきに動かす

“`java
import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Robot;
import java.util.concurrent.TimeUnit;

public class MoveMouse {
public static void main(String[] args) throws AWTException, InterruptedException {
Robot robot = new Robot();
while (true) {
Point p

元記事を表示

CATALINA_BASE環境変数を利用してTomcatを複数起動する方法

## 1. はじめに

JavaのWebアプリ開発でServletエンジンとして Apache Tomcat が使われることが多いのではないでしょうか。一般的な書籍や研修等で簡単な使い方は教わりますが、同一ホスト上で複数のTomcatインスタンスを起動させる方法はあまり知られておらず、若手メンバがよく質問されるので今回はその方法について説明したいと思います。なおTomcatはサービスではなく、利用時にコマンドで起動させるZip版を対象とします。

## 2. 環境変数を定義する

Java開発では`JAVA_HOME`、`MAVEN_HOME`等、`XXX_HOME`というディレクトリを指定する環境変数がよく使われます。Tomcatの場合も同様でTomcatのインストールディレクトリは`CATALINA_HOME`となります。
複数Tomcatを起動させるポイントは`CATALINA_HOME`に加えて`CATALINA_BASE`という別のTomcatインスタンス用の環境変数を定義することです。

| 変数 | 値 | 説明 |
|:—:|:–:|:—-|
| JAVA_H

元記事を表示

GraphQL×Java入門 エラーハンドリング

## はじめに

前回はMutation編ということでMutationの実装例を紹介させてもらいました。

今回は、エラーハンドリングの実装例を紹介します。
ただ、JavaでGraphQLの実装してもらうときのポイントとなるところを紹介するのがメインなので、ソースコードを作り込んでいるわけではないので、実務でそのまま使用するのは避けてくださいmm
(時短で結構適当にロジックや例外処理書いてあります)

## 環境

・SpringBoot:3.3.2
・Java:17
・GraphQL:22.1

## ソースコード

[GraphQL Sample](https://github.com/kehuka11/graphql_sample)

## エラー時のステータスコード

https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#applicationjson

GraphQLはエラー時でも200コード返す仕様みたい。

ここに書いてあるように、ステータスコードは200固定が推奨なの

元記事を表示

GraphQL×Java入門 Mutation編

## はじめに
前回は、JavaでのQueryの実装例を紹介したので、今回はMutationを紹介します。
ただ、JavaでGraphQLの実装してもらうときのポイントとなるところを紹介するのがメインなので、ソースコードを作り込んでいるわけではないので、実務でそのまま使用するのは避けてくださいmm
(時短で結構適当にロジックや例外処理書いてあります)

## 環境

・SpringBoot:3.3.2
・Java:17
・GraphQL:22.1

## ソースコード

[GraphQL Sample](https://github.com/kehuka11/graphql_sample)

## 実装

### 1データ登録

**スキーマ**

~~~sql
type Mutation {
registerBook(title: String!, author: AuthorInput!): Book!
}

type Book {
id: ID!
title: String!
author: Author
}

input AuthorInput

元記事を表示

GraphQL×Java入門 Query編

## はじめに

前回は基礎編ということでざっと用語紹介させてもらいました。

今回から、実際の実装例を紹介しますー。
ただ、JavaでGraphQLの実装してもらうときのポイントとなるところを紹介するのがメインなので、ソースコードを作り込んでいるわけではないので、実務でそのまま使用するのは避けてくださいmm
(時短で結構適当にロジックや例外処理書いてあります)

## 環境

・SpringBoot:3.3.2
・Java:17
・GraphQL:22.1

## ソースコード

[GraphQL Sample](https://github.com/kehuka11/graphql_sample)

## とりあえず、データ取得してみる

### スキーマ
~~~sql
type Query {
searchBookById(id: ID!): Book
}

type Book {
id: ID!
title: String!
author: Author
}

type Author {
id: ID!
firstName: St

元記事を表示

GraphQL×Java入門 基礎編

## はじめに

以下のような方達を対象に記事書いてます。

・GraphQLを初めて触る方

・とりあえずGraphQLで作成されたAPIを動かして動作させてみたい方

## 環境

仕事でGraphQLを検討することになったので、サンプルを作成しつつ、気になったところを検証してみようと思います。

・SpringBoot:3.3.2
・Java:17
・GraphQL:22.1

## ソースコード

[GraphQL Sample](https://github.com/kehuka11/graphql_sample)

GraphQLの検証のためのサンプルなので、動作するためだけに書いてあるところが多いので、悪しからず

## GraphQLとは

めっちゃざっくりいうと、
APIを開発するためのクエリ言語であり、REST APIより、データ取得効率を上げたり、柔軟性が上がることでクライアント側とコミュニケーションコストも減るなどを特徴に持ったFacebookによって開発されたクエリ言語とサーバーサイドのランタイム。
スキーマという構造を定義してQueryでデータを取得できた

元記事を表示

Java Gold(1Z0-816 Java SE 11)合格体験記

# はじめに
Java Goldを取得したため、その備忘録を残しておきます。

私のスペックは以下です。

– 2023年4月入社(当時新卒2年目)
– 情報系大学院卒業
– 業務でJavaを使用中
– Java Silver合格済み(Java Goldの受験資格になっています)

業務でJavaを使っているため、Javaの知識の定着を兼ねて試験を受けてみるかという気持ちでした。Java Silverは2024年8月に取得しており、折角なのでJava Goldも受けてみようと思い立ちました。

# 勉強方法

定番の黒本を周回しました。

以下のような流れで勉強しました。

1. 1章分問題を解く
1. 正解・不正解に関わらず、問題の解説を読む
1. 解説を読んでイメージ付かない場合は、サンプルコードを写経して動かし理解を深める
1.

元記事を表示

フレームワークを作りながら、ServiceLoaderとアノテーションプロセッサーを使ってみました

## はじめに
現在、ドメインごとに依存関係を分離し、命名規則を強力に検査するDIフレームワークを作成しています。このフレームワークを開発する中で、`ServiceLoader` と `Annotation Processor` を使用してみました。そこで、これらが何であるか、そしてどのように使用したかについて書いてみようと思います。

– 韓国人として、日本語とコンピュータの勉強を同時に行うために、ここに文章を書いています
– 翻訳ツールの助けを借りて書いた文章なので、誤りがあるかもしれません

## 状況
現在、私は命名規則を厳格に管理しています。

クラス名がルートドメインではなく、サブドメインに属する場合、必ず守るべき命名規則を定義しました。

基本的には以下のような命名規則が適用されます。

“`java
“Service”, “Repository”, “Controller”, “Handler”, “Manager”
“`

これにより、次のように記述できます。

“`java
import org.haroya.annotation.Container;

元記事を表示

EchoAPI for IntelliJ IDEA: Java開発者のためのAPI管理を強化するプラグイン

# EchoAPI for IntelliJ IDEA: Java開発者のためのAPI管理を強化するプラグイン

現代のソフトウェア開発において、API管理はますます重要性を増しています。Java開発者にとって、強力なAPI管理プラグインは開発効率を大幅に向上させ、Postmanのような重いデスクトップツールをダウンロードすることなく、ワークフローを簡素化できます。ここでは、Java開発者向けに特別に設計されたツール—EchoAPI for IntelliJ IDEAをご紹介します。

## EchoAPI for IntelliJ IDEAの紹介

[EchoAPI](https://www.echoapi.com)は、API設計、デバッグ、そして自動テストをサポートする多機能なAPI管理ツールです。特にIntelliJ IDEA用に設計されたプラグインとして、開発者の環境にシームレスに統合され、Java開発者の生産性を飛躍的に向上させます。

![EchoAPI for IntelliJ IDEA.png](https://assets.echoapi.com/upload/use

元記事を表示

Javaの演算子を勉強してみました

## はじめに
現在、私が進行しているJavaの勉強会でまとめた内容です。

内容に不正確な点があれば、ご指摘いただけるとありがたいです。

https://github.com/whiteship/live-study/issues/3

– 韓国人として、日本語とコンピュータの勉強を同時に行うために、ここに文章を書いています
– 翻訳ツールの助けを借りて書いた文章なので、誤りがあるかもしれません

# 演算子
– 算術演算子
– ビット演算子
– 関係演算子
– 論理演算子
– instanceof
– 代入(=)演算子
– アロー(->)演算子
– 三項演算子
– 演算子の優先順位
– Java 13. switch演算子

## Javaで提供される演算子
演算子と被演算子とは?
– 演算子: 演算に使用される記号(+, – など)
– 被演算子: 演算に使用される対象(1, 2, a など)

**ほとんどの演算**はプリミティブ型でのみ使用可能です。

– Stringクラスは除く

“`java
String str1 = “Hello, “;
String s

元記事を表示

すべてのモニターのスクリーンショットを1つのファイルに保存したい

マルチモニター環境で、すべてのモニターのスクリーンショットを取得し、1つのファイルscreenshot.pngに保存するサンプルです。

“`java
public void screenShot() throws AWTException, IOException {
Rectangle rectangle = new Rectangle();
for (GraphicsDevice graphicsDevice : GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()) {
for (GraphicsConfiguration graphicsConfiguration : graphicsDevice.getConfigurations()) {
rectangle = rectangle.union(graphicsConfiguration.getBounds());
}
}

Robot rob

元記事を表示

Javaの開発環境を構築

Javaの学習を始めたのでアウトプット目的で書き記していきます。

使用するフレームワークはSpring Boot、
開発環境はIntekkiJ Ideaを使用します。

## Spring Bootについての説明から。
一言でいうならば、**設定が難しいSpringをもっと手軽に使えるようにしたもの**です。

Springとは、 Webアプリケーションを作るためのフレームワークで広く使われています。
しかし、細かい設定が必要だったり、ウェブサーバーの準備をしたりなど自由度が高い反面、初心者には難しいです。

対して、Spring Bootは雛形があり、初期設定を自動生成してくれたり、データベースやウェサーバーの設定が揃っていたりと初心者でも簡単に開発を始めることができます。

以上にをまとめると、
Spring Bootは初心者や小規模プロジェクト向け
Springha高度なカスタマイズが必要な大規模プロジェクト向け

Spring BootはSpringの利点を継承しつつ、初心者でも簡単に開発を始められるが、自由度はSpringには劣る。

ということになります。

## In

元記事を表示

SDKMANのJDKをSystem JDKとしてmacOSに誤認させる

# なぜ誤認させたい?

– SDKMANをセットアップすると`JAVA_HOME`をSDKMANがよしなにしてくれるようなる
– `/usr/bin/java`, `/usr/libexec/java_home`などが変わらずSystem JDKの場所である`/Library/Java/JavaVirtualMachines`配下のJDKを参照する
– XcodeのScriptPhaseなど**JAVA_HOMEを見ず、強制的にSystem JDKを参照する**ライブラリやプラグイン類がいる
– どうにかしてPCにinstallするJDKをSDKMANだけに寄せたいのでSDKMANでinstallしたJDKをSystem JDKに誤認させたい

# SDKMAN以外のJDKはどうなっているか

– システムのJDKは`/Library/Java/JavaVirtualMachines`にinstallもしくはsymbolic linkを貼ったものであるパターンが多い
– [jdk.java.net](https://jdk.java.net/)からinstallする場合、tarフ

元記事を表示

特定のFeignClientに専用のErrorDecoderを利用させる

# 背景
SpringBootでAPIを使用しようと思ったらRestTemplateを使うと思いますが、RestTemplateはメンテナンスモードに入ってしまい、他のClientに変えざるおえない人も多数だと思います。

私もあるプロジェクトで変える必要発生し、FeignClientに変更しました。

ここで特定のエラー時はFeignExceptionを返すのではなく、自作例外を返却したい時がありました。

# 環境
Java:17
Gradle:8.5
SpringBoot:3.1.6
spring-cloud-starter-openfeign:4.0.4

# 最初にやってみたこと
ErrorDecoderを自作しそれをBean化させて特定のFeignClientに装着させれば可能です。
※基本的なFeignClientの使い方は割愛します
“`Java:CustomDecoder.java
@RequiredArgsConstructor
public class CustomDecoder implements ErrorDecoder {
private fin

元記事を表示

Spring Security(認可設定)の備忘録

# はじめに
解体新書という書籍にて11章のSpring セキュリティの内容について学習中に
画面表示の認可(権限による画面表示の切り替え)が実現不能でした。
一般ユーザでも管理者限定にしているボタンが出現。。
ソースとしてはHTMLに記載を追加するのみでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1041138/6aa665e6-1aad-288a-cdca-3336cff82dfb.png)

# ■menu.html
“`java


元記事を表示

Spring Boot 3 x Spring Security 6 でログイン画面を複数作成する際のSecurityFilterChainの書き方

## 概要

ユーザー向け画面と管理画面の2つを作成したいケースがあると思います。
その際に、SecurityFilterChainの書き方で迷ったので備忘します。
SpringBoot3(SpringSecurity6)の記事が少なかった点と、
SpringBoot2の時と比べて差異があったため、記事にしました。

## まとめ

* `SecurityFilterChain` で `securityMatcher` を利用する
* `Order` の優先順位に注意する。

## サンプルコード

ユーザー向け画面のSecurityFilterChain。

“`java
public class UserSecurityConfig {

@Bean
@Order(1)
public SecurityFilterChain userSecurityFilterChain(HttpSecurity http) throws Exception {

// URL認可
http.securityMatcher(“/user/

元記事を表示

Spring Modulithでモジュラモノリスライクな依存関係のコントロールを試してみた

# Spring Modulithとは
> Spring Modulith は、Spring Boot を使用してドメイン駆動型のモジュール型アプリケーションを構築するための独自のツールキットです。Spring Boot がアプリケーションの技術的な配置について独自の見解を持っているのと同じように、Spring Modulith は、アプリを関数に構造化する方法について独自の見解を実装し、個々の論理部分が相互にやり取りできるようにします。その結果、Spring Modulith を使用すると、開発者は更新が容易なアプリケーションを構築して、時間の経過とともに変化するビジネス要件に対応できるようになります。

https://spring.pleiades.io/spring-modulith/reference/

# 本記事の内容
Spring Modulith の依存関係をコントロールする機能を試してみた記録です。
先日参加したJJUG CCC 2024 Fallで紹介されていて興味が湧き試してみました◎

https://www.docswell.com/s/Simplex/ZJ

元記事を表示

OTHERカテゴリの最新記事