X



【IT】Java 10が本日付で正式リリース。ローカル変数の型推論、ガベージコレクタが入れ替え可能、不揮発性メモリ対応など
■ このスレッドは過去ログ倉庫に格納されています
0001ノチラ ★
垢版 |
2018/03/21(水) 15:27:25.64ID:CAP_USER
昨年9月に登場したJava 9から、Javaは6カ月ごとのタイムベースによるアップデートサイクルが採用されました。そしてその最初のワンサイクルが経過し、今日3月20日付けでJava 9の次のメジャーバージョンアップとなるJava 10が登場する予定です。

おそらくJava 10の正式な発表は米国時間の3月20日、日本時間では休日となる明日の午前中あたりになると思われます。

Java 10の新機能:ローカル変数の型推論、ガベージコレクタが入れ替え可能など

Java 9では、通称「Project Jigsaw」と呼ばれるJavaのモジュール化機能が入り、Javaに対する大きな変更が行われました。しかし今回のJava 10では、それほど大きな機能変更や新機能の追加はありません。

Java 10での注目すべき新機能をいくつか挙げてみましょう。

Java 10では、ローカル変数を宣言するときに型推論を用いることで明示的に型を宣言しない記述が可能になりました。Javaの静的型付け言語の特長を維持しつつも、儀式的な記述を減らして使いやすい言語にすることが目的のようです。例えば、次のように記述できます。

var list = new ArrayList<String>(); // ArrayList<String>と推論

また、ガベージコレクタのインターフェイスが導入され、JavaVMのガベージコレクタが入れ替え可能になります。今後、用途に応じたさまざまなガベージコレクタが登場しそうです。

NV-DIMM(不揮発性DIMM)など新しいタイプのメモリにもヒープ領域が配置可能になりました。ストレージクラスメモリなど、これからメインメモリとストレージの中間的な記憶領域などが登場するのに備えているようです。

そのほかJava 10の主な新機能は、Qiitaの記事「Java 10新機能まとめ - Qiita」が参考になります。

Java 10の登場と同時にJava 9のサポート終了
Java 10の登場は、同時にJava 9のサポート期間の終了を意味します。今後はJava 9に対するメンテナンスリリースなどが行われなくなります。そのため、Java 9のユーザーは速やかなJava 10へのアップグレードが求められます。Java 9は昨年9月に登場してから6カ月で、その役割を終えるのです。

Java 9のサポートがJava 10の登場と同時に終了するのは、Java 9が長期サポート対象のバージョン(Long Term Support:LTS)版ではないためです。

現在のLTSは2014年3月にリリースされたJava 8です。Java 8は商用利用では2019年1月まで、個人利用では2020年12月まで無償でメンテナンスリリースを入手可能で、それ以後もオラクルと有償サポート契約を結ぶことでサポートを受けることができます。

そしてこのサポート期間の期限がくるまでに、Java 8の次のLTSである「Java 11」へ移行することが推奨されます。Java 11は今から6カ月後、2018年9月に登場予定です。Java 8の無償メンテナンスリリースが最長で2020年12月まで入手可能なのは、このJava 11への移行期間を十分に設けるためと説明されています。

下記は、日本オラクルが無償版のJDKおよび有償版JDKのサポートポリシーについての説明に用いている図を許可を得て転載したものです。
http://www.publickey1.jp/2018/java101112b.gif
http://www.publickey1.jp/blog/18/java_10java_9.html
0004名刺は切らしておりまして
垢版 |
2018/03/21(水) 15:34:06.44ID:lZGfK7Sg
これでJavaの不動の一強体制になりそうだな
0006名刺は切らしておりまして
垢版 |
2018/03/21(水) 15:37:05.09ID:lONdDz6k
javaとjava scriptって別物なんですか?
0008名刺は切らしておりまして
垢版 |
2018/03/21(水) 15:45:23.45ID:tN8MTmKp
JAVA9ってあったのか
0010名刺は切らしておりまして
垢版 |
2018/03/21(水) 15:56:42.38ID:W0LUwoFy
>var list = new ArrayList<String>(); // ArrayList<String>と推論

