- 1. Java 21新機能まとめ
- 2. Javaで「乱数を生成する」の動作を確認してみた
- 3. 突然Apache JMeterの独自サンプラのプラグインを作って負荷試験する必要になったときに読む記事
- 4. Spark on k8s 概要と機能
- 5. Java Silver勉強メモ
- 6. デザインパターン Compositeパターン
- 7. スッキリわかるJava入門 実践編 第3版 まとめ – part3 -関数とラムダ式
- 8. Azkabanというジョブスケジューラーを最新(4.x)にアップデートするまでの作業メモ
- 9. [初心者] seleniumの環境設定(Java) 備忘録
- 10. 自作アプリをSpringBootにリプレイスした話
- 11. スッキリわかるJava入門 実践編 第3版 まとめ – part2 -さまざまな種類のクラス
- 12. ミニ生命保険システムを作成 – 目次と概要
- 13. Javaで「切り上げ/切捨て/四捨五入を取得する」の動作を確認してみた
- 14. 【Java・学習ログ⑨】継承について(抽象クラスとインタフェース)
- 15. ミニ生命保険システムを作成 S06
- 16. PDFBoxのデフォルトフォントがver.3.0.0で無くなってた案件
- 17. Java 基本の復習 part.3
- 18. データベースをプログラムで操作してみた
- 19. STSでMVCに基づいたプログラムを作成してみた
- 20. Javaで「対数を取得する」の動作を確認してみた
Java 21新機能まとめ
Java 21が2023/9/19にリリースされました。
https://mail.openjdk.org/pipermail/jdk-dev/2023-September/008267.html
[The Arrival of Java 21!](https://inside.java/2023/09/19/the-arrival-of-java-21/)LTSであり、パターンマッチングや仮想スレッドが正式化され、プレビューとして入ったString Templatesや無名クラス&インスタンスメインメソッドも面白い機能なので、大切なリリースになっていると思います。
詳細はこちら
[JDK 21
Javaで「乱数を生成する」の動作を確認してみた
# 概要
Javaで「乱数を生成する」の動作を確認してみました。以下のページを参考にしました。
https://www.javadrive.jp/start/math/index8.html
# 実装
以下のファイルを作成しました。
“`JSample8_1.java
class JSample8_1{
public static void main(String[] args){
for (int i = 0 ; i < 10; i++){ System.out.println((int)Math.ceil(Math.random() * 5) + 5); } } } ``` 以下のコマンドを実行しました。 ``` $ javac JSample8_1.java $ java JSample8_1 6 10 9 8 7 10 6 7 7 8 ``` # まとめ 何かの役に立てばと。
突然Apache JMeterの独自サンプラのプラグインを作って負荷試験する必要になったときに読む記事
# 対象読者
– Apache JMeterを使った負荷試験の計画を練っている最中、既存のサンプラだけでは不十分な状況に陥ったので、独自のサンプラをサッと書きたい。
– Javaはなんとなく読み書きできるけど詳しくない。Javaのビルド設定の仕方が分からない。# この文章について
Apache JMeterで独自サンプラをJavaでサッと書くための手順を説明します。Javaに詳しくない人向けの文章であるためビルド設定などを重点的に説明します。
JMeterのサンプラの内、**JavaSampler**向けのプラグインを記述します。
## 手順
### 1. InteliJ IDEAのインストール
普段Javaを書かない方、Javaの統合開発環境である[InteliJ IDEA](https://www.jetbrains.com/ja-jp/idea/)をインストールしましょう。無償版と有償版があります。(筆者はJetBrainsのAll in packを購入していますが、無償版でも充分かと思います。)
以下、IntelliJ IDEA 2023.2.2を前提に記述
Spark on k8s 概要と機能
## Spark on k8s 概要と機能
Apache Sparkは、大規模データ処理のためのオープンソースのクラスター分散処理フレームワーク。Spark on Kubernetes(通称Spark-Kubernetes)は、Kubernetes上でSparkアプリケーションを実行するための専用の機能セット。以下にSpark-Kubernetesの概要と主な機能を詳しく説明する。
### Spark-Kubernetesの概要
Spark-Kubernetesは、SparkアプリケーションをKubernetes上で実行するための統合プラットフォームであり、以下のような特徴を持っている。
– クラスターマネージャーの代わりにKubernetesを使用してSparkアプリケーションをデプロイ、管理、スケジュールする。
– Kubernetesのリソースマネージャーとしての機能を利用して、Sparkのタスクスケジューリングとリソース割り当てを行う。
– Kubernetesクラスタ上で複数のSparkアプリケーションを同時に実行し、異なるアプリケーション間でリソースを共有する。
Java Silver勉強メモ
# 最初に
Java Silver 勉強のメモを記していきたいと思います。
間違いなどありましたら教えていただけると幸いです。
随時更新していきます。## 同名のローカル変数とフィールドがある場合
同名のローカル変数とフィールドがある場合、this を使ってフィールドであることを明記しないとローカル変数が優先されます、
そのため下記では test メソッドを実行しても num フィールドの値は変更されません。“`java
public class Main {
private static int num;
// static初期化子
static {
num = 10;
}
static {
num = 20;
}static void test(int num) {
num = num * num; // ここで参照しているnumは引数のnum
}public static void main(String[] args) {
test(
デザインパターン Compositeパターン
# Compositeパターン
ツリー構造のオブジェクトを階層の深さに関わらず一律に扱うためのデザインパターン。個々のオブジェクト(葉、**リーフ**、Leafと呼ばれる)と複合オブジェクト(複合、**コンポジット**、Compositeと呼ばれる)を同一視し、クライアントが両者を同じように扱う。
ツリー構造を構成する要素は**ノード**、Nodeと呼ばれ、子要素を持たない要素をリーフ、Leafと呼ぶ。
**Iteratorパターン**を内部で使用することで実現する。
## 透過性
透過性とは、コンポーネントが他の部分に対して内部の実装を隠し、簡潔で使いやすいインターフェースを提供することを指す。Compositeパターンでは、クライアントは扱う対象がノードなのか、リーフなのかを意識しなくて良い(クライアントからは見えない=透過)。
+ **情報の隠蔽(Information Hiding)**
内部の実装、データ構造などの詳細部分を他のコードから隠蔽すること。外部に対しては、必要な情報だけが公開され、内部の実装の変更が外部に影響を与えないようになる。+ **インタ
スッキリわかるJava入門 実践編 第3版 まとめ – part3 -関数とラムダ式
# はじめに
こんにちは ◤●ㅅ●◥ノ今回は関数とラムダ式について学びました!
## 第3章 関数とラムダ式
### 1.関数オブジェクトプログラミング言語において、プログラムの実行中に生み出したり、変数に代入したりできるもの
→ __第1級オブジェクト__第1級オブジェクトとは以下に挙げるようなものたちのこと
・データ(数値や文字)
・データ構造(配列や構造体)
・インスタンスまたその3種類以外にも関数が存在する
→第1級オブジェクトとして扱う関数を特に関数オブジェクトと表現する:star: Java世界における関数とは…
何らかの情報(Input)を引数として受け取り、
何らかの処理(Process)を行い、
何らかの結果(Output)を戻り値として返す、ひとかたまりの処理ロジック関数とメソッドの違い
1.メソッドはクラスに属する一種の関数である
2.関数にとって名前は重要でなく、必須ではない### 2.関数の代入
:pencil2: 変数へのメソッド参照の格納
`変数名 = クラス名::そのクラスの静的メソッド名`
`変数名 = インスタンス変
Azkabanというジョブスケジューラーを最新(4.x)にアップデートするまでの作業メモ
今回私が担当しているAzkabanのバージョンアップが必要になったため、
アップグレードするための検証と作業メモを投稿します。## はじめに
私が担当したAzkabanは、10年近く前に構築されたものであり、使用しているバージョンは2.5.0でした。
最初に他のジョブスケジューラーの検討や、バージョンアップ以外の対応も検討しましたが、
アップグレードで対応するのが最も簡単であると判断しました。
また、古いバージョンのシステムが今まで動いていた実績もあり、構成を変えたくないという気持ちもありました。
Azkabanの機能については、[公式](https://azkaban.github.io/)を確認ください。## なぜバージョンアップが必要になったか
主な動機は、以下の2点です。– 動作している2.5.0ではメール送信時にTLSの設定ができなかったため、バージョンアップすることで対応できると考えました。
– 3.x系にするのも、4.x系にするのも大したコストの差がないため、最新版にすることにしました。## 調査
### AzkabanはTLS対応しているのかを調べ
[初心者] seleniumの環境設定(Java) 備忘録
# seleniumの環境設定について
Webサイトのテスト自動化で使われるSeleniumの環境構築を行ってみましたが、初心者には難易度が高かったです。
備忘録としてと、誰かの役に立てばと、手順を残したいと思います。
参考になれば幸いです。
※初心者のため、過不足が生じるかと思いますが、ご容赦くださいませ。。# 実行環境
OS : Windows11 Home 64bit
CPU : core i7
メモリ : 16GB参考にさせて頂いたサイト
https://qiita.com/tsukakei/items/41bc7f3827407f8f37e8# 用意してたもの
* Eclipse
※Javaはすでに入っているものとする* ChromeDriver
※GoogleChromeはすでに入っているものとする* selenium WebDriver(Java)
* Junit
※必要だったかわからない# 手順
1. 任意のフォルダを作成
以降、ダウンロードしたものを入れておくフォルダを準備する。
※これは任意のため、不要な方は飛ばす。1. Ecli
自作アプリをSpringBootにリプレイスした話
# はじめに
こんにちは。takunと申します。
つい昨日[Javaサーブレットで作成したWebアプリ](https://qiita.com/takun/items/9ba715007c797e7ed21c)をSpringBootを用いた実装にリプレイスしてみました。
リプレイスにあたり、コーディング内容だけでなく環境設定やデプロイ方法も変わり苦戦しました(苦笑)
プロセスを備忘録として残します。当方は初心者エンジニアです。間違ったことや不適切な内容となってしまう可能性もあることをご承知ください。また、助言など頂けると嬉しいです。
前提として以下の通り。
使用PC:MacbookAir(Intel)
開発環境:Eclipse
使用言語:Java,SpringBoot
使用DB:MySQL5.7
大まかな構成:HTML(thymeleaf),コントローラークラス,DAOクラス[注意]今後ログイン認証機能も考えているため、ソースが汚いかもしれません・・・↓
https://github.com/takumiuma/menu-proposer
https://menu-se
スッキリわかるJava入門 実践編 第3版 まとめ – part2 -さまざまな種類のクラス
# はじめに
こんにちは ◤●ㅅ●◥ノ今回は型安全から様々な種類のクラスについて学びました!
## 第2章 さまざまな種類のクラス
### 1.型安全
Javaでは変数の宣言をするとき必ず型を指定する
型を指定することでintなら整数、Stringなら文字列の情報のみ格納される
→格納するデータに制約をかける仕組みである:thinking:なぜ制約をかける必要があるのか?色々な情報を入れられたら楽なのでは?
→呼び出しの際に間違える可能性がある、コンパイルの時にエラーが出ないため気づきにくい
→変数に予期しない種類の情報が入ってしまうことを未然に防いでいる型によって担保される安全性… __型安全__
Javaには型安全のメリットをより享受するために
「ジェネリクス」や「列挙型」という仕組みがある### 2.ジェネリクス
ArrayListをはじめとするコレクションクラス
→ArrayListのように<>で型を制限している
→型安全のためにコレクションクラスは常に<~>をつけて利用する:thinking:なぜコレクションくらすだけ<~>が
ミニ生命保険システムを作成 – 目次と概要
# 目的
この技術に関する一連の記事は、Javaを学ぼうとしている人たちの助けになることを願っている。何かご提案やご質問がありましたら、コメントをお待ちしています。# 記事リスト
|概要|リンク|
|:–|:–|
|ミニ生命保険システムアーキテクチャの簡単な説明。|[S01](https://qiita.com/Weekend/items/6a655b2c6b98724aa497)|
|Service Discoveryと基礎的Productアプリケーションを実装する。|[S02](https://qiita.com/Weekend/items/7e80a2c1ed56611a7a4f)|
|Gateway、Sales、Underwritingを実装します。OpenFeignを利用し、アプリケーション間の呼び出し方法を説明する。|[S03](https://qiita.com/Weekend/items/8d0d40b4b8ae4a6389ce)|
|Vaadinを使ってSalesのUIを実装し、Productを呼び出して商品リストを表示する。|[S04](https://qi
Javaで「切り上げ/切捨て/四捨五入を取得する」の動作を確認してみた
# 概要
Javaで「切り上げ/切捨て/四捨五入を取得する」の動作を確認してみました。以下のページを参考にしました。
https://www.javadrive.jp/start/math/index7.html
# 実装
以下のファイルを作成しました。
“`JSample7_1.java
class JSample7_1{
public static void main(String[] args){
System.out.println(“Math.ceil(1.34) = ” + Math.ceil(1.34));
System.out.println(“Math.ceil(-0.23) = ” + Math.ceil(-0.23));
System.out.println(“Math.ceil(3.89) = ” + Math.ceil(-3.89));System.out.println(“– –“);
System.out.println(“Math.floor(1.34) = ” + Math.floor(1
【Java・学習ログ⑨】継承について(抽象クラスとインタフェース)
教本に沿ってやってみたシリーズ、『第10・11章』。
≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ## 継承の基本
以前作ったクラスと似通ったクラスを作りたい時、類似したクラスを作成することができる**継承**という機能がある。
▼Heroクラスを元にしたSuperHeroクラスを定義したいとき
“`java
public calss SuperHero extends Hero {
“`
このように、extendsを用いれば、元のクラスの差分だけを記述する形で新たなクラスを宣言できる。元となるクラス(親クラス)、新たに定義されるクラス(子クラス)の関係を**継承関係**という。
子クラス直下に定義されていないメソッドも、インスタンス化すれば呼び出しが可能。
“`java
SuperHero sh = new SuperHero(); // インスタンス化
sh.run();
“`
#### オーバーライド
親クラスに定義したrunのメソッドを、SuperHeroクラスに限って動きを書き換えた
ミニ生命保険システムを作成 S06
# はじめに
今回は部分的なUnderwritingを実装します。[「S05」](https://qiita.com/Weekend/items/f8b28fa8168becddf38e)で記載したBad Smellは、今回Underwritingの実装と一緒にリファクタリングしている。# 実装
お客様がSalesで保険プランを作成し、保険申込を開始した。Underwritingは保険申込を受付、情報をチェックする。SalesはこのAPIを呼び出す。URL、DTOはSalesとUnderwritingで両方とも重複して実装する必要がある。重複を避けるため、このAPIは新しいコンポーネントとして作成されています。Mavenを使って依存関係をインポートする。
![dependency.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3554924/45704c0e-4d71-2e57-441d-3b3d423297f5.png)## underwriting-apiを作成
![projectapi.p
PDFBoxのデフォルトフォントがver.3.0.0で無くなってた案件
**import文省くから適宜import文は付け加えてね!**
# 発生した問題使用言語:Java(+Kotlin)
環境:InteliJ IDEAPDFBoxの2.x.x系統の頃って`PDType1Font`クラスに`public static final`なフィールドでいくつかデフォルトのフォントスタイルが定義されてて
“`Java
PDFont font = PDType1Font.COURIER;
“`
みたいな感じで気軽にフォントを用意できたんですよねぇ
んで何も考えずに最新版の3.0.0のjarを導入して同じようなことをやろうとしたら
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368194/842603f8-15cf-d3b6-10c4-f1e3852bd8d1.png)
なんか怒られちゃいました
なんでだろう~
# 結論
なんかアプデに伴いこのフィールド消されたらしいです
3.0.0ではこう書くことで同じ意味になるらしいですよ
“`Java
PDFont
Java 基本の復習 part.3
備忘録
某学習アプリでJavaの勉強をしており、
復習を兼ねて当記事にまとめて行きます。# メソッドのイメージ
かなり大枠の話
javaのフォルダを実行したときの実行順について。例えば・・・
Main.javaを実行する
mainメソッド → メソッド1 → メソッド2・・・
のように書くメソッドがここの処理をする。“`
class Main{
public static void main(String[]args){
hello();・・・処理1
}public static void hello(){
System.out.println(“Hello World”);・・・処理2
}}
“`編集中
データベースをプログラムで操作してみた
## はじめに
今回の内容は、データベースを操作するプログラムの作成方法についてです。
前提条件は以下の通りです。
|Windows10 64bit|
|—|
|Java 20.0.2|## 作成の前に
プロジェクト作成の前に、用語説明をします。
理解できている方は、飛ばして先に進んでください。
また、以前に私が書いた記事で説明している用語に関しては、説明を省きます。
以下に記事を載せておきます。https://qiita.com/ren_g/items/e34de896b8e15818f901
それでは、説明していきます。
* H2 Database
H2 Databaseは、Javaプラットフォーム上で動作するデータベースのことです。今回作成するようなデータベースを必要とするプログラムを作成する際は便利です。
* JPA
Java Persistence APIの略で、データの永続化を可能にしてくれる機能を提供してくれます。今回、プロジェクト作成の際に依存関係で設定するSpring Data JPAはフレームワークの一種で、JPAをSpring bootで使いやすく
STSでMVCに基づいたプログラムを作成してみた
## はじめに
Webアプリケーションの基本、システム開発の設計方針の1つである、MVCについてを記事にしました。また、本記事は。下の記事で行ったプログラム作成の続きです。
https://qiita.com/ren_g/items/a57e02d7f187e8d67db2
## 前提条件
|Windows 10 64bit|
|—|
|Java 20.0.2|## MVCとは
MVCモデルとは、M(Model)、V(View)、C(Controller)の3つに分けてWebアプリケーションなどを管理、設計する方針のことです。
MVCの関係は上の画像のようになっています。
まず、ユーザーがControllerに対して要求します。
そうすると、Controllerは、ViewとModelにそれ
Javaで「対数を取得する」の動作を確認してみた
# 概要
Javaで「対数を取得する」の動作を確認してみました。以下のページを参考にしました。
https://www.javadrive.jp/start/math/index6.html
# 実装
以下のファイルを作成しました。
“`JSample6_1.java
class JSample6_1{
public static void main(String[] args){
System.out.println(Math.log(10));
System.out.println(Math.log(1));
System.out.println(Math.log(Math.E));System.out.println(“– –“);
System.out.println(Math.log10(100));
System.out.println(Math.log10(10));
System.out.println(Math.log10(1));System.out.println(“–