
Java SE 8リリース 84
ストーリー by hylom
ついに登場 部門より
ついに登場 部門より
あるAnonymous Coward 曰く、
Oracleは3月19日、Java言語の新バージョンとなる「Java Platform、Standard Edition 8 (Java SE 8)」の提供を開始した(ダウンロードページ、slashdot、SourceForge.JP Magazine)。
Java SE 8の目玉となるのは、何と言ってもJava SE 7から持ち越しとなっていたラムダ式であろう。これによりこれまで匿名クラスを用いていた記述を大幅に簡略化することが可能となる。そのほかにも、インタフェースへのデフォルト実装やstaticメソッド定義が可能となったり、新たな日付処理APIの導入や、型に対するアノテーションといった新機能が追加されている。新機能は多岐にわたるため、詳細は各種解説を参照されたし(@ITの解説、マイナビの解説)。一方、当初導入が予定されていたモジュール化についてはJava SE 9に延期となっている。
また、Java SE 8に対応した統合開発環境として、OracleからNetBeans 8.0がリリースされている。他のIDEについては、IntelliJが対応済み、Eclipseが6月の次期リリースで正式サポート予定など、順次対応される見込みである。
アップデートはお控えください (スコア:5, 参考になる)
………というところもあるので………じゃあ、いつまでに直しますとは言わない外為どっとコム [gaitame.com]
クリティカルなバグが出て、アップデート必須って時にも同じようなアナウンスしてたんですよ。
Re: (スコア:0)
開発者向けプレビュー版はだいぶ前から出ていたというのに、何をさぼっていたのやら > 外為どっとコム
Re: (スコア:0)
テスト工数の追加が通らないから大抵リリース版が出てからになる
Re: (スコア:0)
ブラウザ版はさておき、リッチアプリ版はjre同梱しておけばよかったんじゃないかね。(確認してないので既にあるのかもしれないが。)
# java製ツールを入れるたびにjreがどんどん増えていき、定期スキャンの時間が跳ね上がるのは困りものではあるが。
インタフェースへのデフォルト実装はキモい (スコア:1)
実装を定義できたら抽象クラスと同じじゃない
だったら最初からinterfaceなんか作らずにclassの多重継承を認めればよかった
Re: (スコア:0)
Re: (スコア:0)
よし、abstract interfaceを作ろう
Re: (スコア:0)
meta meta プログラミング
Re: (スコア:0)
そう、オレも思った。
Abstractと比べて何が違うと言うか、どういうメリットがあって、どう使い分ければいいんだと。
あくまでラムダ式使う時はInterfaceじゃないとダメということか?
というか、ラムダ式もいちいち別でInterfaceの定義を書くのが面倒なんだけど。
単純にメソッドをオブジェクトとして扱えるようにして欲しかった。
他の言語で言うクロージャとか、Ojbective-Cのブロックのように。
Re: (スコア:0)
激しく同意します。
それ思ってるの、私だけじゃなかったんだ……良かった。
実際問題、抽象クラスとどう使い分けるべきなんだろうね?
Javaに詳しい人の回答求む。
Re: (スコア:0)
Scalaのtraitの影響でしょ。あるいはrubyのmix-inとか。抽象クラスとの使い分けは今までと変わらないでしょ。
まあデフォルト実装に関しては、実装するクラスへの影響を考えて、より注意が必要になるだろうけど。
Re: (スコア:0)
私の感覚ではクラスとI/Fは意味的に違うのでメソッドをもったからクラスでいいじゃないかという感覚はないなぁ。
クラスは関連性があるがI/Fは関連性はない(操作方法が同じだというだけ)。
たとえばUNIXはすべてをファイルのように扱えるようにしている(インターフェース)が、デバイスやプロセスは結局のところファイルではない。なのでデバイスやプロセスの親クラスとしてファイルを据えたくない。「is-a」の関係性でいえば「プロセス is not a ファイル」だから。
Re:インタフェースへのデフォルト実装はキモい (スコア:1)
JAVAといえば (スコア:1)
最近ではJAVAといえば、セキュリティーホールのひとつぐらいに思うようになってしまいました。
Re:JAVAといえば (スコア:1)
O社に移ってから、さらに形骸化に拍車が(以下略)
Re: (スコア:0)
「ひとつ」でいいのかい?
Re: (スコア:0)
WindowsXP終了に伴い、Windows7のPCに電子入札システムをインストールしていたんですが未だに特定バージョン決め打ちなんですよね。7.0update15だけなのは7.0だからまだ良いとして(良いのか?)、他には6.0update24だけというのもありました。
大丈夫なのかな
同士発見 (スコア:0)
昨日、今日同じ作業してました。
同じ自治体で、工事が7.0update15、調達が7.0update17とか、どうしろと。
(当然、調達をステ。)
Re: (スコア:0)
Re: (スコア:0)
セキュリティホールを塞ぐためか知らないですが、突然今まで動いていたものが起動さえしなくなりました。よくよく調べてみると、署名がないものが起動できないように仕様変更されたそうです。例外リストというものがあることがわかったのですが、どのファイルにあるのか、どう書き足せばよいのか調べるだけで半日潰れて仕事になりませんでした。
以前からプロキシを正しく認識できないとかいろいろ問題があり、javaで動くものをできるだけ敬遠してきたのですが、どうしても使わなくてはいけない場合があるので困っています。これを見ているメーカーの皆さん、お願いですからjavaは使わないで、別の方法を検討してください。
Re: (スコア:0)
署名されたJavaアプレットなりソフトを配布できないようなメーカは確かにヤバイ。
Re: (スコア:0)
それが、あのCISCOなんですよ。
Re: (スコア:0)
Java(Appletが)ダメなら、ActiveXがあるじゃないか。
いや、ほんと勘弁してw
せめて、WebStartかClickOnceで。
近い未来(Re:JAVAといえば) (スコア:0)
颯爽とあらわれ
Google「さぁ、君もPNaClで僕と握手だ!」
Re: (スコア:0)
アップデートしたら変なソフト入れられたので
アップデートも切ったし怖くて更新できない
Re: (スコア:0)
エンドユーザー的には、ライブカメラの操作に使うなにか程度
Androidもラムダ欲しい (スコア:0)
Androidでもラムダ式使いたい。あのネストした匿名クラスを書くのがすごくだるい。
Re:Androidもラムダ欲しい (スコア:1)
Android NDK なら使えます。C++11にはラムダ式があるので、
Re: (スコア:0)
Scalaがあるじゃないですか
匿名クラスの代わりになるかは知りませんが
Re:Androidもラムダ欲しい (スコア:2)
clojureもありますね
ラムダ天国では?
Re: (スコア:0)
Xamarin [xamarin.com]などC#でクロスプラットフォーム開発ができる製品もありますね。
#これでWindows Phone/Android両対応
java.util.stream.Stream (スコア:0)
やっとJavaでも気楽にリスト処理が出来るようになる
Re: (スコア:0)
でもリスト、コレクション処理はScalaやC#のソレのようなのが求められてたと思うんだけど、
出てきたLambda&Streamはだいぶがっかり感が…
Re: (スコア:0)
まあ、しょうがない。型システムを根本から変えないとダメだかんね。
Java2.0になるまで。アレ?
Re: (スコア:0)
てっきり、動画のStreamかと思ってました。
名前をもうちょっとどうにかして欲しかった。
Key-Value Storeが扱いやすくなりそうですね。
いろいろ実装するのが遅い (スコア:0)
Javaって他の言語なら当たり前に使える printf に相当する機能がずっとなかったり。今はあるけど
Re: (スコア:0)
機能搭載の遅さ(これは思想的な理由が大きいと思う)もそうですが、
それ以上に新バージョンを業務で使えるようになるまでに恐ろしく時間がかかる。
Javaを採用しているシステムの特性を考えると安易なバージョンアップが避けられがちになるのは仕方のない部分もあるのですが。
# 昨年、1.4で新規開発というプロジェクトをみたときは流石に戦慄しました。
件のprintf相当の機能は1.5からあったと思います。リリースはもう10年近く前です。
># 昨年、1.4で新規開発というプロジェクトをみたとき (スコア:0)
新バージョンが出るとさっさと打ち切られる公式アップデートとは論外として、1.4なんて商用のExtended Support [oracle.com]すらも去年には終了してるはずなのに・・・。
XPのサポート終了は気にするくせに、こういうとこには無頓着なんでしょうか(汗
# Oracleの場合、それでもサポート費用さえ積めば引き続き個別サポートが受けられると聞いたことはありますが。でも年々値上がりしていくとか。
Re:># 昨年、1.4で新規開発というプロジェクトをみたとき (スコア:1)
大手は自前のVMやコンパイラを持ってたりするので、意外にもなんとかなってたりもします。
このプロジェクトがそれに該当してるのか否かはしりませんが。
Javaに限らず、世間はMS製品以外のサポートライフサイクルには実に無頓着ですね。
新規開発は流石に酷すぎだと思いますが、1.4で現役稼動中のシステムなんてゴロゴロしてます。
それでいて「MSはサポート期間が短い」とか言い出す人が少なくない。
(自分がサポート終了に気付いてない製品は永遠にサポートされてると思ってる)
MS製品以外も、サポート終了がちゃんとユーザーに伝わるといいんですが。
サポート終了 (スコア:0)
横道それますが
MacOSXのサポート終了告知がどこにあるのか判らない・・・
どこか乗ってる場所はないだろうか?
正直 (スコア:0)
C#erですが、Javaの良い所がわっぱりわからんです……。
今までに出てるコメントの様な印象が非常に強い。
(セキュリティ弱い、さらにその上バージョン依存のソフトウェアが多くセキュリティのFixが出来ない、新バージョンへの移行が異常に遅い)
Write once, run anymoreに至っては、.NETのがマシじゃね? ってぐらいな印象です。(Monoとかあるし)
さらに個人的な所感として、eclipseは不安定、Netbeansは情報があんまりない。
私の環境では、eclipseを一度起動したら、二度と起動しなくなりました。一部の環境設定ファイルを削除したらいけましたが、毎回それを強いるってどんなマゾ向けですか?
ちなみに、Pleiades+ADKで発生しました。余りにも苛々して投げたので、バージョンは覚えてません。確か4系列だったかな……。
サーブレットとしても、Tomcatは面倒な設定だらけで開発を始めようとするだけでも一手間。
かつての同僚は「Javaは要件に合わせて開発環境を整備するだけで1日かかる」と言っていました。
その同僚の腕前を詳細には知らないので、それが一般的かは知りませんが、実際自分がやってみてもとてもとても面倒でした。
プログラムが好きなんであって、環境設定が好きなわけじゃないんです。
一応はメジャーな言語ですし、何度も何度もJava勉強しようとしましたが、Visual Studio+C#、ラムダ式とかLINQの快適さに慣れるとどうもね……。
今回ラムダ式が実装された訳ですが、伝え聞く話を聞く限りでは、Javaの案件で最新バージョン使わせてくれるのってそもそも稀っぽい感じがぷんぷんしますし。
ioの新実装の名前空間がnioとか、命名の風習とかもなんだかなぁ。newioでいいじゃん、なんでそこで文字数ケチるん? って思いました。
むかーしむかしの文字数制限がある言語なわけでもないのに。
いきなりnioと言われても、わかんないですよ、その略し方。
それでも勉強せにゃあ、と思ってクラスライブラリのソース見たら、汚いこと汚いこと……。世界的企業が吐いたソースがあんなんなんか、と戦慄しました。
それでも移植したいオープンソースなライブラリとかあったので、工数を減らす為に互換API自分で組んでみたりしている最中に、そういえばAPI訴訟 [infoq.com]なんてのもあったなぁ……とか思い出して、完全にやる気をなくしてしまいました。
個人が企業に訴訟されたらたまりません。
(個人をわざわざ訴える事はなさそうだし、実装が違えばほぼ可能性はゼロとは思うのですが、余計なリスクを抱え込みたくないです)
フリーランスやってるんで幅が広がるに超した事は無いんですが、必須というわけでもなく。
正直Javaが使われてる理由がわかんないです。
これこれこういう理由でJavaの方がいいんだよ、という合理的な説明を誰かして下さると助かります。
顧客の指定、惰性、という理由以外で。
Re: (スコア:0)
> eclipseを一度起動したら、二度と起動しなくなりました。
いくらなんでもそれは「環境が酷い」としか言いようが。。。
Re: (スコア:0)
>これこれこういう理由でJavaの方がいいんだよ、という合理的な説明を誰かして下さると助かります。
>顧客の指定、惰性、という理由以外で。
発注側目線としては、言語が枯れていることがJava選択の理由ですね。
大規模システムなんて、一度作ったら10年単位で更新しません。
>(セキュリティ弱い、さらにその上バージョン依存のソフトウェアが多くセキュリティのFixが出来ない、新バージョンへの移行が異常に遅い)
変化が遅いことが利点です。
一度作ったら10年更新しないことがおかしい、という意見もあるでしょう。
しかし、それを変えるには日本社会は許容度が小さすぎます。
Re: (スコア:0)
10年というので振りかってみればmonoもプロジェクト開始からとっくに10年超えてるんだよな
#実用になったのはいつからだ?とか「安定したサポート」は(ryとか置いておいて
Re: (スコア:0)
>発注側目線としては、言語が枯れていることがJava選択の理由ですね。
知名度はあっても、(穴・bugだらけで)決して枯れた言語ではないような・・・(汗
Re: (スコア:0)
>これこれこういう理由でJavaの方がいいんだよ、という合理的な説明を誰かして下さると助かります。
OSも考慮して安いもしくは無料だから。
Netbeansいいよ。環境の苦労から解放される。
まぁ私もJava嫌いだがw
Re: (スコア:0)
> さらに個人的な所感として、eclipseは不安定、Netbeansは情報があんまりない。
eclipseはJavaがクソな原因トップ3に入るぐらい酷いから使わない方が良いですよ。
# ちなみにJavaがクソな原因第1位がOracleで2位がJava言語仕様、3位がeclipseね。
NetBeansはeclipseに比べるとまだマシだけど、微妙に機能的に足りないところがある。
ので、Javaでプログラム書くなら今はIntelliJ IDEA Ultimate一択。
.NETプログラマがReSharperを必ず購入するのと同じで、まともなJavaプログラマはIntelliJを使っています。
Re: (スコア:0)
そりゃあ、最初から作る(覚える)なら、後発の言語であるC#のほうがいいでしょうね。
JavaよりもC#のほうが洗練されていますし、作っていて面白い。さすがアンダース・ヘルスバーグ。
しかし、C#はWindows以外のOS(例えばLinux)で完全に動くというわけではありません。
.net互換のMonoは確かにありますが、完全に互換性があるとは言えない状況です。
http://mono-project.com/Compatibility [mono-project.com]
Vsiual Studioで作成したasp.netがLinuxですぐ動くというわけじゃありません。
少なくともasp.net mvc4は、デフォルトのままでは動きませんでした。
(まあ、.netはそんなの考慮して作られ
Re: (スコア:0)
何を使っても開発環境の整備なんて1日ぐらいかかるもんじゃねーの?
最近だとeclipseとVisualStudioとXCode使ったけど、インストールしてアップデートして構成管理からソース持ってきてってやってれば、一日なんてあっという間じゃん。
Re: (スコア:0)
まあ平たく言えば、現代のCOBOLだよね。ITゼネコン御用達の言語になってるし。