ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

Java

Javaのリモートデバッグの方法

今更ですが、個人的にいつも忘れるJavaのリモートデバッグの方法をメモしておきます。今回試した環境は、以下の通りです。Windows 11 Proで試しました。 Javaバージョンデバッグを実行するのは、Eclipseです。以下の環境で試しました。 Eclipseバージョンそ…

log4j-1.2-apiについて

少し前にlog4jにかなり重大な脆弱性が存在することが発覚して、log4jライブラリを脆弱性を対応した最新のバージョンに入れ替えしなければならなくなった人は多いと思います。私もその対応をしたのですが、そのときに「log4j-api-2.xx.0.jar」と「log4j-core-…

EclipseのJavaプロジェクトでコミット対象にすべきファイル

EclipseのJavaプロジェクトでバージョン管理システムにコミット対象にすべきファイルについて、迷うことがありましたので個人的なメモを書いておきます。様々な意見があるようですが、基本的な考えとしては当たり前のことではありますが「環境毎に異なる設定…

Java内部の文字コードはUTF-16らしい

タイトル通りですが、Java内部の文字コードはUTF-16です。Java関連の記事や書籍で時々見かけていたこの事実ですが、正直それで一体なんなの?という感じでした。ファイルを読み込みしたり、書き込みしたりする場合に意識しておけばだいたいOKかなという程度…

Java 8で空文字列による、数値からの文字列変換は速度が遅いらしい

タイトルの通りなのですが、Java 8では空文字列で数値から文字列に変換する方法は、速度が遅いらしいという情報を入手したので、確認したいと思います。今回は、数値を文字列に変換する以下の2つの方法の速度を計測して比較してみようと思います。 計測方法1…

Javaで1つのクラスに同名のクラスをインポートする場合

今更ですが、メモ程度にタイトルの通りJavaで1つのクラスに同名のクラスをインポートする場合にどうするかを紹介したいと思います。 同名のクラスをインポートするとどうなるか。 同名のクラスとしてよく紹介される、「java.util.Date」と「java.sql.Date」…

Javaで処理時間を計測する方法

