hpprc/jawiki-books-paragraphs huggingface dataset:
Java/基礎/コレクション
コレクション

プログラミングにおけるコレクション(Collection)は、複数の要素をまとめて管理するためのデータ構造です。コレクションは、配列やリスト、セット、マップなど、さまざまな形式で提供されます。これらのデータ構造は、異なる目的や要件に応じて使われ、データの格納、検索、操作、管理を行うための便利な手段として利用されます。
コレクション

コレクションの主な特徴は以下の通りです:
コレクション

プログラミングにおけるコレクションは、さまざまな用途に活用されます。例えば、データの一時的な保存や処理、データの集計や集合演算、データの操作や変換など、さまざまな場面で利用されます。多くのプログラミング言語やフレームワークは、標準ライブラリやサードパーティライブラリを通じてさまざまなコレクションを提供しています。
Javaのコレクション

Javaのコレクションは、複数の要素を格納し、効率的なデータ操作を可能にするためのフレームワークです。Javaのコレクションフレームワークは、java.utilパッケージに含まれており、さまざまなインターフェースとそれらを実装するクラスが提供されています。主なコレクションインターフェースには、リスト、セット、マップなどがあります。
Javaのコレクション

以下は、Javaのコレクションフレームワークを使った例を1つのソースコードにまとめたものです。
Javaのコレクション

このコードでは、リスト、セット、マップ、キュー、デッキのそれぞれのコレクションを作成し、要素を追加しています。それぞれのコレクションの要素が出力されます。これにより、Javaのコレクションフレームワークの基本的な使い方を示しています。
Javaのコレクション

以下は、Javaのコレクションフレームワークに含まれる主要なクラスとインターフェースの一覧を、名前、クラス・インターフェースの別、説明の順に表組みで示したものです。
Javaのコレクション

これらのクラスとインターフェースは、Javaのコレクションフレームワークを構成し、さまざまなデータ構造を効率的に操作するための手段を提供します。
Javaのコレクション

Javaのコレクションフレームワークは、データを効率的に管理し、操作するための標準的なAPIセットです。これにより、プログラマーはリスト、セット、マップなどのさまざまなデータ構造を使用してデータを格納し、操作することができます。Javaのコレクションフレームワークは、java.utilパッケージに含まれており、多くのインターフェースとクラスから構成されています。
Javaのコレクション

コレクションフレームワークの主な特徴は次のとおりです:
Javaのコレクション

コレクションフレームワークは、Javaプログラミングにおいて非常に重要であり、さまざまなアプリケーションやライブラリで広く使用されています。プログラマーは、これらのAPIを十分に理解し、適切に活用することで、効率的で堅牢なコードを作成することができます。
Java/基礎/例外処理
Javaの例外処理

プログラミングにおける例外処理は、プログラムが実行中に発生する予期しないエラーや異常な状況に対処するための仕組みや手法を指します。プログラムが実行中にエラーが発生する可能性がある場合、例外処理はプログラムの安定性を維持し、クラッシュや異常終了を防ぎます。
Javaの例外処理

以下は、プログラミングにおける例外処理の基本的な概念です:
Javaの例外処理

例外処理は、プログラミングにおいて非常に重要です。適切に実装された例外処理は、プログラムの安定性を高め、ユーザーエクスペリエンスを向上させるのに役立ちます。また、例外処理はデバッグや問題解決の際にも役立ちます。
Javaの例外処理

Javaの例外処理は、プログラム実行中に予期しない状況やエラーが発生した場合に、その状況を適切に処理するための仕組みです。Javaの例外処理は、プログラムの安全性や信頼性を高めるために非常に重要です。
Javaの例外処理

例外は、実行時に発生するエラーの種類や条件を表します。例えば、ゼロ除算、配列の範囲外へのアクセス、ファイルが見つからないなどのエラーは、Javaの例外処理を使用して適切に処理することができます。
Javaの例外処理

Javaの例外処理は以下のような特徴を持ちます:
Javaの例外処理

Javaの例外処理は、プログラムのロバストさを向上させ、予期しない状況に対処するための重要な手段です。例外処理を適切に使用することで、プログラムの安全性や信頼性を向上させることができます。
Javaの例外処理

以下は、Javaの例外処理を1つのソースコードで解説したものです。
Javaの例外処理

この例では、次のような内容を含んでいます:
Javaの例外処理

