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

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

Java PDFでビューアプレファレンス(ViewerPreference)の設定

はじめに

ビューアプレファレンスとは、利用者がPDFファイルを閲覧する時に、自分の好みによって画面をどう表示させるかについては、様々なビューア表示設定できる機能です。例えば、タイトルを非表示にしたり、ウィンドウに合わせたりすることで、気持ちがよくなるでしょう。さあ、今回はSpire.PDF for Javaを利用してPDFでビューア表示設定を紹介していきたいと思います。

Spire.PDF for Javaとは?

Spire.PDF for Javaは、開発者がJavaプラットホームでPDFの文書ファイルを迅速かつ高品質でmodule-info.javaの書き方

#module-info.javaの書き方

“`x:ModuleDeclaration
{Annotation} [open] module Identifier {. Identifier} { {ModuleDirective} }
“`

“`x:ModuleDirective
requires {RequiresModifier} ModuleName ;
exports PackageName [to ModuleName {, ModuleName}] ;
opens PackageName [to ModuleName {, ModuleName}] ;
uses TypeName ;
provides TypeName with TypeName {, TypeName} ;
“`

“`x:RequiresModifier
(one of)
transitive static
“`

|提供側|単位|利用側|単位|
|:—-|:—-|:—-|:—-|
|exports|パッケージ|requires|モジュール|
|opens|パッケージ|

元記事を表示

Java 概要

#学習の目標
プログラミング言語のJavaの学習をします。学習の備忘録としてQiitaを使ってアウトプットしていきます。
まず、Javaの概要を学習します。

#目次
* Javaとは
* Javaの特長
* Javaの種類

#Javaとは
Javaとは、1995年に米国のサンマイクロシステムズ社(現オラクル社)がC++をベースとして開発したプラットフォーム非依存のオブジェクト指向のプログラミング言語です。
Javaは、プログラミン言語ランキングで常に上位になっているプログラミング言語で、多くの有名企業がJavaを利用したWebアプリケーションを構築しています。

#Javaの特長
プログラミング言語としてのJavaの特長を3つ説明します。

###コンパイル言語
プログラミング言語は大きく__「コンパイル言語」「スクリプト言語」__の2つに分類されます。
コンパイル言語は、予めコンパイラによってコンパイル(人間が描いたソースコードを機会が読み取ることができるように変換する作業)を行ってからプログラムを実行するものです。
それに対し、スクリプト言語は、事前にコンパイルしておくのではな

元記事を表示

Java Excel文書に画像を挿入・抽出

はじめに

Excelに画像や図形を挿入することで、エクセル文書をよりビジュアル化させることができます。今回はSpire.XLS for Javaを活用してExcel文書に画像を挿入・抽出する方法を紹介しています。この記事の案内を通して、少しでもお役に立てたのであればと思いますね。閑話休題、始めましょう!

Spire.XLS for Javaとは?

Spire.XLS for Javaは、開発者がJavaプラットホームでExcelの文書ファイルを迅速かつ高品質でgRPC(Java)でヘッダを使って情報を連携する方法

諸事情でgRPCのヘッダを使って任意の値を連携したいので、連携方法を調べてみました。

# 結論!?

`ClientInterceptor`と`ServerInterceptor`を利用すれば実現できる!けどサーバ側はちょっと一工夫する必要がありそう。

# やりたいことは・・・

ざっくりだが・・やりたいことを絵にしてみると・・・こんな感じ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117313/a1859c48-be74-98cf-03e6-a8dac071be3f.png)

# Spring Bootで検証APを作ってみる

## 検証コード

* https://github.com/kazuki43zoo/grpc-interceptor-demo

## GrpcServer

サーバ機能の簡易実装クラス。

