Java

 Computer >> コンピューター >  >> プログラミング >> Java
  1. Java 9のThread.onSpinWait()メソッドとは?重要性と使い方を解説

    Thread.onSpinWait()メソッドとはJava 9で新たに導入されたThread.onSpinWait()は、Threadクラスのstaticメソッドです。このメソッドは、ビジーウェイト(busy-wait)ループの中で任意に呼び出すことを想定して設計されています。呼び出すことで、JVMは特定のシステムアーキテクチャにおいてプロセッサ命令(例:x86系のPAUSE命令)を発行できるようになります。その結果、スピンウェイトループにおける反応時間が向上し、同時にコアスレッドが消費する電力も削減されます。この最適化はJavaプログラム全体の省電力化につながり、同じ電力消費の範囲内で他のコ

  2. Java 9のStackWalker APIでスタックフレームのすべての属性を出力する方法

    StackWalker APIはJava 9で導入された新機能で、従来のスタックトレース要素(StackTraceElement)と比較してパフォーマンスが大幅に向上しています。例外発生時にスタック要素をフィルタリングしたり、アプリケーションの動作を詳細に把握したりすることも可能です。Java 9以前は、スタックトレースへのアクセス手段が非常に限られており、必要な部分だけを取り出すことができず、スタック全体の情報を一度に取得するしかありませんでした。 以下の例では、StackWalkerを使ってスタックフレーム内のすべての属性を出力します。 サンプルコード import java.lang.S

  3. Java 9におけるMethodHandlesクラスの重要性とは?

    MethodHandlesクラスとはMethodHandlesクラスはJava 7で導入されたクラスで、メソッドハンドル(Method Handle)を柔軟に扱うための多数のstaticメソッドを提供します。これらのメソッドは主に次のカテゴリに分類されます。Lookupメソッド:メソッドやフィールドに対するメソッドハンドルを作成するCombinatorメソッド:既存のメソッドハンドルを組み合わせたり変換したりして、新しいハンドルを生成するファクトリメソッド:他の一般的なJVM操作や制御フローのパターンを模倣するメソッドハンドルを作成するそしてJava 9では、このクラスがさらに強化され、arr

  4. Java 9のJShellでトップレベル宣言に使用できない修飾子とは?

    JShellは、Java言語の学習やJavaコードのプロトタイピングに役立つ対話型ツールです。REPL(Read-Evaluate-Print-Loop:読み込み・評価・出力・ループ)として動作し、宣言、文、式を入力すると即座に評価し、その結果をJShell上に出力します。このツールはコマンドラインから起動して利用します。 トップレベル宣言では、public、protected、private、static、finalといった修飾子は許可されておらず、これらを指定しても警告(warning)とともに無視されます。一方、トップレベルメソッドに対するsynchronized、native、abst

  5. Java 9のProcess APIによるコアライブラリの変更点とは?

    Java 9では、ProcessHandleインターフェースを使うことで、ネイティブ呼び出し経由でプロセスのPID(プロセスID)を簡単に取得できるようになりました。これにより、現在実行中のJavaプロセス(JVM)に関する情報へのアクセスが大幅に改善されています。ProcessHandleには、その内部クラスであるInfoクラスが用意されており、実行ファイル名、ユーザー名、開始時刻など、プロセスに関する詳細情報を取得できます。さらに、allProcesses()メソッドを使えば、システム上で現在動作しているすべてのプロセスのスナップショットをストリームとして取得することも可能です。サンプルコ

  6. Java 9のJShellで文字列が回文かどうかを確認する方法

    JShellとは JShellは、Java 9で初めて導入されたREPL(Read-Evaluate-Print-Loop)型の対話型ツールです。宣言・文・式を入力するとその場で評価され、結果が即座に表示されます。コマンドラインプロンプトから直接実行できるため、小さなコード断片の動作確認や学習に非常に便利なツールです。 回文(パリンドローム)とは 回文とは、文字列を逆順に並べ替えても元の文字列と同じになるもの、つまり前から読んでも後ろから読んでも同じになる単語や文字列のことを指します。例えば「LEVEL」や「RACECAR」などが代表的な例です。 JShellで回文を判定する手順 以下の例では

  7. Java 9のjarコマンドでマルチリリースJAR(MRJAR)を作成する方法

    マルチリリースJAR(MRJAR)とはJava 9では、マルチリリースJAR(Multi-Release JAR)形式という新しい機能が導入されました。これにより、1つのJARファイルの中に、実行環境のJavaバージョンに応じて使い分けられる複数バージョンのクラスやリソースを格納できるようになりました。たとえば、Java 8向けのコードはそのまま維持しつつ、Java 9以降で利用可能な最適化された実装を同じJARに同梱することができます。この記事では、jarコマンドを使用して、Java 8とJava 9の両方でコンパイルされた同一クラスの2つのバージョンを含むマルチリリースJARを作成する手順

  8. Java 9のJShellでカプセル化の概念を実装する方法

    JShell(Java Shell)とはJShell(Java Shell)は、Javaの学習やコードのプロトタイピングに役立つREPL(Read-Eval-Print Loop)型の対話ツールです。入力された宣言、ステートメント、式をその場で評価し、結果を即座に出力します。コマンドラインから起動して手軽に利用できるため、小さなコード断片を素早く試すのに最適です。カプセル化(Encapsulation)とはカプセル化は、Javaにおける重要なオブジェクト指向の概念の一つで、「センシティブな(機密性の高い)データ」をユーザーから隠蔽することを目的としています。これを実現するには、クラス変数をpr

  9. Java 9のJShell(REPL)における7つのステータス状態とは?

    REPLは「Read-Evaluate-Print-Loop(読み込み・評価・出力・ループ)」の略称で、対話形式でコードを実行できる環境を指します。JShellでは、入力された各ステートメント(スニペット)がそれぞれ独自の状態を持っており、この状態からスニペットや変数の実行ステータスを判別できます。具体的には、コードを評価するJShellインスタンスのeval()メソッドの戻り値を通じて、その状態を確認することが可能です。 Java 9のJShellには、以下の7種類のステータス状態が定義されています。 DROPPED:スニペットが非アクティブな状態です。/dropコマンドなどで削除された場

  10. Java 9のJShellでGsonライブラリをインポートして使う方法

    Java 9では、対話型のREPLコマンドラインツール「JShell」が導入されました。JShellを使えば、Javaのコードスニペットをその場で実行し、結果を即座に確認できます。また、クラスパスを指定することで、外部のクラスやライブラリもJShellセッション内で利用可能になります。 Gsonライブラリは、JavaオブジェクトをJSONへ変換したり、その逆(JSONからJavaオブジェクトへの復元)を行うための、Java向けのシリアライズ/デシリアライズライブラリです。この記事では、JShellにGsonを読み込んで、実際にオブジェクトの変換を試すまでの手順を解説します。 1. クラスパスの

  11. Java 9のtry-with-resourcesで使える「事実上final(effectively final)」変数とは?

    Java 8までのバージョンでは、try-with-resources文で使用する変数は、必ずtry文の中で宣言する必要がありました。しかし、Java 9以降ではこの制限が撤廃され、finalまたは事実上final(effectively final)な変数であれば、tryブロック内でそのまま利用できるようになりました。「事実上final」とは、一度初期化された後に値が変更されない変数のことを指します。明示的にfinal修飾子を付けていなくても、再代入が行われていない変数はコンパイラによって事実上finalとみなされます。コード例import java.io.BufferedReader; i

  12. Java 9のコレクションファクトリメソッドとは?条件と使い方をわかりやすく解説

    Java 9で導入されたコレクションファクトリメソッドJava 9では、Collections APIにファクトリメソッドが新しく追加されました。List.of()、Set.of()、Map.of()、Map.ofEntries()といった静的ファクトリメソッドを利用することで、イミュータブル(不変)なリスト・セット・マップを簡単に作成できます。従来のようにArrays.asList()やCollections.unmodifiableList()などを組み合わせて書く必要がなくなり、コードの行数を大幅に削減できるのが大きなメリットです。コレクションファクトリメソッドの条件これらのファクトリメ

  13. Java 9のメモリ管理の変更点とは?デフォルトGCの変更と各ガベージコレクタの特徴を解説

    Java 9におけるメモリ管理の変更点Javaのメモリ管理の中核を担っているのが、ガベージコレクション(Garbage Collection、略称GC)です。GCは、メモリ上の不要になったオブジェクトを自動的に検出・削除し、その領域を再利用可能な状態に戻す役割を果たします。開発者が明示的にメモリを解放する必要はなく、GCが事前定義されたアルゴリズムに基づいてクリーンアップを実行します。Javaで利用できる主なガベージコレクタには、以下のような種類があります。1. Serial GC(シリアルGC)単一スレッドで動作するシンプルなコレクタです。小規模なデータを扱う小さなアプリケーションに適してい

  14. Java 9のJShellで以前に入力したスニペットを一覧表示する方法

    JShellは、Java 9で正式に導入されたRead-Evaluate-Print-Loop(REPL)ツールです。対話型シェルとして動作し、main()メソッドを用意することなく、JavaやJava APIのプロトタイプ作成、デバッグ、学習を素早く行うことができます。 /listコマンドによるスニペット履歴の表示 JShellの「/list」コマンドを使用すると、そのセッション内で入力したすべてのスニペットが、スニペットIDと呼ばれる一意の識別子とともに出力されます。 ただし、デフォルトの出力には有効な文や式だけが表示され、エラーになった入力は含まれません。エラーも含めて過去に入力したすべ

  15. Java 9のJShellで冗長モード(verbose)を設定する方法

    JShellとはJShellは、Java 9で新たに導入されたREPL(Read-Eval-Print Loop)ツールです。コマンドラインプロンプト上で簡単なコードスニペットをその場で入力・実行できるため、動作確認やJavaの学習に非常に便利なツールとして広く利用されています。冗長モード(verboseモード)とはJShellで算術式や変数などを入力すると、結果のみが表示され、作成された変数の型などの詳細情報はデフォルト設定では表示されません。入力したコマンドの実行内容について、より詳しい情報を確認したい場合は冗長モードを活用しましょう。冗長モードを有効にするには、JShell内で以下のコマ

  16. Java 9におけるJDKとJREのディレクトリ構造を徹底解説

    Java 9では、JDKとJREのディレクトリ構造はほぼ同じですが、JDKにはjmodsとincludeという2つの追加ディレクトリが存在し、さらにJDK 9には従来のようなJREサブディレクトリが含まれていない点が大きな違いです。 JDKディレクトリは、JDKソフトウェアをインストールする際のルートディレクトリです。このディレクトリには、copyright(著作権情報)、readme、そしてJavaプラットフォームのソースコードアーカイブであるsrc.zipファイルなども含まれています。 JDKのディレクトリ構造 JDK-9 ├─ bin ├─ conf ├─ include ├─ jmod

  17. Java 9のJShellで使える4つのフィードバックモードの違いと切り替え方

    JShellのフィードバックモードとは JShellツールで操作を実行すると、コマンドの成功・エラー、作成された変数の型やその値といったメッセージが表示されます。この表示内容は、「/set feedback」コマンドを使ってカスタマイズできます。このコマンドを実行すると、現在設定されているフィードバックモードと、利用可能な各モードの一覧が確認できます。 jshell> /set feedback | /set feedback normal | | Available feedback modes: | concise | normal | silent | verbose JShell

  18. 【Java 9】JShellセッションを閉じずにリセットする「/reset」コマンドの使い方

    JShellとはJava 9では、Java向けの対話型ツールJShellが新たに導入されました。JShellを使うと、宣言(declarations)、ステートメント(statements)、式(expressions)といったコードスニペットを、クラスやメソッドを定義せずにその場で評価・実行できます。セッションをリセットする「/reset」コマンドJShellのセッション中に、ツールを終了して再起動することなく状態を初期化したい場合は、内部コマンドの「/reset」を使用します。このコマンドを実行すると、現在のセッションで入力されたコードはすべて消去され、JShellは起動直後の初期状態に戻

  19. Java 9の自動モジュール(Automatic Module)とは?仕組みと命名ルールをわかりやすく解説

    自動モジュール(Automatic Module)とは、モジュールパス(module path)上に配置されたJARファイルのことです。Java 9以降では、既存の多くのライブラリがまだモジュール化されていないという課題がありました。この移行を容易にするために、任意のライブラリのJARファイルをアプリケーションのモジュールパスに追加するだけで、そのJAR内のパッケージを利用できるようになっています。 モジュールパスに置かれたJARは暗黙的に自動モジュールとして扱われ、module-info.java の requires ディレクティブで指定することが可能です。モジュール名はJARのファイル名

  20. Java 9のJShellにソースコードをロードする方法を解説

    JShellとはJShellは、Javaの学習に最適な対話型ツールであり、REPL(Read-Evaluate-Print-Loop:読み込み・評価・表示・繰り返し)として動作します。宣言、ステートメント、式などをその場で評価し、即座に結果を確認できるため、小さなコード断片の検証やJavaの仕様の学習に非常に便利です。以前のコードを新しいセッションで再利用するJShellセッションを終了すると、それまでに入力したコードは通常失われてしまいます。しかし、以前のセッションで入力したコードを新しいセッションでもう一度使いたい場合があります。そんなときに役立つのが、次のコマンドです。/open [Fi

Total 1930 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:57/97  20-コンピューター/Page Goto:1 51 52 53 54 55 56 57 58 59 60 61 62 63