.NET 5とは?今後のリリース予定は?既存のアプリケーション対応は?!

はじめに

皆さんこんにちは!

闇落ちVBプログラマーの弊社(@jyuch)と申します!

最近マイクロソフトから発表された.NET 5について自分なりに調べてみました。

一般的に知られていない.NET 5のリリース予定や.NET Frameworkとの互換性、今後のリリーススケジュールについて調べてみましたので、ぜひご覧ください!

それではどうぞ!

.NET 5とは!?

.NET 5 とは .NET Core vNext の事で、.NET Core 3 の後継メジャーバージョンになる予定だそうです!

.NET Core に Unity や Xamarin などのMonoベースのランタイムを統合し、いままでプラットフォーム(デスクトップ開発、Web、モバイル・ゲーミング)ごとのバラバラだったものを統合することを目的としているそうです!!

.NET Core 3 でデスクトップ開発がポーティングされる為、.NET 5 ですべてのプラットフォームに対応できるようになるそうです!!!

.NET Core 3 の .NET Framework からのAPIポーティングとは!?

.NET Core は .NET Framework から5万ものAPIをポーティングし、その中には

が含まれるそうです

そのため、今後はデスクトップ開発でも .NET Core が使用可能になるということです!!

ただし、.NET Framework からのポーティングは .NET Core 3 以降は行われないとの事なので、Web Forms や WCF などは .NET Core では対応されないということです

そのため、Web Forms や WCF はそれぞれ Blazor や gRPC もしくは Web API で代替することをマイクロソフトは推奨しているようです

Workflowについては.NET Core へのポーティングが利用できるそうです!!

今後の .NET Framework の展望は!?

なんと、.NET Framework は 2019年4月18日にリリースされた 4.8 が最後のメジャーリリースになる予定だそうです!

つまり、これ以上の機能拡張は .NET Framework に対して行われない事になります!!

しかし、現在 .NET Framework で実装されているアプリケーションの互換性、さらに Windows .NET Framework に深く依存していることもあり今後もバグフィックスや安定性、セキュリティフィックスは適用されるそうです

また、今後も Windows に同梱されて出荷されるため、追加でインストールする手間は無さそうです

そのため、無理に .NET Framework へ移植する必要は無さそうです!*1

ただ、これから .NET Framework はフェードアウトする事を考えると、新規アプリケーションは .NET Core で実装したほうがよさそうです*2

また、アプリケーションのライフサイクルを適切に回し、 .NET Framework の EOL が来る前に既存アプリケーションを .NET Core に移行出来るように計画を立てた方がいいかもしれませんね!!

.NET (Core) 4 は!?

欠番となった .NET (Core) 4 について気になりますよね!?

なんと .NET (Core) 4 は .NET Framework 4.x 系との区別をつけやすくするためにわざと欠番となったそうです!!

.NET 5 のリリース予定は?その後のリリース予定は!?

.NET 5 は 2020年前半にRCがリリースされ、2020年11月にGAする予定みたいです

また、その後は1年ごとにリリースされ、偶数バージョンがLTSとなるようです!!

https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2019/05/dotnet_schedule.png

CoreCLRとMonoランタイムの統合とは!?

これまでの .NET Core には CoreCLR と呼ばれるJITベースのランタイムが使用されていました

.NET 5 ではMonoと呼ばれるランタイムが導入(統合)され、CoreCLR と Mono が相互に置き換えられるようになるそうです

Mono は CoreFX と呼ばれる.NET Core での BCL を利用可能にすることで単一のコードセットですべてのプラットフォームに対応させるそうです!

また、MonoにはAOTコンパイラがあり、それを利用することでネイティブコードを出力することが可能になるようです!!

ネイティブコードとしてコンパイルした場合、C++並みのフットプリントと実行速度を得られるそうです!!!

Java(Swift・Objective-C)との相互運用性は!?

まだ詳細は不明ですが、すべてのプラットフォームで Java と相互に運用が出来るそうです

Java言語そのものの事なのか、それともJava VMの事なのかが分かりませんでしたが、Java VMとの互換性ならばScalaとF#という地獄のような夢のコラボレーションが出来そうです!!!!!!!!!

また、一部のプラットフォーム*3では Swift や Objective-C とも相互運用できるそうです!

さいごに

いかがでしたか?

自分の理解の為に書いてみましたが、英語が読める方はこんなクソみたいな文体で書かれたクソみたいな記事を読まずに原典を読んだほうがいいかもしれませんね!!

それでは、ここまで読んでいただきありがとぅございました!*4

devblogs.microsoft.com

devblogs.microsoft.com

*1:って公式ブログにも書いてあるのでこれについては心配する必要はとりあえずなさそうです。

*2:マイクロソフトもそれを推奨している

*3:明言はされていなかったが、おそらくmacOSiOS

*4:疲れた