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

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

java勉強:J2V8とJavetの比較

V8はGoogleが開発するオープンソースのJavaScriptエンジンです。高速、最新ES適用など、いろいろほめられています。V8はC++のものですが、javaからV8から利用する場合、ラッパーが必要です。

– 一番有名なのは、J2V8です。だが更新が止まっているみたいで、windows向けのバージョンは2016年の4.6.0まで、async/awaitはサポートしていないです。詳細は以下のリンクから確認してください。

https://github.com/eclipsesource/J2V8

https://repo1.maven.org/maven2/com/eclipsesource/j2v8/j2v8_win32_x86_64/

– 2番めは、javetです。V8の2023年9月のv11.7.439.16、node.jsも9月v18.17.1を利用されています。認知度がJ2V8よりちょっと低いかもしれません。後発ですからJ2V8より使い勝手がいいです。

https://github.com/caoccao/Javet

# J2V8とJavetの使い勝手の違い
te

元記事を表示

RESTクライアントはこんなに簡単に作れる

以下のライブラリが便利。

* google-http-client
* google-http-client-gson

Maven Repositoryを見て最新版を持ってくること。

# RESTクライアントを実装する上で必要な機能

* REST APIにHTTPでリクエストを送る
* レスポンスが返ってくるので受け取る
* 受け取ったレスポンスをJSONパーサで展開する

# ここまでの機能がこれだけで実現できる

“`java:Main.java (一部)
HttpTransport transport = new NetHttpTransport();
Response response = transport.createRequestFactory()
.buildGetRequest(url)
.setParser(new JsonObjectParser(new GsonFactory()))
.execute()
.parseAs(Response.class);
“`

“`java:Res

元記事を表示

Javaで「文字列からの入力を行うスキャナを作成する」の動作を確認してみた

# 概要

Javaで「文字列からの入力を行うスキャナを作成する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/scanner/index5.html

# 実装

以下のファイルを作成しました。
“`JSample5_1.java
import java.util.Scanner;

