はてなキーワード: javafxとは
https://anond.hatelabo.jp/20250414183529
の続き
未読
環境構築が済んで、脆弱性の例を2個ぐらい見たところまで読んだ
ちょっと読んだ
未読
未読
Flashが無くなるとは思いもしなかった
未読
未読
途中まで読んだ
途中まで読んだ
未読
途中まで読んだ
未読
未読
面白かった
未読
未読
未読
未読
未読
読みやすくてためになる本だった
薄くて簡単な本でいいからとにかく終わらせるのが大事だったことにようやく気が付く
未読
未読
未読
未読
未読
Javaで正規表現を書くとエスケープで訳が分からなくなるのに比べて、Perlは素直に書けるしスクレイピングするのにも便利というイメージがあった
序盤でギブアップ
序盤でギブアップ
結果的にはやりたいことはGUIのソフトウェアを作ったりウェブサイトからスクレイピングしたりだったので、この辺の本を読んですぐに何かに応用できるということもなく、世知辛かった
作者の坂下夕里さんは2024年にも「かんたん合格 ITパスポート教科書&必須問題 令和7年度 かんたん合格シリーズ」という本を出していた
今となっては、物事を人にどうやって教える・伝えるかという部分に興味があるので作者の集大成をこの目で見てみたい
20ページぐらい読んだ
多分ページをめくったりはしてみたと思う
同上
同上
未読
赤本だね
買っただけの存在
泣いた
これも泣いた
すごくいい本だなと感じた記憶がある
単語を2,3個見た
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
ちょっとだけ読んだ
ちょっとだけ読んだ
一応全体に目を通したはず
未読
未読
未読
「軋轢」という言葉をこの本で知ったということを唯一覚えている
未読
未読
多分1週間続かなかったと思う
数ページ読んでみて何もわかりやすくないことに気づいて本棚にしまった
数ページ読んだ
ちょっと読んだ
Amazon最古の買い物はこれだった
数学は最初の最初、展開の公式が出たときに「これを覚えるのは無理だな」とひとまずスルーしたら連鎖的に「この問題を解くにはあらかじめ解き方を知っている必要があって、俺はそれを知らないから解くのは無理だな」と数学の全てがわからない状態に陥っていた
この参考書はとても厚いページ数で易しく丁寧に説明してくれていたのだが、それがむしろ数学が分からないのを放置していたことによる負債の大きさを体現しているように見え、諦めるのにそう長くはかからなかった
振り返ってみると、気まぐれでちゃんと勉強するかという気概が出てくる瞬間はそれなりにあった
しかし、一度その行動が途絶えるとそこから途絶えっぱなしになるのが非常に良くない
5分とか10分で良いから本を読む時間を毎日途切れさせずにねじ込むことで、本を読む習慣を保護する必要があったのかもしれない
https://anond.hatelabo.jp/20250414181718
の続き
未読
未読
未読
未読
未読
未読
未読
シリーズ物なのか
今知った
未読
最初の数ページ読んだ
未読
未読
未読
未読
未読
未読
未読
未読
タコと猫を混ぜたようなマスコットキャラクターが居て…ってところまでは読んだ
この本を読んでおかなかったのは惜しいな
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
短くてさっと読めたような気がする
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
未読
作者さんこれ以降一切活動してなくて悲しい
残念としか言えない
未読
未読
未読
4部作の最終巻
面白かった
この作者の新作はなかったが、なんとリライト(1作目)が実写映画化して今年の夏放映らしい
未読
未読
未読
未読
未読
未読
未読
未読
続き
https://anond.hatelabo.jp/20250414183837
時間 | 記事数 | 文字数 | 文字数平均 | 文字数中央値 |
---|---|---|---|---|
00 | 115 | 12736 | 110.7 | 27 |
01 | 75 | 10082 | 134.4 | 36 |
02 | 35 | 9136 | 261.0 | 134 |
03 | 14 | 2544 | 181.7 | 43 |
04 | 8 | 751 | 93.9 | 36.5 |
05 | 15 | 1002 | 66.8 | 54 |
06 | 18 | 1440 | 80.0 | 59.5 |
07 | 19 | 4606 | 242.4 | 56 |
08 | 24 | 2363 | 98.5 | 40 |
09 | 60 | 6034 | 100.6 | 53 |
10 | 83 | 12941 | 155.9 | 28 |
11 | 132 | 8124 | 61.5 | 36 |
12 | 136 | 8410 | 61.8 | 29 |
13 | 103 | 8644 | 83.9 | 29 |
14 | 98 | 7574 | 77.3 | 32.5 |
15 | 109 | 10366 | 95.1 | 32 |
16 | 113 | 12292 | 108.8 | 36 |
17 | 109 | 6609 | 60.6 | 31 |
18 | 77 | 6853 | 89.0 | 45 |
19 | 94 | 10888 | 115.8 | 30 |
20 | 107 | 9564 | 89.4 | 38 |
21 | 74 | 4799 | 64.9 | 26.5 |
22 | 48 | 7045 | 146.8 | 80.5 |
23 | 69 | 6118 | 88.7 | 45 |
1日 | 1735 | 170921 | 98.5 | 35 |
人(170), 自分(103), 今(80), 日本(69), 増田(66), 話(64), 女(62), 前(51), 男(46), 気(42), 仕事(42), 相手(40), 日本人(39), 人間(39), 問題(37), 好き(37), 最近(36), 感じ(36), 女性(34), 頭(33), 普通(32), 他(31), 意味(31), 男性(31), 場合(30), あと(30), 顔(29), うんこ(28), ー(28), 気持ち(27), 時代(27), 結局(26), 手(26), 社会(25), 理解(25), 結婚(25), 目(24), しよう(24), 一人(24), ネット(23), サービス(23), 今日(23), 言葉(23), 世界(23), 会社(22), 犬(22), 現実(22), 嫌(22), 子供(21), 一緒(21), アメリカ(21), 結果(21), ワイ(21), 扱い(20), 海外(20), 無理(20), 最初(20), 必要(19), 馬鹿(19), サイト(19), 理由(19), 時間(19), 関係(19), ゴミ(18), 勝手(18), 国(18), たくさん(18), 状態(17), ダメ(17), 他人(17), 風俗(17), 周り(17), 子(17), 別(17), 記事(17), スマホ(16), 出て(16), 幸せ(16), セックス(16), イメージ(16), 情報(16), 世の中(16), 仕方(16), 日本人女性(16), 名前(15), 声(15), 確か(15), 人生(15), 英語(15), 動画(15), 友達(15), 映画(15), 差別(15), お金(14), 金(14), 本(14), 勉強(14), 部分(14), 病院(14), 非常(14), 検索(14), 昔(14), テレビ(14)
日本(69), 増田(66), ワイ(21), アメリカ(21), 日本人女性(16), スマホ(15), じゃなくて(13), キモい(12), 昭和(12), 東京(12), ブコメ(11), 1人(11), モテる(11), 新井浩文(10), 可能性(10), モテ(9), デリヘル(9), アプリ(9), 韓国(9), マジで(8), 平成(8), 何度(8), 欧米(8), 2019年(8), KKO(8), ブクマ(8), 個人的(8), なのか(7), 価値観(7), 自己評価(7), 日本人男性(7), 分からん(7), な!(7), カス(7), なんの(7), 外国人(7), アフリカ(7), 生産性(7), にも(7), 10年(7), ツイッター(7), Google(7), いない(7), キモ(7), バレンタイン(6), AI(6), 犯罪者(6), youtube(6), アジア人(6), キモくて金のないオッサン(6), ???(6), わからん(6), キチガイ(6), 中国(6), Twitter(6), コミュ障(6), るか(5), 新井(5), 客観的(5), フェミ(5), 恵方巻き(5), AV(5), s(5), なんだろう(5), LINE(5), 容疑者(5), いいんじゃない(5), トラバ(5), 一緒に(5), v(5), iPhone(5), ごめんね(5), B(5), マッチングアプリ(5), 1年(5), 現実的(5), hatena(5), 昭和時代(5), エロい(5), A(5), 100円(5), 最終的(5), 2017年(5), 2人(5), Japan(4), アメリカ人(4), せやな(4), 韓国人(4), PC(4), いいね(4), イエローキャブ(4), n/(4), Web(4), 社会人(4), JavaFX(4), ブログ(4), 1回(4), イケメン(4), is(4), アラサー(4), おちんちん(4), SNS(4), 受刑者(4), キツ(4), URL(4), あるある(4), 東大(4), そうじゃない(4), イギリス(4), gt(4), twitter(4), ありません(4), 1日(4), 悪いこと(4), ドメイン名(4), インスタ(4), 3回(4), TSUTAYA(4), 陰キャ(4), OK(4), ちんこ(4), 死刑執行(4), no(4), NHK(4), ボコ(4), 被害者(4), 腐女子(4), 知らんけど(4), SE(4), はてな民(4), 日本女性(4), 基本的(4), 女に(4), 一日(4), 1週間(4), どんだけ(4), w(4), …。(4), 大五郎(4)
新井浩文(10), JavaFX(4), イエローキャブ(4), 水溶性(3), コバルト(4), 安置(3), 2000万人(3), 様変わり(3), ドメイン名(4), タンポン(6), 死刑執行(4), クッキー(10), マッサージ(10), チョコ(9), デリヘル(9), 昭和時代(5), アフリカ(7), 容疑者(5), 秩序(4), エレベーター(7), 解約(4), 本番(7), モテる(11), うんこ(28), 死体(6), 💩(10), 食品(6), 2017年(5), 犬(22), 国際(7), 白人(11), 起こす(9), モテ(13), 返事(8), 通常(8), 姿勢(8), 寿司(8), サラリーマン(7)
■おいしいクッキー教えてくれ /20190131195122(22), ■女性がよく言う「日本人女性は美人が多くて海外でモテる」みたいな話 /20190130153632(20), ■いじめられてた中学の同窓会に行ってきた /20190202101733(10), ■22歳処女が初めてタンポンを使った感想 /20190202031004(10), ■駅などの混雑時、前で歩きスマホしながらノロノロ歩いてるバカ対処法 /20181129233454(8), ■年配のおっさんには「親父!」とか「大将!」じゃん /20190202013629(8), ■コバルト文庫が終了しそう /20190201211020(8), ■PCあるのに手書きメモ取る人 /20190202201220(6), ■トイレ(大)するとき全裸になる人とか存在するんだな /20190130194711(6), ■良かったら答えてほしい /20190202115857(6), ■エレベーターに乗る女はほぼキチガイ /20190202143440(6), ■ツイッターで「新井浩文」で検索すると /20190202115746(5), ■男の人って他人のちんちんどう思ってるの /20190202200659(5), ■欧米で流行しているWebサービス /20181129233609(5), ■日本で流行ってるサービス /20190202153327(5), ■KKO(キモくて金の無いオッサン)なら許さんし、それ以外なら許す /20190202164859(5), ■anond:20190202105446 /20190202183645(5), ■絶対に振られると分かってるけど告白するときの注意点 /20190202191209(5), ■英語覚えたい /20190202005500(5), ■20卒 /20190202104924(5)
5988966(3488)
ホッテントリメーカーで作るような煽りタイトルって、みなさんもう見飽きてると思うんですよね。
今調べたらホッテントリメーカー2008年だそうで。どうりでねー。古臭いなーと思いましたよー。
「一から学ぶJava」ってのをね、1.0にするだけでこんなに素敵なタイトルになるんだから面白いですねー。
タイトルを思いついただけだったんですけど、思いついたらやっぱりちゃんと中身も書かないと行けないじゃないですか。やだー
面倒くさいんですけどね。ちょっと1.0から学んでみましょうか。
Javaの1.0がリリースされたのは1996年1月23日ですね。発表されたのが1995年5月23日でJavaの誕生日といった場合にどちらを取るかで揉めることがあります。
かれこれ20年前なわけで、当時のパソコンというとハードウェアはCPU が Pentium 133MHz メモリ16M とかそんな感じだったかなあ。今どきの携帯電話の例としてiPhone 6sを挙げるとCPUが1.85GHz メモリ 2G ってんだから凄いですね。OSは1995年11月23日にリリースされたWindows95とかそんな時代背景です。インターネットがようやく一般に普及し始めたところでしょうか。
今から思うと相当弱いハードウェアですけども、そろそろVM方式を採用しても良さそうな、そんな時代でした。インタープリタだと流石に遅い、でもC言語のようなコンパイル言語だと"Write once, run anywhere"とはいかない、という判断もあったのだろうと思います。Javaが純粋なオブジェクト指向言語ではなくintなどのプリミティブ型を持つというのは、当時のマシンスペックを考えた場合、ある程度妥当な判断だったと言えるでしょう。これが後々苦しくなってくるわけなのですが。
Javaを作った会社はSun Microsystems(サン・マイクロシステムズ)というアメリカの会社で、2010年1月27日にオラクルにより吸収合併され今はありません。SolarisというOSとSPARCプロセッサでUNIXサーバーの販売で90年代後半までは一人勝ちのような状況だったと聞きます。当時にすでに「ネットワークこそがコンピュータ」(The Network is the Computer)というモットーを掲げてたんだからおかしい。1996年リリースのJavaが標準でネットワーク機能を備えていたのもこのあたりの思想から来ているのかもしれませんね。
当時のプログラミング言語としてC++が挙げられますが、C++でのプログラマへの負担といいますか、ヒューマンエラーの起きやすさといいますか、その辺を改善する目的で開発されたのがJavaだったわけです。
1996年の時点にこんな言語が登場したのですから革新的でした。
いろんな企業がJavaに賛同します。その中にはMicrosoftもありました。この時期、Microsoftは次期のWindows開発用のプラットフォームにJavaを据えようと考えていました。その後、袂を分かつことになるのですが……。
プログラム言語として構文などを見ると、C++を強く意識した構文なのは間違いなく、しかしポインタ演算を廃してポインタを機能を限定した「参照」に置き換えるなど簡素化が多く見られます。C++からはいろんな機能が削られています。関数ポインタ、構造体、演算子オーバーロード、テンプレート((テンプレートについては実装が間に合わなかったという話を聞きます))などなど。そのためC++の劣化であるように揶揄する人もいますが、こうしたものを捨てて言語仕様を比較的小さくシンプルに抑えた点は評価に値すると思います。しかし、今でもこうした削減された機能を愛する人からはJavaを腐す要素として挙げられてしまうのでした。
Wikipediaからピックアップすると1.1での大きな機能追加は
といったところです。当初よりJavaの内部文字コードはUnicodeで文字を表すchar型は16bitで設計されていました。Unicodeは当時それほど普及しておらず、Unicode対応のテキストエディタさえ少なかったと記憶しています。時代を先取りしていると言えますが、大きな誤算はUnicodeが当初16bitのコードポイントに世界のあらゆる文字を格納しようとしていたことで、漢字圏の我々からすると16bit=65,536程度の空間に文字が全部入るわけないだろ!というものだったが故に早々に破綻し、Unicodeは21bitのコードポイントに拡張されることになるのです。これはまた後の話。
なんにせよ、日本語が対応されたのは1.1からで、日本でのJavaの採用が始まったのはこの頃からと言えましょう。
当時のJavaのGUIはAWTというものでしたが、これを用いたGUIの開発は当時は結構行われていたイメージですね。Visual BASIC でGUIを作るプロダクトも結構あったと思います。GUIのためのオブジェクト指向言語としてJavaが使われていたイメージがありますね。JavaBeansもそのための仕様でした。件のsetter/getterの話題に繋がっていくのですが。
JDBCはJavaとデータベースをつなぐインターフェースです。RMIではあるJava VMから別のJava VMにオブジェクトを送って実行する、といったことができます。こうした機能が用意されたことで、ソフトウェアのフロントとしてのGUI、裏方の実装のためのネットワーク機能、データベース機能、さらにはソフトウェアを配布するためのJava Appletという布陣でJavaでのソフトウェア開発が加速していた時代といえます。
Microsoft Visual J++ もこの時代ですよ。
Java 1.1以降のバージョンのものは互換性確認のためにOracle Java Archiveからダウンロードすることができ、今でも入手することができます。もちろん、Java7ですら2015年4月にEOL(End of Life,サポート終了)となっているので、通常利用するのはJava8としてください(本稿執筆時点)。
当時のドキュメントを見るのも一興です。現在と比べると標準APIがかなり小さい。なお、当時のjavadocは今とはデザインが大きく異なります。
この時代であれば、全パッケージを舐めて標準APIを学ぶこともそう難しくはありませんでした。この時代から触っている人間は新バージョンが出るたびに増えるAPIを順に学んでいけたのです。しかし、現代にJavaを学ぶ場合、どのバージョンでは何があって……というのをいちいち学ぶ必要はほぼありません。Java5以前は一緒くたでいいと思いますし、一部のAPIで歴史的経緯があってねーというのを知っていればおそらく十分ではないでしょうか。
strictfpキーワードは浮動小数点演算をやる人は覚えておきましょう。JavaはパフォーマンスのためにCPUの浮動小数点演算を扱うことが許されており、そのため実行するCPUによって精度が異なることがあるんですね。まあ今時のCPUだと大丈夫だとは思うんですが。
リフレクション機能ではJavaのクラスを抽象的に扱うことができます。設定ファイルに書かれたクラス名のclassをロードして実行する……みたいなことができるんですね。フレームワーク的なものを作る場合には多用することになります。
1.2からは新しいGUIのSwingが採用されました。AWTがOSごとのGUIパーツを用いていたためデザインに違いがあったのに対し、Swingでは統一的なルック・アンド・フィールが用いられるようになりました。まぁ今ならJavaFXを使うのが良いと思います。
初期のJavaはやはりVM方式の実行速度の遅さが指摘されていました。実行時の構文解析を伴わないだけインタープリタよりは早いものの、実行バイナリを作るC/C++よりは遅い、そうした評価です。ここではサン・マイクロシステムズのVMにJIT(ジャストインタイムコンパイラ)が乗ったことが挙げられていますが、JIT自体は別の会社が先駆けて開発していたことは記しておきたいと思います。
JITコンパイラは実行時にJavaのバイトコードを環境のネイティブコードにコンパイルして動かす技術です。この後、JITコンパイラ、動的再コンパイル技術、世代別ガベージコレクションを備えたHotspotといった様にJavaVMは進化していきます。現代では実行時の最適化が進み、大きなスケールで見た場合、Javaの実行速度はC/C++での実装と比べてそれほど遅れるものではありません。遅くても倍の時間は掛からない程度といったところでしょうか。
あとは特記すべきはコレクションフレームワークです。皆が多用しているであろうjava.util.Listやjava.util.Mapといったライブラリが整備されたのがこの時なのです。それ以前はjava.util.Vectorやjava.util.Hachtableというクラスが可変長配列の機能を一手に担っていました。今ではVectorやHashtableは使うべきではありません。
Java の開発はSun Microsystems が主導していたけども、すべてがSunのものだったというわけでもなく。Javaには多くの会社が出資していてその中のひとつがMicrosoftだったわけですね。
Microsoft の Visual J++ では delegate とか独自機能拡張もありましたけど、裁判で問題になったのは J++ でコンパイルしたclassファイルはMicrosoftのVMでしか動かないという部分ですね(他社製のVMで動くclassファイルを作ることもできる)。classファイルがどこのVMでも動くの大事だろ、"Write once, run anywhere"だろ、お前何してくれてんの!と喧嘩になったわけです。当時のMicrosoftはブラウザまわりでも独自拡張がやりたい放題、標準規格?なにそれ美味しいの?みたいなスタンスをあちこちで見せていたものです。
結局、この事件でMicrosoftのJavaはバージョン1.1相当でストップ。好き勝手にやれないなら独自に言語作るわーとばかりに.NET フレームワークと C# といった方向に舵を取ります。
JavaがPC上でのUI開発の主力になろうとした勢いはここで潰えます。
Java SE とは別にこの時代に Java EEがリリースされていることは特記しておきたいですね。これ以後、それまでのCGIに取って代わって、JavaはWebサービスの開発のプラットフォームとして多用されるようになります。
2000年あたりからはJavaはGUI開発というよりは、Webサービスの開発が主流という流れになっていきます。インターネットのサービスが非常に発達していった時代、背後ではとてつもない量のJavaのプログラムが支えていたわけです。ただまあ、こうした産業利用は一般的なユーザーの目にはあまり入らないわけです。一般人からすればJavaといえばJava Appletみたいなイメージはずっと残っていたでしょうが、実体としてはJavaといえばServletという時代になっていたわけです。
企業で用いられる社内システムにもServletは多く採用されました。
理由はいろいろ挙げれると思うのですが
というのが大きな理由だろうと思います。JSPというテンプレートエンジンを用いてHTMLを整形してWebページを作り出す、というアーキテクチャはある意味では便利で簡単でした。
もっともHTMLの表現力に足を引きずられるため、GUIの機能性という点では後退したわけなのですが。それでもメリットが大きいと判断されたのでしょう。というか、まともにGUIを組めるプログラマがほとんどいないから、GUIのシステム開発がなかなか成功しないってのもあったんでしょうけどね。
2000年あたりというと携帯電話の普及も取り上げなければなりません。現代のスマホ、ガラケーに比べれば非常に機能は貧弱で、まさに携帯「電話」でした。要するに電話とメールぐらいしかできなかったんですね。
そこにdocomoのiアプリ、Jフォン(ボーダフォンを経て現ソフトバンク)のJavaアプリ、auのEZアプリという携帯電話上でちょっとしたアプリが動くよ!というのが乗るようになってきたんです。これがJavaを組込み用途にコンパクトにしたJava MEというものが土台となっていて(正確にはiアプリはちょっと違う)Servletと並ぶJava言語の大きなもうひとつの領域となっていました。
iアプリは当初は容量が10k byteまでといった制約があり、容量制限が非常に厳しかったのですが、新機種が出るたびに容量は緩和されていきました。
docomoはiアプリ含めiモードによって一世を風靡します。こうした土台を作ると、その上で商売をしたい人がたくさんやってきて、勝手にコンテンツを作ってくれる。docomoはそれらから手数料を取るので労せずして大金を稼げるというわけです。賭場の胴元というわけです。
この賭場が、将来にAppleのiPhone, GoogleのAndroidに荒らされることになります。docomoがなかなかiPhoneを出さなかったのもiモードという自前の賭場を失うことを良しとしなかったためです。金づるを失ったdocomoはSamsungと組んで独自の携帯向けOSであるTizenの開発に乗り出します。そんなTizenですが鳴かず飛ばず。噂ではインドあたりではリリースされたとか、なんとか。
話を2001年に戻しましょう。
Microsoft離反でGUIのプラットフォームとしてのJavaというものは存在感を弱めていました。この分野の復権に寄与したのはJava 1.4 (2002年2月6日)で導入されたJava Web Startです。
Java Appletがブラウザ埋め込みで動作したのに対し、Java Web Startではブラウザから起動しつつも独立したアプリとして起動するのです。
Webシステムが企業の社内システムに採用された話は先に述べたとおりですが、やはりWebシステムのGUIというのはHTMLに引きずられて貧弱だったんですね。
端的に言えば入力値が数字かどうか?みたいなチェックがなかなか難しい。HTML上でJavaScriptでやるわけなんですが、なかなか気持よく入力できるような感じにはならなかったんですね。
また、Ajaxによるブラウザのページ遷移を伴わない通信というのが出てきたのも2005年ぐらいなので、入力値に対してサーバ問い合わせするようなことはできなかった。当時だと一旦画面遷移させないとできなかったわけです。
こうした事情から、クライアントサイド、要するにPC側でもっとリッチなUIが使いたい!という要望があったわけです。Webシステム使いにくい!という不満の噴出と言ってもいい。そこで出てきたのがRIA (Rich Internet Applications)というわけです。
Javaは1.0時代のAppletからそうですが、ネットワークを介して別のPCにプログラムを送り込み、そこで動作させるという能力を持っていました。それこそまさにRIAに求められる機能性だったわけですね。
RIAの代表とされるのは
あたりです。三つ巴の戦い、どこに軍配が上がるのか!?と注目されましたが、勝利したのはHTML / JavaScriptでした。
Google MAP で注目を浴びたAjax技術、それまでブラウザでは不可能と思われていた高級なGUIをHTML / JavaScriptで実現させました。もうやめて欲しいですよね。せっかく脱ブラウザの流れが来たと思ったのにまたWebシステムに逆戻りですよ。
RIAが失速した理由として考慮して置かなければいけないのはスマートフォンの台頭です。RIAでは端末を選ばずどこでも同じアプリが動かせる点がポイントのひとつでしたが、スマートフォンではそうは行かない。"Write once, run anywhere"を破壊したのはスマートフォンだったというわけです。
しかし、先日インストールなしでアプリを実行するAndroid Instant Appsが発表されたりしまして、結局RIAの思想といいますか、要求というのは今でも息づいているのだなと思った次第です。
1.3 / 1.4 では機能追加はあっても言語構文が大きく変わることはありませんでした。大きく変わったのはJava 5です。この時からバージョニングが変わって1.5ではなく5と表記されるようになりました。
Java5の特徴はなんといってもジェネリクス。それまでjava.util.Listにデータを出し入れするのにはキャストが必須だったわけですが、ようやくキャストから開放され型の安全度がぐっと高まりました。その他に以下のような変更があります。
言語としては随分変わっったわけですが、もうかれこれ10年以上前のことですからこれらの機能が「Java5から導入された」という知識は今となってはあまり必要とされません。これらの機能が使えないJava 1.4で開発をする事案が殆ど無いからです。0ではないのが悲しいところではありますが。
Java 6 (2006年12月11日)がリリースされた後、Java 7 (2011年7月28日) が出るまでJavaは停滞してしまいます。その間にSun Microsystemsという会社がなくなってしまったためです。
Sun Microsystems の経営状況が悪化しており、ついに身売りをすることになりました。身売り先はIBMともGoogleとも噂されましたが結局2010年1月27日にオラクルに吸収合併されました。
Javaの停滞中にはJava VM上で動く非Java言語も台頭してきました。Scalaなどですね。
やや戻って2007年にAndroidが発表されます。Androidの開発言語にはJavaが採用されていますが、実行環境はJava VMではなく、ライセンス的な事情でJava(TM)は名乗らない微妙な位置関係にあります。
Java 5 以降で大きく言語仕様に手が入るのは Java 8 (2014年3月18日)です。並列処理を行うためのStream APIと、そのために簡易に関数を定義するためのラムダ式が導入された点が大きいですね。日付APIも刷新されました。
このように、Javaは1.1の黄金時代から今に至るまで利用ジャンルを転戦しながら産業の土台となって支えてきた歴史があります。ジャンルの趨勢により浮き沈みもあります。今後についても決して楽観視はできないでしょう。Javaを学ぶことはプログラミングを学ぶステップとしては意義はあると思いますが、Javaを学べばゴールというわけではありません。プログラム言語も次世代へと移りつつあります。業界動向には注視していきましょう。
Javaで開発されたアプリケーションにはインストールにまつわる難点がある。
それによりせっかく興味をもってくれたユーザーも試す前に諦めてしまいがちである。
また、サーバーサイドアプリケーションもJava製である場合、デプロイや監視の際の難点が多く運用者を悩ませてきた。
javafxで導入されたパッケージャを用いることで各OSネイティブなインストーラーの作成が可能になり、この問題を解消・緩和できる。
SpringBoot などを用いた ExecutableJar を作成するアプリケーションであれば、サーバーサイドアプリケーションであっても一部制限があるもののパッケージングできる。
Javaで開発されたアプリケーションの配布には以下の問題点がある。
javafx-maven-pluginを使うとよい。javafxと冠しているが実態はパッケージングツール。
javafxの冠があるがためにスタンドアロンアプリ開発者以外を遠ざけている感あり。
Windows(msi/exe), Linux(rpm/deb), Mac(dmg) など各OS・ディストリビューション固有のパッケージングが行える。
公式ページ( http://zenjava.com/javafx/maven/ )では更新が止まっているが、Github( https://github.com/zonski/javafx-maven-plugin )とMavenRepository( http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.zenjava%22%20AND%20a%3A%22javafx-maven-plugin%22 )を確認するとちゃんと開発は続いている。
pom.xml に以下を追加する。
mainClassはSpringBootなら@SpringBootApplicationのついてるクラスですね。
vendor は適当に組織や個人の名前を入れておきましょう。
※ 以下の XML が化けるのは増田の不具合か仕様っぽい。 http://anond.hatelabo.jp/20100205210805
<plugin> <groupId>com.zenjava</groupId> <artifactId>javafx-maven-plugin</artifactId> <version>8.1.2</version> <configuration> <mainClass>[main method class]</mainClass> <vendor>[Vendor Name]</vendor> </configuration> </plugin>
あとはそのままビルドすればよい。
maven clean jfx:native
ビルドが終わると target/jfx/native 以下に、ビルドしたOS/distributionに合わせて msi, exe, deb, rpm, dmg ができあがります。
本当であればクロスビルドできてしかるべきなのですが、まだ実現はされていないようです。
これらのパッケージは Widonws であれば Program Files(x86) に、Linux系であれば /opt/ の下にインストールされるようです。
/opt/app-name/ の下には app と runtime の2つのディレクトリがあります。
app の下にはビルドした jar ファイルや依存ライブラリが置かれています。
runtime の下には実行用の jre が配備されています。
実行ファイルにそのまま引数を渡せば jar 実行時の引数としてそのまま渡されます。(-Xmxなどはまだ未検証です)
最近、Scala信者が増えたが、Scala、Groovy、Clojureで仕事している人はいるのだろうか?
Javaと比較してライブラリが増えるわけでもなく、応用分野が増えるわけでもなく、良さが理解できない。
検索順位 | 人気順位 | 言語名 | 登場年 | 特徴 |
---|---|---|---|---|
1位 | 95位 | Scala | 2003年 | Javaに関数型言語の特徴を組み込んだ。 |
2位 | 71位 | Groovy | 2003年 | Javaより少ない記述量が特徴。 |
3位 | - | Jython | 1997年 | Python 2系のポーティング。 |
4位 | - | JRuby | 2001年 | Rubyのポーティング。 |
5位 | - | Clojure | 2007年 | Lispの方言、つまり関数型言語。 |
6位 | 75位 | JavaFX Script | 2008年 | JavaFXを残して廃棄処分。 |