返回介绍

圣诞礼物:Java EE 的历史

发布于 2025-01-22 00:38:53 字数 3667 浏览 0 评论 0 收藏 0

前言:

昨天下午有同学问我 Java EE 是干什么用的,能开发什么系统, 我在 QQ 中敲了很多字,掰扯了半天,终于给他整明白了。

我突然意识在其实很多初学者对 Java EE 的来龙去脉并去清楚, 大家并不知道为什么会出现这个技术, 要解决什么问题。 所以就写了这篇文章介绍下 Java EE 的历史。

先把时间扯的远一点, 94 年我上高中的时候, 见过亲戚家有过电脑, 很好奇, 虽然上面都是一些单机桌面程序, 根本上不了网, 但是一个小小的扫雷程序就足以吸引很多眼球了。

后来上了大学, 接触电脑越来越多, 局域网已经普及, 互联网开始抬头,这时候 C/S (Client-Server ) 结构的程序开始出现了,例如 QQ, 棋牌类游戏, 还有著名的 PowerBuilder 开发的 MIS(管理信息系统), 都是典型的客户端-服务器结构,程序运行在个人的电脑上,和服务器通信。

C/S 软件界面可以整的很漂亮, 用户体验很好, 但是缺点也很明显, 就是用户必须要安装客户端, 并且需要升级客户端来用新功能, 这样就带来两个问题

(1) 服务器端发生变化, 一定要能兼容很多客户端版本,要不然有的客户端软件就运行不了了, 因为客户不一定升级。

(2) 可能会出现 DLL 地狱问题 -- 自己百度下啥是 DLL 地狱。

再后来 Web 大发展, 速度快了, 带宽也够了, 大家发现, Web 页面也能做的很漂亮了, 把程序放到服务器端, 用浏览器访问多好, 用户也不用安装,所有功能都是即时更新。

但是 html 只是静态的,怎么才能变成动态的, 可交互的呢?

CGI 技术出现了, CGI 允许 web 服务器调用外部的程序, 并把结果输出到 Web 浏览器, 这样就能根据用户的操作生产不同的动态页面了。

在我读大学的年代, CGI 最常见的就是实现一个计数器, 看着自己的主页访问量慢慢的增长,那种感觉是很爽的。

当然,使用 CGI 最苦逼的就是需要用程序输出 html , 那可是整个网页的 html , 不是其中的一个片段 !

换句话说, 程序员只能在代码里写 html, 而不能在 html 里写代码 。 你可以想象一下用 C 语言或者 Perl 写 CGI 脚本的程序员那种咬牙切齿的感觉。

举个例子, 通过浏览器提交了用户名/ 密码, cgi 会这么做:

if (name=="liuxin" and password == "xxxx" ) {

println ("<html>");

println ("<head>");

println ("<title>欢迎</title>");

println ("</title>");

println("<body>")

println("<table>")

println("<tr><td>") ..... 我实在是写不下去了,太崩溃了, 这是伪码, 不要和我较劲...............

println("</td></tr>")

println("</table>")

println("</body>")

print("</html>")

}

这个时候我们赖以糊口的 Java 在干嘛?

Java 是 Sun 发明的, 当然 Sun 现在已经被 Oracle 收购了。

Java 其实是依靠 Applet ,依靠互联网才起家发达的, 大家在简陋的页面上突然看到当时极为炫目的 Applet 小动画, 立刻就震惊了。

但悲剧的是大家发现 Applet 除了用来演示以外, 似乎没有找到真正的用武之地。

浏览器还必须得装个 java 插件, 后来微软为了阻止 Java 还在自己浏览器 IE 中使坏 :-) , 这个插件运行一直不太稳定。

Java 看到 CGI 技术发展的不错, 自己也搞一个类似的吧, 这就是 Servlet , 由于提供了一个 request, response, session 等支持,用起来比 CGI 方便多了。

但是输出 html 这一块没有任何改进, 还得程序员一句一句的输出 html.

06 年我进 IBM 的时候发现有个项目是在用 servlet 输出页面 html ,完全没用 jsp, 我也就见怪不怪了, 这肯定是个 90 年代的遗留应用。

最后大家都受不了这种极为痛苦的输出方式, 于是 Sun 就弄了个 JSP , 微软也不甘示弱, 出了个 ASP。

这下子 Web 开发出现了跃进,因为不管是 JSP 还是 ASP, 都是所谓的 Server Page , 也就是说程序员终于可以把逻辑代码和 html 混在一起了! 在也不用一行一行的输出纯 html 了。

当然现在老师教导你, jsp 中不要有逻辑代码, 但在当时,这可是了不起的突破 。

我们可以先让美工把页面设计好, 然后把程序嵌入进去就行了。

再后来出现了 Struts, 使用 MVC 解决了职责划分问题, Web 应用迈向了新的台阶, 开始飞速发展, 对于这种应用,我们称为 B/S 结构,即 Browser(浏览器)-Server (服务器) 。

C/S 结构的程序当然不会消亡, 因为像聊天,视频,游戏等对性能, 界面,用户体验要求很高, 天然适合桌面程序实现。

为了支持更大,更复杂的应用开发, 微软为 ASP 添加了实现业务逻辑的 COM, COM+ ,访问数据库的 ADO 等技术。

而 Sun 和 Java 社区有更大的野心,他们提出了一套更大的, 不同于传统应用开发的架构,专门用于满足企业级开发的需求。

这些需求包括数据库, 邮件, 消息,事务处理, Java 对这些通用的需求做了抽象,形成了一些规范和标准,除了 Servelt 和 JSP ,还有 EJB, JMS , JDBC 等等。

这些东西,Sun 把他们称为 J2EE 。

为啥不是 Java EE ? 那个 2 是怎么回事?

这完全是一种市场策略, 原来 Java 的版本是 1.1 , 从 1.2 开始, Sun 称之为为 Java 2 平台 , 以便告诉大家,这是一个突破性的技术平台。 实际上也确实有所突破, Java 被分成了 J2SE (标准版) , J2EE(企业版) 和 J2ME(移动版) , 当然移动版在手机上一直没有发展起来, 直到 Android 的出现--这是后话了。

到了 2005 年, Sun 又取消了那个 “2” , 于是就变成了 Java SE, Java EE, Java ME 了。

J2EE 需要运行在一个叫应用服务器的东西里, 这就是 Weblogic, websphere , jboss, 也称为应用中间件。

J2EE 发展的非常迅猛, 迅速统治了 Web 应用开发市场, 微软的 ASP 只能偏居一隅了, 后来推出.NET 才算扳回一城。

我们走了漫长的路, 终于来到你的面前, 现在你知道 Java EE 是干啥的了吧 :-)

在后来的故事估计很多人都听过了,Java EE 远远没有宣传的那么美好, EJB, 尤其是 Entity Bean 极为难用, 对业务代码侵入性极强, 在大家想抛弃而又没有替代品的时候, 有一位大牛 Rod Johnson 如约而至,他说我们不要这种臃肿,低效,脱离现实的 J2EE, 我们要灵活,轻便,轻量级的框架, 这就是 Spring, 我们就有了依赖注入,AOP....

有位叫 Gavin King 的澳大利亚小伙子也是在忍受不了 EJB 的 O/R Mapping , 自己整了一个 Hibernate 。

再加上更早出现的 Struts, 我们 Java 程序员终于过起了幸福的 SSH 生活。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文