-
Apache KafkaとJMSの違いを徹底比較!特徴と使い分けを解説
Apache KafkaとJMSの違いを徹底比較!特徴と使い分けを解説Apache KafkaとJMS(Java Message Service)は、どちらもメッセージングシステムですが、設計思想や動作方式に大きな違いがあります。本記事では、両者の特徴を比較し、それぞれの違いをわかりやすく解説します。JMS(Java Message Service)とはJMSは、Javaが提供するメッセージング用のAPIで、アプリケーションにメッセージング機能を実装するために使用されます。JMSは「キュー(Queue)」と「パブリッシャー/サブスクライバー(トピック)」の2つのメッセージングモデルをサポートし
-
JavaのCountDownLatchとCyclicBarrierの違いとは?マルチスレッド同期の使い分けを徹底解説
はじめに:2つの同期支援クラス Javaでマルチスレッド環境を扱う際、複数のスレッドの動作を協調させるために活躍するのがCountDownLatchとCyclicBarrierです。どちらもjava.util.concurrentパッケージに含まれる同期支援クラスですが、設計思想や使い方、挙動が異なります。 本記事では、公式ドキュメント(JavaDoc)の定義をもとに、両者の違いを比較表とサンプルコードでわかりやすく解説します。 JavaDocによる定義 CountDownLatch: 他のスレッドで実行されている一連の操作が完了するまで、1つ以上のスレッドを待機させるための同期支援クラス
-
Javaの可変オブジェクト(Mutable)と不変オブジェクト(Immutable)の違いを徹底解説
Javaにおいて、不変オブジェクト(Immutable Object)とは、一度生成された後にその内部状態(フィールドの値)を変更できないオブジェクトのことを指します。ただし、他のオブジェクトへの参照自体は保持することができます。不変オブジェクトは、複数のスレッドから状態を書き換えられる心配がないため、マルチスレッド環境で特に有用であり、スレッドセーフであると言えます。さらに、時間的な結合(temporal coupling)を回避するのに役立ち、常に失敗時原子性(failure atomicity)を保証できるというメリットもあります。 一方、可変オブジェクト(Mutable Object)
-
コンパイル時ポリモーフィズムと実行時ポリモーフィズムの違いを徹底解説
ポリモーフィズム(多態性)とはポリモーフィズムは、オブジェクト指向プログラミング(OOP)における最も重要な概念の一つです。「同じメソッド呼び出しに対して、状況に応じて異なる振る舞いを実現できる」という性質を指し、単一のタスクを複数の方法で処理することを可能にします。Javaなどのオブジェクト指向言語では、ポリモーフィズムは主に次の2種類に分類されます。コンパイル時ポリモーフィズム(静的ポリモーフィズム) … 代表例はメソッドのオーバーロード実行時ポリモーフィズム(動的ポリモーフィズム) … 代表例はメソッドのオーバーライド両者の違いを比較表で確認まずは、コンパイル時ポリモーフィズムと実行時ポ
-
【Java入門】StringとStringBufferの違いを徹底解説!使い分けのポイント
Javaにおける文字列操作では、StringとStringBufferという2つの重要なクラスを使い分ける必要があります。この記事では、それぞれの特徴と違いをわかりやすく解説します。 Stringクラスの特徴 Stringは不変(イミュータブル)なクラスです。一度生成されたオブジェクトは、その後変更することができません。ただし、変数が別のオブジェクトを参照するように再代入することは可能です。 Stringはマルチスレッド環境で特に有用です。複数のスレッドがオブジェクトの状態を変更できないため、不変オブジェクトは本質的にスレッドセーフであると言えます。 StringBufferクラスの特徴 一方
-
【Java】Selenium WebDriverで子ブラウザウィンドウを閉じる方法をわかりやすく解説
Selenium WebDriverでテストを自動化していると、リンクやボタンのクリックをきっかけに新しいブラウザウィンドウ(子ウィンドウ)が開くケースがよくあります。本記事では、Javaを使用して子ブラウザウィンドウを閉じ、親ウィンドウへ制御を戻す方法を具体的なコード例とともに解説します。ウィンドウハンドルの基本子ウィンドウの操作にはgetWindowHandlesメソッドとgetWindowHandleメソッドを使用します。getWindowHandlesメソッドは、現在開いているすべてのウィンドウのハンドルをSetデータ構造に格納して取得するために使われます。一方、getWindowHa
-
Selenium WebDriverとJavaで特定のDIV要素をスクロールする方法
Selenium WebDriverを使用すれば、ページ内の特定のDIV要素までスクロールすることが可能です。ただし、Selenium自体にはスクロール操作を直接実行する機能が備わっていないため、JavaScript Executorの力を借りる必要があります。手順としては、まずXPathやCSSセレクターなどのロケーターを使って、スクロール先となる対象のDIV要素を特定します。続いて、JavaScript Executorを利用してJavaScriptのコマンドを実行します。SeleniumでJavaScriptを実行する際にはexecuteScriptメソッドを使用し、JavaScript
-
Selenium WebDriverとJavaで特定のウィンドウだけを閉じる方法をわかりやすく解説
Selenium WebDriverでは、複数開いているウィンドウの中から特定のウィンドウだけを選んで閉じることが可能です。その際に活躍するのがgetWindowHandlesメソッドとgetWindowHandleメソッドです。この2つを組み合わせることで、ポップアップなどの子ウィンドウも柔軟に制御できます。 ウィンドウハンドルの基本 getWindowHandlesメソッドは、現在開いているすべてのウィンドウハンドルを取得し、Set型のコレクションに格納します。一方、getWindowHandleメソッドは、現在フォーカスが当たっているブラウザウィンドウのハンドルのみを返します。Setデー
-
DockerコンテナでJavaアプリケーションを実行する方法【初心者向けステップ解説】
Javaは現在、最も人気のあるエンタープライズ向けプログラミング言語のひとつです。オブジェクト指向プログラミングの中核を担う言語であり、エンタープライズレベルのアプリケーションやテストプラットフォームを構築するための優れたプラットフォームが数多く揃っています。一方で、初心者にとってはJava環境のインストールや設定に慣れるまでに、ある程度時間がかかることも少なくありません。 Dockerコンテナを使えば、Javaランタイム環境(JRE)を含んだイメージをそのまま利用でき、必要なライブラリがあらかじめ組み込まれた、管理しやすいパッケージ環境を手に入れられます。ローカルマシンにDockerが導入済
-
JavaとSelenium WebDriverで認証ポップアップを処理する方法
Selenium WebDriverを使用すると、Basic認証のポップアップ(認証ダイアログ)を簡単に処理できます。その方法は、ユーザー認証情報をURLに直接埋め込むというものです。具体的には、URLの中にユーザー名とパスワードを含めることで、認証ポップアップを自動的に通過できます。基本構文認証情報を含むURLは以下の形式で記述します。https://username:password@URL実際の例を見てみましょう。https://admin:admin@the-internet.herokuapp.com/basic_authadmin(1つ目):ユーザー名admin(2つ目):パスワー
-
【Java】Selenium WebDriverでブラウザーログをキャプチャする方法
Seleniumでは、テスト実行中に発生するブラウザーログ(ドライバーの動作ログ)を取得することができます。ログを有効化するには、WebDriverオブジェクトをRemoteWebDriver型にキャストし、その後setLogLevelメソッドを呼び出してログレベルを設定します。RemoteWebDriverを使用するためには、コード内で import org.openqa.selenium.remote.RemoteWebDriver のインポート文を追加する必要があります。構文((RemoteWebDriver) driver).setLogLevel(Level.INFO);コード例以下
-
Selenium WebDriver(Java)でタブを切り替える方法|Keys.chordとswitchToの使い方を実例で解説
Seleniumでは、新しいタブでリンクを開き、タブ間を自由に切り替えることができます。本記事では、Java版Selenium WebDriverを使ってタブを切り替える具体的な手順を、サンプルコード付きでわかりやすく解説します。 タブ切り替えの基本:Keys.chordメソッド まず、リンクを新しいタブで開く必要があります。そのためにKeys.chordメソッドとsendKeysメソッドを組み合わせて使用します。 Keys.chordメソッドは、複数のキーを同時に渡すことができる便利なメソッドです。キーの組み合わせや文字列を引数として指定します。ここではKeys.CONTROL(Ctr
-
Selenium WebDriver(Java)でブラウザのCookieを削除・クリアする方法
Seleniumでは、テストの実行中にブラウザへ保存されたCookieを柔軟に操作できます。Cookieの削除は、ログイン状態のリセットやセッション情報の初期化など、テストの前処理として頻繁に活用される重要なテクニックです。 本記事では、Javaバインディングを使用したCookie削除の方法として、特定の名前のCookieだけを削除する方法と、現在のドメインに存在するすべてのCookieを一括で削除する方法の2つを、実際のコード例とともに解説します。 deleteCookieNamedメソッドで特定のCookieを削除する deleteCookieNamedメソッドは、指定した名前を持つCo
-
JavaとSelenium WebDriverでPrintScreen(スクリーンショット)操作をシミュレートする方法
Seleniumでは、キーボードのPrintScreen(プリントスクリーン)ボタンの操作をシミュレートすることができます。PrintScreenボタンは画面のスクリーンショットを撮影するためのものであり、Seleniumでも同様に画面全体を画像として取得できます。テスト実行中にスクリーンショットを自動的に保存しておくことは、テスト失敗時の原因分析(障害解析)において非常に重要なステップです。エビデンスとして残すことで、どの時点で・どのような状態で失敗したのかを後から確認できるようになります。Seleniumでスクリーンショットを撮影する流れは、大きく次の3つのステップで構成されます。WebD
-
JavaのSelenium WebDriverでページを下にスクロールする方法を解説
SeleniumではJavaScriptを実行することで、ページを目的の要素までスクロールさせることができます。ただし、Selenium自体にはスクロールを直接制御する機能が用意されていないため、Javascript Executorを活用してスクロール処理を行うのが一般的な手法です。手順としては、まずスクロール先となる要素を特定(ロケート)します。次に、Javascript Executorを使ってJavaScriptのコマンドを実行します。SeleniumでJavaScriptを実行する際にはexecuteScriptメソッドを使用し、JavaScriptのscrollIntoViewメソ
-
Javaで部分文字列の出現回数を再帰的にカウントする方法
2つの文字列 str1 と str2 が与えられたとき、再帰的な処理を用いて、文字列 str1 の中に部分文字列 str2 が出現する回数を数えることが目標です。ここでいう再帰関数とは、定義の中で自分自身を呼び出す関数のことを指します。たとえば、str1 が「I know that you know that i know」、str2 が「know」である場合、出現回数は 3 となります。具体例で理解しよう入力例1str1 = TPisTPareTPamTP, str2 = TP;出力例1Count of occurrences of a substring recursively are:
-
Javaで文字列を2文字分回転すると別の文字列と一致するかどうかを判定する方法
2つの文字列 a と b が与えられ、文字列 a を時計回りまたは反時計回りにちょうど2文字分回転させることで、文字列 b を作り出せるかどうかを判定するのが本記事のテーマです。まずは、具体的な入力例と出力例から確認していきましょう。 入力例と出力例 例1:回転によって一致する場合 入力: a = google b = legoog 出力: True 解説:文字列「google」を時計回り(右方向)に2文字分回転させると「legoog」になります。したがって、True を返します。 例2:回転では一致しない場合 入力: a = tuorialst b = tutorials 出力: False
-
Javaでソートされていない整数配列から欠落している正の数を見つける方法
はじめに ソートされていない整数の配列が与えられていると仮定しましょう。この課題は、範囲 [0〜n] の中で、与えられた配列に存在しない正の欠損数を見つけることです。以下に具体例を示します。 入力例1 N = 9 arr = [0,2,5,9,1,7,4,3,6] 出力: 8 説明: このソートされていない配列において、「8」だけが欠落している正の整数であるため、出力は「8」になります。 入力例2 N = 1 arr = [0] 出力: 1 説明: この配列では、「1」だけが欠落している正の整数であるため、出力は「1」になります。 この問題へのアプローチ この問題にはいくつかの解法がありますが
-
Javaでマジョリティ要素(多数派要素)を求める方法
問題概要 整数の配列が与えられたとき、その中でマジョリティ要素(多数派要素)、すなわち配列のサイズの半分を超える回数出現する要素を見つけることを考えます。まずは具体的な例で確認してみましょう。 入力例1 − N = 8 A[ ] = { 1,2,4,3,3,1,1,5} 出力 − 1 説明 − 与えられた整数配列の中で最も多く出現している数字は「1」(3回出現)です。したがって、出力は「1」となります。 入力例2 − N = 6 A[ ] = {1,5,4,4,1,1} 出力 − 1 説明 − この配列でも「1」が3回出現しており、全体の半分を超えています。よって出力として「1」を返します。
-
JavaでN×Nの正方行列を反時計回りに90度回転させる方法
N×N の正方行列が与えられたとき、その行列を反時計回りに90度回転させることを考えます。まずは具体的な例を見てみましょう。入力例:N = 3 matrix[ ][ ] = [ [1 2 3], [4 5 6], [7 8 9] ]出力例:3 6 9 2 5 8 1 4 7解説: 与えられた行列を反時計回りに90度回転させると、各行・各列の位置関係が変化し、出力は「3 6 9 2 5 8 1 4 7」となります。この問題へのアプローチ基本的な発想は、まず与えられた行列の転置行列を求め、その後に行ごとに要素を入れ替えるというものです。手順は以下の通りです。正方行列を入力と