数多くあるプログラミング言語のうち、Javaは高い人気を誇っている言語です。少なくとも企業情報システムにおいて普及しています。Java界隈での開発技術について整理したいと思います。
(お断り:弊社の経験や現在の考えに依る内容となりますのであくまで参考です。また、網羅性はなくトピックの粒度を意識したものではありません。)
どれを選ぶ?~言語、バージョン、VM~
JDK(Java Development Kit)の観点
- OpenJDKはOracleを含むコミュニティが実装したオープンソースで、Redhatに対するFedoraのように新機能を取り入れながらバージョンアップのスピードが速くなっています。
- OracleJDKは2019年4月にライセンスが変更され商用利用には注意が必要です(詳細略)。
- 言語仕様としてのJavaの実装として、他にも、AdoptOpenJDK 、Amazon Corretto、Zulu OpenJDKといったものも選択肢として登場しています。これ以外にもあります。
JVM系言語の観点
Kotlin
NULL安全やイミュータビリティを積極的に取り入れた言語で、文法上はあまりJavaと互換性がありません。しかし、Javaと相互運用できるため、既存システムの修正や機能追加などで部分的にKotlinを採用することも可能です。クラスライブラリなどはJavaと共通でありJava開発者が新たにライブラリの使い方を覚える必要がないなど、Javaからの移行が容易です。
またAndoidアプリ開発の推奨言語の一つであり、近年注目されている言語の一つです。
Scala
関数型とオブジェクト指向のマルチパラダイム言語です。Kotlinと同様にJavaと相互運用が可能で、クラスライブラリなども共用できます。Kotlinより歴史は古いのですが、関数型言語であることを活かすにはアーキテクチャの見直しを迫られることになり、Javaとの相互運用は局所的になりがちでした。
関数型言語で実装されたシステムの安定性や高い性能が話題になるとともに、Scalaの人気も上がってきています。
開発環境の選択肢も言語レベルからバリエーションが増えています。
Webアプリケーションのフレームワークの選択
以前はStrutsやSeasar2といったフレームワークの名前をよく聞きましたが、今はSpringがほぼデファクトスタンダードとなっている感が強くなりました。 (実際、弊社でもSpringへのモダナイゼーションのご相談がこの数年多くなりました)
Springにもいくつものフレームワークがありますが、その中で大事なものを以下にあげます。
Spring MVC
Spring MVC は他のMVCフレームワークと同様、要求リクエストとJavaのオブジェクト・メソッドをマッピングします。Strutsの問題点(MVC分離不十分、巨大な設定ファイル、単体テストしにくい)などの問題点を克服し、実装が容易であります。なお、Spring MVCはSpringフレームワークのIOCコンテナと密に結合しており、他のSpring機能を利用し易くなります。
Spring Boot
普通のJ2EEのアプリでは、コンテナ(Tomcatなど)がインストールされている状態で設定を行い、アプリ(war, earなど)を配置して動かします。Spring Bootで作成したアプリでは、スタンドアロンで動作できます。設定や配置などの作業は不要なため、開発運用効率が劇的に改善されます。そのため、JavaでのMicroservice構造のシステムはSpring Bootで容易で構築できます。
Spring Security
Spring Securityはウェブシステムの「認証」や「認可」のセキュリティ機能を提供しています。Spring Securityを利用することでOAuth, OpenID, SAMLの接続が簡単になります。
いずれにしても特に企業システムにおいて、JavaとWebアプリケーションというコンテキストがあった場合には、Springが選択肢の1つになる状況はしばらく変わらないと考えます。
今後の開発
既存システムを活用する場合
企業にはJavaで作られたシステムが多くあります。今後これらのシステムに必要となるのは、以下のような方向性があると考えます。
モダンなフレームワークへ
Springなどのフレームワークを移行し、情報システムの延命を行う。保守性や機能拡張における生産性を向上させる。
API対応
スマートフォンやタブレット連携を容易にするため、既存の情報システムにAPIを追加する。※SPA(Single Page Application)+APIの構造のWEBシステムも増えて来ています。
また、SOAPベースで行っていた外部連携を、RESTベースのインタフェースにすることにより、多様なシステムとの協調を可能にする。
新システムをゼロから構築する場合
かつてはJavaが浸透していた企業情報システムであったとしても、今は必ずしもJavaだけが選択肢とはなりません。技術の選択肢や組み合わせはますます多くなりました。ただ、Javaにはこれまで多くの技術者が関わってきたため、成熟した技術者が他の技術より多くいることはメリットです。技術者の確保が難しい中、選択の要因としては大きな理由となり得ます。
Java・Webシステムのモダナイズをご検討の方
エイムネクストではJava・Webシステムのモダナイズのサービスをご提供しております。詳しくは弊社HPをご覧ください。