Arrayって書いてるけど、どこが型推論なのこれ?
0011名刺は切らしておりまして
垢版 |
2018/03/21(水) 15:58:11.27ID:nmcg9Tpd
昔はC#がJavaの真似と言われたけど
今は逆だよな
0012名刺は切らしておりまして
垢版 |
2018/03/21(水) 15:58:36.23ID:nmcg9Tpd
>>10
そこが肩推論w
0013名刺は切らしておりまして
垢版 |
2018/03/21(水) 15:59:31.39ID:N39mf3Xc
悪化…JAVA11がLTSだからあと半年しないとどこも採用しないじゃん
Androidにいつ展開されるやら…
0014名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:06:13.68ID:ePMoKKo9
1週間前にC初めたばかりの初心者です
0015名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:08:21.69ID:lfo5yM+r
以前騒いだ脆弱性は解決してるのけ?
0016名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:14:08.61ID:DeUBgAWs
プログラマーがバグを書けないように進化すべきなのに
プログラマーが楽にどうにでも書けるように進化していってる
0018名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:19:07.88ID:Vwn713jj
型推論ってメリットあんの?
プログラム読みにくくなるだけじゃね
0019名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:23:45.46ID:ePMoKKo9
>>18
型推論できない言語ってなんで10/3や100/10するだけなのにいちいち気を使わなきゃいけないの?
0020名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:24:55.50ID:x23EPLvB
>>18
プログラマが変数名に型の名前を入れるようになってソースは読みやすくなる
その代償として、コンパイルに時間がかかるようになる
0022名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:29:26.69ID:fOF/7JWS
varとかやめようよ…
0023名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:30:26.03ID:nFPGFMdZ
Javaのサポートって法人でもそんなに影響あるのかね?
うちは既存アプリに影響でるから、アップデートすらしてないわ
WebSphereのサポートが外れるタイミングでバージョンあげてる
0024名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:30:30.30ID:zioqYiet
Javaのサポートって法人でもそんなに影響あるのかね?
うちは既存アプリに影響でるから、アップデートすらしてないわ
WebSphereのサポートが外れるタイミングでバージョンあげてる
0025名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:31:00.43ID:nFPGFMdZ
失礼何故か2連投に…
0027名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:33:57.02ID:Am22l9q7
まあ状況によっては
new で型を指定して
変数宣言で型を指定して
みたいな二度手間になりがちではあるかもな
0028名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:38:32.85ID:waBDQvSd
>>23
個人であるオマエすらアップデートしてないんだろ?
法人なら尚更だろう
サービスを停止中は業務が滞ってしまうのに、人件費は払わないといけない
0029名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:38:50.96ID:zPSdgE6p
>>20
動的型付け言語だとstringsNumみたいに変数名に型名をつけるのが習わしってこと?
0030名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:39:56.92ID:VY7LOQ9J
もうJava使ってないや俺
いろんな言語とプラットホームでバリバリ書くようになってからはJavaであるメリットが無い
0032名刺は切らしておりまして
垢版 |
2018/03/21(水) 16:58:07.11ID:+LzA75PE
最近のC++もほとんど↓みたいな感じだからね