“`java
package com.example.demo;

import io.grpc.BindableService;
import io.g

元記事を表示

各ベンダーごとの Java17 バージョン情報

各ベンダーごとに、`java –version` で表示されるバージョン情報をまとめました。

|ベンダー|名称|バージョン情報|
|:—|:—|:—|
|Amazon|Corretto|OpenJDK 64-Bit Server VM Corretto-17.0.0.35.1
(build 17+35-LTS, mixed mode, sharing)|
|BellSoft|LibericaJDK|OpenJDK 64-Bit Server VM
(build 17+35-LTS, mixed mode, sharing)|
|Eclipse Foundation|Temurin|OpenJDK 64-Bit Server VM Temurin-17+35
(build 17+35, mixed mode, sharing)|
|Microsoft|Microsoft Build of OpenJDK|OpenJDK 64-Bit Server VM Microsoft-26987
(build 17+35, mixed mode, sh

元記事を表示

[Java]条件分岐について(初学者)

# はじめに
本記事では、Javaの繰り返し分岐について記述します。
本日よりJavaの学習を始めました。

# if文
## 例文(ifのみ)

“`java
int i = 100;
if (i == 100){
System.out.println(“True”);
}

// 「True」と表示されます。
“`

### 参考
#### データ型
以下参考サイトになります。
[基本のデータ型](https://www.javadrive.jp/start/var/index4.html)

|データ型|値|
|-|-|
|int|整数|
|boolean|true or false|
|double|小数点付きの数字|
|String|文字列|

#### System.out.println
以下参照ください。
[System.out.printlnとは](https://www.javadrive.jp/start/const/index8.html)
> System.out.println は標準出力へ引数に指定した値を出力する

## if+else文
もし、

元記事を表示

Processingを扱う

#はじめに
この記事ではJavaベースの言語、Processingを扱っていきます。Processingはデジタルアートを作成するための言語のようです。[Processingホームページ](https://processing.org/download)よりダウンロード可能です。
#基本
Javaなのでvoidを使用するべきですが、まずは基本ということで基本の書き方を紹介します。
##スケッチブックサイズの指定
サイズの指定はsize()を使用します。これを書くことでそのスケッチブックに描画することができます。
書き方:size(x,y);
Javaですから、命令分の終わりには;(セミコロン)をつけましょう。

>
“`java
size(500,500);
“`

##四角形を描画する
四角形を描画するにはrect()を使用します。
書き方:rect(x,y,width,height);

>
“`java
size(500,500);
rect(0,0,100,100);
“`

![スクリーンショット 2021-10-11 18.29.33.png](https://qi

元記事を表示

アノテーションの基礎知識(Java)

## はじめに

SpringやDomaを使っているとよく出てくるアノテーションですが、正確な役割などは
あまり理解せず、フィーリングで使ってきていたので基礎から立ち返りたいと思います。

## アノテーションとは?

`@Override`のように「`@` + 名前」のような形式で表現されるものを
`アノテーション`と呼びます。
これらをメソッドやクラスなどjavaのあらゆる機能に付けることで利用します。
アノテーションには以下のような役割があります。

**クラスやメソッドなどに対して補足的な情報を付け加えるためのもの。**

このように、あくまで補足的な情報を付け加えるためのものなので、アノテーションそれ自体に
なにか機能が含まれているわけではありません。
いわば、ソースコードのコメントのようなものです。
したがって、それだけでは処理的には何の意味もありません。

## アノテーションが必要な理由

それならば、どうしてアノテーションを付ける必要があるのでしょうか?
それはアノテーションと特定の機能を組み合わせることで、強力な機能を実現することができるからです。

– コンパイラ

元記事を表示

【UiPath】OrchestratorのAPIを使ってみる③~Javaから認証APIを叩いてみる~

# はじめに

前回まででOrchestrator APIの叩き方はわかったので、Javaから実行してみます。

## 余談

UiPath Orchestratorで月間スケジュールのようなものを出力したかったのですが、そういう機能がないんですよね。
(トリガーの画面で確認はできるが、レポート的に出力する機能がない)

かゆいところに手が届かないので、それを補完するためにJavaからAPI叩いて整形してレポート出力してみよう!というのが発端でした。

# 認証APIを叩いてみる

今回は認証APIを叩いて、Bearerトークンを取得するところまでを説明します。
JSONデータを作って、HttpClientでPOSTして、Bearerトークンを取得する、という流れになります。

## まずは投げるところまで

“`java:App.java
package jp.co.pmtech.iwata;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apac