Javaには throws キーワードがあります。throws キーワードは、メソッドが特定の例外をスローする可能性があることを宣言するために使用されます。
Javaの例外処理

メソッドが特定の例外をスローする可能性がある場合、そのメソッドのシグネチャに throws キーワードを使用して、その例外を指定します。これにより、メソッドを呼び出す際に、呼び出し元がその例外を適切に処理するか、またはさらに上位の呼び出し元に例外を伝播させるかを決定できます。
Javaの例外処理

例えば:
Javaの例外処理

この例では、readFile メソッドが IOException をスローする可能性があることが宣言されています。メソッド内で IOException が発生する可能性がある場合、その例外をキャッチして処理するか、または readFile メソッドの呼び出し元で try-catch ブロックを使用して例外を処理する必要があります。
Javaの例外処理

throws キーワードを使用することで、メソッドの呼び出し元がそのメソッドがスローする可能性がある例外に対処できるようになります。
Javaの例外処理

Javaの例外には、いくつかの主要なクラスがあります。
Javaの例外処理

以下に、Javaの例外クラスのいくつかを表組みで示します。
Javaの例外処理

これらはJavaの例外の一部であり、それぞれ特定の状況や条件で発生します。Javaの例外処理では、これらの例外クラスを適切にキャッチして処理することが重要です。また、必要に応じて独自の例外クラスを定義することもできます。
Java/文法/コメント
Javaのコメント

プログラミングにおけるコメントは、コード内に追加されるテキストであり、主に以下の目的で使用されます。
Javaのコメント

プログラミング言語によってコメントの書き方や形式は異なりますが、一般的な方法として、単一行コメントや複数行コメントがあります。単一行コメントは通常、行の先頭に // を置いて記述します。複数行コメントは、/* で始まり */ で終わるブロックを使用して記述します。
Javaのコメント

コメントは、コードの可読性やメンテナンス性を向上させる重要な手法であり、良いコメントを記述することは、プログラミングにおける良い実践の一部です。
Javaのコメント

Javaのコメントは、Javaプログラム内に追加されるテキストであり、コードの読みやすさや理解を助けるために使用されます。コメントはコンパイラによって無視され、プログラムの実行時には無視されます。主な目的は、以下の点にあります。
Javaのコメント

Javaでは、以下の2つの主なコメント形式が一般的に使用されます。
Javaのコメント

コメントは、効果的なコードの記述やメンテナンスに欠かせない要素であり、開発プロセスをスムーズにします。
Javaのコメント

JavaDocは、Javaプログラミング言語において、ソースコード内のドキュメンテーションを生成するためのツールです。これは、Javaプログラムのソースコードに特定のコメント形式を記述し、それをJavaDocツールで処理することで、プログラムのAPIドキュメントを生成します。
Javaのコメント

JavaDocコメントは通常、クラス、メソッド、フィールドなどの要素に対して記述され、特定の形式に従います。一般的には、以下のような形式で記述されます。
Javaのコメント

JavaDocコメントには、概要や詳細な説明、パラメータ、戻り値、例などが含まれることがあります。JavaDocコメントを適切に記述することで、他の開発者がAPIを理解しやすくなり、プログラムの使用方法や機能を簡単に把握できるようになります。
Java/null
null

プログラミングにおける「null」とは、値が存在しないことを表す特別な値です。nullはプログラムで使用されるさまざまなデータ型(オブジェクト、配列、ポインタなど)の初期値として設定されることがあります。
null

主な用途としては以下のようなものがあります:
null

nullは便利な概念ですが、誤った使用やnullポインター例外などのランタイムエラーを引き起こす可能性があります。そのため、nullの使用は慎重に行う必要があります。近年のプログラミング言語では、null安全性を向上させるためにオプショナル型やnull許容型などの機能が導入されています。
Javaにおけるnull

Javaにおける「null」とは、参照型(Reference Type)の変数が参照するオブジェクトが存在しないことを示す特別な値です。Javaのすべてのオブジェクトはヒープ領域に保存され、変数はそのオブジェクトへの参照(アドレス)を保持します。nullは、そのような参照がオブジェクトを指していないことを示します。
Javaにおけるnull

以下はnullの主な特徴です:
Javaにおけるnull

