OracleJDK有償化

去年のDevelopersFestaSapporo2017というイベントに行ってきて、

日本オラクルの方のプレゼンでJava有償化に触れていました。

(今年も出席したい・・・)

www.devfesta.jp

 

Javaの開発ツールJdk(正確にはOracleJdk)が有償化するそうです。

OpenJdkが現在のJdkレベルまで引き上げられて、

無償で使いたい人はOpenJdkを使ってねという感じのようです。

ただ、企業でJavaを使っている場合は長期サポート付けたほうが良いので

OracleJdkを使っていった方がよいという意見があります。

 

来月にはJava 10が登場し、9月にはJava 11が登場予定。

新しいリリースモデルを採用した今後のJava、入手方法やサポート期間はこう変わる

(OpenJDKに関する追記あり

www.publickey1.jp

上記リンクの抜粋ショットです。

f:id:tri-development-center:20180904132622p:plain

商用で使うのは2019年1月までサポートのようです。

OracleJdk11からは有償モデルで、OpenJdk11を使わなければ有償のようです。

Jdk9やJdk10は半年程度しかサポートされないので、ほんとに「繋ぎ」にしかならないです。

KotlinなどのJavaコンパイルするJVM言語がせっかく流行ってきたのに、いったいどうなるんでしょうか(影響ないのか全然わからない・・・・)。

 

Java有償化でかかる金額などについてはこちらが分かりやすいです。

2018年にJavaを利用している人は全員理解すべきことを説明してみる(追記あり

www.orangeitems.com

上記リンクの抜粋ショットです。

f:id:tri-development-center:20180904132922p:plain

1プロセッサあたり年間60万円はなかなかハードル高そうです。。。

ただ、Java有償化まわりの情報は各ベンダーの意向もあってなんだか流動的です。

(各ベンダーの意向がありすぎてJavaの更新が進まない現状もあるのですが…)

 

フレームワーク

フレームワークとは、骨組みのようなものです。
アプリケーションを開発する際は、
お客様が要望される機能や画面を、
骨組みに肉付けするように作成することで、
提供しています。

アプリケーションフレームワーク - Wikipedia


WebであればApacheStrutsというフレームワーク流れが多かったのですが、
Strutsには脆弱性が見つかり、また多種多様なフレームワークが登場しています。

様々な特徴を持ったフレームワークが存在することで多様性があるということは
理解できますが、エンジニアにとっては学習コストが多くてなかなか大変です。


代表的なフレームワークを挙げます。


Apache Struts

Webアプリケーションフレームワーク。言語はJava
ApacheTomcatというWebサーバ上で動作します。
広く一般的だったが脆弱性により情報漏洩の被害が発生し、今では選択されない。

Welcome to the Apache Struts project


Spring

Webアプリケーションフレームワーク。言語はJava
様々な機能を持ったモジュールで構成されており、
ネットでも情報が豊富に存在しているので、
Strutsから選択されることも多い。

spring.io


Seasor

Webアプリケーションフレームワーク。言語はJava
一般的には骨組みと肉付けの対応は設定ファイルによって定義されるが、
Seasorは「設定よりも規約」という概念で作られており、
規約(例えばファイル名など)に従うことで動作するので
設定ファイルが少なくて済むのが特徴。
国産だが、2016年で終了(EndOfLife)。残念。

www.seasar.org


RubyOnRails

Webアプリケーションフレームワーク。言語はRuby
Railsとも呼ばれる。これも「設定よりも規約」タイプ。
サーバからクライアントまで一貫してカバーするフルスタックフレームワークの先駆者。

github.com


Express

Webアプリケーションフレームワーク。言語はJavaScript(Node.js)。
Node.jsと言われるJavascriptエンジンで動作するWebサーバのスタンダード。
MongoDB(Database), Express(WebFramework), AngularJS(MVCFramework), Node.js(JavascriptEngine)
の頭文字をとってMEANと言われる統合環境がフルスタックフレームワークとして成長しつつある
(サーバからクライアントまでJavaScriptJSONだけで統一できる)。

Express - Node.js web application framework


このほかにも数えきれないほどのフレームワークが存在します。
すみません・・・。


個人的には2006年くらいから開発業務している私にとって
コマンドひとつで環境が自動的に構築できるようになってきたことが脅威と感じます。
それはパッケージ管理システムが潤沢に機能するようになったことが要因です。
Linuxには早くから機能が実装され、BSD系であればports、Debia系であればapt、Redhat系であればyumというコマンドが代表的です。
(2006年当時はyumは無くてrpmを自分でかき集めてインストしていた…)

これがプログラミング言語でもサポートし、
RubyであればGems、Node.jsであればnpmのコマンドを使えばサクサク環境が構築できます。
便利な時代になりました。

NOSQL

システム開発にてデータを保存する際、Oracle,MySQLをはじめとするリレーション型のデータベース(RDBMS)が一般的に使われてきました。SQLと言われる言語を用いて、データを登録・更新・削除を行うシステムです。データ間に連携がある場合にもSQLは柔軟に対応しており、SQLを覚えることはデータベースアクセスに必須の言語でした。

 

昨今では、NOSQLと言われるデータベースが登場しつつあります。SQLを使わずにデータを登録・更新・削除する仕組みです。


個人的に私が経験したNOSQLなデータベースは以下です。

Apache River

私が経験したときはまだSunMicrosystemsが運営しておりJiniと言われていました。Javaのクラスをネットワーク上に共有する分散システムです。ストレージではなくネットワーク上の共有空間に、問合せやトランザクションが張れる仕組みでした。
※jiniはNOSQLという言葉が出てくる前の遠い昔の技術です・・・。

Apache River -

 

Realm

モバイル向けDBから始まったデータベースです。RealmObjectを継承したクラス単位にデータ保存が可能です。Androidアプリ開発では非常に便利に使えました。

realm.io

 


いま気になっているデータベースはこれです。

MongoDB

大量データを捌くために開発されたデータベースです。
JSON単位でデータ保存が可能。利用率は世界第4位との情報も見受けられます。 www.mongodb.com

 

 

あとは大手クラウドは以下のようなサービスを展開しています。

 

Firebase

Google社が運営。GoogleCloudPlatformと連携可能。MonogoDBから始まってリアルタイムデータベースへ。データの変更がAndroidへリアルタイムにプッシュされたりします。

またモバイル側がオフラインでもモバイル側のキャッシュで動作するので、サーバレスなアプリが開発も可能と言われています。

firebase.google.com

 

DynamoDB

Amazonが運営。AWSで利用可能なデータベースです。

aws.amazon.com


CosmosDB

Microsoftが運営。Azureで利用可能。

azure.microsoft.com

 

CSSフレームワーク

PCでもタブレットでもスマホでも
Webサイトが綺麗に見れる「レスポンシブWebデザイン」

レスポンシブ対応のWebサイトを構築する上で
近道としてはCSSフレームワークと言われるものを適用するという方法があります。

※ただしCSSフレームワークによってはカスタマイズが利きにくいものや、
 他のライブラリと競合すると場合があるので、実際に使用する際は吟味しましょう。

昨今注目されているCSSフレームワークを挙げてみます。

 

BootStrap

getbootstrap.com

広く用いられているので、機能やテーマが多かったり、
困ったときの情報検索で引っかかることも多いです。
ただしclassがガチガチに定義されているので競合することが多く、
また機能が多い分データ容量が大きく、表示が重たいという難点もあるようです。


Foundation

The most advanced responsive front-end framework in the world. | Foundation

Bootstrapと同じくらい豊富な機能があり、
Bootstrapの次くらいにメジャーなフレームワークです。


UIKit

getuikit.com

マテリアルデザインのページが作れるフレームワークです。
UIコンポーネントも豊富かつ綺麗で、class設計も比較的わかりやすいです。

 

GoogleMapAPI

今更ですが、2018/06/11より、GoogleMapAPIがGoogleMapsPlatformに変わったそうです。これによって料金体系がガラリと変わったみたいです。

 

APIKeyを取り直さないといけなさそうだったりするのかな・・・汗

cloud.google.com

 

個別料金表(※2018/07/16から適用)

cloud.google.com

 

以下は関連サイト情報

www.marie-web.design

 

jp.techcrunch.com

 

maps.multisoup.co.jp

 

Firebase

Firebaseをご存知でしょうか。

Googleが提供するサービスです。
一言で説明できないくらい用途が多岐に渡っており
ごった煮のように見えます。

・リアルタイムデータベース
・クラッシュレポート解析
クラウドストレージ
・認証システム
ホスティング
・アプリテスト
・アプリのパフォーマンス分析
・メッセージ通信
・アプリのリモート設定
・広告


正直、方向性が無いように見えますね・・・。
ただ、根幹はリアルタイムデータベースにあるように思います。
(リアルタイムデータベースで実現しているように見える)

サーバ側で値が変化すると、自動的にアプリ側へPush通信される
(アプリ側でPull通信する必要がない)
ところが「リアルタイム」といわれています。

また、アプリがオフラインだとしても
内部で持っているキャッシュを使って処理を行い
オンラインになったときに同期するそうです。


アプリ開発者にとってサーバとの同期処理や通信、データベース処理は
なかなかめんどくさい部分になりますが、
このまわりをフォローしてくれるのはとても良い技術のように思います。
Googleが「アプリをすばやく作成」と言っているだけあるように思います。


ただしリアルタイムデータベースは
JSONベースのNoSQLになっているので、
リレーショナルデータベースに慣れた技術者には
敷居が高いように思います。

RealmのようなNoSQLなデータベースが増えてきているので、
多様なデータベース技術についても身につけていく必要がありそうです。

 

firebase.google.com

 

プログラマが知るべき97のこと

プログラマ向けの技術書や自己啓発書は数多くあります。

以下で、内容がサイトへアップされているところを見つけました。

 

xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com

 

自己啓発系については、全部鵜呑みにせず

本当に自分に必要なものなのかを精査しながら読むとよいと思っています。

まだ2~3エッセイしか読んでいませんが、

なるほどなぁと思うことが多かったです。

 

あとは、以下の書籍が気になっていますが、まだ手が出ていません。

www.oreilly.co.jp