Oracle Java有料化で揺れた2018年
「Javaは、終わるのか?」
なんて記事を書いて お叱りを受けたIT小僧です。
「Javaは、終わりじゃないけど 緩やかに減少してCOBOLのようになるだろう」
というIT小僧の意見は、ひとまず置いておいて
Androidのアプリは今後、Kotlinを推奨すると米国時間2019年5月7日に発表しました。
今回のIT小僧の時事放談は
Kotlinが、Androidアプリ開発の推奨言語になった。Javaからの脱却が進む 「Google I/O 2018」
と題して、世界最大数のデバイスの開発推奨言語が変わる意味について考えてみよう。
今回も小難しい話をわかりやすく解説しながらブログにまとめました。
最後まで読んでいただけたら幸いです。
スポンサーリンク
目次
Kotlin First
「Google I/O 2018」開催期間の米国時間2019年5月7日
Googleは、「Android上の開発言語としてKotlinを推奨する」と発表しました。
Androidの「チーフアドボケイト(Chief Advocate)※1」であるChet Haase氏が
「次の大きな一歩は、全面的にKotlinファーストにしていくことだ」
とコメントが出ています。
※1 チーフアドボケイト(Chief Advocate)
エンジニアに向けて最新技術をわかりやすく紹介する仕事をする偉い人
また以下のようなコメントもありました。
「Android上の開発は、今後ますますKotlinファーストになっていく。Jetpackの新しいAPIや機能も、最初はKotlinで提供される。新しいプロジェクトを始めるときは、それをKotlinで書くべきだ。Kotlinで書くとコードの量が相当少なくなり、コードをタイプし、テストし、メンテナンスする量が軽減される」
Chet Haase氏
これまでAndroidアプリケーションは、Javaで書かれることが多かったのですが、これでAndroidのアプリケーションは、JavaからKotlinに本格的に移行することになることが決定的になりました。
Androidアプリケーションは、入れ替わりやバージョンアップなどが多いため、やがてJavaは消え去ることになるでしょう。
「Google I/O 2017」でAndroid Studio IDE(Google 開発環境)でKotlinをサポートしてわずか2年でJavaからKotlinへと流れが決定的になりました。
Kotlinってどんなもの
例のごとくウィキペディアで調べてみよう
概要
Kotlin(コトリン)は、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、静的型付けのオブジェクト指向プログラミング言語である。
中略
Kotlin言語は、ロシア連邦レニングラード州都のサンクトペテルブルクにある、ジェットブレインズ社の研究所で生まれた。
ジェットブレインズ社は Java、Ruby、Python などのプログラミング言語による開発環境などを開発して販売してきた。Kotlin言語は、同社の経験を活かしJava言語をもっと簡潔・安全になるように改良した産業利用向け汎用言語として開発され、2011年7月20日に発表された。
オペレーティング・システムによらずJava仮想マシン上で動く。Java言語で書かれたプログラムと同じほど速くコンパイルされ同じほど速く動作するとしている。Wikipedia
https://ja.wikipedia.org/wiki/Kotlin
Javaから生まれた派生プログラム言語のひとつである。
名称
コトリン島にちなんで命名された。コトリンは、開発の地サンクトペテルブルクに近いバルト海フィンランド湾にあり、全長約12kmの細長い島である。
もともと Kotlin というのはやかんを表すフィンランド語であり、Kotlin 言語のロゴマークもやかんである。
公式サイトには「この島から名前が付いたコトリン型駆逐艦というのがありますが、Kotlin 言語は別にクラスを駆逐しようというわけではありません」や、Java の由来がコーヒーであることにかけて「この島ではコーヒーなどの外来植物はあまり作っていないと思います」というジョークが掲載されている。
Wikipedia
https://ja.wikipedia.org/wiki/Kotlin
Kotlin=ことりん島=ヤカン?
Java の由来がコーヒーであることにかけて
「この島ではコーヒーなどの外来植物はあまり作っていないと思います」
なんてジョークが言われていたり済ます。
何が優れているか?
Java言語をもっと簡潔・安全になるように改良した産業利用向け汎用言語として開発
なんと言っても Java 言語よりも簡潔に書けることを目指しています。
同じことをJavaで書くよりKotlinで書いたほうが、少ないコードで書くことができるため、テストやデバッグが、楽になるという有利な面を持っている。
特徴的な機能は以下のとおりですが、エンジニア以外の人は??だと思うので気にしないで先に進んでください。
- 静的なNull安全の保証
- 演算子オーバーロード
- 高階関数(クロージャ)
- ミックスインと第一級デリゲーション
- プロパティ(フィールドはない)
- ジェネリクス宣言側における変性指定 (declaration-site variance) と型投影 (type projection)
- 拡張関数
- モジュールとビルド基盤
- インライン関数(オーバーヘッドなしクロージャ)
- パターンマッチング
- Java との相互運用性(Kotlin から Java を呼び出すことも、Java から Kotlin を呼び出すこともできる)
KotlinについてのキーノートもYouTubeで公開されているので興味のある人は、見てください。
Google開発者向けページ
Googleの開発者向けのページには以下のように記載されている。
Kotlin では、より質の高い Android アプリをより速く記述できます。Kotlin は、生産性とデベロッパーの満足度を高める、静的に型付けされた最新のプログラミング言語です
1.最新式で機能が豊富
2.より安全なコード
3.相互運用性
Kotlin で Android アプリを開発する
https://developer.android.com/kotlin?hl=ja
詳しくは、上記のリンク先をみていただくとして
- Javaとの互換が限りなく100%
- Javaのライブラリやフレームワーク利用
- シンプルでわかりやすいコード
- バグを未然に防ぐ「Null安全」という機能
既存のシステムで使われている言語と同時に使えない場合は、新しいプログラミング言語の導入が難しい場合があるでしょう。なぜなら、それまで記述してきたコードがムダになってしまうからです。
しかし、KotlinはJavaとの連携がしっかり考えられているので、Javaを使っていた既存のプロジェクトにおいてもシームレスに利用できるのでとても便利です。
政治的背景
Javaの使用についてOracle社との訴訟が継続中
裁判のざっくりとした経過
2010年1月
Javaを所有していたSunをOracleが買収
2010年1月
「GoogleのAndroidがJava APIを無断で使用している」としてGoogleを特許侵害と著作権侵害で提訴
以後 2008年まで続く
最初の裁判
特許侵害は認められないと判決
その後
一部の著作権侵害は認められたものの賠償金は認められない。
控訴審
Java APIに関して、著作権保護の対象と認められる判決
さらに
Googleは米国の著作権法で定められた―公正な理由であれば著作権保護の対象物を権利者の許諾がなくても利用できる権利(フェアユース)を主張
連邦地裁はこれを認めて形勢が逆転
ところが
2018年3月
Oracleの控訴審においてフェアユースを認めないとの判決が下り Oracleの勝利
負ければ
Googleが最大で1兆円もの巨額な賠償金を支払うことになる
も大きなインパクトがあるが、それよりもAPIに著作権が及んだ判例を生むことの方がインパクトが大きいかもしれない
2019年1月24日
連邦巡回控訴裁判所が下したオラクルに有利な判断を不服として最高裁判所に上訴
ということでまだ決着がついていません。
Oracle社は、GoogleにJavaの使用料支払いを求め、Googleは、無料で利用できるべきだと主張している。
Android開発者は、Kotlin支持
Oracle Javaを有料にしたり、裁判したり、面倒くさい Javaとはおさらばしよう。
なんて、技術集団のGoogleは、考えないと思うけど
「古臭い Javaを捨てよう もっと素晴らしいKotlinあるよ」
というあたりでしょうか?
多くの技術者は、Kotlinに乗り換えたらJavaには戻れないという話が多く
Androidデベロッパーの50%以上が、Kotlinでアプリ開発をしているという話がGoogleより出てきました。
[amazonjs asin="4865940391" locale="JP" title="Kotlinスタートブック -新しいAndroidプログラミング"]
まとめ
世界で一番多く使われているデバイスの開発言語が、JavaからKotlinに変わることが決定的になりました。
今回のGoogleの発表の影響は、大きく、Androidの世界では、Java縮小が決定的になるでしょう。
いろいろと批判はあると思いますが
「Javaは、終わりじゃないけど 緩やかに減少してCOBOLのようになるだろう」
というのは、現実味を帯びてきました。
少なくても、Androidのアプリ開発でこれから Javaで開発する意味はなくなることになくなるでしょう。
-
「Google I/O 2019」開催 Pixel 3aの発表ばかり注目されるけど「Building a more helpful Google for everyone」ここが一番大事なこと
[amazonjs asin="4023317284" locale="JP" title="世界最高のチーム グーグル流「最少の人数」で「最大の成果」を生み出す方法"] Googleが開発者カンファ ...
-
Googleアシスタントが、秘書から家族になろうとしている。 「Google I/O 2019」
「Google I/O 2019」世界をリードするIT企業の開発者に向けた3日間が終わろうとしています。 日本のIT関連のマスコミは、世界最先端のAIを搭載したスマートフォン Pixel 3 そのミド ...
スポンサーリンク