Javaでは、nullを適切に扱うことが重要です。nullをチェックし、nullポインターエクセプションを防ぐための適切な手段があります。 例えば、条件付きのnullチェックやOptionalクラスの使用などが挙げられます。 Javaにはnull安全性を向上させるためのさまざまな手段があり、プログラマーはこれらの手段を活用してnull関連の問題を回避できます。
Java/列挙型 (enum)
列挙型

プログラミングにおける列挙型(Enum型)は、特定の一連の定数を表すために使用されるデータ型です。列挙型は、特定の値のセットに名前を付け、それをまとめるためのもので、可読性や保守性を向上させます。
列挙型

以下は、Javaでの列挙型の基本的な使い方の例です:
列挙型

この例では、Day 列挙型が定義されています。この列挙型は、曜日を表す7つの定数を持っています。そして、Day 列挙型の変数 today を宣言し、switch 文でその値を使って処理を行っています。
列挙型

列挙型の主な特徴は次のとおりです:
列挙型

各プログラミング言語において、列挙型の実装方法や機能は異なることがありますが、基本的な概念は類似しています。
列挙型

Javaの列挙型はメソッドを持つことができます。列挙型の定数にメソッドを追加することで、特定の振る舞いを持つ列挙定数を表現することができます。
列挙型

以下は、Javaの列挙型にメソッドを追加する例です。
列挙型

この例では、Day 列挙型に getAbbreviation() というメソッドを追加しています。これは各列挙定数の略称(例: "Mon"、"Tue"など)を返すメソッドです。また、各列挙定数の略称を保持するための abbreviation フィールドが追加されています。
列挙型

このように、列挙型にメソッドを追加することで、特定の列挙定数に関連する振る舞いをカプセル化し、コードの可読性や保守性を向上させることができます。
Javaの列挙型（Enum型）の特徴

Javaの列挙型(Enum型)のユニークな特徴はいくつかあります。以下にいくつか挙げてみます。
Javaの列挙型（Enum型）の特徴

これらの特徴により、Javaの列挙型は、定数をまとめて表現し、型安全性を保証し、コードの可読性を向上させるための強力な機能として広く利用されています。
列挙型とループ

Javaの列挙型をループで処理する場合、拡張forループや普通のforループを使うことができます。列挙型の列挙定数は配列として扱えるため、forループでそれらを反復処理することができます。
列挙型とループ

以下は、列挙型をループで処理する例です。
列挙型とループ

この例では、Day 列挙型の定数を拡張forループと普通のforループで処理しています。Day.values() メソッドを使うことで、列挙型の定数を配列として取得することができます。それぞれのループ内で、定数を順番に取り出して表示しています。
列挙型とループ

このようにして、Javaの列挙型をループで処理することができます。列挙型は定数をグループ化するための便利な方法であり、ループを使ってこれらの定数を効果的に処理することができます。
メソッド

列挙型(Enum型)はメソッドを持つことができます。以下に、Javaの列挙型のメソッドとその説明を表形式で示します。
メソッド

これらのメソッドは、列挙型の定数を操作したり、列挙型を使用する際に便利な機能を提供します。たとえば、values() メソッドを使用してすべての列挙定数を取得したり、valueOf(String name) メソッドを使用して指定された名前に対応する列挙定数を取得したりすることができます。
Java/キーワードと識別子
キーワードと識別子

キーワード(Keyword)と識別子(Identifier)は、プログラミング言語において重要な概念です。
Javaにおけるキーワードと識別子

Javaのキーワードは、言語の構文や機能を定義するために予約された単語です。 これらの単語は変数名やメソッド名として使用することはできません。
Javaにおけるキーワードと識別子

この表は、Java 9から導入された新しいキーワードや機能を、アルファベット順に並べ、各キーワードの分類と説明を示しています。
Javaにおけるキーワードと識別子

Javaの識別子は、クラス、変数、メソッドなどに付けられる名前です。識別子のルールは次のようになります。
Javaにおけるキーワードと識別子

例えば、次のような識別子があります:
Javaにおけるキーワードと識別子

