8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

1.4 JDKとJavaの開発環境~新Java Basic編 / AI対応版

8
Last updated at Posted at 2023-02-04

はじめに

自己紹介

皆さん、こんにちは、Udemy講師の斉藤賢哉です。私はこれまで、約30年にわたって企業システムの開発に携わってきました。現在も現役のアーキテクトとして、重要システムの技術設計やソリューションの選定を担当しています。直近では、システム開発へのAI適用(AI駆動開発)という全社的な施策でリーダーを務めています。
セミナーでの登壇や雑誌への技術記事の寄稿を行ってきたほか、以下の書籍も執筆しています。

Udemy講座のご紹介

この記事の内容は、私が講師を務めるUdemy講座『新 Java Basic編 / AI対応版』の一部の範囲をカバーしたものです。『新 Java Basic編 / AI対応版』はこちらのリンクから購入できます。

この講座は、以下のような皆様にお薦めします。

  • AIが書いたJavaのコードを読んで、正しさと設計の良し悪しを判断できるようになりたい方
  • 新人のシステムエンジニアとして、Javaの基礎を仕組みから身に付けたい方
  • AIを前提とした開発へ学び直し(リスキリング)をしたい方
  • 「Oracle認定Javaプログラマ」の取得を目指し、Javaの基礎を固めたい方

AIとチャットできるオールインワンの学習環境をリリースしました

Udemy講座の演習を動かすための学習環境として、Windows向けのデスクトップアプリ「Codinable(コーディナブル)」をリリースしました。
エディタ、実行結果、テスト結果、SQL、Webブラウザ、そしてAIチャットを1つの画面にまとめた、オールインワンの学習環境です。

Codinableの画面構成

学習に必要なものは、すべてCodinableの中で完結します。

  • 演習の実行環境(Java 25、Gradle、Bashなど)が一式同梱されており、JDKのインストールや環境変数の設定は不要です
  • インストールして「新規コース開始・再開」からコースを選ぶだけで、講座のすべての演習がそのまま動きます
  • 書き換えて動かなくなっても、「初期化」で配布時の状態に戻せます
  • 開いている演習のファイルと実行結果を踏まえて、AIに質問したり(Askモード)、ファイルの書き換えを指示したり(Agentモード)できます

AIに書き換えを指示し、差分を確かめてから実行する、というAI駆動開発の基本の流れを、Codinableの中だけで安全に体験できます。

AIチャットに書き換えを指示し、差分を確かめて実行する

AIチャットは、受講者ご自身が生成AIサービス(Anthropic、OpenAI、Googleのいずれか)のAPIキーを登録して使うBYOK(Bring Your Own Key)方式です。利用料金は各社から直接請求されます。APIキーを登録しなくても、AIチャット以外の機能はすべて使えます。

Codinableのインストーラは、以下のGitHubのReleasesページからダウンロードできます(64ビット版のWindows 10/11、管理者権限は不要)。

この記事を含むシリーズ全体像

この記事はJava SEの一部の機能・仕様を取り上げたものですが、一連のシリーズになっており、シリーズ全体でJava SEを網羅しています。また認定資格である「Oracle認定Javaプログラマ」(Silver、Gold)の範囲もカバーしています。シリーズの全体像および「Oracle認定Javaプログラマ」の範囲との対応関係については、以下を参照ください。

1.4 JDKとJavaの開発環境

チャプターの概要

チャプター1.3では、Javaのソースコードがバイトコードにコンパイルされ、JVMの上で実行される仕組みを整理しました。本チャプターでは、そのコンパイルと実行を担うツールキットであるJDKの構成と、Codinableが備える開発支援の仕組み、AIが示したAPIを裏付けるためのAPIリファレンスを取り上げます。

1.4.1 JDKの構成

本レッスンでは、JDKを構成する要素と、JDKの場所をツールが見つける仕組みを整理します。

JDKとJavaランタイム

JDK(Java Development Kit)とは、Javaのプログラムを開発するための基本的なツールキットです。クラスライブラリとJVMを合わせたものをJavaランタイム(JRE:Java Runtime Environment)と呼び、JDKは、Javaランタイムにコンパイラ(javacコマンド)などの開発ツールを加えたものです。

JDK・Javaランタイム・JVM・クラスライブラリの包含関係

  • 最も外側のJDK(Java Development Kit)が、全体を包む
  • JDKの中のJavaランタイム(JRE)は、JVM(実行環境)とクラスライブラリ(API)から成る
  • コンパイラなどの各種ツール(javac、jar、javadocなど)は、JDKの中でJavaランタイムの外にある
  • Javaランタイムは「JVM+クラスライブラリ」、JDKは「Javaランタイム+開発ツール」である

Java 11以降、Oracle社はJREを単独では提供しておらず、開発でも実行でもJDKを使うのが基本です。JDKにはOracle JDKのほか、OpenJDKを基にしたEclipse Temurinなどのディストリビューションがあり(チャプター1.3参照)、本コースで扱う範囲では、どれを使ってもプログラムの動作は変わりません。

JDKのディレクトリ構成

JDKを単独で入手した場合は、ZIPファイルなどを任意のディレクトリに展開して使います。展開したJDKの主なディレクトリの構成を図で整理します。

