<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Java on Debimate</title><link>https://debimate.jp/categories/java/</link><description>Recent content in Java on Debimate</description><image><title>Debimate</title><url>https://debimate.jp/images/default-ogp.jpg</url><link>https://debimate.jp/images/default-ogp.jpg</link></image><generator>Hugo -- 0.161.1</generator><language>ja-JP</language><lastBuildDate>Sun, 23 May 2021 00:00:00 +0000</lastBuildDate><atom:link href="https://debimate.jp/categories/java/index.xml" rel="self" type="application/rss+xml"/><item><title>【Java】immutable object（不変クラス）の利点／欠点／作成方法および不変クラスで実装する場面</title><link>https://debimate.jp/post/ja/2021-05-23-javaimmutable-object%E4%B8%8D%E5%A4%89%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AE%E5%88%A9%E7%82%B9%E6%AC%A0%E7%82%B9%E4%BD%9C%E6%88%90%E6%96%B9%E6%B3%95/</link><pubDate>Sun, 23 May 2021 00:00:00 +0000</pubDate><guid>https://debimate.jp/post/ja/2021-05-23-javaimmutable-object%E4%B8%8D%E5%A4%89%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AE%E5%88%A9%E7%82%B9%E6%AC%A0%E7%82%B9%E4%BD%9C%E6%88%90%E6%96%B9%E6%B3%95/</guid><description>&lt;h3 id="前書きこれだからc言語プログラマは"&gt;前書き：これだからC言語プログラマは……&lt;/h3&gt;
&lt;p&gt;Immutable object（不変クラス）とは、コンストラクタによるインスタンス生成時から状態（フィールド変数の値）が変わらないクラスを意味します。代表例は&lt;a href="https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/lang/String.html"&gt;Stringクラス&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>【可読性向上】java.utils.Objects.isNull()によるnullチェック【関数型プログラミングに便利】</title><link>https://debimate.jp/post/ja/2021-05-17-%E5%8F%AF%E8%AA%AD%E6%80%A7%E5%90%91%E4%B8%8Ajava-utils-objects-isnull%E3%81%AB%E3%82%88%E3%82%8Bnull%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E9%96%A2%E6%95%B0%E5%9E%8B/</link><pubDate>Mon, 17 May 2021 00:00:00 +0000</pubDate><guid>https://debimate.jp/post/ja/2021-05-17-%E5%8F%AF%E8%AA%AD%E6%80%A7%E5%90%91%E4%B8%8Ajava-utils-objects-isnull%E3%81%AB%E3%82%88%E3%82%8Bnull%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E9%96%A2%E6%95%B0%E5%9E%8B/</guid><description>&lt;h3 id="前書きやによる判定と何が違う"&gt;前書き：&amp;quot;==&amp;ldquo;や&amp;rdquo;!=&amp;ldquo;による判定と何が違う？&lt;/h3&gt;
&lt;p&gt;Javaでコードを書くと、nullチェック（NullPointerException防止）は避けられません。&lt;/p&gt;
&lt;p&gt;私のようにC言語脳の人は、&amp;quot;==&amp;quot;（等価演算子）や&amp;rdquo;!=&amp;quot;（不等価演算子）を用いてnullチェックを行うかもしれません。しかし、&lt;a href="https://docs.oracle.com/javase/jp/8/docs/api/"&gt;Java SE8&lt;/a&gt;以降は、null関係の判定メソッドとして&lt;a href="https://docs.oracle.com/javase/jp/8/docs/api/java/util/Objects.html"&gt;java.utils.Objects&lt;/a&gt;にisNull()やnonNull()が用意されています。&lt;/p&gt;</description></item><item><title>【Abstract Factoryパターン】コンポジットの部品変更を容易にするデザインパターン【コード例：Java】</title><link>https://debimate.jp/post/ja/2021-05-15-abstract-factory%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%82%B3%E3%83%B3%E3%83%9D%E3%82%B8%E3%83%83%E3%83%88%E3%81%AE%E9%83%A8%E5%93%81%E5%A4%89%E6%9B%B4%E3%82%92%E5%AE%B9%E6%98%93/</link><pubDate>Sat, 15 May 2021 00:00:00 +0000</pubDate><guid>https://debimate.jp/post/ja/2021-05-15-abstract-factory%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%82%B3%E3%83%B3%E3%83%9D%E3%82%B8%E3%83%83%E3%83%88%E3%81%AE%E9%83%A8%E5%93%81%E5%A4%89%E6%9B%B4%E3%82%92%E5%AE%B9%E6%98%93/</guid><description>&lt;h3 id="前書きabstract-factoryパターンとは"&gt;前書き：Abstract Factoryパターンとは&lt;/h3&gt;
&lt;p&gt;Abstract Factoryパターンは、関連するインスタンスの生成APIを抽象化クラスに集約し（= 生成に関するインターフェースを定義し）、生成処理は抽象化クラスを継承（実装）したクラスに任せる設計手法です。&lt;/p&gt;</description></item><item><title>【Java】enum（列挙子）の持つメソッド、基本的な使い方、応用（シングルトン）【実装例付き】</title><link>https://debimate.jp/post/ja/2021-02-21-javaenum%E5%88%97%E6%8C%99%E5%AD%90%E3%81%AE%E6%8C%81%E3%81%A4%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E4%BD%BF%E3%81%84/</link><pubDate>Sun, 21 Feb 2021 00:00:00 +0000</pubDate><guid>https://debimate.jp/post/ja/2021-02-21-javaenum%E5%88%97%E6%8C%99%E5%AD%90%E3%81%AE%E6%8C%81%E3%81%A4%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E4%BD%BF%E3%81%84/</guid><description>&lt;h3 id="前書き君c言語のenumと雰囲気違うね"&gt;前書き：君、C言語のenumと雰囲気違うね&lt;/h3&gt;
&lt;p&gt;仕事でJavaのコードを読んでいる時、「Javaのenumは、C言語のenumより多機能だな」と感じる場面がありました。&lt;/p&gt;
&lt;p&gt;Javaのenumを多機能と感じた例として、以下の3点が挙げられます。&lt;/p&gt;</description></item><item><title>【Java】Serializableの実装、役割、使い方、危険性とその対策【serialVersionUIDとは】</title><link>https://debimate.jp/post/ja/2021-02-20-javaserializable%E3%81%AE%E5%AE%9F%E8%A3%85%E5%BD%B9%E5%89%B2%E4%BD%BF%E3%81%84%E6%96%B9%E5%8D%B1%E9%99%BA%E6%80%A7%E3%81%A8%E3%81%9D%E3%81%AE%E5%AF%BE/</link><pubDate>Sat, 20 Feb 2021 00:00:00 +0000</pubDate><guid>https://debimate.jp/post/ja/2021-02-20-javaserializable%E3%81%AE%E5%AE%9F%E8%A3%85%E5%BD%B9%E5%89%B2%E4%BD%BF%E3%81%84%E6%96%B9%E5%8D%B1%E9%99%BA%E6%80%A7%E3%81%A8%E3%81%9D%E3%81%AE%E5%AF%BE/</guid><description>&lt;h3 id="前書き-javaの勉強中に見つけたserializable"&gt;前書き： Javaの勉強中に見つけたSerializable&lt;/h3&gt;
&lt;p&gt;2021年になってから、腰を据えてJavaの勉強を始めました。&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p dir="ltr" lang="ja"&gt;今年はJavaを後輩に教える機会があり、自分もJava歴が短くて手探り感がある。勉強が必要だ。&lt;br&gt;&lt;br&gt;JavaのOSS（小規模）を読みたいが、何か良いものはないかなー。以前、「Apacheのコードを読もう！」と考えた時期があった記憶もある。が、もう少し小規模なプロジェクトから始めたい。&lt;/p&gt;— Nao03@疲れて会話がUDP (@ARC_AED) &lt;a href="https://twitter.com/ARC_AED/status/1358326056193724416?ref_src=twsrc%5Etfw"&gt;February 7, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;私はJava学習の一環として&lt;a href="https://docs.oracle.com/javase/jp/13/docs/api/index.html"&gt;Java Core API&lt;/a&gt;のソースコードを読んでおり、その際にjava.io.FileクラスでSerializableインターフェースをimplementsしている記述を見かけました。&lt;/p&gt;</description></item><item><title>【Commandパターン】GUIイベント処理や履歴管理で用いるデザインパターン【コード例：Java】</title><link>https://debimate.jp/post/ja/2021-01-09-command%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3gui%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E5%87%A6%E7%90%86%E3%82%84%E5%B1%A5%E6%AD%B4%E7%AE%A1%E7%90%86%E3%81%A7%E7%94%A8%E3%81%84%E3%82%8B/</link><pubDate>Sat, 09 Jan 2021 00:00:00 +0000</pubDate><guid>https://debimate.jp/post/ja/2021-01-09-command%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3gui%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E5%87%A6%E7%90%86%E3%82%84%E5%B1%A5%E6%AD%B4%E7%AE%A1%E7%90%86%E3%81%A7%E7%94%A8%E3%81%84%E3%82%8B/</guid><description>&lt;h3 id="前書きcommandパターンとは"&gt;前書き：Commandパターンとは &lt;/h3&gt;
&lt;p&gt;Commandパターンは、一つの命令（操作）に対応するメソッドを作成するのではなく、命令に対応するクラス（コマンド）を作成する方法です。&lt;/p&gt;
&lt;p&gt;命令をクラス化する事によって得られるメリットは、以下の3点があります&lt;/p&gt;</description></item><item><title>【オブジェクト指向】全23種類のGoFデザインパターンに関する説明と参考書籍</title><link>https://debimate.jp/post/ja/2021-01-07-%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E5%85%A823%E7%A8%AE%E9%A1%9E%E3%81%AEgof%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC/</link><pubDate>Thu, 07 Jan 2021 00:00:00 +0000</pubDate><guid>https://debimate.jp/post/ja/2021-01-07-%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E5%85%A823%E7%A8%AE%E9%A1%9E%E3%81%AEgof%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC/</guid><description>&lt;h3 id="gang-of-fourデザインパターンを学ぶメリット"&gt;Gang Of Fourデザインパターンを学ぶメリット&lt;/h3&gt;
&lt;p&gt;Gang of Fourのデザインパターンとは、「よく見かける機能要件（解決したい問題）」と「各機能要件に対応する設計方針」を23種類に整理したものです。例えば、「単一リソースにアクセスする場合はSingletonデザインパターンが良い」というように、機能要件に適した設計（デザインパターン）を提案しています。&lt;/p&gt;</description></item><item><title>【Iteratorパターン】C言語で見かけるぐらい頻出のデザインパターン【コード例：Java、Ruby】</title><link>https://debimate.jp/post/ja/2021-01-02-iterator%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3c%E8%A8%80%E8%AA%9E%E3%81%A7%E8%A6%8B%E3%81%8B%E3%81%91%E3%82%8B%E3%81%90%E3%82%89%E3%81%84%E9%A0%BB%E5%87%BA%E3%81%AE%E3%83%87%E3%82%B6/</link><pubDate>Sat, 02 Jan 2021 00:00:00 +0000</pubDate><guid>https://debimate.jp/post/ja/2021-01-02-iterator%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3c%E8%A8%80%E8%AA%9E%E3%81%A7%E8%A6%8B%E3%81%8B%E3%81%91%E3%82%8B%E3%81%90%E3%82%89%E3%81%84%E9%A0%BB%E5%87%BA%E3%81%AE%E3%83%87%E3%82%B6/</guid><description>&lt;h3 id="前書きデザインパターンという認識がなかった"&gt;前書き：デザインパターンという認識がなかった&lt;/h3&gt;
&lt;p&gt;Iteratorデザインパターンは、配列／List／Mapなどのコレクション（要素の集合）を順次アクセスする際に、どのようなコレクションであっても同じAPIで操作可能にする設計方法です。&lt;/p&gt;</description></item><item><title>【環境構築】fish shellを用いたDebian環境にSDKMANおよびJava(JDK)をインストールする方法</title><link>https://debimate.jp/post/ja/2020-08-30-%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89fish-shell%E3%82%92%E7%94%A8%E3%81%84%E3%81%9Fdebian%E7%92%B0%E5%A2%83%E3%81%ABsdkman%E3%81%8A%E3%82%88%E3%81%B3javajdk%E3%82%92%E3%82%A4/</link><pubDate>Sun, 30 Aug 2020 00:00:00 +0000</pubDate><guid>https://debimate.jp/post/ja/2020-08-30-%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89fish-shell%E3%82%92%E7%94%A8%E3%81%84%E3%81%9Fdebian%E7%92%B0%E5%A2%83%E3%81%ABsdkman%E3%81%8A%E3%82%88%E3%81%B3javajdk%E3%82%92%E3%82%A4/</guid><description>&lt;h3 id="前書きsdkmanはbashもしくはzsh前提"&gt;前書き：SDKMANはbash（もしくはzsh）前提&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://sdkman.io/"&gt;SDKMAN&lt;/a&gt;は、JDK（Java開発環境）やGroovy、Scala、Gradleなどのバージョン管理ツールです。主に、JVM系のツールを管理します。Rubyのrbenv、Pythonのpyenvと同様の立ち位置のツールであり、CLIから任意のバージョンのソフト（例：Java）をインストール／使用／削除できます。&lt;/p&gt;
&lt;p&gt;SDKMANの公式サイトに書かれている通り、SDKMANはbashで実装されています。そのため、Login Shellがbashの場合は問題なく動作しますが、fish環境では実行時にエラーが出てしまいます。&lt;/p&gt;</description></item><item><title>【Java 11】Shebangを用いたJavaソースファイル（単一）の実行方法 + Shebangエラー回避方法</title><link>https://debimate.jp/post/ja/2020-07-23-java-11shebang%E3%82%92%E7%94%A8%E3%81%84%E3%81%9Fjava%E3%82%BD%E3%83%BC%E3%82%B9%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%8D%98%E4%B8%80%E3%81%AE%E5%AE%9F%E8%A1%8C/</link><pubDate>Thu, 23 Jul 2020 00:00:00 +0000</pubDate><guid>https://debimate.jp/post/ja/2020-07-23-java-11shebang%E3%82%92%E7%94%A8%E3%81%84%E3%81%9Fjava%E3%82%BD%E3%83%BC%E3%82%B9%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%8D%98%E4%B8%80%E3%81%AE%E5%AE%9F%E8%A1%8C/</guid><description>&lt;h3 id="前書きコンパイル無しでjavaアプリが動かせる"&gt;前書き：コンパイル無しでJavaアプリが動かせる &lt;/h3&gt;
&lt;p&gt;最近のJavaは、リリースペースが半年に一回と早まり、新機能が次々と追加されています。新機能の中で、Java 11からコンパイル無しでJavaソースファイル（単一ファイル）が実行できる機能があり、本記事ではその使い方（およびShebangエラー回避方法）を説明します。&lt;/p&gt;</description></item><item><title>【Singeltonパターン】考え方は単純だが、使いどころが大切なデザインパターン【コード例はRubyとJava】</title><link>https://debimate.jp/post/ja/2020-04-26-singelton%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E8%80%83%E3%81%88%E6%96%B9%E3%81%AF%E5%8D%98%E7%B4%94%E3%81%A0%E3%81%8C%E4%BD%BF%E3%81%84%E3%81%A9%E3%81%93%E3%82%8D%E3%81%8C/</link><pubDate>Sun, 26 Apr 2020 00:00:00 +0000</pubDate><guid>https://debimate.jp/post/ja/2020-04-26-singelton%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E8%80%83%E3%81%88%E6%96%B9%E3%81%AF%E5%8D%98%E7%B4%94%E3%81%A0%E3%81%8C%E4%BD%BF%E3%81%84%E3%81%A9%E3%81%93%E3%82%8D%E3%81%8C/</guid><description>&lt;h3 id="前書きsingletonパターンは奥が深い"&gt;前書き：Singletonパターンは奥が深い&lt;/h3&gt;
&lt;p&gt;Singletonパターンは、GoF（Gang of Four）デザインパターンの一つであり、あるクラスのインスタンスが一つしかない状態を保証する方法です。「インスタンスが一つしか無い」という前提を生み出す事で、複数のインスタンスを用いる事によるバグの発生リスクを無くせます（正しく実装できていれば）。&lt;/p&gt;</description></item></channel></rss>