これらのキーワードと識別子を適切に使用することで、Javaのコードを明確で理解しやすいものにすることができます。
Google Guava
Google Guavaは、Googleが開発したJavaプログラミング言語向けのオープンソースのユーティリティライブラリです。Guavaは、Java標準ライブラリには含まれていない便利な機能やデータ構造、ユーティリティメソッドを提供します。
Guavaは、コーディングの効率性と品質を向上させるために設計されています。これには、コレクションフレームワークの強化、関数型プログラミングスタイルのサポート、文字列操作やI/O操作などの機能が含まれます。また、Guavaは安定しており、幅広いユーザーによって使用されています。
主な機能には、Immutable Collections(イミュータブルなコレクション)、Functional Programming Utilities(関数型プログラミングユーティリティ)、Caches(キャッシュ)、Strings Utilities(文字列ユーティリティ)、Concurrency Utilities(並行性ユーティリティ)などがあります。これらの機能は、Javaプログラマーがコードをより効率的に記述し、より堅牢なアプリケーションを構築するのに役立ちます。
特徴

Google Guavaの特徴は次のとおりです: 豊富な機能セット: Guavaは、Javaの標準ライブラリにはない便利な機能を提供します。 これには、コレクション、文字列、I/O、並行性など、さまざまな領域でのユーティリティメソッドやデータ構造が含まれます。
クイックツアー

これらの例は、Google Guavaの一部機能の使用方法を示していますが、Guavaにはさらに多くの便利な機能があります。
Guavaと重複するJava SEの機能

Google Guavaは、Java SEの標準ライブラリには含まれていない、いくつかの便利な機能や拡張を提供しますが、一部の機能はJava SEの標準ライブラリでも利用可能です。以下は、Guavaと重複するJava SEの機能の例です:
Guavaと重複するJava SEの機能

Java SEの標準ライブラリには多くの便利な機能が含まれていますが、Guavaはそれらを補完し、より効率的なコーディングやより堅牢なアプリケーションを構築するための追加機能を提供します。
機能分類

Google Guavaの機能は主に以下のカテゴリに分類されます:
機能分類

これらのパッケージは、Google Guavaが提供する機能を効果的に組織化しており、開発者が必要な機能を見つけやすくなっています。
リソース

Google Guavaに関するリソースは以下の通りです:
Google Guice
Google Guiceは、Javaプログラミング言語向けの軽量な依存性注入(DI)フレームワークです。依存性注入は、コンポーネント間の依存関係を解決し、コードの柔軟性、テスタビリティ、保守性を向上させるためのソフトウェア設計パターンの一つです。
Guiceを使用すると、Javaアプリケーションのオブジェクトやサービス間の依存関係を明示的に定義し、Guiceがそれらの依存関係を管理することができます。これにより、コードの耦合度を低減し、テストのしやすさやコードの再利用性を高めることができます。
Guiceは、アノテーションを使用して依存性の注入を行うことができるため、コードの可読性が向上します。また、Google Guiceは軽量でありながらパフォーマンスが良いため、多くのJava開発者に利用されています。
特徴

Google Guiceの主な特徴は次のとおりです:
特徴

Google Guiceはこれらの特徴により、Javaアプリケーションの開発やメンテナンスを容易にし、柔軟性と保守性を向上させるのに役立ちます。
クイックツアー

以下の手順は、基本的な依存性注入パターンを理解し、Guiceを使ったサンプルアプリケーションを作成するためのものです。
クイックツアー

これで、基本的なGoogle Guiceの使い方がわかりました。このクイックツアーを基に、より複雑なアプリケーションを構築するための理解を深めることができます。 Guiceの公式ドキュメントやサンプルコードも参照すると、より詳細な情報を得ることができます。
リソース

Google Guiceのリソースは、公式ウェブサイトやGitHubリポジトリなどで利用できます。
リソース

以下は、主要なリソースのリンクです:
Spring Framework
Spring Framework(スプリング フレームワーク)は、Javaプラットフォーム向けのオープンソースのアプリケーションフレームワークです。このフレームワークは、企業アプリケーションの開発において、様々な側面での機能を提供し、アプリケーションの設計、開発、テスト、デプロイメントなどのプロセスを簡素化します。Spring Frameworkは、複雑な企業レベルのアプリケーションの構築を容易にし、柔軟性、拡張性、保守性を向上させることを目的としています。
特徴

Spring Frameworkの主な特徴は以下の通りです:
特徴

これらの特徴により、Spring Frameworkは企業レベルのJavaアプリケーション開発において広く利用されています。
機能分類

Spring Frameworkの機能は、以下のように分類されます:
機能分類

