Java有償化に関する影響や価格や今後のすべて!
19/01/24 15:55:43 19/05/05 17:44:31
Java11からJDK(Java Development Kit)が有償化されました。
このページではJavaの有償化に関してのすべて・・例えば、そもそもJDKとは何か、有償化の結果どのような影響がもたらされるのか、価格はいくらか、無料でできる代替案はないのか、といったことを解説していきます。
▼Oracle版のダウンロードはこちら(Linux/macOS/Windows/Solaris SPARC用)
https://www.oracle.com/technetwork/java/javase/downloads/index.html
▼OpenJDK版のダウンロードはこちら
http://jdk.java.net/
目次
JDK(Java Development Kit)とは
JDKはJava開発に必要な開発キットで、各種ツールをひとまとめにしたものです。よく似たものにJRE(Java Runtime Environment)がありますが、これはJavaで作られたアプリケーションを動かすためのものです。
JREはJDKの一部で、JDKをインストールするとJREもセットで入っています。基本的にJavaで開発する際にはJDKを使用するため、今後は有償で開発せざるを得ないと思われるかもしれません。
しかし、既存のシステムでも新規のシステムでも無償で開発する方法が一応はありますので、その点についても記載していきます。
ちなみにJDKにはいくつか種類がありますが、有償化されるのはオラクル社から正式に出されているJDKです。
Java11のリリース日
Java 11の正式版は2018年9月25日にリリースされました。このJava 11正式版は、2017年9月から半年ごとにバージョンアップを繰り返しており、ちょうど1年目となるバージョンとなります。
Java11の価格
Java11から有償化されるということですが、気になるのは、ではいったいいくら掛かるのか?ということです。具体的な金額は以下のようになっています。
ユーザー1人月額 | プロセッサ価格月額 | |
Java SE Advanced Desktop | 4,800円 | – |
Java SE Advanced | 12,000円 | 600,000円 |
Java SE Suite | 36,000円 | 1,800,000円 |
Java SE Desktop Subscription | ~300円 | – |
Java SE Subscription | ~3,000円 | – |
また、Java10以前のバージョンのサポートがいつまでなのかという疑問が出てくるかもしれませんが、それについては自分のバージョンに該当するもので検索した方が良いかと思います。
それぞれのバージョンの情報や、一覧表はオラクルの公式ページ等に掲載されています。サポート期間が切れたら使えなくなるというわけではありませんが、セキュリティ対策等が一切施されなくなるので、システムに脆弱性が生まれます。
サポート期間内であればオラクル社がたとえば実際にあったセキュリティ攻撃等の情報を集めてそれに応じた対策を作って更新します。それがなくなるということはハッカーなどが時間を掛けてセキュリティを破ることができ、なおかつ一度破られたら対策できないことになります。
重要なシステムであればあるほどサポートは重要なので、サポート切れのJDKは使わない方が良いでしょう。逆に個人開発のアプリで個人情報を扱わないようなシステムなら、サポートが切れていてもさほど問題ではありません。
Java11で追加された機能
- Nestベースのアクセス制御機能「Nestmates」
- 動的クラスファイル定数「condy」
- 新しいガーベジコレクタ「ZGC」の追加
- ラムダパラメータ用のローカル変数構文
- ラムダ式でのvarを用いた型推論(Java10まではvarを用いた型推論ができませんでした。)
- 新しいHTTP Client(正式版標準HTTPライブラリ、Java9、Java10でも実験的に導入されていましたが、Java11より正式リリースとなっています。)
- シングルJavaファイルからの即時Java実行(一つのJavaファイルならコンパイルせずに直接javaコマンドで実行可能)
- Unicode 10のサポート
- セキュリティ機能・APIの強化(TLS1.3のサポート・暗号・署名機能の強化)
- Javaのモニタリング機能の強化(Flight Recorderの追加等、これについてはOpenJDKの方にも追加された機能です。)
削除・変更された機能
Java11で削除された機能
こちらがJava11で削除された機能です。
- Java EEモジュール(具体的なライブラリとパッケージについては後述)
- CORBAモジュール
- Web Start
- Applets
- JavaFXモジュール(オープンソースでOpenJFXというものがあります。)
Java EEモジュールで削除された機能
Java EEモジュールで削除されたものは以下です。
- JAXB (XMLとJavaとのバインディングAPI) – java.xml.bind
- JAX-WS (XMLベースのWEBサービス用API) – java.xml.ws
- JAF (JavaBeans Activation Framework ) – java.activation
- Common Annotations – java.xml.ws.annotation
- CORBA – java.corba
- JTA (Java Transaction API ) – java.transaction
変更された機能
- Java Script Engine (Nashorn)を非推奨レベルに変更
- Pack200形式の圧縮ツールとAPIを非推奨レベルに変更
Java有償化の影響
上記の通りJava11から有償化されましたが、これによってどのような影響があるのでしょうか。
影響の受け方は開発状況によってまちまちです。Java11の導入を予定しておらず、前のバージョンを今後も継続利用する場合当然有償化の影響はゼロです。
もちろんサポートが切れるという問題がありますが、今までもサポート切れのバージョンを使用しているケースは多々あったので、それに関しては今まで通りです。バージョンを更新すると不具合につながる可能性があり、またテストの手間も発生します。
Javaが有償になるかどうかに関わらずバージョンアップする予定のないシステムも多いはずです。サポートの充実した最新バージョンに切り替えていきたい場合、有償化により上で説明した金額が掛かってきます。
Android開発への影響
JavaのWebシステムは有償化の影響を受けるものもあればそうでないものもありますが、Androidアプリはどうでしょう。なぜAndroidアプリへの影響が懸念されるかというと、AndroidアプリはJavaとkotlinがメインで使われており、なおかつkotlinはJVM(Java Virtual Machine)上で動きます。
JVMはOSに依存せずにシステムを動かすことのできる環境ですが、Android開発ではkotlinもJVMで動かすことが多いです。しかし、実際のところAndroidアプリにおいては必ずしもJDKが使われているわけではありません。
Androidアプリ開発でJava有償化の影響を受けるかどうかは、JDKで開発を進めているかどうか、Java11を使用するかどうかによります。
今後も無償でJavaを使う方法
上で説明した通り、Java11より前のバージョンを使い続ければお金が掛かることはありません。今後サポートが切れるというデメリットがありますが、無料で使えることや、環境を入れ替えなくて良いというメリットがあります。
既存のシステムであれば古いJDKを使い続けるのも良いのですが、これから開発する際にあえてJava10以前のバージョンを選択するのは抵抗があるかもしれません。そこで、別の方法も用意されています。
OpenJDKを使用する
OpenJDKは、オープンソースのJDKです。機能的にはオラクルのJDKとそこまで変わらず、実装面で不便はないでしょう。今までは、どっちのJDKを使ってもいいけど、オラクルの方が情報が充実しているからオラクル製を使う、といったような選び方でした。
しかし、オラクル製のJDKが有償化されるとなると話は変わってきます。今後OpenJDKの使用率が増える可能性は高いでしょう。OpenJDKならお金が掛かる心配はありません。ただし、半年間しかサポートされないという欠点もあります。
サポートされないと言っても、あくまでもそのバージョンのサポートが終了するだけです。新バージョンに切り替えれば新たなサポートが提供されます。上でも説明した通りサポートが切れたシステムは脆弱性を持ちますが、OpenJDKでセキュリティを守るためには半年ごとにバージョンアップするしかありません。
バージョンアップするとバグが発生する可能性があり、何よりシステムをJDKに合わせて作り直すのは面倒です。そのため、OpenJDKを使用するならサポートがない前提で考えた方が良いでしょう。
半年でサポートが切れますが、毎回新しいサポートのあるバージョンに更新するのは面倒なので、現実的に運用を考えるとサポートなしと考えた方が良いということです。なので、個人情報を取扱うようなシステムはOpenJDKが選ばれることはないでしょう。
逆に、無課金のゲームなどであればセキュリティ面がそこまで重要にはならないので、OpenJDKをサポート切れの状態で運用してもあまり問題ないでしょう。同じゲームでも課金制のものだと少々危険かもしれません。
現状の市場動向と今後の予測
Javaの有償化は以前から発表されていますが、それにより市場にどのような影響が出ているのでしょうか。
結論としては、意外に何も変わっていない印象を受けます。特にJava案件の求人が減ったということもなく、エンジニアの間でJavaを避ける動きも特にありません。
Javaの市場感は?
基本的にプログラミング言語はただのツールなので、「今のところ無償で使えるならまだJavaを使っておけばいいか」「いよいよ有料で使わざるを得ないなら別の言語を使えばいい」くらいに考えている人が多い印象です。
もちろんJavaだけに依存している企業やエンジニアなら危機的な状況なのかもしれませんが、実際そういった状況はあまり多くありません。Javaができれば簡単に他の言語に応用が利きますし、Javaが有償化されなくても各プログラミング言語は多様化しています。
たとえばPythonは人工知能にもWebシステムにも強く、PHPは小規模開発でJavaよりも便利、スマホでの運用も考えるとkotlinやSwiftも使えた方が良いか、といった具合に昔よりも言語をまたぐ人は増えています。
Javaの今後は?
有償化によってJava離れが特別進んでいるわけではありませんが、有償化の有無に関わらずJavaが市場を独占する状況は終わっていくと思われます。Javaの市場が縮小するというよりは他の言語が台頭して相対的にJavaが市場を独占できない状況になるのですが、今回の有償化はむしろ後出しと考えることもできます。
つまり、有償化によってJavaの市場が縮小するのではなく、Javaの市場が縮小してきたから有償化するイメージです。今までJavaで作っていたようなシステムが他の言語で作られるケースは増えていますが、もともとJavaで作られていたシステムはわざわざ他の言語に書き換えずにそのままJavaで運用しても不都合はありません。
なぜならJava言語自体は優れているので、トレンドに合わせた改修などもできるからです。そして、既存のJavaシステムはサポートが切れたらバージョンを切り替える運用が一般的でした。
つまり、オラクルからすると新規でJavaユーザーを獲得するのが難しくなっているが、既存のユーザーは十分に存在する、という状況になっています。既存のユーザーだけでは今までほど収益を得るのが難しくなったので、有償化した、とも考えられます。
オラクルの考えは?
もちろんオラクルが明言しているわけではありませんが、「Java有償化のターゲットは今後Javaで作られるシステムではなく、既存のJavaシステム」と考えることができると思われます。有償化してもしなくてもどうせ縮小するなら、有償化して既存のJavaシステムから収益を得た方が良いということです。
ではなぜ有償化によって既存のシステムから収益を得られるのかというと、サポートと切り替えコストの問題です。既存のJavaシステムはサポートが切れたらバージョンアップをする運用がされているケースが多いですが、今までは無償でした。
Java11以降は有償になりましたが、それでもサポートが切れることを考えるとバージョンアップせざるを得ないということです。また別の言語に書き換えることも考えられますが、その方がコストが掛かるケースも多いでしょう。
悪く言えば、オラクルは新規のJavaユーザーはどうせそれほど増えないということで新規獲得を捨てて、既存のJavaユーザーがお金を払わざるを得ない状況を作ったということです。
Java有償化に伴う代替言語
Javaが有償化したことにより、代替言語を使用する動きも見て取れます。
上記の通り既存のJavaシステムでサポートが必要な場合仕方なく有償化を受け入れているのかもしれませんが、今から作られるシステムはあえてJavaを選ばなくなっています。
また、あえてバージョンアップしてサポートを受けるのではなく、セキュリティに関わる重要な部分のみ別の言語に書き換えるといった方法を取る企業も多いようです。詳しくは企業の技術ブログやエンジニアのブログ、SNSなどで配信されているため、気になる方はリサーチしてみると良いでしょう。
具体的な代替言語はシステムにもよりますが、PHP、Python、Ruby、C#、あたりが有力です。
言語構造上もっともJavaに近く書き換えやすいのはC#なので、既存のJavaシステムで有償サポートを受けずに書き換える場合C#が使われるケースが多いです。
ただし伸び代という観点ではPHP、Python、Rubyが強く、新規のシステム開発ならこれらの言語が人気です。従来までJavaで作られていたようなシステムをこれらの言語で代替するイメージです。
もちろん絶対に既存のJavaシステムの書き換えはC#、新規開発はPHP、Python、Ruby、と切り分けられているわけではありませんが、そういった傾向があるということです。新規にC#で開発されることもあれば、PHP、Python、RubyなどでJavaシステムの書き換えが行われることもあります。
Java有償化の個人開発への影響
個人開発や小規模な受託開発などでは比較的早い段階からJava離れが進んでいました。有償化の話とは特に関係ないのですが、有償化されるならなおさらJava離れが進む可能性は高いでしょう。
企業の業務システムなどは有償化と関係なく継続してJavaが使われることも考えられますが、小規模だとあえて有料のJavaを使わずとも、PHPやPythonやRubyの方が無料で効率的な開発ができるからです。
ここ数年は特に世界的にフリーランスエンジニアの人口が増えており、今後もその動きは加速するでしょう。フリーランスの方が自由度の高い働き方を実現しやすく、なおかつエンジニアはパソコン一台あれば仕事ができるため、フリーランス化しやすいからです。
会社員ではなくフリーランスの働き方を選択したいという理由でエンジニアになる人も多いです。その結果フリーランス向けの開発案件、小規模システムが増えており、PHP、Python、Rubyあたりの需要は伸びています。
これに関してはフリーランス求人や受託案件を募集しているサイトを見ればすぐにわかるので、気になる方はぜひ確認してみてください。常駐型の案件だとフリーランス向けでもまだJavaが一番多いようですが、PHPは特に確実に案件数が増えています。
Pythonも人工知能の開発案件が増えているのでそれに伴い増加しています。また常駐ではなく在宅での受託案件だと、Javaの案件数は確実に減少している印象を受けます。スマホアプリやWeb案件だとステップ数がそこまで多くないので、Javaだとかえって扱いにくいです。
在宅の受託案件は非公開のものも多く統計が取れないのであくまでも私の主観ですが、Python、Ruby on Rails、PHP、が多く、ここ1、2年位限ればRuby on Railsが激増しているように感じます。
まとめ
以上Java有償化について解説してきましたが、もっともJava有償化の影響を受けるのはセキュリティ面が重要で、なおかつ規模の大きいJavaシステムを長年稼働させている企業でしょう。
サポートが切れた状態で古いバージョンを使い続けるのは危険で、別の言語に書き換えるにはコストも労力も掛かる、有償化でもバージョンアップした方がコスト的にメリットがある、といった状況になるからです。
Java以外の言語も含めて流動的に開発している企業や、フリーランスのエンジニアはほぼ影響がありません。Javaの有償化に関係なく他に伸びている言語があるので、そっちに目を向けた方が良いでしょう。
とはいえ、Javaを勉強する価値がなくなった、Javaでシステムを作るのは非効率、というわけではありません。Javaのスキルを身に付ければ他の言語にも応用が利き、また現状は無償で作れる、サポートが不要なシステムなら有償化は関係ない、といった事情もあります。
Javaの有償化のことも頭の片隅に入れつつ、トレンドを踏まえたうえで複数のプログラミング言語や技術に目を向けていくのがおすすめです。
Javaのフリーランス案件をチェック
人気記事