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

JAVA関連のことを調べてみた2021年09月25日
目次

Java 17 の Sealed Classes の書き方

Java 17 で Sealed Classes[^jep409] が正式版になりました。Pattern Matching for switch が Preview 版[^jep406]のため積極的に利用する価値に乏しいせいか、詳しい記述方法の解説が見当たらなかったので、[JEP 409: Sealed Classes](https://openjdk.java.net/jeps/409) で確認しました。この記事では JEP の内容を私なりにご紹介しますが、その前に簡単な使い方と、私の Sealed Classes への期待を述べたいと思います。

# はじめに簡単な使い方

Sealed Classes を使う場合、同時に Records を使いたいことが多いと思います。そのためには sealed class ではなく sealed interface を使います。

以下はガンダム、ガンキャノン、ガンタンク以外の連邦軍MSは認めたくない場合の例で、各クラスは public なのでそれぞれ別のファイルに記述されているものとします。

“`java
sealed interface

元記事を表示

[paiza]スキルチェック見本問題 Java 指定要素があるかの判定 ・要素の種類数 continueとは (paizaランク D 相当)

初めに

今回以下の2つの問題に挑戦しました。

https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__exist

https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__kind

数日スキルチェック問題に取り組んでいないと、なんだか鈍るというか、
どういう道筋で解くのか浮かばなくなります:frowning2:

今回も躓きつつも、学びがありました!

①指定要素があるかの判定

https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__exist

“`
配列 A の要素数 N と整数 K , 配列 A の各要素
A_1, A_2, …, A_N が与えられるので、A に K が 1 つでも含まれている場合は
Yes を、含

元記事を表示

Spring GraphQLを試してみた

## 概要
Spring BootでGraphQLのQueryを
試してみたときの記録です。
Spring GraphQLを遅ればせながらのお試し。

GraphQLの説明は[本家](https://graphql.org/)を参照してください。

# 開発環境
OS : Windows 7 Home Edition 64bit
Java : Java 11
STS : 4.10.0

# 確認手順の概要
– Spring Bootプロジェクトを作る
– GraphQL周りを設定する
– サーブレットをGraphQL経由で実行する

## Spring Bootプロジェクトを作る
Spring Bootのバージョン2.1.9でプロジェクト作成、
依存関係は以下の通りです。DB周りは個々の環境に
合わせてください。

– Lombok
– Spring Data JPA
– Oracle Driver
– Oracle Database XE

## GraphQL関連
### 要注意事項
– Spring Bootのバージョン
– GraphQL単体で使うことについ

元記事を表示

フリーランスエンジニアとして働くならJavaはおすすめ?

## はじめに
– フリーランスエンジニアとして働くためにJavaはおすすめなの?
– Javaの将来性は?案件は多いの?

フリーランスエンジニアとして、Javaを習得するのはありでしょうか?

ここでは、フリーランスエンジニアとして働くならJavaはおすすめできるのか?習得するために必要なことを解説していきます。

## そもそもJavaとは?
Javaは1995年に登場して以来、**数あるプログラミング言語の中でも人気が高い**です。国内外問わずJavaの使用人口も多く、多くの企業でも採用されています。

プログラミング言語の人気ランキングを発表している[TIOBE Index](https://www.tiobe.com/tiobe-index/)でも2位となっています。

なぜこれだけ人気が高いのかと言うと、JavaはOSに依存しないマルチプラットフォームな言語で、汎用性が高くなんでも作れるからです。

たとえばAndroid向けのアプリやWebサービス、規模の大きな業務システムまで幅広い開発でJavaが使われています。

つまり、**Javaさえ覚えておけば、さまざまな開

元記事を表示

Java silver 6章 継承とポリモフィズム②

#オブジェクト指向の三要素
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/601137/186636fd-77b2-8026-52b8-a4cdf55a2ff8.png)

## カプセル化
オブジェクトの安全性を高めるために、オブジェクトのメンバーを保護すること
※メンバ = オブジェクトのメソッド及び変数
この性質を理解し、影響範囲の小さく疎なプログラミングを心がけることが、大規模で安全なシステム構築に繋がる。

他クラスから直接フィールドを操作せず、メソッドを通し間接的に操作する

## 継承
あるクラスを引き継いで新しいクラスを定義する

クラスの共通部分はスーパークラスで管理し、サブクラスで個別の処理を定義する

## ポリモーフィズム(多態性)
オーバライドやオーバロードによって、メソッドを状況によって使い分けることができること
※ オーバライド: 親クラスのメソッドを子クラスで上書きすること
※ オーバロード: 同一クラス内で引数の違いによってメソッドの呼び分けること

元記事を表示

Java17までの年表サマリ

かなり偏見あり、だいたいWikipediaから引っ張てきた。

## JDK 1.0 ~

家庭用組み込み目指してC++を煽ってたら、携帯とかにのってた時代。
Sunそのものは、Unixサーバー屋で、SolarisつうBSD改造したOSのせてうってた。Javaは野心的なプロジェクトだった。

## ~ J2SE 1.4 (2002年2月6日) / J2EE 1.2

J2EEが出て、Webシステムがガンガン作り始められた時代のJava。

Eは、エンタープライズ。エンタープライズ用Javaと言っても、サーバーサイドJavaの”仕様”と思ってOK。JDBC/JSP/Servlet/EJB とか。Javaはバイナリを配ってるけど、J2EEは仕様だけ、実装はお任せというスタンス。

J2EEは、IBMとかRedhat(JBoss)とかOracleのほうが有名でだいたい有料。SI屋はこっちと契約する。SunのJ2EEアプリケーションサーバーってあったのぐらいに知らない。

## J2SE 5.0 (2004年9月30日) / Java SE 6 (2006年12月11日) / Java EE

元記事を表示

10年前はGoFのデザインパターン本を読んで何やらわかった気になっていました

https://qiita.com/official-events/1e99fc384200c38548fd

10年前は中学生だった!とか、いま中学生だから10年後は!という話を読み、触発されつつ書いています(いや皆様すごいお話ばかりです)。10年前。変わらず今の会社の会社員でした。震災のあった年というのは多かれ少なかれ記憶に残った年ですが、私はその頃ようやく中堅からリーダーを担えるようになって日々の成分としてはほぼお仕事漬けの日々でした。

## 10年前に読んでいた本

振り返ると入社以来ほぼ同じドメイン「人事・給与」の開発に携わっているのでそこは今と大して変わらないのですが、その頃読みまくった本というのがGoFのデザインパターン本からのおよそ結城先生漬け。

[オブジェクト指向における再利用のためのデザインパターン | ガンマ,エリック, ジョンソン,ラルフ, ヘルム,リチャード, ブリシディース,ジョン, Gamma,Erich, Johnson,Ralph, Helm,Richard, Vlissides,John, 真一, 本位田, 和樹, 吉田 |本 | 通販 | Am

元記事を表示

Java電卓(iphone風)

![スクリーンショット 2021-07-21 22.34.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698282/255966ad-0914-3b86-edf6-b2c7ecb8a324.png)

“`java
package myProgram;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.text.DecimalFormat;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.s

元記事を表示

Java再入門 ~Java11 日付時刻API

# 過ぎ去りし日々

これまで日付時刻を扱う場合は、以下を利用していました。

* java.util.Date 値を保持する
* java.util.Calendar 値を保持する&日付の演算をする
* java.text.SimpleDateFormat 日付を指定した書式に整形する。指定した書式の日付からjava.util.Dateを作る
* java.util.TimeZone タイムゾーンを指定する

# 現代

私は全然、日付時刻を真面目に考えたことがなかったので、今回改めて以下の記事を読んで奥深さを学ばせていただきました…

* [タイムゾーン呪いの書 \(知識編\)](https://zenn.dev/dmikurube/articles/curse-of-timezones-common-ja)
* [タイムゾーン呪いの書 \(実装編\)](https://zenn.dev/dmikurube/articles/curse-of-timezones-impl-ja)
* [タイムゾーン呪いの書 \(Java 編\)](https://zenn.dev/dmikurub

元記事を表示

基本情報技術者試験合格までの道のり〜 ご挨拶と勉強の仕方を話す

はじめまして。
基本情報技術者試験合格に向けて、日々のアウトプット日記を始めてみました。
同じく試験合格を目指してる方、共に頑張っていけたらなと思います。

今回受ける試験自体は11月の下旬(午前も午後も)。
今回は初めての受験ということで、目標はとりあえず**午前試験合格**です。

現在2021年の9月23日なので、試験まで約2ヶ月という短さですが頑張ります。

将来、この記事(シリーズ)を読んで試験合格を目指す方が現れたときに僕がどのようにして
勉強していったのかを知れる手がかりになれば幸いです。

##基本情報技術者試験とは
まずは試験について。

「基本情報技術者試験」とは、経済産業大臣が行う国家試験である**「情報処理技術者試験」の区分の1つ**。
“IT業界の登竜門”とよく言われる、立派な**国家資格**です。

IT業界に携わりたい人がまず取得すべき資格です。
##取り組み方 知識問題
僕が実践しているのが、**「問題を読んだらすぐ答えを見る」**という勉強法です。

試験勉強の目的って、試験に合格することですよね。

問題を見て、悩んで、悩んで、悩んでもわからない。

元記事を表示

Java PowerPointをHTML形式に変換

Java 8 (OpenJDK: Eclipse Temurin) を Homebrew で macOS にインストールする

## 概要

– AdoptOpenJDK の後継である Eclipse Temurin を Homebrew で macOS にインストールする。

[Good\-bye AdoptOpenJDK\. Hello Adoptium\! \| AdoptOpenJDK Blog](https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/)

> The move from AdoptOpenJDK to Eclipse Adoptium is now complete. The same great community that brought you high quality Java binaries for the last four years at AdoptOpenJDK is now fully productive at Adoptium.

[Adoptium Celebrates First Release \| Adoptium Blog](https://blog.ado

spring bootのプロパティファイルの設定値をawsのparameter storeから取得する

## 概要
spring bootのプロパティファイルの設定値の一部をawsのparameter storeに移管する

## 環境
・spring boot(2.4.9)
・Java 8

## ライブラリの追加

##### 使用するライブラリ
– [spring-cloud-starter-bootstrap](https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-bootstrap) (spring 2.4以降の場合のみ)
– [spring-cloud-starter-aws-parameter-store-config](https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-aws-parameter-store-config) (spring boot 2.5系は未対応)

##### build.gradleの修正
dependenciesに下記を追加

【Java】StringBuilderのメソッドもともとの文字列が変わらないときもあるのね

#初めに
Stringはイミュータブルで、
StringBuilderはそうじゃないと覚えていたらハマってしまいました。
自分に刻むためのメモです。
(JavaSilverで出るかもしれないし、出ないかもしれない)

##append()
“`java:append()
public class StringBuilderTest {
public static void main(String[] args) {
// 生成
StringBuilder sb = new StringBuilder(“ABC”);
// メソッド実行
System.out.println(sb.append(“DEF”));
// 変わったか
System.out.println(sb);
}
“`
“`java:結果
ABCDEF
ABCDEF
“`
変わる
メモ:append()の引数はboolean、数字なども入れられる(らしい)

##delete()
“`java:delete()
public class StringBu

【Java】繰り返し処理でつまづきそうだったから復習する

#目的

* Javaで学習したことを振り返って理解できるようにする

###1.繰り返し処理

* while文、for文、break文、continue文の4つ
* ここはRubyと差ほど変わらない(?)
* 以下、スクールのカリキュラムの問題を噛み砕いていく

####1. while文

* 1以上5未満の数の2乗を出力

““java
public class practice1 {
public static void main(String[] args) {
// 変数numberを定義する
int number = 1;
// 「1以上5未満」なので5より小さくなるように数字を条件式に入れる
while (number < 4){ // 「二乗」を表すために変数同士をかける ex 2の二乗= 2*2 System.out.println(number * number); // numberが1つずつインクリメント(増加)し、3乗、4乗と増えていく

[Kotlin] 「偽コンストラクタ」の作り方 その1

[Android Dagashi #189](https://androiddagashi.github.io/issue/189-2021-09-12/)で紹介されていた “[Underused Kotlin features](https://mobileit7.medium.com/underused-kotlin-features-2d17eb36bfe7)” (使われなさすぎなKotlinの機能)という記事に書かれていた “Pseudoconstructors” がなかなか面白かったので、筆者なりの視点で記事にしてみました。

本稿を書いていて感じたのが、これはKotlinからプログラミングを始めた人にとっては特に目につくテクニックではないのかもしれない、ということ。現状はJavaからKotlinに移った人がまだまだ主流でしょう(特にAndroidプログラマー)から、そういう方々に、こんなコーディングのやり方もあるんだ、と思っていただくことを念頭に置いています。

「偽コンストラクタ」、すなわちコンストラクタに見える別物です。そんなめんどくさそうな「使われなさすぎ」機能を使う

(JAVA勉強用メモ)9. API

## java.lang.Math
“`java
System.out.println(Math.pow(4, 2)); // 16.0(累乗)
System.out.println(Math.sqrt(3)); // 1.7320508075688772(平方根)
“`

## java.util.Comparator, java.lang.Comparable
– 並べ替え対象のクラスがjava.lang.Comparable.compareTo()を実装する。
– java.util.Comparator.compareを実装するクラスを定義する。
– 第一引数を前にするときは`-1`を、第二引数を前にするときは`1`を、変えないときは0を返す。

## java.time.LocalDate
– immutableなオブジェクト
– 『月』が0からではなく1から始まる
– 日付操作の便利なメソッドが追加された

## ジェネリクス
– AtrrayListで扱う型を制限するための機能
– 型推論が使用できる

“`java
List a

OpenJDKって何だっけ?OracleJDKとの違いは?無料?有償?

OpenJDK、OracleJDKの違いについてまとめてみました。
※ここは違うよ!みたいのあれば是非コメント下さい。

## OpenJDK

狭義のOpenJDKは、**バイナリ(JDKの開発者ではなく、利用者であればバイナリを利用するのが通常)を提供していません。**
あくまで、プログラムソースを実装しているOSSのプロジェクトです。
URLは以下。
http://openjdk.java.net/
プログラムソースは以下で管理されている。
https://github.com/openjdk/jdk

じゃあ誰がバイナリを提供をしているのかというと、以下の会社さん等です。
・oracle(oracle open jdk、oracle jdk)
・red hat(red hat open jdk)
・amazon(amazon corretto)
・Microsoft (microsoft open jdk)

で、oracleさんに関しては色々な情報が錯綜している状態かと思いますので、
情報をまとめていきます。

## Orac

動画で学ぶJHipster (7) 閲覧権限を修正

# 参考動画
https://www.youtube.com/watch?v=6lf64CctDAQ

# お互いの投稿が見えてしまうことを修正。

admin はadminの投稿だけ、userはuserの投稿だけ見えてほしいが、現状では、お互いが、お互いの投稿が見えてしまう状態である。それを修正する。

* Adminでログインした場合 (修正前)
![2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1284134/0941caa1-f480-6512-796d-63486e447c61.png)
![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1284134/23fb1874-3e85-a9a5-28d6-63ac8d5b3e9a.png)
* Userでログインした場合 (修正前)
![3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

【intra-mart】JavaのクラスファイルなどがImportできなくなった時の対処法

#はじめに
本日は、intra-martでJavaのクラスファイルなどがImportできなくなった時の対処法を記載します。
JavaEE開発を行っている際に自分も同じ状況になりました。備忘のために記事としています。

【前提条件】
・intra-mart e Builder for Accel Platform をインストール済みであること。
・intra-mart Accel Platform をインストールし、初期設定までが完了していること。
・開発環境のresinサーバーが作成されていること。
・e-Builder上にプロジェクトが作成できていて、開発を始めていること。

※プロジェクトの作成方法に関しては以下を参照してください。

https://document.intra-mart.jp/library/iap/public/setup/iap_setup_guide/texts/create_war/create_project.html

#状況確認
JavaのクラスファイルなどがImportできなくなった時とは以下のような状況のことを言います。
![image.png