これらの機能は、Spring Frameworkが提供する多様な用途や要件に対応するために設計されています。 開発者は必要に応じてこれらの機能を組み合わせて利用し、柔軟かつ効率的なアプリケーションを構築することができます。
ウィキブックス・スクール/化学基礎
ウィキブックス・スクール/化学基礎へようこそ。こちらでは、高等学校化学基礎の内容を取り扱っています。詳しいことは講座内で説明を受けてください。こちらでは確認テストのみの指示といたします。
確認テストについて

毎講座ごとにテストがあるのはどこもそうですが、合格点は90点とします。90点以上を取りましたら、次の講座へ進んでください。少々難しい問題も加えられています。
確認テストについて

おそらく講座内でも指示があると思います。
確認テストについて

なお当講座パッケージでは、難易度別の講座グループなどはありません。
講座一覧

以下が講座一覧になります。
Apache Maven
Maven(メイヴン)は、Javaプロジェクトのビルド、依存関係の管理、ドキュメントの作成などを自動化するためのツールです。Apache Mavenプロジェクトによって管理されており、プロジェクトの構造を標準化し、効率的なビルドプロセスを提供します。
Mavenは、プロジェクトの設定や依存関係をXMLフォーマットで記述したpom.xml(Project Object Model)ファイルに基づいて、ビルドを実行します。また、中央リポジトリなどのリポジトリから必要なライブラリやプラグインをダウンロードし、プロジェクトのビルドに必要なすべての依存関係を解決します。
Mavenを使用すると、プロジェクトのビルド、テスト、パッケージング、デプロイなどのタスクを簡単に自動化できます。さらに、Mavenはプロジェクトの構造やライフサイクルを明確に定義することで、開発者間の共通の理解を促進し、プロジェクトのメンテナンスを容易にします。
特徴

Mavenの特徴は以下のとおりです:
特徴

これらの特徴により、MavenはJavaプロジェクトの効率的なビルド、依存関係管理、およびプロジェクト管理をサポートします。
クイックツアー

Mavenのクイックツアーを以下に示します:
クイックツアー

これらのステップを実行することで、Mavenを使用してJavaプロジェクトを効率的にビルド、テスト、および管理することができます。
リソース

Mavenに関する公式なリソースは次の通りです:
Apache Ant
Apache Antは、Javaプログラミング言語向けのビルドツールの1つです。Apache Antは、プログラムのコンパイル、テスト、デプロイメントなどの作業を自動化するために使用されます。AntはXMLベースの構成ファイルを使用し、タスクと呼ばれる個々の操作を定義します。これにより、複雑なビルドプロセスを明示的に定義し、プログラマがビルドプロセスを柔軟に制御できるようになります。
Antは、Javaプログラムのビルドだけでなく、その他の作業にも使用できます。たとえば、ファイルのコピー、圧縮、アーカイブの作成、テストの実行など、多くの一般的なタスクを処理することができます。
Apache Antは、Java開発者にとって広く利用されており、オープンソースのプロジェクトとしてApacheソフトウェア財団によって管理されています。
特徴

Apache Antの特徴は以下のとおりです:
特徴

これらの特徴により、Apache AntはJavaプロジェクトのビルドと自動化に広く使用されています。
クイックツアー

Apache Antのクイックツアーは、Antを始める際に役立つ基本的な手順を示します。
クイックツアー

これらのステップに従うことで、Apache Antを使用してプロジェクトのビルドプロセスを効率化し、自動化する準備が整います。
リソース

Apache Antに関する情報やリソースを入手するための主要なウェブサイトとリンクは以下の通りです:
リソース

これらのリソースは、Apache Antを使用してプロジェクトを効率的にビルドし、自動化するための情報を提供しています。
Fortran/構造化データ
Structures, structured types, or derived types(DT) were first introduced in Fortran 90. Structures allow the user to create data types that hold multiple different variables.
Derived types are often implemented within modules such that one can easily reuse them. They might also hold type-bound procedures which are intended to process the structure. The arguments pass(name), nopass indicate whether the object should be passed as the first argument.
Similar to the character data type, structures can be parameterized by two different parameter types: kind, len. The kind parameters must be known at compile type (consist of constants) whereas the len parameters can change at runtime.
Simple example

As an example, we can define a new structure type, 'Fruit' which stores some basic fruit variables:
Simple example