JDKのディレクトリ構成

  • 最上位に「jdk-25(JDKのホームディレクトリ)」がある
  • その下に「bin」「lib」「conf」の3つのディレクトリが並ぶ
  • 「bin」には「javac(コンパイラ)」「java(実行コマンド)」「jar」「javadoc」などのコマンドが入る
  • 「lib」には「クラスライブラリ」と「JVM本体」が入る
  • 「conf」には「設定ファイル」が入る
  • Java 8までのJDKにあった「jre」ディレクトリは、現在のJDKには無い

PATHとJAVA_HOME

JDKを単独でインストールした場合は、binディレクトリを環境変数PATHに追加し、JDKのホームディレクトリを環境変数JAVA_HOMEに設定するのが一般的です。2つの環境変数の役割を図で整理します。

PATHとJAVA_HOMEの役割

  • 左上の「ターミナルでjavacと入力」から、「PATH」を経由して「jdk-25/bin/javac」へ矢印が伸びる
  • 左下の「ビルドツール・アプリケーションサーバー」から、「JAVA_HOME」を経由して「jdk-25(ホームディレクトリ)」へ矢印が伸びる
  • PATHは「コマンド名だけで実行するため」、JAVA_HOMEは「ソフトウェアがJDKの場所を知るため」と書かれている
  • 右端に「Codinableは同梱のJDKの場所を内部で管理する(設定は不要)」という注記がある

本コースではCodinableがJDKの場所を管理するため、PATHやJAVA_HOMEを設定する必要はありません。開発の現場で「コマンドが見つからない」「別のバージョンのJDKが使われている」といったトラブルに出会ったときは、この2つの設定を確かめます。

1.4.2 開発環境とAPIリファレンス

本レッスンでは、Codinableのエディターが誤りを示す仕組みと、AIが示したAPIを裏付ける方法を整理します。

Codinableの開発支援の仕組み

統合開発環境(IDE:Integrated Development Environment)とは、コーディング、コンパイル、実行、デバッグといった作業を1つのツールで行える開発ツールです。Javaの代表的なIDEには、IntelliJ IDEA、Eclipse、Apache NetBeansがあり、Javaの拡張機能を組み込んだVisual Studio Code(VS Code)も広く使われています。本コースで使うCodinableの構成を図で整理します。

Codinableの開発支援の構成

  • 中央に「エディター」があり、その下に「Eclipse JDT LS(Javaの言語サーバー)」がつながる
  • Eclipse JDT LSからエディターへ「補完」「診断(エラーの表示)」「定義へのジャンプ」の3つの機能が返る
  • エディターの右上に「▶ 実行」があり、「同梱のJDK 25」へつながる
  • 右側に「AIチャット(Ask/Agent)」がある
  • 枠の外に「ステップ実行のデバッガー(Codinableには無い。IntelliJ IDEAやVS Code、EclipseなどのIDEが備える)」がある

Codinableには、処理を1行ずつ止めながら実行するステップ実行のデバッガーはありません。本コースでは、実行結果とエラーメッセージを読み、原因を絞り込む考え方を取り上げます(チャプター14.1参照)。

APIリファレンスによる裏付け

Java SEが提供するAPIの使い方は、APIリファレンスと呼ばれるHTML形式のドキュメントで確認できます。Java 25のAPIリファレンスは、Oracle社の次のサイトで公開されています。

https://docs.oracle.com/en/java/javase/25/docs/api/

APIリファレンスでは、クラスがモジュールとパッケージという2段階のグループで分類されています。Stringクラスのページにたどり着くまでの階層を図で整理します。

APIリファレンスの階層

  • 上から下へ4段の階層が並ぶ
  • 1段目は「モジュール: java.base」
  • 2段目は「パッケージ: java.lang」
  • 3段目は「クラス: String」
  • 4段目は「メソッド: length()、toUpperCase()など」で、引数、戻り値の型、投げる例外、非推奨かどうかが書かれている
  • 右側に「ページ上部の検索欄から直接開くこともできる」という注記がある

APIリファレンスは、ソースコードの/** */形式のコメントからjavadocコマンドで生成されています(チャプター21.4参照)。AIは、実在しないメソッドや、引数の型が異なるメソッドを示すことがあります。AIが書いたコードで見慣れないAPIに出会ったら、APIリファレンスで裏付けを取ります。

レビューの観点

  • AIが使ったメソッドが、そのクラスに実在するかをAPIリファレンスで確かめる
  • 戻り値の型と、投げる例外の扱いがAPIリファレンスの記載と合っているか
  • APIリファレンスで非推奨(Deprecated)とされているAPIを使っていないか
  • エディターの診断でエラーが出ていないことは、文法と型が正しいことしか示さない点を踏まえているか

このチャプターで学んだこと

本チャプターでは、以下を取り上げました。

  1. JDKがJavaランタイム(JVMとクラスライブラリ)と開発ツールから構成されること
  2. JDKのディレクトリ構成と、PATHとJAVA_HOMEがそれぞれコマンドとJDKの場所を見つけるための設定であること
  3. Codinableのエディターが言語サーバーによる補完・診断・定義へのジャンプを備え、ステップ実行のデバッガーは備えないこと
  4. APIリファレンスをモジュール、パッケージ、クラスの順にたどり、AIが示したAPIを裏付ける方法
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?