auto value = うんたらかんたら
0040名刺は切らしておりまして
垢版 |
2018/03/21(水) 17:44:42.91ID:oUazQ6u0
オブジェクトをvoidにいれてもオブジェクト
0041名刺は切らしておりまして
垢版 |
2018/03/21(水) 17:45:50.11ID:e2bigyWn
Java?phpで良くね?
0042名刺は切らしておりまして
垢版 |
2018/03/21(水) 17:49:51.87ID:99cQoQsM
ガベコレ入れ替えられるのって、斬新だね
いざバグるその日までは
0043名刺は切らしておりまして
垢版 |
2018/03/21(水) 17:54:00.21ID:99cQoQsM
>>20
いまどきそんなヘボいコンパイラなくね?
型名入れるのも、最早化石じゃね?
0046名刺は切らしておりまして
垢版 |
2018/03/21(水) 17:56:54.79ID:99cQoQsM
型推論たって、ジェネリクスと組み合わせると
なんちゃらみたいな、制限だらけなんだろ
0049名刺は切らしておりまして
垢版 |
2018/03/21(水) 18:28:54.52ID:UtMGiQDB
いい加減Javaとか世界の迷惑だからやめてほしいわ。Flashと一緒に消えてほしい。
0051名刺は切らしておりまして
垢版 |
2018/03/21(水) 18:43:47.36ID:D7ZyJyDS
糞Javaクライアン、トインストールするたびに腹が立つ。
不要になったら即座に消すわ。
0053名刺は切らしておりまして
垢版 |
2018/03/21(水) 19:34:22.94ID:EOXDcR0X
後でソース見る人も人力で型類推しないといけなくなる
まぁそんな所を見る機会は稀だろうが
0054名刺は切らしておりまして
垢版 |
2018/03/21(水) 19:37:15.55ID:3QNMZt8q
ウチは型類推禁止。
0055名刺は切らしておりまして
垢版 |
2018/03/21(水) 19:40:56.26ID:IGpXlbhI
Java8だけど標準でOptionalとStream#forEachがあるのはC#に対してアドバンテージだと思う
その割に標準でtupleが無かったりやFunctionインターフェースが貧弱だったりするのは意味不明だけど・・・
0057名刺は切らしておりまして
垢版 |
2018/03/21(水) 19:43:07.43ID:nmcg9Tpd
>>53
IDEで見ればマウス当てれば型わかるしー
まさかIDEなしでソースみる芸当?
0058名刺は切らしておりまして
垢版 |
2018/03/21(水) 19:43:34.47ID:nmcg9Tpd
いまだに>>20みたいな化石級の奴がいるって、
日本って不思議な国だよなーw
0059名刺は切らしておりまして
垢版 |
2018/03/21(水) 19:45:11.69ID:nmcg9Tpd
>>56
>>52が言いたいのは、そういうことじゃなくて
JavaのがArrayListなんちゃらというのが非効率てこと
他の言語なら xs = []; xs.push('a')
とかで終わる話なのにょ
0060名刺は切らしておりまして
垢版 |
2018/03/21(水) 19:45:54.83ID:mdv195GF
Javaってバージョンに因って動く動かないが顕著にあるからめんどい。
0061名刺は切らしておりまして
垢版 |
2018/03/21(水) 19:53:05.19ID:Ek67ERJb
>>59
ああ、他言語の話ね
でもそれはマルチスレッド前提にインターフェース統一する時にどうしても必要になることじゃない?
0062名刺は切らしておりまして
垢版 |
2018/03/21(水) 19:55:11.53ID:nmcg9Tpd
>>60
Write once, debug everywhere.
0064名刺は切らしておりまして
垢版 |
2018/03/21(水) 20:20:21.19ID:6fuSpImQ
ぬるぽ
0065名刺は切らしておりまして
垢版 |
2018/03/21(水) 20:21:30.38ID:oqg7+j/z
検査例外無くせよ。
0067名刺は切らしておりまして
垢版 |
2018/03/21(水) 20:51:46.69ID:MK8KFVj2
Javaって生きてたんかい
C#に取って代わられたんじゃなかったのか
0068名刺は切らしておりまして
垢版 |
2018/03/21(水) 20:57:31.29ID:nmcg9Tpd
>>65
検査例外ってあれな
昔Javaってたけど、あれ本当に嫌いだった
真面目にやろうとするとそこら中でthrows書く羽目になる
面倒だからみんなRuntimeExceptionを継承した例外クラスで
ラップしてたわw
0070名刺は切らしておりまして
垢版 |
2018/03/21(水) 21:07:32.78ID:nmcg9Tpd
>>69
つ「microsoft 資格 c#」

以下は俺の主観だけど、
資格持ってるだけの人ってあんまり信用されんよ
言語オタクと資格オタクみたいに、勉強と記憶だけ出来て、
プログラミングに必要な思考が全然駄目って人いるからさ