We can declare two 'fruit' variables, and assign them values:
Simple example

And we can then use the fruit variables and their child values in normal Fortran operations.
References

テンプレート:Bookcat
Fortran/エラーの捕捉
Typically in an error situation, your program will stop, and you'll get an error message. The only exception to this is that at the end of read and write statements' parenthesized control list, you can add, err=label to determine which line to jump to in the event of an error.
Modern Fortran (from Fortran 90 onwards) has introduced four main areas for error capture:
1) File handling and i/o operation error handling
2) IEEE floating point error detection and reporting
3) Dynamic allocation
4) Command line operations
File handling and I/O Operations

All the external file handling statements and I/O operations (open, read, write, close, inquire, backspace, endfile, flush, rewind and wait) can now take optional iostat and iomsg clauses. iostat is an integer which returns a non-zero value if there is an error, in which case, the character variable assigned to iomsg will return a brief error message. The non-zero integers and the messages are compiler dependent but the intrinsic module, iso_fortran_env, gives access to two important values: iostat_end and iostat_eor. If an error occurs, and iostat is non-zero, execution will not stop. The ERR clause is still supported but should not be used.
File handling and I/O Operations

Note that the length required for the message character is vendor and error dependent.
IEEE floating point error detection and reporting

This is a big topic, but in essence modern Fortran provides access to three intrinsic modules: IEEE_arithmetic, IEEE_exceptions and IEEE_features. These features can be used to intercept errors such as divide by zero and overflow but at the expense of some performance.
IEEE floating point error detection and reporting

The IEEE_features module controls access to the features the programmer may require, by use association in the scoping unit where the programmer places the use statement,
IEEE floating point error detection and reporting

See Chapter 11 in Metcalf et al, Modern Fortran Explained, OUP. All the necessary basic facilities exist in order for the programmer to construct a try/catch system if desired.
Dynamic Allocation

Modern Fortran allows run-time allocation and deallocation of arrays of any type, and a typical error might be to try to dynamically allocate an array so large that there is not enough memory, or an attempt to deallocate an array which is not already allocated. There are optional clauses stat and errmsg which can be used to prevent program failure and allow the programmer to take evasive action.
Dynamic Allocation

These features are available in the equivalent coarray features.
Command Line Operations

Modern Fortran also supports error detection for the execution of command line operations,
Command Line Operations

In this example, the programmer of the my.exe program has the responsibility for what codes are returned and what error messages are exposed, except that -1 and -2 are reserved for allowing the compiler vendor indicating what features may be supported.
Fortran/並列処理
Parallelism is included in the Fortran 2008 standard. To use parallel features, a Fortran program must be compiled with parallelism enabled. For example, the Intel ifort compiler uses the flag -coarray.
Images

Fortran uses a Partitioned Global Address Space (PGAS) model for parallelism. For each processor, the program is executed as a separate duplicate "image" of the program, each with their own separate memory partition. Consider the following program:
Images

The intrinsic function this_image returns the number of the image that is being executed, and the intrinsic function num_images returns the total number of images for the program. If the program is compiled and executed with 4 processors, the output might look something like this:
Images

Note that the images are executed asynchronously and so the output may not appear in the order 1, 2, 3 then 4.
Coarrays

Coarrays are a way of communicating data in arrays across images. A coarray is just like a normal array but it has extra codimensions for each image. Codimensions can be declared and indexed using the square brackets []. For example to declare a rank 1 coarray with size of 10 and a codimension of size 4:
Coarrays

Scalar variables can also be coarrays:
Coarrays

Here, * denotes the maximum number of available processors. The codimensions can have multiple axes just like normal dimensions, however, there is a limit of rank 15 for codimensions. Transferring data between images is as simple as indexing on the codimensions.
Fortran/オブジェクト指向プログラミング
Object-oriented programming

Data can be gathered in modules. The general form is given by
Object-oriented programming

There are three possible access properties: public, private, protected.
Object-oriented programming

One can include the module's public data in outside code. There are three ways.
Object-oriented programming

Modules can be extended using submodules. Multiple advantages arise
Object-oriented programming

In Fortran one can derive structures off of other structures, so called derived data types. The derived types will have the features of the parent type as well as the newly added ones and the general syntax is given by:
Object-oriented programming

The following example shows different types of people within a company.
Object-oriented programming

