SESでいろんな案件に参画していると、2021年でも当たることがあるJBoss。決まって一緒に出てくるのがEJB。古いニオイがぷんぷんして嫌なのだが、一体何なんだろうか?
Contents
JBossとは何か?10の基本事項
- JBossはJava専用のWebアプリケーションサーバーである。
- RedHat社によってメンテナンスされている。
- ライバルはTomcatだが、大差で負けている。
- 2021年現在はWildFlyという名前に変わっている。
- 2021年現在、新規プロジェクトで採用されることはほとんどない。
- EJBの機能を利用することができる。
無償版のJBoss(現、WildFly)はTomcatに実績では大差で負けているが、有償版のJBoss EAPはIBM WebSphere Application Server、Oracle WebLogic Serverとは競っているようである。
Tomcatは無償なので、無償のミドルウェア構成の案件ではJBossは選定対象には上がらないが、有償サポートを受ける案件では、WebSphereやWebLogicとともに選定候補に入ってくるものと考えられる。
但し、無償のミドルウェア構成でも、EJBの機能を必要とする案件ではWildFlyが選定される。
JBossとTomcatの比較
JBoss古いか?
JBossは古い。Webの記事を読む限り、積極的に関わろうとしたり、今から勉強する必要はないと私は関連づけた。
但し、日本のユーザー会であるJBUGは現在も活動している。
JBossのバージョン
JBossのバージョン | Java EEのバージョン | 変更点 |
JBossとEJB
JBossとEJBは切っても切れない関係である。2010年以降にJavaの学習を始めた人は知らないと思うが、Javaの仕様にEJBというものがあり、EJBの興隆とともにJBossの採用が進んだ。しかし、EJBが下火になるにつれて、やはりJBossも下火になった。
JavaBeansとは?
EJBとは、企業(Enterprise)の業務システム(=大規模システム)向けのJava Beansである。大規模システムで必要とされうる機能をJava Beans形式で提供するものである。
では、Java Beansとは何かと言うと、次の条件を満たしたクラスのことである。
- publicで引数がないコンストラクタがあること。
- フィールドに対するgetter/setterメソッドがあること。
- シリアライズ可能であること。
これだけ見ると、単なるPOJO?ただのオブジェクト?と思うが、それらを満たした上で、後述するような機能を持たせたクラス群(Java Beans群)を提供するのがEJBである。
EJBとは?
EJBはJavaEE(現 Jakarta EE)に諸々の機能が拡張されたものである。
その主な機能とは次の通り。
Session Bean (セッションBean) | |
Message-Driven Bean (メッセージ駆動Bean/MDB) | |
Entity Bean (エンティティBean) |
JBossはSpringBootアプリケーションも動かせる
JBossはJavaEEに準拠したWebサーバーであるため、SpringBootのwarを動かすことが当然できる。
JBoss EAPとは?
JBoss EAPは、RedHat社の有償版JBossのことである。
JBoss EAPは、無償版JBossであるWildFlyが先んじてリリースされ、機能が安定したところで、JBoss EAPとしてリリースされる。