元記事を表示

JEP 193: Variable Handles について

Java 9 で Variable Handles と呼ばれる新しい API が追加されました。これは Java 7 の [MethodHandle](https://docs.oracle.com/javase/jp/16/docs/api/java.base/java/lang/invoke/MethodHandle.html) を拡張し、クラス [java.lang.invoke.VarHandle](https://docs.oracle.com/javase/jp/9/docs/api/java/lang/invoke/VarHandle.html) でフィールドの変数や配列に対して強い型付けを持って参照ができます。ただし変数の参照だけでなく、Atomic 操作やリフレクションなどの操作に利用可能です。
例えば、ある一つの変数に対してアトミック操作を行うことによって、並列プログラミング時に変数に対するアクセスを保護を行うことができます。
これまでは、[アトミック関連クラス](https://docs.oracle.com/javase/jp/9/docs/api/java

元記事を表示

Microprofile Fault Toleranceの機能と独自に用意したInterceptor間の実行順序を制御する

## 環境

* Java 8
* CDI 2.0
* Microprofile Fault Tolerance 2.0

## 事象

[Microprofile Fault Tolerance 2.0 Circuit Breaker](https://download.eclipse.org/microprofile/microprofile-fault-tolerance-2.0/microprofile-fault-tolerance-spec.html#circuitbreaker)のアノテーションと、独自に用意した `FooInterceptor` を実行するアノテーションを併用した場合、サーキットブレーカが意図せず発動する事象に遭遇しました。

“`java:FooInterceptor
@Interceptor
@Dependent
@Foo
@Priority(Interceptor.Priority.APPLICATION)
public class FooInterceptor {

@AroundInvoke
public Object invok

元記事を表示

【非同期処理】スレッドセーフって何?

業務で非同期処理を書いたときに「そのクラス、スレッドセーフですか?」と指摘を受けることが複数回ありました。
そこで、「そもそもスレッドセーフって何よ」「スレッドセーフじゃないと何が困るのよ」ということを勉強しました。本記事はそのまとめとなってます。

##参考図書

この本は思考させる系の練習問題がついてて、良い気がします。
自分もまだ読破で

元記事を表示

Fabricのソースコード非公開Modの難読化を解除する方法

# はじめに
Modを改造したい、そう思ったときにソースコードが公開されていないことはよくあります。
Modをパクリたいとき、改造したいとき、パッチを作りたいとき色々ありますが、
常に難読化の壁に阻まれることになります。

[Forgeの難読化を解除する方法](https://ci.tterrag.com/job/BON2/)はありますが、Fabricの難読化を解除する方法についての情報がなかったので記事を書きます。

# 1. 前提知識

https://fabricmc.net/wiki/tutorial:migratemappings?s%5B%5D=gradlew&s%5B%5D=migrate

https://fabricmc.net/wiki/tutorial:setup

https://fabricmc.net/versions.html

https://qiita.com/noriokun4649/items/35763e6e35b80c976dfd

# 2. Modを準備する

デコンパイルするFabricで製作されたModを用意します。

今回は例として [

元記事を表示

Java Excelでドキュメントのプロパティを追加

はじめに

Excelでは、作成者、タイトル、サブタイトル、キーワードのプロパティなど、といったプロパティを追加することで、ファイル管理を効率化したり、エクセルをカスタマイズしたりできます。今回は、Spire.XLS for Javaというライブラリを活用して、Excelでドキュメントのプロパティを追加する方法を紹介していきます。この記事で、少しでもお役に立てたのであればと思いますね。

Spire.XLS for Javaとは?

Spire.XLS for Javaは、開発者がJavaプラットホームでExcelの文書ファイルを迅速かつ高品質でAsciidoctor Maven Pluginを使って良い感じにPlantUML図をHTMLファイルに埋め込む

### この記事のゴール
・Asciidoctor Maven Pluginを使って良い感じにPlantUML図をHTMLファイルに埋め込む。


### 作業の流れ
1. プロジェクトフォルダ作成(所要時間:10秒)
2. pom.xmlの設定(所要時間:30秒)
3. adoc形式ファイル作成(所要時間:30秒)
4. ビルド【adoc形式ファイル → HTMLファイルに変換】(所要時間:30秒)


### 1. プロジェクトフォルダ作成

・フォルダ「asciidoc-practice」作成


### 2. pom.xmlの設定

・asciidoc-practiceフォルダ配下にpom.xml作成
・下記をpom.xmlにコピペ

“` 【Java】Spring JDBCで登録機能の実装

今回はJava SpringFWを用いて登録・更新・削除機能を実装してみました。
バリデーションについては、JPAではなくJDBCtemplateを使用しております。
以下はそれぞれに分けて解説をしておりますので、よければ参考にしてください!!

• 【更新】[Spring JDBCで更新機能の実装]()(作成中)
• 【削除】[Spring JDBCで削除機能の実装]()(作成中)
• 【まとめ】[Spring JDBCで登録・更新・削除]()(作成中)
• 【エラー解消】[Spring JDBCでエラーメッセージが消えない!?]()(作成中)

0, 目次

1, 完成品
2, 環境
3, 関連ソースコード  
  ① Form と entity
  ② Controller
  ③ Service
  ④ Impl と Custom と Repository
  ⑤ HTML と JavaScript
  ⑥ messages.properties と ValidationMessages.properties
  ⑦ pom.xml

4, 参考にしたサイト

Couchbase Lite機能解説:データベースの使い方

## はじめに

Couchbase Liteの利用に資するために、下記のドキュメントの内容(英語)を整理します。

https://docs.couchbase.com/couchbase-lite/current/java/database.html

## 初期化

APIを使用する最初のステップは、イニシャライザーを呼び出すことです。
初期化前に他のAPIメソッドが呼び出されると、例外が発生します。

例1.データベース初期化

“`java
// Initialize the Couchbase Lite system
CouchbaseLite.init();
“`

## データベース作成/オープン

`Database`クラスを使用して、新しいデータベースを作成したり、既存のデータベースをオープンすることができます。
データベース名とオプションで`DatabaseConfiguration`を渡します。

注意すべき点は次のとおりです。

– データベースのオープン/作成は非同期プロセスです
– 指定されたデータベースが指定された場所またはデフォルトの場所に存在しな

元記事を表示

Java 17新機能まとめ

Java 17が2021/9/14にリリースされました。

http://mail.openjdk.java.net/pipermail/jdk-dev/2021-September/006037.html

機能的に多くのプログラマに関係ありそうな変更はApple Siliconに対応したくらいですが、LTSであるということが大きいと思います。

詳細はこちら
[Oracle Releases Java 17](https://www.oracle.com/news/announcement/oracle-releases-java-17-2021-09-14/)
[Java SE 17 Platform JSR 392](https://openjdk.java.net/projects/jdk/17/spec/)
[JDK 17 GA Release](https://jdk.java.net/17/)

APIドキュメントはこちら
[Overview (Java SE 17)](https://cr.openjdk.java.net/~iris/se/17/build/late

元記事を表示

opencsvのCSV書き出し(CSVWriter)で囲み文字をなくす

# 結論

CSVWriterの引数多いほうのコンストラクタにICSVWriter.NO_QUOTE_CHARACTERを渡す。
char型で定義されているので`¥u0000`を渡してもいいはず。

# 実例

“`java
Path p = Paths.of(‘xxx’);
try (
BufferedWriter bw = Files.newBufferedWriter(p, StandardCharsets.UTF_8);
CSVWriter writer = new CSVWriter(writer
, CSVWriter.DEFAULT_SEPARATOR
, CSVWriter.NO_QUOTE_CHARACTER
, CSVWriter.DEFAULT_ESCAPE_CHARACTER
, CSVWriter.DEFAULT_LINE_END) {
// …
}
“`

# 参考

http://opencsv.sourceforge.net/apidocs/com/opencsv/CSVWriter.html#CSVWr

元記事を表示

OTHERカテゴリの最新記事