One can define procedures which will be invoked before the object is automatically deleted (out of scope). This is done with the statement final. The following example illustrates it
Object-oriented programming

One can set the base type as abstract such that one cannot initialize objects of that type but one can derive sub-types of it (via extends). Specific procedures which should be defined in the sub-type need the property deferred as well as an explicit interface.
Object-oriented programming

The following example illustrates their use.
Object-oriented programming

One can create pointers to child classes by using type definitions in allocate statements and the select type environment. The following example highlights its use.
Fortran/言語の拡張とオーバーロード
Procedure Overloading

Like several other languages, Fortran 90 and newer supports the ability to select the appropriate routine from a list of routines based on the arguments passed. This selection is done at compile time and is thus unencumbered by run-time performance penalties. This feature is accessed by use of modules and the interface block.
Procedure Overloading

In the following example, a module is specified which contains an interface function f which can handle arguments of various types.
Procedure Overloading

A program which uses this module now has access to a single interface function f which accepts arguments that are of integer, real, or complex type. The return type of the function is the same as the input type. In this way the routine is much like many of the intrinsic functions defined as part of the Fortran standard. An example program is given below:
Intrinsic functions

One can extend intrinsic functions. This is similar to overload operators.
Intrinsic functions

Here we will demonstrate this by extending the sqrt function. The intrinsic function is not implemented for arguments of integer type. This is because there is no clear idea how to define the result of non integer type (e.g. 4 = 2 {\displaystyle {\sqrt {4}}=2} , but how to define 5 = 2.236 ... {\displaystyle {\sqrt {5}}=2.236\ldots } ). We implement a method here where the result is always the nearest integer.
Derived Data Types

Fortran 90 and newer supports the creation of new data types which are composites of existing types. In some ways this is similar to an array, but the components need not be all of the same type and they are referenced by name, not index. Such data types must be declared before variables of that type, and the declaration must be in scope to be used. An example of a simple 2d vector type is given below.
Derived Data Types

Variables of this type can be declared much like any other variable, including variable characteristics such are pointer or dimension.
Derived Data Types

Using derived data types, the Fortran language can be extended to represent more diverse types of data than those represented by the primitive types.
Operator Overloading

Operators can be overloaded so that derived data types support the standard operations, opening the possibility of extending the Fortran language to have new types which behave nearly like the native types.
Operator Overloading

The assignment operator = can be overloaded. We will demonstrate this by the following example. Here, we define how the assignment of a logical type on the left and an integer on the right should be performed.
Operator Overloading

One can overload intrinsic operators, such as +,-,*.
Operator Overloading

In the following example we will overload the * operator to work as the logical .and..
Operator Overloading

One can create newly self-created operators.
Operator Overloading

We demonstrate this by the following example: We create an unary operator .even. <int> which outputs a logical if the given integer is even as well as a binary operator <reals> .cross. <reals> that performs the standard cross product of two real vectors.
Fortran/言語の混合
Types

Fortran types map quite well to intrinsic types in other compiled languages. The following is a table of Fortran-to-C types:
Arrays

The layout of Fortran arrays in memory contrasts with arrays in C and many C-based languages. When iterating over contiguous array elements in C, the rightmost array subscript varies the fastest, while in Fortran, the leftmost array subscript varies the fastest. Hence the element following x(1,1) in contiguous memory is x(2,1), not x(1,2). Furthermore, the element sub-scripting in C starts at 0, while Fortran starts at 1 by default. An element in Fortran may be x(1), while the equivalent value in C code would be x[0]. However, when passing a Fortran array to a C function, you do not need to (and should not) reshape the array into C-style subscripts first; the compiler will automatically do this for you.
Global Storage

See the Common Blocks section.
Subroutine and function calls

Many languages push their arguments onto the stack, some as constants and some as addresses. In most compilers, Fortran will compile a block of pointers to variables and constants, and push the address of that block. So, if we had a Fortran procedure defined as follows:
Subroutine and function calls

then the C definition would be:
Subroutine and function calls

The C code could call the routine as follows:
The PL/1 Special Case