Javaで何らかの処理時間を計測するプログラムを以下に置いておきます。完全に個人的なメモです。この方法では、ミリ秒で計測します。 public class Sample { public static void main(String[] args) { long start = System.currentTimeMillis(); // 計測す…

JDK 9から追加された「JShell」がとても便利だ

少し前に、Javaの入門書にあたる以下の書籍を購入しました。 gihyo.jpこの書籍で、「JShell」というとても便利なツールが紹介されていました。このツールはJDK 9から標準で追加されているREPL(Read-Evaluate-Print-Loop)ツールと呼ばれるもので、コマンド…

Javaのプロパティファイルで日本語を扱う場合

本当にいまさらなのですが、最近調べたのでメモをしておきます。現在良く使用しているJavaのバージョンが8なのですが(少し古いですが)、プロパティファイルで日本語を扱っている場合にUnicodeエスケープ処理をしています。ちょうど以下のような形です。 te…

Windows環境でも、Javaの文字列でパス区切り文字はスラッシュが使える

タイトルの通りですが、Windows環境でもJavaの文字列でパス区切り文字でスラッシュ(/)が使えることを最近知りました。Windows環境では、パス区切り文字は「\」なのですが、それを以下のようにそのまま記載することはできません。コンパイルエラーになりま…

Java言語の文字ストリーム、バイトストリームについて

Java言語を使ってプログラミングしている場合、ストリームという言葉を聞くことがあると思います。そのストリームには2種類あり、タイトルの通り文字ストリームとバイトストリームに分けることができます。今回は、それらの区別を分かりやすく説明している有…

Javaのスタックトレースの出力が省略されているときの話

Javaのスタックトレースについて調べてたところ、有志の方が書かれている以下の記事を見つけました。 スタックトレースの出力が省略されてると思ったそのときに - 理系学生日記Javaのスタックトレースで以下のように「... 1 more」、「... 3 more」という、…

commons-loggingについて概要を調べた

今回は、Apache Jakarta Projectで開発されている「commons-logging」の概要を調べましたのでここにメモとして残します。 commons-loggingとは? commons-loggingとは、Javaで利用できるライブラリの一つで汎用ロギングコンポーネントです。 Apache Commons …

javacのオプション「-g」について

Javaで書いたプログラムのコンパイルは、「javac」コマンドによって行うことができます。 その「javac」コマンドのオプションのひとつに「-g」があります。今回はこのオプションについて調べたことを、この記事にまとめてみました。今回の記事で使用するJava…

EclipseでJavaのソースコード変更がリアルタイムに反映される

いまさらなのですが、EclipseでJavaのソースコードを修正していた際に気づいたことがありましたのでここに個人的なメモも兼ねて記載しておきます。確認した動作環境は以下の通りです。 Eclipseバージョン情報 何が起きたか Javaでソースコードを修正しながら…

Uber Jarとは何か

最近Java関連のドキュメントを読んでいたところ、「Uber Jar」なる言葉を発見しました。私自身初めて聞いた言葉でしたので、今回はその意味を調べてみました。 Uber Jarとは? Uber Jarとは、日本語で簡単に言えば「実行可能Jar」のことみたいです。Spring B…

JavaのStringUtilsのlangとlang3について

今回は、Javaでよく使うライブラリの一つであるStringUtilsクラスについてのちょっとしたお話です。最近、JavaでStringUtilsクラスを使ってプログラムを書いていて気づいたのですが このクラスのパッケージが2つあることに気づきました。以下の通りで、「lan…

Javaのシャロ―コピーとディープコピーについて

タイトル通り、Javaのシャロ―コピーとディープコピーについて簡単にお話していきたいと思います。 シャロ―コピー(Shallow Copy)とは? シャロ―コピーとは英訳すると、「浅いコピー」となります。簡単にJavaのコードで説明したいと思います。以下のようなUs…

JDBCを用いてSQL Serverに接続するときの文字列パラメータについて注意すること

お恥ずかしながら、最近知ったことを備忘録として残しておきます。詳しいことは、すべてここのMicrosoftのブログに記載されています。 DO's&DONT's #2: 絶対にやらなければいけないこと - データ型を一致させる | Microsoft DocsSQL Serverでデータの比較を…

SQL Serverのロックタイムアウトについて

今回は、SQL Serverのロックタイムアウトについてお話したいと思います。SQL ServerへJavaアプリケーションでJDBC接続するときにロックタイムアウトってデフォルトで何秒なんだろうと思ったのが、この記事を書くきっかけです。ですので、JDBC接続におけるロ…

JavaのシリアルバージョンUIDとは?

今回は、JavaのシリアルバージョンUIDについて調べたことを簡単にまとめておこうと思います。シリアルバージョンUIDは、シリアライズが関係してきますが、そもそもシリアライズって何?という方は別の記事でまとめていますのでよろしければお読みください。 …

WindowsでインストールしたTomcatの起動ポートを変更する

Tomcatは、インストール後のデフォルトではポート番号8080で起動することになっていると思います。 今回はこのポート番号を変更して、Tomcatを起動する方法を確認したいと思います。 ちなみに、タイトルに「Windowsで~」と書いてますが特にOSは関係ないと思…

WindowのTomcatのコンソール文字化け

WindowsでTomcat起動バッチファイル(${TOMACAT_HOME}/bin/startup.bat)を実行して、Tomcatを起動するとコンソール(コマンドプロンプト)が別途立ち上がりそこにTomcatの起動ログが出力されると思います。そこの起動ログが何やら文字化けするんですよね。…

Tomcatの起動時間を早くする

Tomcatの起動時間を早くする方法はいくつかあるようですが、簡単にできる方法を紹介したいと思います。 この設定を試したTomcatのバージョンは、8.0.x系です。ですが、Tomcat公式サイトを見る限りでは他のバージョンでも設定できそうです。Tomcatの設定ファ…

Javaのシリアライズについて

今回は、Java言語のシリアライズについて少しお話していきたいと思います。Java言語に携わったことがある方は、おそらく一度は聞いたことがあるシリアライズですが、私は言葉聞いたことはあっても正直それが何であるのか理解していませんでした。最近、Java…

TomcatをWindowsサービスとしてインストールする

今回は、無償で利用できるApache Tomcat(※以後、Tomcat)をWindowsにインストールしていきたいと思います。Tomcatは、WindowsやLinuxでも動作することができるJavaのAPサーバーです。無償で利用できるため、様々なところで利用されていると思います。今回は…

Javaの例外処理のcatch句においてreturnまたはthrowされる際の挙動について

今回は、Javaの例外処理についてです。先日、Javaのソースコードを仕事で眺めていたところタイトル通り例外をキャッチするcatch句の中でthrowしている実装がありました。これ自体は確かによくあることなのかなと思ったのですが、この場合にfinally句の中身は…

BufferdReaderクラスのreadLineメソッドが終わらない?

今回は、Javaについて個人的に躓いた内容がありましたのでこちらに記載していこうと思います。 以下の内容は結論は出ていないので、ふ~ん、こんなことあるのね。という感じでお読みいただければと思います。Javaで任意のファイルを読み込みする要件はよくあ…