そのため、Javaサーブレットからプレゼンテーションを分離するための技術としてJSP(Java Server Pages)が登場した。JSPの登場により、Javaサーブレット技術を使ったウェブアプリケーションをMVCモデル(ロジック、表示部、制御部を分離して開発する)で開発することができる。大規模開発における分業や、効率良いメンテナンス(定期的な修正など)を可能にする重要な設計理論だ。
さらに、企業アプリケーションを開発するためには「分散トランザクション制御」、「データベースとの連携」、「大規模システムに対応するスケーラビリティ」、「プログラムの再利用」などの要件が検討され、それらを実現するためにEJB(Enterpri se Java Beans)仕様が発表された。
サーバー側の技術としてJavaサーブレット、JSP、EJBという3つの技術が揃ったわけだが、困ったことが起きた。ベンダーによってテクノロジーの組み合わせや仕様のバージョンが違う。どこでも動く(Write Once, Run Anywhere)はずが、「このアプリケーションはA社のミドルウェアのバージョンXXでのみ稼働します」ということが起きてしまった。これは、Javaコミュニティにとって幸せなことではないのは言うまでもない。