はてなキーワード: クマーとは
・この釣り針は大きめだな
・ ゴクリ(って息をのむやつ)
・ いえーい、***見てるぅ
・ まーた***は相変わらず***だな!
・俺たちは雰囲気で◯◯している
・やれたとは言えない
・好きなものはずっと好き派なので永遠に、獣は檻に入れておいてほしいし、なんちゃら点鼻薬だし、FXの才能があるし、光属性だし、飲尿スターだし、をみんな言い続けて欲しいです(aukusoe案件はわからないので丸コピペ)
・何度も言ったけど
・留保のない生
・突っ込み待ちなのかな?
・あいでんてぃてぃーが透ける
・おちんちんびろ~ん
・○○は大脳が壊れたメンヘル。運動瞑想睡眠野菜350gしない者の末路は悲惨だ。恐ろしい恐ろしい。
・スターください!
・〜がないからやり直し
・なるほど、分からん
・マジかよ○○最低だな
・○○する(○○するとは言ってない)
・ゆっくりしていってね(*´ω`*)
・おっ、そうだな!
・自戒をこめて
・そっ閉じ
・何度でも言うが
・関係ないけど
・知らんけど
・w
・お前それダボス会議でも言えんの?
・○○な人息してる?
・まじかよ◯◯最低だな
・そういうとこだぞ
・やれたとは言えない
・こんなアイコンなので
・どーでもよい(よくない)
・えっ、まだ○○で××してるの?
・クリリンのことかー!!
・1ゲーット!!
・また髪の話ししてる
・うっ、頭が
・~のやめろ
・第○回チキチキ△△会議
・待って
・無理
・尊い
・ガタッ
・せやな
・B'Z
・ぬるぽ
・同じ事書くけど
・読まずにブコメするけど
・(違
・生徒会いってくるね
・ここまで○○無し
・もし本当なら~
・真偽はともかく~
・闇が深い
・片方の意見だけじゃ何も言えない
・おれじゃないあいつがやったしらないすんだこと
・パンティー
・○○と○○との整合性はどう取っているのかが気になる
・そうだそうだ、○○も○○しよう、まさかできないとは言わないよね?
・○○とかいうたとえ話でまとめられそうな予感
・こういうのでいいんだよ、こういうので
・なるほどー
・釣られクマー
・にゃーん🐱
・光属性
・また○○がしんだ
・眩暈がする
・クラクラする
・暗澹たる気持ちになる
・人間はな、トンカツをいつでも食べれるくらいがちょうどいいんだよ……
・「ホーキング、語る」でまとめて、「御大はいつも通りで何よりだな」
・スターください!
・ ↑↓
・この件については保留
・ 日本スゲー!
・なんかすいません
・星新一っぽい
・但しイケメンに限る
・〇〇と対消滅してほしい
・私この分野は素人なのですが
・マジかよちょっと○○買ってくるor行ってくる
・それは何田ダイアリーの話なんですかねえ…
・案件
・〜するなど
・(100文字では書けないような長文書いてぶった切って最後に)文字数
・これだから〇〇は
・〇〇を××に空目
・続報待ち
・詳細待ち
・議事録待ち
インド | シヴァージー(1627-1680) | マラーター王国の建国者。ヒンドゥー教徒を糾合し、周囲の各イスラム王朝と対決した。特にムガル帝国に対しては、大々的にゲリラ戦を展開して、当時のムガル皇帝アウラングゼーブを苦しめた。敬虔なヒンドゥー教徒であり、イスラム勢力と戦って独立を勝ちとったために、ヒンドゥー教国のインドでの人気が高い。 |
パキスタン | アウラングゼーブ(1618-1707) | ムガル帝国の皇帝。兄弟同士の後継争いを制し、父親を幽閉して即位した。数十年にわたって帝国を栄えさせたが、晩年は長引くヒンドゥー勢力との戦いで財政の悪化・国土の荒廃を招き、己の統治の失敗を嘆きながら亡くなった。厳格なムスリムとして、ヒンドゥー教徒を激しく弾圧したため、イスラム教国であるパキスタンでの人気が高い。 |
ネパール | アマル・シンハ・タパ(1751-1816) | ゴルカ朝の名将。ゴルカ朝がネパールを統一したあと、アマル・シンハはさらに西へ進軍して領土を拡大した。その後、グルカ戦争において主力を率いて奮戦するもイギリス軍の前に敗れ去り、失意の彼は聖地ゴサインクンドへ行きそこで亡くなった。グルカ戦争における彼らの戦いぶりが今も恐れられるグルカ傭兵の誕生につながるのだが、それはまた別のお話。え、「ネパールは釈迦だろ」? うん、そうね。 |
バングラデシュ | カン・ジャハン・アリ | もとはインド・トゥグルク朝の貴族で、ティムールがトゥグルク朝を破ったあと、ベンガル地方にやってきて森林を切り開き、いくつかの街を建設して、その地を支配した。イスラムの聖者ともされて、彼が建設したモスク群は世界遺産に登録されている。 |
スリランカ | ドゥッタガーマニー(前161-137) | タミル人を打ち破り、初めてセイロン島を統一したシンハラ人の伝説的な王。実在はしたらしい。現在でも、タミル人との民族問題となると、シンハラ人がドゥッタガーマニーを持ち出すらしい。 |
ブータン | ガワン・ナムゲル(1594-1651) | ブータンの高僧にして初代シャブドゥン。チベット仏教ドゥク派の後継争いに敗れてブータンへ逃れてきたあと、たちまち国内を統一すると、各地に城砦を建設し、たびたび侵入してくるチベット軍やモンゴル軍をことごとく打ち破った。 |
モルディブ | モハメド・タクルファーヌ(?-1585) | モルディブを植民地とし、キリスト教への改宗を迫るポルトガルからの独立のため、島から島へと移ってゲリラ戦を展開し、八年の戦いの末にポルトガル人を追放し、ウティーム朝を建てた。 |
カザフスタン | アブライ・ハン(1711-1781) | 「大いなる災厄」と呼ばれたジュンガルの侵攻のなかで勇敢に戦ったため「英雄」と呼ばれ、やがて大きく三つに分かれていたカザフの部族連合の上に立ち、清とロシアの双方から「ハン」と認められるようになった。彼の死後、カザフはロシアに対抗できなくなり、その統治に組み込まれていく。 |
ウズベキスタン | ティムール(1336-1405) | モンゴル帝国の後継を名乗り、中央アジアに大帝国を作り上げた世界史上屈指の軍事的天才。オスマン帝国との戦争でその皇帝を捕虜にしたアンカラの戦いは特に名高い。明との決戦へと向かう途上で死去した。 |
タジキスタン | イスマーイール・サーマーニー(?-907) | サーマーン朝最盛期の君主。サーマーン朝はタジク人最後の独立王朝でもある。サーマーン朝が滅びた後、この地域はトルコ系、ウズベク系、そしてロシアの影響下に置かれ続けることになる。タジキスタンの通貨「ソモニ」はサーマーニーに由来する。 |
トルクメニスタン | アルプ・アルスラーン(1029-1072) | セルジューク朝のスルタン。名高き宰相ニザームルムルクを重用して国力を高め、東ローマ帝国と戦ってその皇帝を捕虜とした。セルジューク朝は「トゥルクマーン」という遊牧民が建国したのだが、トルクメン人と「トゥルクマーン」の関係は明らかになっていないらしい。にもかかわらず、トゥルクマーンが建国したセルジューク朝のスルタンや、伝説上のトゥルクマーンの祖とされるオグズ・ハンを、トルクメニスタンが英雄視しているのは、そこに民族のルーツを求めているからなのだろうか。 |
キルギス | マナス(?-?) | 世界最長と言われるキルギスの英雄叙事詩に謳われる王。オイラト人の支配下にあったキルギスに生まれ、オイラト人やキタイ人と戦って勝利し、キルギスの王となり、北京への大遠征を成功させた帰りに、敵の斧を頭に受けて死んだという。実在したかはよくわからない。実在が確実なクルマンジャン・ダトカのほうがいいかもしれない。 |
アフガニスタン | アフマド・シャー・マスード(1953-2001) | アフガンに侵攻したソ連軍を幾度も撃退して「パンジシールの獅子」と呼ばれた。タリバン政権に対抗する北部同盟の中心人物として活躍したが、9.11の二日前に暗殺された。あんまり最近の人は入れないつもりだったけど他にいないのでは。 |
https://www.youtube.com/watch?v=GXrCbgnBIVs
日捨てて行かない
そのドアを残していない
どこをガシナ
舌にもとげが私
人々の監視が
心臓にとげが私
痛い痛い痛い
Musicians are saying
数えたらヒョクオ
気の利いた私は巨大素敵いるのが好き
ごめん私いい子Complex
ところでWhat a pity boy
ないて
人々の関心
ある良くないでください
私はこのままパーフェクト
自尊心は空を刺す
実際には、私のオタながら
それは言いHesitate
Haterがなくて
私はいくつか作ってみ
私は子供のず
アリンががドゥェルレ
グィチ代わり
イヤリングをしたいです
グッチの代わりに
私ナイキをメルレ
不満あり努力
Hook Making
腹いっぱい食べに
水不ない選別
優しいリングで
今朝のおかずはオイジ
私のFanが増える音か
これじゃない体の部位
同社強調グクディルてまるで
そう君を知ってドゥトギルたい是非
口の多着
裸君よりHot
ラップを聞く想定ところ
みんなの足に目が
ああ、誤解かと思って言ってた
姉はロリータではなく
セクシーコンセプトだよ
二日後に百万以上のヒット
ペブクページごとに
ノネン不利であることを望む
誰つかんBully
前回の言ったように
私はすべてをかむ食べる腹いっぱい
Eat Me
英語を話すことを知らない
友人のために説明してみると
Minty Minty Just be Minty
誰かは驚愕して
誰かは賛美をして
私は私いい子供とだけ驚か
よくてもできないかどうか
あきらめないSwag
Mic前
Recordingで見せてあげる
今年ヒプゲル晴れる与える
すでに決まったから
石を投げた者は皆
曲げてください
ディクションてなんとして
ハァッの中溢れ
それでも地Listener下
ところで、現実は私に連絡来た
お前らが夢だと言う
あらゆるラベルにおいて
これじゃない体の部位
同社強調グクディルてまるで
日捨てて行かない
そのドアを残していない
どこをガシナ
舌にもとげが私
人々の監視が
心臓にとげが私
痛い痛い痛い
爪を隠して
勝利は圧倒
Be minty
날 버리고 가지 마
그 문을 떠나지 마
어디를 가시나
혀에도 가시가 난
사람들의 감시가
심장에 가시가 나
아파 아파 아파
사람들은 뭐가 대단한지 몰라
뭐가 좋은지 나쁜지도 잘 몰라
Musicians are saying
꼽히면 혁오
아이유 장기하 아니면 지코
간지나는거 멋있는게 좋아
미안해 난 착한아이 Complex
근데 What a pity boy
쎈 척 해봐야 걔들은 니 음악
안 들어
난 의지보다는 욕망을 말해
사람들의 관심
있음 좋고 아님 말고
난 이대로 완벽해
자부심은 하늘을 찌르네
사실은 내 덕후면서
그걸 말하기는 Hesitate
Hater가 없어서
내가 좀 만들어봤어
나는 어린이 말고
아린이가 될래
귀찌 대신
귀걸이를 할래
구찌 대신
난 나이키를 맬래
불만있음 노력해야
Hook Making
배불리 먹으려면
물 불 안 가려야
착한 아린이지
아빤 리니지
약 빤 Why지
오늘 아침 반찬은 오이지
아 정말 짜증 나는 사춘기지
변태라는 이름의 신사 쿠마키치
숙녀가 되고픈 소녀는 민티지
이 랩핑 오늘 레알로 So dizzy
내 Fan이 늘어나는 소리지
이건 아냐 신체 부위
동사 강조 극딜해 마치
이사 Century 문법 나치
그러 니 알아듣길 바래 부디
입을 것 다 입어도
벗은 너보다 Hot
랩을 들으랬더니
다들 다리에 눈이 가
아 오해할까봐 말해두는데
언니는 로리타 아니고
섹시 컨셉이야
이틀만에 백만이 넘는 조회수
페북 페이지마다
내 다리를 불 펌 Ho
너넨 불리하다 싶으면
누구든 잡고 Bully
저번에 말했듯
난 다 씹어 먹어 배불리
Eat Me
영어 할 줄 모르는
친구들 위해 설명해보자면
Mint의 숨겨진 뜻은 새것
Minty Minty Just be Minty
아직 들어보지 못한 음악을 줄게
남들과 확연히 다른 Style 시도할때
누군가는 경악하고
누군가는 찬양을 해
난 나 좋다는 애들이랑만 놀래
잘하든 못하든
포기하지 않는 Swag
Mic 앞에서
Recording으로 보여줄게
올해 힙갤 갤주는
이미 정해졌으니까
돌을 던진 자들은 모두
머리를 숙이세요
멈블랩은 빨면서
딕션갖고 뭐라 해
어휴 속터져
그러고도 지가 Listener래
근데 현실은 나 연락 왔어
너네가 꿈이라고 말하는
온갖 레이블들에서
이건 아냐 신체 부위
동사 강조 극딜해 마치
그러니 알아듣길 바래 부디
날 버리고 가지 마
그 문을 떠나지 마
어디를 가시나
혀에도 가시가 난
사람들의 감시가
심장에 가시가 나
아파 아파 아파
발톱을 숨겨
승리는 압도
Be minty
こんな餌に釣られる訳クマー
(https://anond.hatelabo.jp/20170822145129のつづき)
(リニューアル前) https://web.archive.org/web/20110103034215/http://b.hatena.ne.jp/entry/b.hatena.ne.jp/
(リニューアル後) https://web.archive.org/web/20110416074521/http://b.hatena.ne.jp/entry/b.hatena.ne.jp/
2011.4のリニューアルが悪評さくさくで早々に再変更
2012.2 全ユーザーが新ユーザーページ(ベータ版)を利用可能に
2012.7 はてなブックマークプラス向け機能の一部無料化、具体的にはマイブックマークの全文検索機能と非公開ブクマが無料に
(トラバにつづく)
昨今の若者はテレビや新聞といったマスメディアを信用することから離れているように感じる
たとえ嘘の情報であったとしても何も考えず大多数の人は信用していたはずである
それを信用できないとはなんとも嘆かわしいことであるか
このままではいずれ世の中がまとまらず不安定な情勢になるではないか!
ブログやTwitter、Facebookなどのソーシャルメディアによって
少数ではあると思うが
少しずつでもこのような自体が明るみに広がってくれば
ますます新聞やテレビといったマスメディアの信用が堕ちてしまう
昔であれば人経由で少しは広がっていたことかもしれないが
それも長期間に渡って消えずにだ!
これもそれも一般の人間が誰でも気軽に情報を発信できるようになった
減少していく一途を辿る事になると思われるので
このまとめを読んで思ったことをつらつら書こうか……と思って帰ってみたら大幅に補記されてる! でも全部読み通す気力はないので(ごめん!)、とある更新部分までを読んだ段階での、生煮えのおれなりの感慨を書く。
おれもカクヨムで小説の大賞を狙って投稿した人間だ。ジャンルは「恋愛・ラブコメ」だった。
おれは結果としてカスリもしなかったようだ。でもおれは大賞を取った作品に対して、是非はクリエイティヴな「批評」として論じたいが、読まれた功績は素直に認められる。負け惜しみとか妬みとか嫉みとか、そういうものはない。
何故なら、おれは全力を出し尽くしたからだ。おれの持てる全ての力を振り絞って、作品に対して集中して書き切ったからだ。
おれもウケを狙ってショートショートを書いてみたりしたよ。カクヨムではそういうのもウケるみたいだからな。でもボロクソに言われた。
言われたことももちろんショックだったんだけれど、おれがショックだったのはそういう批判ではなく(批判する権利は誰にでもある)、その批判に応えられなかったからだ。作品がその批判に対抗出来る力を持っていないと思ったからだ。安直な動機で書いたことを見抜かれたからだ。
読者は貴重な時間を費やして読んでくれるんだ。批判もまた、その好意の裏返しだ。それに対してきちんと応えられないウケ狙いの安易な作品を書くことがどれだけ下らないことか、その時良く分かったよ。
逆に言えば、批判/否定されてもそれに応えられるだけのものとは、大賞の受賞を逃しても納得出来るだけの、自分は精一杯全てを出し尽くしたと言い切れるもののはずなんだ。おれは大賞を狙った十万字の小説に対してそれだけの情熱を注げた。それは断言出来る。
おれは読んでないからなんとも言えないが、イスカリオテの湯葉さんの作品もきっとそれだけのありったけの力を振り絞って書いた作品なんだろう。だから読まれるだけの力があるんだろうな。それは結局実力の差、あるいは時の運、その他諸々が絡み合って出された当然の帰結なんだ。
おれは『カッコーの巣の上で』という映画が好きだ。あの映画で、閉鎖的な病院から抜け出すべく水飲み場の台を持ち上げて窓ガラスを壊そうとするマクマーフィという男が登場する。そいつは結局その水飲み場の台を持ちあげられない。でも、最後にひと言言うんだ。「でも努力はしたぜ/チャレンジした」と。
おれの今の心境も同じだよ。おれは努力した。全力を振り絞って書いた。なけなしの力を、これ以上ないというほど、血を吐くような思いで書き切った。だから、落選したが、ボロクソにも言われたが、不思議と傷はついてない。むしろ爽やかな気分だよ。やり切った、って充実感/達成感がプライドとして守ってくれるからな。
おれは努力した。燃え尽きたよ。これからまた小説を書くのかどうかは分からないが、おれはカクヨムという場は好きだ。だから撤退はしない。
っていうことを書こうと思って(そういう部分だけ読んだんだよ!)家に帰ったら、なんか怒りをこじらせた挙句の果てにご覧の有様だよ! でもここまで考えたことをムダにはしたくないので、敢えて増田で書き捨てる。ごめんな!
ホッテントリメーカーで作るような煽りタイトルって、みなさんもう見飽きてると思うんですよね。
今調べたらホッテントリメーカー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を学べばゴールというわけではありません。プログラム言語も次世代へと移りつつあります。業界動向には注視していきましょう。