実際のシステムで揉まれた実務経験が一番だと思うよ
その上で資格持ってたら、説得力と印象がほんの少し上がる程度
0072名刺は切らしておりまして
垢版 |
2018/03/22(木) 00:28:08.17ID:seT1NTWn
>>19
型推論使うと、ちゃんとint, floatと推論してくれるの?
0073名刺は切らしておりまして
垢版 |
2018/03/22(木) 01:22:28.87ID:7/xCwok/
>>6
メロンとメロンパンくらいには違う
0075名刺は切らしておりまして
垢版 |
2018/03/22(木) 01:39:42.77ID:cXuH6Sev
C#も最初はJavaの後追いみたいなもんだったし
ガーベッジコレクタとかほかの言語処理系由来のものも多いし
どの言語も、よその言語のエッセンスをとりいれて進化してるってことなんだろうな
とくに関数型言語あたりから
0078名刺は切らしておりまして
垢版 |
2018/03/22(木) 01:58:43.24ID:oKeQojlv
最初のVMバイトコードをネームドメモリにしなかった時点で先が無いのは見えていた。
アドレスアクセスじゃなんも進化が無いつーの
0079名刺は切らしておりまして
垢版 |
2018/03/22(木) 02:02:16.65ID:5//MIsIS
今Androidアプリのメンテで仕方なくJavaやってるけど型推論使えなくてストレスたまってるから早くAndroidでJava10コンパイラ使えるようにして欲しいね
0082名刺は切らしておりまして
垢版 |
2018/03/22(木) 02:47:34.80ID:21Yavt7q
型推論の有効性は、オブジェクト指向で担保されてるんだよ
オブジェクト指向の抽象化では、メッセージング(呼び出し)相手は
具体的な型を特定しないで済むように設計されるのが当たり前(いわゆる多態性)
だから、var というのは相手の型を無意味に特定しないという意味で必要な機能

しかも、強い型システムをもつ言語では「受け取れないメッセージ」については
コンパイル時エラーを出力できるから、Objective-Cみたいな「送ってみたら
相手が間違ってるから実行時エラー」みたいな厄介な事態も事前に回避できるので、
あまり副作用がないんだよね

ただし、数値型に var を使うと、特に整数型と浮動小数点数型で意図しない結果になることがあるので注意
0084名刺は切らしておりまして
垢版 |
2018/03/22(木) 05:51:10.42ID:Ez4P0sMF
toArrayのアンボクシングはいつ改善されるんだ?
Vector<Integer> A=new Vector<>();
int[] B=A.toArray(new Integer[0]);
が通ってほしいのだけれど。
0085名刺は切らしておりまして
垢版 |
2018/03/22(木) 05:55:44.88ID:q+M6peU1
動的っぽいけど書いてるのはジャバだお
0092名刺は切らしておりまして
垢版 |
2018/03/22(木) 09:36:01.30ID:V7z/GEO0
TypeScriptがJVMで動いてくれればいい
0093名刺は切らしておりまして
垢版 |
2018/03/22(木) 09:42:19.01ID:q+M6peU1
>>92
じゃあjavascript==ジャバじゃん
0094名刺は切らしておりまして
垢版 |
2018/03/22(木) 09:49:10.49ID:Ukb3asr6
お客様へのお願い。
JavaScriptのことを「ジャバ」っていうのやめてください。

「俺ジャバできるよ」
「ジャバでつくってよ」
「ジャバでヒドウキ(?)にインターネット更新したらカッコいいよ!」
0096名刺は切らしておりまして
垢版 |
2018/03/22(木) 10:13:53.32ID:q+M6peU1
letってコンストラクターのwritable ホールスじゃなかったっけ?
あれ
0097名刺は切らしておりまして
垢版 |
2018/03/22(木) 11:02:33.79ID:G3nrFB+b
型推論してなくね?

変数名だけでいけるようにしろよ
0098名刺は切らしておりまして
垢版 |
2018/03/22(木) 12:31:02.33ID:xGM466qP
最近の高級言語はお互いのいいところをパクリあってるからどれも似たり寄ったりだよね
0101名刺は切らしておりまして
垢版 |
2018/03/22(木) 14:16:37.13ID:2ryZFl8C
>>73
上手いこと言うなぁちょっと感心したわ
0102名刺は切らしておりまして
垢版 |
2018/03/22(木) 14:29:19.01ID:iYFxXMZX
型推論ってタイプ量減らせるだけ?

