Java SE 7 リリース 71
ストーリー by headless
更新 部門より
更新 部門より
あるAnonymous Coward 曰く、
Oracleは7月28日、Java Platform, Standard Edition 7(Java SE 7)の提供を開始した(プレスリリース、 ダウンロードページ、 本家/.)。
Java SEのメジャーアップデートは5年ぶりであり、OracleによるSun Microsystems買収後では初めてとなる。主な変更点/新機能は、生産性向上のための言語仕様変更、動的/スクリプト言語サポートの改善、マルチコア対応API、非同期I/O API、Unicode 6.0サポートなど。
主要な統合開発環境では NetBeans 7.0、IntelliJ IDEA 10.5 が対応済み。Eclipseは7月29日以降の最新ビルドで順次サポート機能が追加されているが、正式対応は9月リリースの3.7 SR1となる予定。 また、アプリケーションサーバーでは GlassFish 3.1.1 が対応版として公開されている。
ループ最適化に関するバグ (スコア:5, 参考になる)
今回のバージョンにはループ最適化に関する致命的なバグ [lucidimagination.com]があるそうです。
(重要な用途には用いないこと || 関連する最適化オプションを無効にすること) && 今後のアップデートを速やかに導入することをお薦めします。
Re:ループ最適化に関するバグ (スコア:1, おもしろおかしい)
例えばVisual Studioがループ最適化に致命的なバグを持ったまま出荷されたらどうなるだろうか?
間違いなく叩かれるだろう「こんなもん使い物になんねーよ」「金払ってんだからちゃんとしたもの売れ」そんな声が聞こえてくるようだ
では無償版のVisual Studio Expressの方だったらどうか?
やはり叩かれるだろう「無償版だからって手抜いてんじゃねーよ」「有償版を買えってことですね分かります」そんなところか
ならばGPLなgccだったらどうだろう?
それでもやはり叩かれるだろう「人柱さん何やってんの?」「良くもまあこんなんでstable宣言できたな?」「OSSの方が品質が高いとか思っている奴は情弱」ボロクソに言われるだろう
それならどうしてJavaはこんな致命的なバグ持ちで出荷されても許されるのか?
悲しいかな、これこそが日本人の中立であろうとした時の立ち位置だからだ
世界で中立とか公平とかいう場合、どんなものも同じ価値となり、それがgccだろうと、JDKだろうと、同じように評価される
しかしながら同じことを日本人にやらせると、どういうわけだか劣っている方を大目に、優っている方を減じて評価してしまう習性がある
いわゆるケンカ両成敗という考えかたこそが、日本人の考える公平とか中立という立ち位置になる
似ているようでいて全く違う考え方なのだが、大抵の日本人は悲しいかな違いが分からない
なにしろ自分は中立な立場に立っていると勘違いしているので、違いもへったくれもないわけだ
これだから日本人と議論するのは疲れるんだ
物事を公平に見るということができず、常にどちらか側につくことで両者の優位性を打ち消すことを、公平に見るということだと誤解しているので話にならない
どうしてダメなものはダメと言えないのか?
Re:ループ最適化に関するバグ (スコア:1)
長々書いてるけど、要約すると「水に落ちた犬は叩け」ってことでOK?
Re:ループ最適化に関するバグ(スコア:-1, オフトピ) (スコア:0)
あなたは、どなたと戦っておられるのでしょうか。
日本人でもそれ以外のかたでも「こんなバグ許されないだろ」という意見のほうが圧倒的に見かけます、私の観測する範囲では。そのVisual StudioやGCCの例と同じぐらい叩かれているように思います。
Re: (スコア:0)
Re: (スコア:0)
Re:ループ最適化に関するバグ (スコア:1)
Miyakawaさんの張ったリンク先には
> Don’t use Java 7 for anything (unless maybe you know you don’t have any loops in your java code)
って書いてありますね。ループのないコードなら OK ってことです。
Java 7 のループは if と goto で書きましょう。;-)
Re:ループ最適化に関するバグ (スコア:1)
って書いてから「もしかして Java って goto なかったような?」と思ったら、ほんとにありませんね。使わないと気付かないもんだなぁ…
どうやったら loop が書けるんだろう?
Re:ループ最適化に関するバグ (スコア:2, 興味深い)
>「もしかして Java って goto なかったような?」と思ったら、ほんとにありませんね。使わないと気付かないもんだなぁ…
懐かしのFAQだけど、バイトコードにはあるよ。
http://java.sun.com/docs/books/jvms/second_edition/html/Instructions2.... [sun.com]
つまりバイトコードのアセンブラで書けば良いんだね!
#そっかー。このFAQが流行ったのって、もう10年以上前の話なんだ……
#そら知らん人も多いわけだ。
Re:ループ最適化に関するバグ (スコア:1, 参考になる)
バイトコードのレベルで無条件ジャンプ命令があるのは当たり前だと思うけど。
構造化プログラミングってのは極論すればソースコード見る人間の都合にすぎないんだし。
Re:ループ最適化に関するバグ (スコア:1, おもしろおかしい)
末尾再帰で書きましょう。
最適化でループで展開されるみたいなんで・・・あれ?
Re: (スコア:0)
Javaって末尾再帰をループに最適化してくれましたっけ?
Scalaならしてくれるみたいですけど。
Re: (スコア:0)
ところで、何でいまだに人間様が末尾再帰で書いてやらなきゃならないんですかね。
人間が通常の再帰を末尾再帰に書き換えることができるなら、どうして機械にはそれができないんでしょうか。
末尾再帰に書き換え不可能な再帰があるのは知ってますけど、そんなのはエラーにしても十分実用的ではないですか。だって計算量が指数関数的どころの騒ぎではないのに、アッカーマン関数なんてベンチマーク等の目的以外で実用的なプログラムに使いますか?
Re: (スコア:0)
Re:ループ最適化に関するバグ (スコア:1)
ループしない。全てを再帰コールで実装する(メモリ的にかなり無茶だ)
fjの教祖様
Re: (スコア:0)
再帰呼び出しとか
極短周期のタイマイベントとか
Re: (スコア:0)
Re: (スコア:0)
ループ回数分だけコピー&ペーストする
Re: (スコア:0)
Re: (スコア:0)
> 関連する最適化オプションを無効にする
具体的にはどういう起動オプションを指定したらいいんですかね。リンク先はただ「使うな」だけで回避策は書かれていないみたいですし。
Re:ループ最適化に関するバグ (スコア:1, 参考になる)
超不慣れな英語を必死に読み解いた限りでは、
「Java7のUpdate 2よりも前を使う場合は"-XX:-UseLoopPredicate JVM option"を無効にしろ」
と書いてあるような気がします。
んでもって、手元のDebianのOpenJDK7でデフォルトどうなってるか確認したかったんですが
となって、「-server」を付けて起動した場合(Server版HotSpotVM)は該当の最適化が
デフォルトで有効になるみたいです。(「-server」付けないと該当行が出ません)
引き続き、どんな条件でfalseになるのかチマチマ調べようかと・・・
ちなみに、OpenJDK7のパッケージはexperimentalにあります [debian.org]
Re:ループ最適化に関するバグ (スコア:2, 参考になる)
掲示いただいたURIからpointされてるバグをBug Paradeで確認してみました。
Hotspot crashes with sigsegv from PorterStemmer [sun.com]
-Xintフラグを付けず、-serverフラグを付けると再現可能
Work Around→実行時に-XX:-UseLoopPredicateを指定する
修正内容→ http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/4e761e7e6e12 [java.net]
Loop unroll optimization causes incorrect result [sun.com]
testAssignSameArrayInstanceテストでループが巻き戻らない場合に(?)正常な結果が得られない。-XX:LoopUnrollLimit=1を指定して実行すると正常な結果が得られる。
Work Around→なし
修正内容→ http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/e3cbc9ddd434 [java.net] http://hg.openjdk.java.net/hsx/hotspot-main/hotspot/rev/e3cbc9ddd434 [java.net] http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/e3cbc9ddd434 [java.net]
SIGSEGV in PhaseIdealLoop::build_loop_late_post on T5440 [sun.com]
Work Around→なし
修正内容→ http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/c96c3eb1efae [java.net]
-XX:-UseLoopPredicate で避けられるのは最初のものだけですね。
Javaの優位性ってなに? (スコア:3, おもしろおかしい)
ところで、Javaの優位性って何でしょう?
どんなに工夫しても所詮はインタプリタだから遅いし、
どこでも動く的な話は夢であることははっきりしてきたし、、、
WEBシステムで表示はIEへ、DBはOracleへ丸投げとか、Android上ではそれなりかもしれないが、それなら他の言語に比べて良いこと無いし。
特に実務で使う場合はコーディングルールとかの蓄積が無いからむちゃくちゃになるし、訳の判らない争いごとが多いし。
#それに比べればCOBOLって最高だよね。仕事で使うなら。
Re:Javaの優位性ってなに? (スコア:1, おもしろおかしい)
Re:Javaの優位性ってなに? (スコア:1)
笑ってしまいましたw
それはさておき。
C++をやっていたので、Javaが覚えやすかった。
ポインターみたいな事もやってくれるし、
メモリー管理をしてくれているだけで精神的に楽。
WindowsとLinuxで動けばそれ以外はどうでも良いかな。
COBOLはオフコン環境で使うと出来ない事の理解をお客から得やすいのが良かった。
文章を書いている感覚で、クラスなんて無くても十分読みやすいコードだった。
印刷した時に段下げの美しさを自画自賛したりしてw
PC環境ではどうなんでしょうね?
Re: (スコア:0)
#釣りと思われれしまったか、まあ、COBOLって最高とか書いたからしかたないか。
PC環境でも普通にCOBOL使っていますよ。理由は「十分読みやすい」ですね、やっぱり。
Javaも正しくクラスを作っていけばそれなりに良いのだけど、統制を取るのに苦労する。
分業すると作業者の癖が出てシステムが腐るし、優秀なアーキテクチャに任せれば
しっかりしたシステムが出来るが、それでは分業のときのような生産性や人員計画立
てられないし。
あと、Javaにはちょっとくらい環境による違いがあってもとりあえずコンパイラーと
VMがあるとうれしいよね。(計画段階で調査するとJavaが無い環境が結構あってね。
Re: (スコア:0)
Re: (スコア:0)
まあ、現実世界のCOBOLコンパイラー販売状況等のデータを調べてみてくれ。
どっちがファンタジーか理解できるから。
Re:Javaの優位性ってなに? (スコア:1)
古典的すぎるネタですが。
「インタープリター言語」を利用する最大の理由は「速度よりも言語的柔軟性」を優先したい場合です。なので、「遅い」事が問題になるような場合には使わない。
「どこでも動く」が嘘であっても、「WindowsでもLinuxでもMacでもそれなりに動いて欲しい」とか「HP/UXとLinuxとSolarisとAIXでそこそこ動いて欲しい」とかいうニーズに対してなら、シングルバイナリ配布で済む分、Native Binary出力よりも優位。
それは Java の問題ではなく、プログラマーとしてのあなたの実力が不足しすぎていて、他者を圧倒していないから起こること。
「私が黒と言ったら、白熊は黒いっ!!」
と言えるだけの実力をつけましょう。
おいおい、モノを知らないにもほどがあるってもんだぜ。
「ADD A TO B GIVING C.」って書くべき所を「COMPUTE C = A + B」って書く奴らが増えちまって、COBOLの世界も大混乱よ。
fjの教祖様
Re:Javaの優位性ってなに? (スコア:1, おもしろおかしい)
> おいおい、モノを知らないにもほどがあるってもんだぜ。
> 「ADD A TO B GIVING C.」って書くべき所を「COMPUTE C = A + B」って書く奴らが増えちまって、COBOLの世界も大混乱よ。
そうそう。
この間の奴なんか、中堅者自称してるくせに「GO TO」で書かずに「PERFORM」でループ書きやがる。
Re: (スコア:0)
>他者を圧倒していないから起こること。
>「私が黒と言ったら、白熊は黒いっ!!」
>と言えるだけの実力をつけましょう。
つまり、JAVAを使うには、言語仕様とは関係なく、
無理を言って押し通す技術が必要ということですね。
>「ADD A TO B GIVING C.」って書くべき所を「COMPUTE C = A + B」って書く奴らが増えちまって、COBOLの世界も大混乱よ。
つまり、「COMPUTE C = A + Bと書け!」と言って押し通せる必要があるのではないですか?
Re:Javaの優位性ってなに? (スコア:1)
なんでやねん。逆や、逆!!
# 逆向きにボケゲドないすんねんな
fjの教祖様
Re: (スコア:0)
> 「速度よりも言語的柔軟性」を優先したい場合です。
javaにそれが当てはまりますか? 例えばC++と比べてどこがインタープリタとして優れいているの?
> 「どこでも動く」が嘘であっても
ここは同意ね。
> 「WindowsでもLinuxでもMacでもそれなりに動いて欲しい」とか「HP/UXとLinuxとSolarisとAIXでそこそこ動いて欲しい」とかいうニーズに対してなら、シングルバイナリ配布で済む分、Native Binary出力よりも優位。
その意見はある程度同意します。それなりやそこそこで動く分には。
実際、単体試験は各作業員のWindowsPCで実行はUNIXサーバーという形式は良くやる。
Re:Javaの優位性ってなに? (スコア:1)
どうやらここから突っ込む必要がありそうですね。
よく考えてください。C言語ができてもうすぐ30年です。
未だに「CUIとGUI、X11用とWindows用とMac用のコードが単一コードから生成できるライブラリセット」はできていません。C言語はもともと Human Interface については何の仮定も置いていないプログラミング言語なのに、ですよ?と言うことは、そもそも「UIを書く」ための「単一インターフェース(言語であれ、ライブラリであれ)」はまだないってことです。
当然、存在しない概念を実装した処理系は存在しえません。
だから、シングルバイナリ配布で可能なのは「マシン・マシン・インターフェース」が決まっている(あるいは、unixのようにヒューマンインターフェース側が限りなくマシン・インターフェースに等しく、かつ テキストのような汎用化された通信ベースに基づいている)場合に限定されるわけです。
なので、シングルバイナリ配布の恩恵を受けられるのはHuman Interfaceを大量に必要とする「対人間用」コードではなく、その一歩手前まで…つまりサーバー側からスタートして、クライアントにおけるバックグラウンド処理まで…に限られます。最後のUIの部分は、絶対個々のOSごとに native でつくるしかないんです。
これはどのような言語であっても共通して言えること。C for JVM があっても何も変わりません。
うん。それはつまり「ソースコードがある」「ソースコードがきちんとしている」って言うことだよね。
たとえば「所定の時間待つ」ために for文+nop で構成されたりしていないってわけだ。
また、「ソースコードが無くなっていない」ってわけだ。
実際には、基盤間移植の本当に大変な部分は、ソースは残っていないし、中身は腐っているんだよ
つまり、ソースコードはなく、アセンブラで追い回したら for 文みたいな構文の中に nop が入ってる…なんてのがゴロゴロしているコードこそが曲者。なにしろ、エミュレーターや仮想マシンをもってしても、「マシン語1命令単位」での実行時間をオリジナルとぴったり合わせることはできない。CPUが早すぎたり、逆にエミュレーターが遅すぎたりする。
しかし、最適化が中途半端にかかっているものだから、デコンパイルが効かない。まさに問題のポイントの周辺が解析不能に陥る。「意味論的に理解できるパターン」が書かれているからこそ、デコンパイラーのデザイナーがパターンを登録できるのであって。「意味不明なコード」をコンパイルしてできた結果は、デコンパイルできない。
捨てて作りなおそうにも何やってんだかよく分からなさすぎる上に、コストだけは大量にかかった、スケジュールのスリップしまくったプログラムなので、まだ元が取れてない。だから捨てられない(と泣きついてくることが多い)。
しかし Java は違う。Javac は最適化をほとんどかけないので、デコンパイルし易い。JVM上で動くので最初から 「for文+nopでタイミング調整」なんてできない。
つまり「Javaで書いておくと基盤間移植しやすい」のだ。
当てはまります。が、多分それは想像している答と違うでしょう。
まず、Javaはコンパイラ言語です。C++やPascalとかと同じです。なので、C++に比べてJavaが「言語的に」何か優れている、と言うことはありません。いや、オブジェクト指向言語としてよりシンプルである、とかそういうのはあるでしょうが、「インタープリターであるための言語柔軟性」…例えば eval が実行できるとか…は Java そのものにはありません。
なので、「インタープリターとしての柔軟性」は全て JVM 用バイトコード処理系側に存在します。別の言い方をすれば、「JVMがCorei7に比べて何が優れているのか」という比較になります。で、すぐ判るでしょうが、この比較であれば「JVMは物理プラットフォームに対する縛りが緩い」事と「Garbage Collector を持っている」の2点が柔軟性としてあげられます。物理CPUに対する縛りを緩める、というのは「インタープリターとしてのJava」の特徴の一つですから、当然勘定してあげなくちゃ不公平、というものです。
GCはサーバー用/デーモン系プログラムにおける福音です。少なくともこれが福音になるような人たちですら、基本的に停止させないプログラムを書いて、メモリリークの心配をしなくて良い、という段階で福音です(JVM自身のバグのせいで酷いメモリリークを起こすことがあるのは、脇に置いておくとして)。
Javaは「馬鹿でも安全にコードが書ける」プラットフォームとして、C++に比べて言語的柔軟性が優れているのです。
# ポインタ操作の山をかいくぐって「完璧なGC」を行うのは難しい。
# だから、C++用にはBoehm GCのような保守的GCしか実装できない。と言うことは、
# メモリリークを起こすし、無限に動き続ける daemon を書く上で、C++では十分な保護は
# 受けられないわけだ。
うむ、影響範囲が狭すぎる。
考えてみて欲しい。Cの場合「歴史があるので書き方がより定まっている」というのは「私の配下では統制できている」程度の人しかいなかったなら、おかしいと思わないか?
もし、非常に狭い部隊内部だけの統制が取れればいいのであれば、マネージャーで十分だ。別に強圧的な方法なんぞ使わなくてもよい。しかし、それでは世間の常識になんかならない。
「書き方が定まっている」のは歴史があるからじゃない。組織外部に向かってでも、「こういう場合はこう言うふうに書くものであるっ!!」と宣言し、押し付けた人がいたからこそ書き方が定まっているのだ。プログラマーとしての実力が不足しすぎていて、他者を圧倒できていないとはそういうことだよ。
小さな自分の配下ごときで「できている」なんぞとは言わない。
自分の部署と取引がある部隊が同じルールに従うのでは、世界が狭すぎる。
もっともっと、でかい世界を「平伏できていない」のならば 実力不足 か、影響が十分世間に回っていないか…どちらかだ。そして「マネージャじゃなくて?」と聞いたということは、これは実力不足の方であると確定した、と言うことだ。
# 「それ、俺の仕事と違う」と宣言したに等しいからね。
fjの教祖様
こういうことですか? (スコア:2)
インタプリタ言語最強
今のCPUの設計に依存した下手な最適化バイナリコードよりも
人間が読めて理解できてある程度ちゃんと動くコードの方がいいよね
誤記 FireFox
巫女 Firefox [mozdev.org]
Re:こういうことですか? (スコア:1)
別に最強なわけじゃない。
ちゃんとコードが書ける人が、丁寧に作り上げたプログラムのメンテナンスのしやすさや動作の最適さは言語に依存しない。
というか、へたくそが書いた Java コードより、優秀な人が書いたアセンブラの方が読みやすい。
でも、プログラマのレベルを下げていくと、言語による縛りや言語によるサポートによる差が見えてくる。
そして、最悪状態でどちらがより「救いようがあるか」というと、それは Java という事。
「必要悪」の方がよほど正しい表現だな。
fjの教祖様
Re:Javaの優位性ってなに? (スコア:1)
ごめん、40年だ。
fjの教祖様
Re:Javaの優位性ってなに? (スコア:1)
私が書いたことが異常だというなら、「世界は異常なのだよ」。
世界をもっと見てきたまえ。
fjの教祖様
Re:Javaの優位性ってなに? (スコア:1)
まあ、わざわざ人間が書く必要もないような退屈な処理専用のCOBOLと、言語としてのエレガントさを捨てて、
カオスな現実に擦り寄ったツギハギなJavaの論争は適当にやってくれればよいですが、
設計者のことを指すなら「アーキテクチャ」じゃなくて、「アーキテクト」ですね。
「優秀なアーキテクチャ」とか一瞬意味がわからなくて戸惑うので、今後は修正を望みます。
Re:Javaの優位性ってなに? (スコア:1)
本物のプログラマーはJavaを使わない。COBOLを使う [pbm.com]というわけですか。
Re:Javaの優位性ってなに? (スコア:1, すばらしい洞察)
Re:Javaの優位性ってなに? (スコア:1, すばらしい洞察)
個人的には起動時のクラス読み込みなんかが終わると問題ないスピードで動いてると思います。
Re: (スコア:0)
>どんなに工夫しても所詮はインタプリタだから遅いし、
ネタにしてもコレは古すぎるぞ。
JITコンパイラもないって、どこの環境の話だ。
#ケータイ上?でもケータイでCOBOLは動かないと思う。
>どこでも動く的な話は夢であることははっきりしてきたし、、、
夢じゃなくOSのバージョンが変わっても同じアプリが動いてるのは、
さすがJavaってとこなんだけど。
今ままでだと、XPとVistaで同じアプリが動きますなんて夢物語だったもんね。
SolarisとLinuxでも厳しいと思う。
>コーディングルールとかの蓄積が無いからむちゃくちゃになるし
http://www.amazon.com/dp/0521777682/ [amazon.com]
まあでもCOBOLerがする反論って、今でもこのレベルなのは事実なんでしょう。
Re:Javaの優位性ってなに? (スコア:2)
> 夢じゃなくOSのバージョンが変わっても同じアプリが動いてるのは、
> さすがJavaってとこなんだけど。
うーん、そうですか?
私のところでは、OS変わっても同じJavaアプリが動いていたのに、バージョンが変わったら突然、印刷が文字化けするようになりました。(自分が書いたプログラムではなかったので、何が問題なのかとうとう分からなかった・・・。)
そのアプリを使うために、古いバージョンを入れなおして、バージョン指定して起動するように設定を弄る必要がありました。
なので互換性に関しては、Java開発陣営もWindowsの事は言えないなぁ。と思いましたよ。
(多分、Java開発陣営は現時点に至るまで互換性を維持できているなどと、今もって驕ったりはしないと思います。むしろ、互換を信じているのはアプリ開発者の方で・・・)
正確に互換性を堅持する、というのはどこの世界でも高い難易度を持つ開発だと思います。
拡張に想定外はつきものですから。
バグ修正で互換性を損なう事もありますから。
仕様が変更されれば互換性も捨てられますし。
まあ、一介のアプリ開発者が互換性の問題に気づくかどうかというと、それには相応の経験とか情報収集とかが必要なのでしょうけど。
私もOSや言語の互換性に関する文書は可能な限り読んでますが、それでも問題に直面するまで気付かないことも多々ありです。
よって、「○○は互換性の問題がない」みたいな話は、常に猜疑心に満たされます。
Re: (スコア:0)
こういうこと書くから、java使いって、こんな認識なのか、と思われちゃうんですよ。
javaがインタプリタってのといいとこ勝負。
Re: (スコア:0)
> JITコンパイラも
それを指して(#1995293 [srad.jp])で「工夫」と言っています。
コンパイルなんかビルド時にやれば十分。
本当にVMの用意だけでそのまま動くならJITコンパイラもいいけど、環境変えたらどうせ修正+リコンパイルなのだから。
> #ケータイ上?でもケータイでCOBOLは動かないと思う。
例外や、下を見たらきりが無くて。
Javaもまともに動く環境はあまり無いし、せいぜいUI担当程度しかできなくて、Flashに完敗しいているし。
本体となる部分の処理やサーバー側のサービスはJava以外でやっているしね。
> 夢じゃなくOSのバージョンが変わっても同じアプリが動いてるのは、
> さすがJavaってとこ
Re: (スコア:0)
Re:Javaの優位性ってなに? (スコア:1)
>Androidではそれなりならそれが優位性なのでは。すくなくともgoogleがAndroidに他の言語を採用せずjavaを選んだのは事実。
Android は Google に買収される前から Java のはずなので、「Google が選んだ」というのは語弊があるかと。
伝統的には、Google は Python 好きですよね。
プログラミング言語ヒエラルキー (スコア:2)
http://www.geekpage.jp/blog/?id=2006/12/13 [geekpage.jp]
誤記 FireFox
巫女 Firefox [mozdev.org]
>動的/スクリプト言語サポートの改善 (スコア:1, 興味深い)
が、今後のJavaの方向性を示していて、何気に重要な気がします。
Java以外の言語のための機能を追加するということは、Javaが単なる言語からプラットフォームへと変質してきているということなのでしょう。
ひょっとしたら十年後ぐらいには、Javaという言語自体は廃れてしまっていて、JVMは全く別の言語のためのプラットフォームという扱いになっているかもしれませんね。
(そういう意味で、上のほうでJavaだけ見てコーディングが大変だの言っているのは、あまりに古臭い考えかと。そもそも別に大変だと思ったことはないが・・・。)
と言いつつ、個人的にはProject Coin [hatena.ne.jp]の微妙な構文改良の方が嬉しかったり。
うん、大変だと思ったことは無いが、面倒くさい構文は多々あるんだよな。
Stringのswitchだのマルチキャッチだのリソース付きトライだの型推論だの、ほんとなんで今まで対応されてなかったのか(嘆