ひらおかゆみのなげやりブログ

もう、なげやりです…

OpenJFXのWikiからJavaFX 9の新機能を俯瞰する

このエントリは、JavaFX Advent Calendar 2017 の 14 日目です。昨日は高橋 @boochnich さんの「JavaFXアプリケーションのファイル構成(FXML, CSS, properties)」でした。明日は平田あづみ id:planet-az / @planet_az です。

ここ数年、JavaFXのアドベントカレンダーは櫻庭 @skrb さんが立てていらして、わたしも毎年それに便乗させていただいていたのですが、今年はそれがなかった。それもそのはず、今年の櫻庭さんはなんと一人アドベントカレンダーに挑戦中!

adventar.org

例えば、12/12は本わらび餅など和菓子特集…ああ、食べたくなってきた。

sunnypartlysweets.hatenadiary.jp

毎年JavaFX Advent Calendarを支えてきた偉大なるトライアングル(櫻庭さん、青江さん、高橋さん)の一角が今年は不在とあっては、さすがに力不足だったのかな?わたしの力ではお三方に遠く及ばないのはわかっているのですが。

今日は、本当は@khasunuma(@btnrouge)に頼もうと思っていたのですが、あいにく風邪で寝込んでいて書けないらしい(でもJava EE Advent Calendar 2017用の記事は数日分のストックがあるから大丈夫だとか)ので、自分で書くことにしました。

さて、ここからが本題です。

JavaFXは現在OpenJFXというプロジェクトでオープンソース・ソフトウェアとして開発が行われています。その中のWikiで、OpenJFX 9の新機能について触れられています。以下、そのリストを全文引用します。

Milestones

TBD

JEPs

  • 8076423: JEP 253: Prepare JavaFX UI Controls & CSS APIs for Modularization
  •  8043352: JEP 257: Update JavaFX/Media to Newer Version of GStreamer

Minor enhancements:

  • Public API to replace heavily-used internal API no longer accessible with Jigsaw
  • Better Hi-DPI support (with API control) on Mac, Windows, Linux

  • Update WebKit to newer version

これだけです。少ないですね。少ないので全部順にみてゆきましょう。

JEP 253というのは、具体的にはJavaFX 9で追加されたjavafx.scene.control.skinパッケージのことを指します。このパッケージには主要なコントロールのSkinが定義されていて、コントロールの見た目を細かくカスタマイズできるようになります。詳細はこちら。実は昨年のJavaFX Advent Calendarのエントリです。

nodamushi.hatenablog.com

JEP 257は、javafx.mediaモジュール(javafx.scene.mediaパッケージ)が内部で利用しているGStreamerというライブラリが新しくなっているのでアップデートしようというものです。それまではかなり古いバージョンのGStreamerを使用しており、バージョンアップに際して相応の修正が要求されたようです。

JEP 253/257 とも今年の3月には既に完成していて(開発自体は2015~2016年にかけて実施)、Java 9がリリースされるまで半年くらい温存されていたことになります。

続いて小さな変更です。

Public API to replace heavily-used internal API no longer accessible with Jigsaw は、Jigsawに備えて今まで多用されてきた内部API(内部APIが多用される時点であまりよろしくない気もしますが…)を公開APIで置き換えようというもの。これはJavaFX 9というよりJava 9全体で行われたことですね。

Better Hi-DPI support (with API control) on Mac, Windows, Linux はHiDPI対応が一通り完了したことを意味します。Macはかなり早い時期にHiDPI対応(Retina対応)が行われ、WindowsでもJava 8のUpdate 80以降でJavaFXのHiDPIがなされています。Java 9ではLinuxのGUIでもHiDPI対応となりました。同時期にJEP 263としてAWT & SwingのHiDPI対応もなされています。

最後の Update WebKit to newer version ですがWebViewが使用しているレンダリングエンジンWebKitのバージョンアップです。@khasunumaによると、実はJava 8の最新版(Update 152)と全く同じらしいですが。JEP 239としてJava 8 Update 60でのWebKitバージョンアップが行われていますが、さらに新しいバージョンアップか、それともJEP 239のことかは不明です。

WebKitとGStreamのバージョンアップについては一昨年のAdvent Calendarで青江 id:aoe-tk / @aoetk さんが言及されています。

aoe-tk.hatenablog.com

JavaFX 9の話題は昨年一昨年のAdvent Calendar でも見かけましたし、公式のWikiで変更点を見てもそれほどの量ではなく、Advent Calendarで紹介されたものの結局入らなかった機能がいくつもあります。JavaFX 9の新機能についてはもう語りつくされたと考えると、現時点ではブログに書くほどの話題はないのかもしれません。

こうした現状の中、ブログを書いてくださっている皆様、本当にありがとうございます。

まだブログを書いていらっしゃらない皆様、新機能でなくても、周りがあっと驚くものでなくても、JavaFXのコードを書かなかったとしても、JavaFXの話題であれば何でも構いませんので、ぜひご参加ください。

明日は平田あづみが再びミュージックプレーヤーの作成に挑むそうです。明後日はHTMLEditorコントロールについて私が書きます。