class JSample5_1{
public static void main(String[] args){
Scanner scanner = new Scanner(“120 78 92 46”);

while (scanner.hasNextInt()){
int num = scanner.nextInt();
System.out.println(num);
}
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample5_1.java
$ java JSample5_1
120
78
92
46
“`

# まとめ

元記事を表示

Spring Security5.8で非推奨になったantMatchersがrequestMatchersで置き換えられない件

# 最近結構書き方の変わったSpring Security
Spring Security5.4~あたりで、いろんなものが非推奨になったり、6.0以降では削除されたり、いろいろ変わりましたね。
WebSecurityConfigurerAdapterが使えなくなって、configureメソッド各種を`@Bean`アノテーションを付与し、Beanとして公開するように変更するのが一番大きな変更かな…と思ってます。
それで5.8~非推奨になったメソッドで、`antMatchers`と`mvcMatcher`があります。
Spring公式から出ているドキュメントでも、`requestMatchers`に置き換えられると記載してあります。

https://docs.spring.io/spring-security/reference/5.8/migration/servlet/config.html#use-new-requestmatchers

でも、確かにコンパイルエラーにはならないけど、起動するとエラーで画面表示できないんですよね…
いやもしかしたら`configure(HttpS

元記事を表示

AWS CDK で Infrastructure as Code する: SpringBoot編2

こんにちは。ただいまAWS CDK絶賛勉強中です。

https://qiita.com/masatomix/items/445335b5c216f10485c5

のつづきです。前回まででDockerイメージが作成できたので、そのイメージを使ってECSを起動していきます。

ちなみに、[前回](https://qiita.com/masatomix/items/445335b5c216f10485c5)作ったDockerイメージはこれでした。

“`console
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myorg/spring-boot-sample-tomcat 0.1.1-SNAPSHOT cdcd3af69190 3 days ago 363MB
$
“`

## 前提条件

– [AWS CDK で Infrastructure as Code する: ECS編](https://qiita.co

元記事を表示

【Java・学習ログ14】日付と時刻について

教本に沿ってやってみたシリーズ、『第15章』その2。
≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ

## ■日付と時刻
**基準日付(エポック)**…1970年1月1日0時0分0秒
日時情報を扱うには下記のような形式がある。

long型

基準日時(エポック)から経過したミリ秒で記述する方法。
現在日時を得られるSystem.currenTimeMillisメソッドを用いて処理時間の計測を行う。
“`java
public class Main {
public static void main(String[] args) {
long start = System.currentTimeMillis();

long end = System.currentTimeMillis();
System.out.println(“処理に掛かった時間は” + (end – start) + “ミリ秒”);
}
“`
date型

Javaで「ファイルからの入力を行うスキャナを作成する」の動作を確認してみた

# 概要

Javaで「ファイルからの入力を行うスキャナを作成する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/scanner/index4.html

# 実装

以下のファイルを作成しました。
“`JSample4_3.java
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.File;

class JSample4_3{
public static void main(String[] args){
try{
File file = new File(“sample2.txt”);
Scanner scanner = new Scanner(file, “UTF-8”);

while (scanner.hasNextLine()){
String dat = scanner.nextLine();
System

ModelMapperでenumマッピングのデモ

まず、enum Color定義します。
“`java:Color
enum Color {
WHITE(“白”, “color is white”),
BLACK(“黒”, “color is black”);

private String value;
private String description;

Color(String value, String description) {
this.value = value;
this.description = description;
}

public String getValue() {
return value;
}

public String getDescription() {
return description;
}
}
“`

Catを定義します。カラー属性がある。
“`java:Cat
class Cat {
private Color color;

public Cat() {
}

public Cat(Color color) {
thi

ONLYOFFICEオンラインエディターをJavaのウェブサイトに統合する方法

この記事では、Javaで書かれたWebアプリケーションにONLYOFFICE Docsを統合方法をご紹介します。

:::note warn
統合の例は、ドキュメントエディタの機能と、Document Serverをあなたのアプリケーションに接続する方法を示すために使用されます。**適切なコードの変更なし**に、これらの例をあなた自身のサーバで**使用しないでください**!テスト用のサンプルを有効にした場合は、本番環境に移行する前に無効にしてください。
:::

## 重要なセキュリティ情報

テスト例を使用する際には、以下のセキュリティ面に留意してください:

* 認証が必要ないので、不正アクセスからストレージを保護することはできません。
* パラメータはあらかじめ用意されたスクリプトに従ってコードによって生成されるので、リンクのパラメータ置換に対するチェックはありません。
* 各テスト例はONLYOFFICE Document Serverからのリクエストのみを対象としているため、編集後のファイル保存リクエストにおけるデータチェックはありません。
* 他ドメインからONLYOFFI

Javaコマンドでクラスパス指定時に注意すること

## 前提
**Windows11**を使用しています
ディレクトリの指定は**相対パス**で行います

## 構成
例えば以下のディレクトリ構成を想定します
“`:H:\Java
H:\Java
├─B
│ │
│ └─Y
│ Sub.java

├─C
│ │
│ └─Z
│ Base.java

└─A

└─X
Main.java
“`
それぞれのコードの実装は以下の通りです
“`:H:\Java\A\X\Main.java
package X;

import Y.Sub;
import Z.Base;

public class Main {
public static void main(String[] args) {
new Sub().Message();
new Base().Run();
}
}
“`
“`:H:\Java\B\Y\Sub.java
package Y;

public

簡単springbootでのFilter実装

# 目的
Filterで設定した状態でない場合に、特定にURLに遷移しようとするとフィルター機能を実装すること。
(例)ログインしていないユーザーがログインユーザー限定のURL(/userEdit/)などに入ろうとした場合、下記のように弾かれること。
![ログインフィルター 2023-09-28 164906.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3185982/996dd646-7b01-b84f-03dc-dd234faf28b3.png)

# 実装手順
1.Filterの定義
2.FilterConfig.java(URLの適用設定)
3.まとめ

# 1.Filterの定義
LoginFilter.java→フィルター機能の内容を記述。

コードについて
doFilterメソッド→ここでフィルタリング処理を行っている。requestとresponseを引数として受け取り、チェーン内の次のフィルターまたはサーブレットにリクエストとレスポンスを渡す。
リクエストを型変換して、セッション情

Java JDKとSDKとは

## JDKとは

– JDK (Java Development Kit)
ソフトウェアパッケージのこと
ソースコードを機械語へ変換するコンパイラや
機械語を実行するJVM (Java仮想マシーン)等が含まれている

## SDKとは

– SDK (Software Development Kit)
コンパイラ等、開発時に使用するツールのこと
Javaの場合はJDKのことを指す

Javaで「スキャナで取得した値を指定したデータ型の値として取得する」の動作を確認してみた

# 概要

Javaで「スキャナで取得した値を指定したデータ型の値として取得する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/scanner/index2.html

# 実装

以下のファイルを作成しました。
“`JSample2_3.java
import java.util.Scanner;
import java.util.InputMismatchException;

class JSample2_3{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);

try{
System.out.println(“年齢を入力してください”);
int old = scanner.nextInt(16);

System.out.println(“年齢は” + old + “です”);
}catch (InputMismatchEx

【Java・学習ログ13】文字列処理について

教本に沿ってやってみたシリーズ、『第15章』その1。
≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ
## ■基本的な文字列操作

文字列の内容を調査するメソッドがStringクラスに用意されている。

#### 【調査】
| | |
|-|-|
|内容が等しいか調べる|public boolean equals(Object o)|
|大文字、小文字を区別せず等しいか調べる|public boolean equalsIgnoreCase(String s)|
|文字列長を調べる|public int length()|
|空文字か(長さが0か)を調べる|public boolean isEmpty()|

※大文字・小文字の区別のことを**文字のケース**という。

#### 【検索】
| | |
|-|-|
|一部に文字列sを含むかを調べる|public boo

java、SQLメモ

任意のテーブルにレコードを追加する
“`java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class Main {
public static void main(String[] args) {
Connection connection = null;
PreparedStatement preparedStatement = null;

try {
// データベースへの接続を確立
connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydatabase”, “us

JavaFX の InvocationTargetExceptionを治す

# 環境
InteliJ IDEA
JDK21
ビルドツールとしてMavenを使用

# 問題

以下のような
・TestWindow.java
・TestWindowController.java
・test-view.fxml
の3ファイルで構成されている単純なJavaFXアプリケーションをTestWindow#main()から実行すると、InvocationTargetExceptionがスローされる。

実行イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368194/79c280a7-6380-b341-7e76-3145fbeeb1a3.png)

“`java:TestWindow.java
package com.example.hoge;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javaf

Mac向けマインクラフトMOD開発環境のセットアップ

# Mac向けマインクラフトMOD開発環境のセットアップ

– [著者の環境情報](#環境情報)
– [これからダウンロードする3つのツールについて](#これからダウンロードする3つのツールについて)
– [インストールについて](#インストールについて)
– [コマンドライン操作のセクション](#コマンドライン操作のセクション)
– [主要なファイルの説明](#主要なファイルの説明)
– [主に開発において変更や作成をするファイル](#主に開発において変更や作成をするファイル)

## 環境情報

### OS
– **バージョン**: macOS Ventura [13.0.1]

### Java
– **バージョン**: java version [1.8.0_381]
– **インストールパス**: [/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home]

### Forge
– **バージョン**: forge [1.12.2]

### IDE
– **名称**: [Eclipse]
– **バージョン

GithubActionsを利用してJavaアプリのテストを自動化する

`GithubActions`を使ってGithub上でリソースを管理しているJavaアプリのテストを自動化してみる。
今回はGithubActionsの触りということで、簡単なUnitテストのみやってみる。

## 初期状態

Githubの以下の構成からスタート。

“`
RepositoryRoot
/SampleJavaApp(EclipseJavaプロジェクト)
/src/main/java
Sample.java
/src/test/java
SampleTest.java
/gradle/wrapper
gradle-wrapper.jar
gradle-wrapper.properties
build.gradle
gradlew
gradlew.bat
“`

Gitリポジトリの下にJavaアプリリソースを管理するEclipseプロジェクトフォルダがある感じ。

`main`ブランチから派生したブランチを作成し、

Disqus APIを使用してフォーラムのスレッドと投稿を取得する方法

[Disqus](https://disqus.com/)は、ウェブサイトにコメント機能を追加するための人気のあるプラットフォームです。この記事では、Javaを使用してDisqus APIからフォーラムのスレッドと投稿を取得する方法を解説します。

# 1. 必要なライブラリのインポート

まず、以下のライブラリをプロジェクトに追加する必要があります。
– `OkHttpClient`: HTTPリクエストを行うためのライブラリ
– `Gson`: JSONのシリアル化およびデシリアル化のためのライブラリ

`OkHttpClient`と`Gson`をMavenプロジェクトに追加するには、`pom.xml`ファイルに対応する依存関係を追加する必要があります。

以下は、それぞれのライブラリのMaven依存関係です:

1. **OkHttpClient**:
“`xml

com.squareup.okhttp3
okhttp

Unsupported major.minor version 52.0 の原因と解消法

## 環境
– 言語 Java
– 開発環境 IntelliJ

## 事象
昨日、プロジェクトコンパイル時に以下のエラーが出力された。
“`kotlin:エラーログ
org/jetbrains/kotlin/idea/gradleTooling/AndroidAwareGradleModelProvider : Unsupported major.minor version 52.0
“`

## 調査結果
JDKとJREのバージョン差異で発生する。

## 対応
以下3つを統一させる。

・システム環境変数「JAVA_HOME」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1202056/e8c13b32-3fab-bfb0-8ae2-7a05acac14a6.png)

・プロジェクトのSDK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1202056/cda9b897-09