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

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

【Java】Value-Based Classってなんやねん

# はじめに
Java 17のソースコードで遊んでいると、下記コードの`synchronized`ブロックで警告が出ました。
“`SynchronizedSample.java
public class SynchronizedSample {

Integer integerObject = 1;

void sampleMethod() {

synchronized(integerObject) {

System.out.println(“a”);
}
}
}
“`
:::note warn
`Integer is a value-based type which is a discouraged argument for the synchronized statement`
:::
「`integer`は`value-based`型で`synchronized`構文では推奨されないよ」ですって。
「なんじゃこりゃ」と思い調べてみたので記事にします。

# Value-based ってなんやねん
https://docs.oracle.com/en/j

元記事を表示

Development methods that should not be done on site

現場で良くみる分かりにくいコードが何故ダメなのか?
分かりやすく解説してくれています。

https://www.ulsystems.co.jp/archives/039.html

元記事を表示

【Java】SDKMANがインストールできない。

# 初めに
JavaのフレームワークQuarkusを触るためにSDKMANをインストールしました。
そのときに出会ったトラブルを書きます。

# 動作環境
– WSL Ubuntu 22.0.4.2 LST

# `curl -s “https://get.sdkman.io” | bash`でエラー発生
JVM言語バーンジョン管理ツールSDKMANの[公式ドキュメント](https://sdkman.io/install)に従ってインストールすると以下エラーが発生した。
“`bash
$ curl -s “https://get.sdkman.io” | bash

-+syyyyyyys:
`/yho:` -yd.
`/yh/` +m.
.oho. hy

元記事を表示

日本語プログラミング言語 なでしこ3 Java C# で整数カウントアップ実行時間を仲良く競う

# はじめに
日本語プログラミング言語 なでしこ3 とJava C# とで整数カウントアップの反復実行時間を仲良く競い合わせてみます。関数呼び出しは意外と重い処理なので、いったん素の処理でどんなものなのか検証します。なでしこ3のコンソールアプリです。

https://qiita.com/advent-calendar/2023/nadesiko

## この記事内容の作業環境
Windows11 Pro 22H2
VSCode(Visual Studo Code) 1.78.2
java Eclipse Adoptium jdk-20.0.2.9-hotspot
C# 10 dotnet-sdk-6.0.404-win-x64
nadesiko version 3.4.5 nadesiko3win32-3.4.5
Node.js v20.10.0.
CPU Intel(R) Core(TM) i3-5005U 2.00 GHz

## この記事内容の保証
※この記事の実行結果は参考情報です。実行環境に大きく依存します。

# お題のソースコード
#### Java
“`Java:m

元記事を表示

未経験からエンジニア転職した話

@newta 様の[エンジニア転職 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/change-jobs)に参加させていただいております。
企画いただきありがとうございます!

# まえがき
こんにちは。えくれあと申します。
未経験からエンジニアに転職して数ヶ月経ちました。
自分がエンジニアを目指して学習している際には、よく転職報告記事を見ていて参考にさせてもらっていたので、
今回は先人たちへの感謝と、エンジニアを目指している皆様への応援の気持ちを込めて、記事を書く側に回ってみようかと思います。

# 略歴
年齢:20代後半
大学:中退
1社目:エンタメ系企業 企画職 メンバー
2社目:エンタメ系企業 企画職 メンバー→準マネージャー
退職後:職業訓練校 修了(6ヶ月間)
現在:業務系システム開発(Java) 客先常駐メイン

行動力だけはあると自負しており、紆余曲折ありながらもその時々でやりたいことはやれているな〜と感じております。
ただ、大学は中退しているし、特別なスキルももともとないし、コンプレックスあり

元記事を表示

Javaの商標と大文字小文字

 しばしば話題になるJavaの商標とその大文字小文字について。

## 実際に登録されている商標

 Java™ の商標権は2023年現在、米Oracle社が保有しています。

https://trademarks.justia.com/866/94/java-86694276.html

 歴史的な経緯としては1995年に 米Sun Microsystems がJavaを発表し商標権も取得していたわけですが、経営が傾き、Oracleに買収されました。買収の完了が2010年1月27日とされます。

## 米国の商標における大文字小文字

アルファベットの商標は大文字と小文字どちらで登録した方がいいでしょうか?

> 米国出願では、全て大文字で記載した場合には、小文字や頭文字のみ大文字での使用も商標の使用と認められますが、小文字での権利化の場合、小文字での使用しか商標の使用と認められない場合があります。

 アメリカでの商標の取り扱いとしては上記のような理由で、大文字で商標登録する事情があるようです。

## Javaのロゴ

 Jav

元記事を表示

【Java】jdbctemplateメモ(DataClassRowMapper)

## jdbctemplateでDBのデータを扱う際の型について

現在SoringBootについて学習中ですが、参考書(プロになるためのSpring入門)にて、jdbctemplateの使用方法で便利な機能を見つけたので忘れないようにアウトプットするために下記に殴り書きしていきます。

SpringBootのjdbctemplateにてDBから1レコードを取り出す際に、
今まではqueryForMapを使用してDAOファイルで変換を行っていました。

下記のコードは予約管理システムに使用した予約情報をIDを使用して検索するためのコードです。
引数で予約に紐づくIDを受け取りReserve型をインスタンス化して型ごとにmapを使用して変換していました。

“`java
public Reserve idFind(String id) {
String sql = “SELECT * FROM reserve WHERE id = ?”;
try {
Map map = jdbcTempla

元記事を表示

Collection and its characteristics

Which should I choose: List, Set, or Map?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2948553/44a694d1-3d57-da35-c710-aec1a400cdd9.png)

元記事を表示

OpenJDK + OpenJFXでJavaアプリ開発環境構築

# はじめに
PCを新調したので改めてJavaの開発環境を構築したので,メモも兼ねて記事作成.

OpenJDK + OpenJFXのインストールとEclipse上の設定までの手順.

JavaFXを使うこともあって,あらかじめ同梱されてる(らしい)Liberica JDKというディストリビューションをつかおうと思いましたが,いろいろ詰まったので結局それぞれOpen JDKとOpenJFXでやることにしました.

## Open JDKとOpenJFXのインストール

### Open JDK

Oracleの[公式ページ](https://jdk.java.net/)より「JDK」からプラットフォームに合ったものをDLしましょう.
![スクリーンショット 2023-12-04 103442.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1857903/5f03880f-caca-d6f7-ec6c-9eae5b6ecc63.png)
![スクリーンショット 2023-12-04 104918.png]

元記事を表示

型システムから考えるPython, Java, Golangそれぞれの違い

# 初めに

## 背景

今までPythonを使ってきたのですが、転職先ではJavaとGolangを主に使用することになりました。特にPythonにはない型を意識した開発のメリット、JavaとGolangのintefaceの違いがあまりよく分からなかったので、調べてみました。
この記事では、PythonとJavaとGolangの違いについて触れ、そして記事の最後には GolangとJavaのintefaceを違いを明示しつつ、Pythonで書き直してみました。

## 対象読者

* 動的型付け言語しか使ったことない人
* JavaとGolangの違いがはっきり分からない人
* 型を意識したことがあまりない人

## シンプルな実装

まず、Python, Java, Golangの3つで一番シンプルなクラスを書いてみる。
Pythonは以下を見てもらうと分かる通り、Pythonを知らない人でも、理解できてしまうぐらいシンプル。

Pythonの場合

“`python:simpleなクラス(python)
clas

元記事を表示

DAO

DTO(Data Transfer Object)はデータ受け渡し専用のクラス
データを管理するフィールド変数とフィールド変数に対応したGetter・Setterで構成される。
型の異なるデータを一括で管理可能。

4.2 DAO/DTOパターン

元記事を表示

KotlinにおけるJava検査例外の扱いとSpringの@Transactionalの罠

Javaと同じような感覚でKotlin使えるわー、と考えていたら思わぬところでハマったので共有します

## 環境

* Spring Boot 3.1.5
* Amazon Corretto 17
* Kotlin 1.9.10

## Javaの検査例外と非検査例外

Javaには他の主要なプログラミング言語と異なり「検査例外」と呼ばれる例外が存在します。「検査例外」と「非検査例外」には以下の違いがあります。

1. 検査例外
* try-catchでハンドリング or throwsで呼び出し元に例外を伝播させないとコンパイルエラーになる例外
* → 検査しないとエラーになるので「検査例外」
* `Exception`を継承した例外のうち、非検査例外ではない例外が対象
* 代表的なものだと、IOExceptionやClassNotFoundExceptionなどが存在
1. 非検査例外
* 検査例外のようにハンドリングをしなくてもコンパイルエラーにならない例外(ハンドリングすることも可能)
* → 検査しなくてもエラー

元記事を表示

高機能enumとしてのSealed Classでワークフローシステムを作ってみる

## この記事は

[WEMEX株式会社 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/wemex)の4日目に出るはずの記事です。
Java21からSealed Class/Sealed Interfaceのswitch文/式でパターンマッチングが正式利用できるようになりました。
パターンマッチングの応用として、ワークフローシステムをイメージしながらどのようにSealed Class/Sealed Interfaceが使えそうか、試してみました。

## パターンマッチの有用性
Javaでパターンマッチングができるようになったのはわりと最近(Java16以降)ですが、ScalaやKotlinではそれ以前から利用されています。
Scalaの例ですが、[こちらのページ](https://scala-text.github.io/scala_text/case-class-and-pattern-matching.html)で書かれている通り、パターンマッチングには以下の長所があります。

> ノードの種類と構造によ

元記事を表示

Java21の新機能とJDK開発者の開発思想に触れてみる

# この記事について
Java21が2023年9月19日に正式リリースされました。
そこで、Java好きな筆者が記事執筆時点[^whenwriting]での最新バージョンであるJava21の新機能を調べ、の中で一部を抜粋し紹介します。
[^whenwriting]: 2023年10月31日

# 動機
筆者がJava21の新機能を調べようと思ったのは、以下の理由です。
– 単純にJavaが好きだから
– Javaの専門家のミドルウェアとしての設計・開発の思想を知り新たな学びを得たいと思ったから

本記事は、その調査を通じて得た知見を共有することを目的で執筆しております。

# 本記事の想定する読者
本記事は、以下のような方を読者として想定しています。
– Java21の新機能に興味がある人
– Java専門家のプロダクトとしての設計思想に触れたい人

後者について、OpenJDKの開発には現場経験が豊富なエンジニアが携わっています。その方々が現場で苦労した経験やあったら嬉しいと思った経験に基づいて新機能が開発されているため、それらの経緯を知ることで、その思想の一端に触れられるかと思いま

元記事を表示

画像を別の形式に変換するクソアプリ

[クソアプリ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/kuso-app) 1日目の記事です。

アドベントカレンダーの記事投稿を終わらせた俺にかわせない攻撃は無い

# 前置き
おはようございます。DE-TEIUです。
冬の季語でおなじみのクソアプリアドベントカレンダーの時間です。

## 過去にアドベントカレンダー用に作ったクソアプリ
– [p5.jsで作ったダメなソリティア](https://qiita.com/de_teiu_tkg/items/c938fbb52218185659e7)
– [絶対に作業できない作業用BGMサイト](https://qiita.com/de_teiu_tkg/items/6ebcef3550507258edaf)
– [社会に一石を投じるクソアプリ開発](https://qiita.com/de_teiu_tkg/items/e82870eca1f265807dbe)
– [鼻毛が生えるカメラアプリ](https://qiita.com/de_teiu_tkg/it

元記事を表示

【Python】Java Access BridgeでJava自動化

# 目標

Java Access Bridgeを利用してJavaアプリを自動化する。

# 背景

ブラウザやWindowsアプリはたいていの場合、SeleniumやUIAutomationを利用すれば自動化できる。しかし、Javaアプリの場合、Java実行環境を介して実行しているためか、エレメント情報を取得することができず自動化することが難しい。
そこで調査したところ、JavaAccessBridgeというものを利用すればJavaアプリを自動化できるそう。
検証してみる。

UIAutomationではJavaのエレメント取得ができない理由については別の記事にまとめる。

# Java Access Bridgeとは何か

[公式](https://docs.oracle.com/javase/accessbridge/2.0.2/introduction.htm)の説明を読み解いていく。

> Microsoft Windows DLL で Java Accessibility API を公開するテクノロジで、Java Accessibility API を実装する Java ア

元記事を表示

第2回緑以下コンの解答[Java]

## はじめに
オンサイトで参加した[第2回緑以下コンテスト](https://yukicoder.me/contests/471)でなんとか全完できたので、その時のコードを載せようと思います。今回は基本自作ライブラリを使ってないのでそのままで動くと思います。

なお、感じたことをなるべくそのまま書くために普段以上に文体が崩れてるかと思いますが、ご了承ください。
では、見ていきましょう。

## A – 緑以下コンテスト
問題文は[こちら](https://yukicoder.me/problems/no/2557)

普通に三項演算子で良い感じに判定しました。
“`A.java
import java.util.*;
import java.io.*;
class Main{
private static final BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
private static final PrintWriter out =
new PrintWriter

元記事を表示

リクエストマッピング(@Request Mapping)

– 要請を送った時、どのコントロールラーが呼び出されるべきか、どのような方式で処理するかを定義する。
– @Request Mapping Annotationを使って要請を特定のmethodとmappingし、mappingする方法は以下がある。

# URL で mapping をする
– Url呼び出しが来たら、このメソッドが実行されるようにマッピングする。
– method属性でHTTPメソッド(GET、POST、HEAD、PUT、PATCH、DELETE)を指定しなければ、HTTPメソッドと関係なく呼び出される。
“`java
@RequestMapping(“/hello-basic”, method = RequestMethod.GET)
// 多重設定も可能である。
// @RequestMapping({“/hello-basic”, “/hello-go”}, method = RequestMethod.GET)
public String helloBasic() {
log.info(“helloBa

元記事を表示

Udemy講座2本(18時間と10時間)作成のプロセスと期間

### 自己紹介

皆さん、こんにちは、Udemy講師の斉藤賢哉です。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また [「マスタリング Java EE 5」](https://amzn.asia/d/j0txqK5)や[「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)といった書籍も執筆しています。

### Udemy講座のご紹介とクーポンコード(2023年12月末まで)

現在私が講師を務めるUdemy講座には、以下のラインアップがあります。
これらのコースは、**Udedmyセールス対象外のためタイミングを気にすることなく購入可能**です。また以下のリンクから購入いただくと、クーポンが適用されたことになり、定価の**約30%OFF**で購入することができます。

|コース名|リリース|定価|クーポン適用後価格|20

元記事を表示

【Java】IT未経験でJavaをやってみたい方にオススメの書籍

# はじめに
Java初心者のころにいろいろな本に手を出して苦戦したので、IT未経験でJavaをやってみたい方の役に立つようなオススメ書籍と読む順番をまとめてみます。
世の中こういう記事は大量にあるので、まあ誰かの役に立てば。。

# Java
初心者におすすめのタイトルを、読む順番に書いていきます。
内容については本の公式ページを見ればわかると思いますので、超個人的なコメントと共に書いていきます。

## 独習Java
https://www.shoeisha.co.jp/book/detail/9784798151120

はじめてJava言語を学ぶのにまず読むといいんじゃないかなと思います。
最初はソースコードを書く開発環境の用意をどうすればいいか分からない、そもそもその考えに至らない(私はそうでした)と思いますが、初めのイントロダクションで開発環境の使い方を説明しているので、書いて身につける環境がそろいます。
数年IT業界に従事して思ったんですが、技術者は知ってるだけでなく使えないと意味がないと思うので。。
この本で開発環境をそろえて、自分でコードを書いて動かしながら学習を進め

元記事を表示

OTHERカテゴリの最新記事