# JavaFXの歴史と 成績保留対象者用課題 > 学籍番号: 2172117 > 氏名: 山下 マナト ## JavaFXの歴史  インタラクティブ性を高められる技術として技術の1つとして注目され、当時のweb普及に一躍を買ったJavaアプレットの難易度が高いという点を補うためにJavaFXが登場した。 SUN Microsystems(現Oracle)のChlistopher Oliver氏による個人的なプロジェクトとして始まり、2007年にJavaOneと呼ばれるWorldwide Java Developer カンファレンスで **JavaFX を初めて発表**しました。 様々なOSで使用できるライブラリとして活用され、2014にリリースされたJava Standard Editionのver.8からはJDKに含まれていましたが、「HTML 5とJavaScript、ネイティブなモバイル開発の登場で、JavaFXのようなクロスプラットフォームのツールキットの市場はあまり広がらないものと捉えられた」として、2018年のJava SE11では**JDK11から削除**されている。 JavaFX は、JDK に加えて、ダウンロード可能な**オープンソースモジュール**として Gluon 社によって今後もサポートされます。 ## JavaFXの特徴  JavaFXは、Java VM(Java仮想マシン)上で実行することができるAWTやSwingよりも簡単なアニメーションやGUI開発が可能とするRIA(リッチインターネットアプリケーション)の**グラフィック**および**メディア**パッケージ**ライブラリ**です。 Java AppletおよびJava Web Startを用いてブラウザを通じて簡単に配布・実行できる**RIAプラットフォーム**となっている。 JavaFX自体はブラウザを要さず、単体のJavaアプリケーションとして実行することが可能である。 他にも「**ドラッグ・トゥ・インストール**」と呼ばれる機能がある。これは、web上のJavaウィジットをドラッグして、デスクトップにドロップすると、そのブラウザを閉じてもアプリケーションの動作は中断されず、コンテキストを保持する。サン・マイクロシステムズこの機能を「ブラウザから解放される」ことを可能にする、新しい頒布モデルの幕開けだと宣伝している。 JavaFXのデザインは講義では範囲外であったが、今でもweb開発によく使用されているXML言語であるHTMLと併用されることが多い、**CSS(Cascading Style Sheet)で記述可能**である。これにより外観およびスタイルは実装から分離されるため、開発者はコーディングに集中できます。 さらに、UI(ユーザーインターフェース)とバッグエンドを分離して記述することが容易になるように、**FXML**と呼ばれるXML言語によってマークアップすることができる。これは現在Gluonが提供している**Scene Builder**というソフトウェアを用いることで簡単に作成可能である。 またJavaの大きな特徴である、様々なOS上でもJavaで記述した同一のプログラムを実行することができるという利点を活かしてJavaFXも様々な**プラットフォーム間での互換性**を実現している。 ## javaFXの活用例  JavaFXは**オーディオ**、**ビデオ**、**グラフィックス**および**アニメーション**を得意としていて、様々なデスクトッププラットフォームで実行可能である。 JavaFXは**Javaで記述**されていて、JRuby, Scalaなどのプログラミング言語の代替として設計されている。**WebView**コンポーネントでアプリケーション内にWebページを組み込むことができる。  JavafXでビルド可能なものとしてdocs.Orecle.comで紹介されている例としては、アニメーション、グラフ、コントロールなどの様々なJavaFX機能を示すサンプル・アプリケーションのギャラリとして様々なデスクトップ・プラットフォームで実行可能である**JavaFX Ensemble8**や、UIコンポーネントのデザインテーマ**Modena**、3DCG作成ツールMayaと互換性が高く、マウスまたはトラックパッドを使用して3Dシーンを移動して確認できるサンプル・アプリケーションである**3D Viwer**などを使ったプログラムを構築することができる。 これらは全てJava SE 8に含まれている。  ## JavaFXに期待すること JavaFXは元々RIA用に開発された。RIAとはそもそもWeb上で動作す流ことが多い表示記述言語HTMLに画面制御やキーボードでの制御を行えるようにしたものである。入力系、選択系、表示系などのコントロールを搭載できる。しかし現代を生きる我々にとってはこれらは今**HTMLとCSSとJavaScriptによって書かれていることが多い**です。 https://atmarkit.itmedia.co.jp/ait/articles/0706/13/news134_3.html このサイトは2007年当時JavaFXが発表されて間もなく、OpemJDFXをダウンロードして早速デモを試して見たという内容の記事です。当時はWeb開発はXHTML+CSSやAjax回りを使っているWeb開発チームがクライアントサイドを担っていてサーバサイドではまた別のプログラミング言語を使用していたようです。 JavaFXは**クライアント側**でスムーズな画面遷移や、動画、アニメーション、などユーザビリティの高いサイト構築を売りにしていたようですが、2018年のJDK 11からOracleによって**JavaFXは削除**された。 Oracleの社員が書いたブログによるとHTML5とJavaScript、ネイティブなモバイル開発の登場で、JavaFXのようなクロスプラットフォームのツールキットの市場は広がらなかったと言われている。 現在はOracleの元を離れて**オープンソース**として、**Gulon社**によるサポートを受けている。GUI開発の観点でも同じJavaのフレームワークとしてよく名前が上がるのが、1996年JDK1.0で標準搭載された**AWT**(Abstract Windowing Toolkit), 1998年JDK1.2でリリースされた**Swing**そしてJavaFXである。 しかし残念ながらJavaSEにはAWTとSwingは含まれています。 これはこれらで構築されているアプリケーションが大量にあるためであるようです。 それではJavaFxは**今後どうなってしまう**のか。 確かにJavaFXが使われる事はかつてのOracleの想定よりは少なくなり、JavaFXの最大の売りである**簡単なRIAの構築**はHTML5, CSS, JavaScriptなどによって代替されることが予想されます。 しかし、Guluon社のOpenJFKプロジェクトと**長期的なサポート**により、廃れる事はなさそうです。Javaの **GUIライブラリとしてのJavaFX**はまだ死んでいないと思います。 それどころか**クラウド**といった最新の技術や、IOSおよびAndroidアプリの**クラスプラットフォーム**を可能とするAPI、作成も可能とのこと。今後もGuluonとオープンソースコミュニティによる発展が期待されます。 ### 参考文献 * 日経XTECH 「詳説JavaFX」第1回 JavaFXとは https://xtech.nikkei.com/it/article/COLUMN/20100412/346953/ * Wikipedia JavaFX https://en.wikipedia.org/wiki/JavaFX https://ja.wikipedia.org/wiki/JavaFX * InfoQ JavaFXと今後のJavaクライアント技術 infoq.com/jp/news/2018/03/JavaFXRemovedFromJDK/ * Oracle JavaFXの概要(rerease 8) https://docs.oracle.com/javase/jp/8/javafx/get-started-tutorial/jfx-overview.htm * Oracle The Future of JavaFX and Other Java Client Roadmap Updates https://blogs.oracle.com/java/post/the-future-of-javafx-and-other-java-client-roadmap-updates * Gluon https://gluonhq.com/ * atmarkit JavaFXでJava RIA開発はどれくらい変わるの? https://atmarkit.itmedia.co.jp/ait/articles/0706/13/news134_3.html
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up