In PL/1, you can define an external common block, subroutine, or procedure to be of type FORTRAN. When you do this, everything, down to subscript order, will be handled for you. Likewise, you can define a PL/1 item, such as a subroutine, to be of type FORTRAN, and it will then be callable by Fortran using Fortran's calling conventions.
JavaFX
JavaFXは、Javaプラットフォーム向けのユーザーインターフェース(UI)およびグラフィカルユーザーインターフェース(GUI)ライブラリおよびソフトウェアフレームワークです。JavaFXは、豊富なビジュアルエクスペリエンスを提供し、デスクトップ、モバイル、および組み込みデバイス向けのアプリケーションを開発するために使用されます。
JavaFXは、Javaの標準ライブラリの一部として提供されており、Java Development Kit(JDK)に含まれています。JavaFXは、豊富なグラフィックス、アニメーション、メディア再生機能、および豊富なUIコントロールを提供し、開発者が魅力的で使いやすいアプリケーションを構築できるように支援します。
JavaFXは、Java言語で開発されており、FXMLというXMLベースの言語を使用してUIを記述することができます。また、CSS(Cascading Style Sheets)を使用してスタイルを定義することも可能です。
JavaFXは、Java Swingと比較してより現代的なアプローチを取っており、リッチなUIや洗練されたグラフィックスを実現するための機能を提供しています。
JavaFX

JavaFXは、JavaでGUIアプリケーションを開発するためのツールキットです。JavaFXを使用すると、豊富なUIコントロール、グラフィックス、レイアウト、CSSスタイルシートなどを使用して、美しい、インタラクティブなデスクトップアプリケーションを作成できます。
JavaFX

JavaFXアプリケーションは、JavaFX Scene Graphと呼ばれるグラフィカルなオブジェクトツリーで構築されます。このScene Graphを構築するには、FXMLというXMLベースのマークアップ言語を使用することもできます。FXMLを使用すると、GUIのレイアウトとデザインを分離し、デザイナーとプログラマーが分業できます。
JavaFX

JavaFXには、JavaFXアプリケーションを構築するための豊富なAPIが用意されています。これには、UIコントロール(ラベル、ボタン、テキストボックスなど)、レイアウトマネージャー、アニメーション、トランジション、CSSスタイルシートなどが含まれます。また、FXMLを使用して、JavaコントローラクラスにUIコントロールをバインドし、ユーザーのアクションに応答するコードを記述できます。
JavaFX

JavaFXは、Java SE Development Kit(JDK)の一部であり、JavaFXを使用するためにはJDKをインストールする必要があります。また、JavaFXの最新バージョンは、OpenJFXプロジェクトとしてオープンソースで開発されており、多くのIDEがJavaFXプロジェクトをサポートしています。
JavaFX

FXMLとは、JavaFXのUIを宣言的に記述するXMLベースのマークアップ言語です。 FXMLを使用することで、JavaFXのUIをより簡単に作成できます。
JavaFX

以下は、FXMLの例です。
JavaFX

FXMLでは、UI要素を定義するためにXMLタグを使用し、その属性を使用してUI要素の属性を設定します。 FXMLファイルの最上位の要素はルート要素であり、この場合はStackPaneです。 StackPane要素のchildrenタグ内に、Text要素があり、そのtext属性にはテキストコンテンツが設定されます。
JavaFX

FXMLファイルは、JavaFXのアプリケーションクラスからロードされます。例えば、FXMLLoaderクラスを使用してロードできます。 以下は、FXMLを使用してJavaFXアプリケーションを初期化するためのコードの例です。
JavaFX

FXMLを使用する場合、start()メソッド内でFXMLファイルをロードする必要があります。 FXMLLoaderクラスを使用して、FXMLファイルを読み込み、FXMLのルート要素を取得します。 これをJavaFXのSceneに追加し、Stageに表示することができます。
JavaFX

JavaFXはCSSを使用して外観をスタイリングできます。CSSを使用すると、ボタン、ラベル、テキストフィールドなど、JavaFXの多くのUIコントロールの外観をカスタマイズできます。
JavaFX

以下は、AWT、Swing、およびJavaFXの特徴を比較する表です。
FXMLの代替技術

FXMLは機能的には優れているのですが、XMLに基づいているので記述性と可読性に難があります。 このため、いくつかの代替技術が開発されています。
FXMLの代替技術

以下はいくつかの代替技術の例です。
FXMLの代替技術

これらの代替技術は、FXMLを回避したり、UIの構築をよりプログラマブルにしたりするために使用することができます。KotlinやGroovyの柔軟性を活かしたUI開発を行いたい場合には、これらの代替技術が有用です。