ラベル JavaFX の投稿を表示しています。 すべての投稿を表示
ラベル JavaFX の投稿を表示しています。 すべての投稿を表示

2018年8月29日水曜日

Javaの教科書サポートページに当方の解説資料を掲載していただきました

 Javaプログラミングの書籍は多数あるのですが、そのうち下記の書籍は、Java教科書として広く使われています。神奈川工科大学 情報工学科でも採用されています。現在は第3版ですが、第1版(2000年10月発行)、第2版(2007年月発行)なので、約18年間の実績があります。その間、Javaでは幾つかの大きな改訂がありましたが、それに対応して来られました。

 当方では、この第3版で学ぶに当たっての参考資料(pdf版60ページ)を作成していました。それを、著者の立木秀樹先生(京都大学)により、下記の教科書サポートページに掲載(資料ファイルへのリンク設置)していただきました。皆様にもご活用戴ければ嬉しいです。

https://www.i.h.kyoto-u.ac.jp/users/tsuiki/javaEveryone3/index.html
(このwebページの「リンク」をご覧ください。)


2018年8月21日火曜日

JavaFXでのローカル座標系と表示デバイスのピクセルとの関係

JavaのGUIやグラフィックスは、従来のSwingからJavaFXに変更になったことは(Swingが消滅したわけではありませんが)すでに広く知られていると思います。

JavaFXは、これまでのSwingによるグラフィックスと比べて、とても楽しめるものになっています。描画には、Shapeクラスによるものと、従来のSwingに近いと思われるCanvasクラスによるものがあります。特に、Shapeクラスによるものは、きめ細かなインタラクションが可能であり、使い道がぐんと広がった気がします。また、アニメーションの方法も3種類備わっていて、高度な動きを比較的簡単に指定できます。

本格的にグラフィックスやアニメを専門にやる人は、他の有名な専用ソフトを使うのでしょうが、私のように、そうではないが汎用的なJavaプログラミングのなかに、GUIやグラフィックスも含めたいという人には、JavaFXは重宝しそうです。

Swingと比較して、JavaFXでは、グラフィックスの表示が格段に滑かになっています。恐らく、これは、コンポーネントのローカル座標系と表示デバイスのピクセルとの関係が次の図のようになっていることに起因していると思われます。


上記のテキストでは、「個々のNodeオブジェクトは、double型で表されるローカル座標系をもちます。 … 整数座標が画面の端およびピクセル間の間隙に割り当てられ、ピクセルの中心が隣り合う整数座標値の中点となっています。(図参照)」と説明されています。このような説明は、他の書物にはほとんど書かれいないようですので、理解を新たにできます。

2018年7月17日火曜日

選択肢はあれど、Javaは使えるようにしたい

Javaプログラミングの演習をとおして、Javaの基礎を身につける。
(本記事の続編は、近々どこかに掲載します。)

Writing with pencil and typing are the basis of this world

ここでは、以下の書籍に特化して、Javaプログラミングを学び、自分の問題解決にJavaを使えるようにすることを目指します。そのためにご参考になりそうなことを書いていきたいと思います。(続編はあるかも)

立木秀樹・有賀妙子「すべての人のためのJavaプログラミング 第3版」共立出版

初版 ー 第2版 ー 第3版

■第3版についての私のコメント

初版(2000年10月発行)、第2版(2007年9月発行)、第3版(2017年10月発行)となっています。私は、大学の情報工学科でこれらの書籍を使って(一時期、別の書籍も教科書として使いましたが)Javaを教え、また、学んで来ました。現在は、学生諸君には教えていませんが、Javaプログラミングは続けています。

この教科書の第一の特徴は、「最初から」タートルグラフィックスを使って、視覚的にプログラムの動作を確認しながら、Javaの基本を学べることです。それは、初版、第2版、第3版でも変わっていません。それまで、C/C++の基礎を教えていた同僚のN先生が、私のJava授業の演習に加わった際に述べられた言葉は印象的でした。「これまでのテキスト主体の演習に比べて、こんなグラフィックスの演習はとても難しいのではないかと思っていたら、学生諸君は意外にも、グイグイとプログラムを書いて、修正して、動かしているのを見て驚きました。これは衝撃的でした!」と。

この教科書は、いわゆる「易しい教科書」に比べて、説明が緻密であり、その結果として文字数がとても多いように見えます。それが、一見、「これはかなり難しい教科書」という印象を与えるかも知れません。しかし、説明文が少なく、文字が大きく、やさしそうに見える教科書は、初心者には逆に理解し難いでしょう。なぜなら、詳しい説明がないのですから、当然そうなります。これに対して、この教科書は、説明に分からないところがあっても、例題のJavaプログラムを動かして、その結果を見ながら、プログラムの構造を見直し、さらに、本文の説明を何度か繰り返して読めば理解が深まってくるように作られています。

第3版になって、変更になった項目で大きなものは、「ラムダ式と関数型インタフェース」の導入と、「これまでのGUIが、SwingからJavaFX」へと変わったことだと思います。前者は、すでに、他の多くのプログラミング言語、例えばPythonやJavaScript等も取り入れていますので、自然な流れと思います。はじめての人は、Javaにおいて、関数をデータとして扱うことには戸惑いを感じると思います。しかし、よく馴染んでくれば、ラムダ式の導入は、従来のオブジェクト指向とうまく融合していることを感じるようになるでしょう。JavaFXへの変更は、より高度なGUI(アニメーション、マルチタッチなどを含む)を持つアプリケーションの作成容易化への要請に応えるもののはずです。なお、本書では、他の多くの書籍にみられるFXML(XMLベース)は扱っていません。これは従来のSwingからの継続性を重視したためかも知れません。

また、後半では、現代のスマートフォンからスーパーコンまでにおいて必須となっている「マルチスレッドと平行処理」に、30ページほどを費やして、丁寧な説明を行っています。その部分にも、上記の「ラムダ式と関数型インタフェース」が出て来ており、ここでも、それらの用途の理解がさらに得られるように思います。