キー叩く時間<<<考える時間<読む時間

だからきちんと型を書いておいてくれてたほうがうれしいんだが
0103名刺は切らしておりまして
垢版 |
2018/03/22(木) 16:46:44.65ID:pw76TikN
型類推とかイラネ
むしろガチガチにしてくれ
ガベコレはアタマ悪いから入れ替えられるのは良い
0105名刺は切らしておりまして
垢版 |
2018/03/22(木) 17:32:49.14ID:8T6aUMdb
>>103
むしろ、Javaに型推論がなかったのを知らなかったぞ。
あって当然な気がした。
ガチガチが良い人向けは、コンパイルのオプションとかで対応できるだろ。
0108名刺は切らしておりまして
垢版 |
2018/03/22(木) 18:31:37.03ID:KWE+/g8Y
>>102
ジェネリクスと組み合わせると最強

例えばこんなラムダ式があったとしよう
(a, b) -> { return a + b; }
こいつをint用とfloat用で使いたいが、わざわざ2つ作りたくない時とかな
0109名刺は切らしておりまして
垢版 |
2018/03/22(木) 19:28:22.01ID:Izp/ndXO
Map<String, Map<String, String>> hogeMap = new HashMap<String, Map<String, String>>();

みたいなソースも見たくないから、型推論は歓迎。
0111名刺は切らしておりまして
垢版 |
2018/03/22(木) 20:07:09.69ID:WE83Ghcj
>>84
Vectorなんてまだ使ってるの?wwww

もう10年以上も前にオワったものなのに
0112名刺は切らしておりまして
垢版 |
2018/03/22(木) 20:14:30.49ID:WE83Ghcj
>>102
コード見る時にいちいち型とか見てないね
変数名でほぼ分かるし、数値か文字列かオブジェクトかリストか
それくらいわかれば十分だわ
0113名刺は切らしておりまして
垢版 |
2018/03/22(木) 20:16:30.19ID:WE83Ghcj
>>102
迷ったら、変数名にマウスを当てれば、どんな型が教えてくれるし
ほとんどvarで問題なし
逆にvarで迷うってことは、変数の命名(英語)が悪すぎる
もしくは、言語を知らなさすぎるアマチュア
0114名刺は切らしておりまして
垢版 |
2018/03/22(木) 20:48:03.16ID:55rm8kpG
SIerのローカルルールで、var禁止な所は多くなりそうだな。
それ以前にJava10をまだ導入しないかw
0115名刺は切らしておりまして
垢版 |
2018/03/22(木) 21:11:13.14ID:sQlYxsjH
javaはコード長すぎて書く気も読む気もしなくなる。
型推論はすっきりするからありがたい。
0116名刺は切らしておりまして
垢版 |
2018/03/22(木) 22:30:38.30ID:n4J8TBa+
小規模な開発にJavaを使ってる所は型推論はありがちかもしれないけど
そもそも小規模な開発にJavaを使うのか?

Android開発とかなら使うかもしれんしPlayFrameworkを
使うような開発だったらありかもしれないけど
そもそもPlayFrameworkがJavaの癖してRails目指してて中途半端
0124名刺は切らしておりまして
垢版 |
2018/03/23(金) 22:44:43.84ID:4B9Sl1Ig
>>122
それじゃ省略具合が中途半端だろ。
var hogeMap = new HashMap<String, Map<String, String>>();
の方がずっとすっきりしていて良いよ。
0125名刺は切らしておりまして
垢版 |
2018/03/24(土) 00:12:11.24ID:yFKss8TC
Java10でてもどうせ現場じゃ使わせてもらえないんじゃねーの?
0129名刺は切らしておりまして
垢版 |
2018/03/25(日) 00:21:25.33ID:DUUE8Lpr
>>82
それは型推論と関係ない話
0131名刺は切らしておりまして
垢版 |
2018/03/25(日) 21:32:28.42ID:DUUE8Lpr
>>130
初心者お断りなので安全とも言える
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況