圣诞礼物:Java EE的历史

圣诞小礼物 可让对方屏幕上落满雪花,且有圣诞祝歌圣诞的一个小礼物圣诞的 立即下载

前言:

昨天下午有同学问我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生活。

--------------------------------------------------------------------------------------------------------

关于码农翻身公共号(coderising) : 由工作15年的IBM架构师刘欣创建,算上大学4年, 我几乎经历了软件从单机->局域网->互联网发展的整个历程,多年的工作经验,肯定能帮你少走几年的弯路。


加入码农翻身QQ群:135769418 带着你做项目实战, 可是真的项目需求哦,涉及大量Android,iOS, Web开发的技术, 同学们做完后参加工作,技术上就不用愁了。

长按二维码, 关注"coderising"

0?wx_fmt=jpeg

PADS安装教程(超详细) 声明:个人实践 一、工具准备 pads9.5完整破解版百度网盘提取码【wjx9】 链接:https://pan.baidu.com/s/1pIP6BJO435ssmF7Hjwyz8A 提取码:wjx9 安装环境:win10 64位 二、开始解压安装 关闭杀毒,exe以管理员身份运行 点击【skip】,不然又得licese 点击【agree】 点击【modify】 设置安装的工具、路径及工程路径 设置完成后,开始【install】 在之后注册。 将Crack复制到PADS安装目录 阅读详情

相关推荐

从单应矩阵到实际距离:Apriltag测距完整实现指南

本文提供了基于Apriltag实现高精度视觉测距与姿态估计的完整指南。详细阐述了从相机标定、单应矩阵分解到欧拉角与距离计算的完整流程,并深入探讨了四个解的歧义选择、工程实践中的滤波优化与多Tag融合等关键问题,旨在帮助开发者在机器人、AR等应用中实现稳定可靠的距离检测与姿态估计。

n7o8p的博客 560

JAVA圣诞代码,圣诞节(示例代码)

圣诞节(Christmas)又称耶诞节,耶稣诞辰,译名为“基督弥撒”,西方传统节日,起源于基督教,在每年12月25日。弥撒是教会的一种礼拜仪式。圣诞节是一个宗教节,因为把它当作耶稣的诞辰来庆祝,故名“耶诞节”。大部分的天主教教堂都会先在24日的平安夜,亦即12月25日凌晨举行子夜弥撒,而一些基督教会则会举行报佳音,然后在12月25日庆祝圣诞节;基督教的另一大分支——东正教的圣诞节庆则在每年的1月7...

weixin_34501666的博客 4312

中断向量表配置不当引发Default_Handler死循环问题解析

本文深入解析STM32开发中因中断向量表配置不当导致的Default_Handler死循环问题。以STM32F407VET6为例,详细阐述中断向量表的工作原理、常见触发场景及系统化排查方法,并提供使用STM32CubeMX的正确姿势和手动配置的注意事项,帮助开发者快速定位并解决这一常见难题。

grafana6viz的博客 181

java 实现简单圣诞树(圣诞节快乐)

代码如下: @Test public void shengdanshu(){ //叶子层 int level = 10; //根层 int rootLevel = 2; int spaceNum = level - 1; //画叶子 // 为什么从1开始 不管了就是任性 ...

野的博客 1万+

磁栅尺的基本原理

一、磁栅尺简介 磁栅尺(Magnetic scale)是一种常见于工业自动化设备领域的线性位移测量方案,因为其耐用性强,对环境要求不高,逐渐替代了对环境要求苛刻的光学直线测量方案。 作为自动化设备领域里不多见的精密位移检测方案,磁栅尺使用广泛,尤其适用于检测行程长、测量精度要求高、工况复杂的大型机床。磁栅尺安装方便,抗干扰能力强,抗冲击性强,不易受到振动、粉尘、水垢、油污等影响,耐高温和耐低温性能也较为突出。 二、磁栅尺基本组成与原理 磁栅尺主要由两个部分组成,磁尺和读磁头。 磁尺 磁尺是磁栅尺

Luckboy_shy的博客 1万+

抄表程序员的DLMS/COSEM协议实战:从抓包到解析,手把手教你读懂IEC62056报文

本文深入解析DLMS/COSEM协议在智能电表通信中的应用,从报文捕获到数据解析的全流程实战指南。涵盖HDLC帧解析、应用层连接建立、数据请求/响应解码等核心内容,并提供Wireshark配置、OBIS代码速查表等实用工具,帮助开发者快速掌握IEC62056标准下的电能表通信技术。

weixin_29178069的博客 302

圣诞福利|最能讨好程序员的礼物,现在送给你

能得到童话般祝福的 不止是孩子,还有你 『资料在线』公众号 特制圣诞礼 所有我能想到最好的礼物 都藏在快递盒里  寄给 2019 :一个全新的、更好的你 拆礼物? ☟☟ ☟ 扫码进入小程序,即可抽奖! 获奖者可任选3本书籍

柠萌Sweet的博客 717

实现 PDF 添加水印的五种方式

PDF(Portable Document Format,便携式文档格式)是一种流行的文件格式,它可以在多个操作系统和应用程序中进行查看和打印。在某些情况下,我们需要对 PDF 文件添加水印,以使其更具有辨识度或者保护其版权。本文将介绍如何使用 Spring Boot 来实现 PDF 添加水印的方式。

逸轩 6475

送给女朋友的小礼物(程序员)

送给女朋友的小礼物程序员还有女朋友?(没错,就是有)四个模块一、主页1.导航栏2.轮播图3.页面锚点4.部分内容展示二、照片墙三、我想对她说的话四、历程相关代码 程序员还有女朋友?(没错,就是有) 这是我们在一起的第一个七夕,曾经也想过自己写一个东西送给她(一直认为亲手做礼物是最有意义的),现在终于实现了。虽然不是还有很多不足的地方。但女朋友看了还是很开心的。不过她第一反应居然是问我怎么写的hhh...

不想当老板的程序员不是好码农 1万+

【生产实践】PostgreSQL高可用Patroni安装(超详细已踩坑)

一 安装Patroni 0 Patroni 对Python的版本要求 我安装的是Patroni最新版本 :4.0.3,Patroni 对Python 版本有要求,没有具体的版本矩阵,但是根据每个版本发布信息可以得到以下信息 Patroni 4.0 需要 Python 3.8 以上(可以根据下面发布版本信息推理出) Version 3.0.2 Version 3.0.2 dropped support of Python older than 3.6. 版本3.0.2不再支持3.6版本以下的P

DBA之路的博客 1742

【从零到一】Jetson Nano上YOLOv5部署完全攻略:零基础小白也能玩转边缘AI推理

文章摘要: 本文详细介绍了在Jetson Nano边缘设备上部署YOLOv5目标检测模型的完整流程。从硬件准备、系统镜像烧录、基础环境配置,到CUDA/cuDNN验证、Python虚拟环境搭建及PyTorch安装,逐步指导开发者完成部署准备。教程兼顾理论原理与实践操作,提供Python和C++两种实现方案,并涵盖TensorRT优化、实时检测等生产级应用场景,帮助零基础开发者快速掌握边缘AI推理技术,实现高性能目标检测应用。

LXY_LOVE36的博客 370

java se6.0,Sun Java SE 6.0 最终版发布

Sun Java SE 6.0 最终版发布来源:天极网Sun 宣布 Java Standard Edition 6 的最终正式版发布,同时也在官方提供了正式版本下载.很多开发者, 在试用此前Release的demo版本, 都提到性能提升不少, 从 5% 到 24%。Sun 宣布 Java Standard Edition 6 的最终正式版发布,同时也在官方提供了正式版本下载。很多开发者, 在试用此...

weixin_42530536的博客 234

【华为OD机试真题 2025C卷】895、贪心歌手 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS)

【华为OD机试真题 2025C卷】895、贪心歌手 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华

KJ.JK 965

给OB社区的圣诞礼物——结构化上下文语言(Structured Context Language)项目

本文探讨了智能体系统中MCP与RAG的双向协同机制。作者通过实践发现,借助PowerMem和seekdb可以构建类RAG系统,而反向利用RAG的向量相似度查询也能模拟MCP的渐进式加载特性。文章提出了结构化上下文语言(SCL)的构想,将其定位为智能体时代的"SQL",并从业务内容、工具调用和记忆管理三个维度解构上下文工程。通过渐进式加载工具调用和"Hint"机制的人机协作实践,展示了动态上下文管理的可行性。作者呼吁社区共同参与SCL中间件的开发,以标准化接口推动智能体

oe1019的专栏 906

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【精神哥讲Crash】第二期:java.lang.NoSuchMethodError

圣诞节到啦,精神哥披着红大衣,戴上红高帽,想着偷偷爬入各位办公楼的烟囱,给大家的座位上留下一包鸡爪作为圣诞礼物! 奈何精神哥太胖,肚子太大爬不进烟囱了,想着大家肯定也在加班没法做到偷偷,就单方面决定还是给大家送文章吧! 话不多说,下来精神哥给大家分享的第二个Crash是“java.lang.NoSuchMethodError”。 一、java.lang.NoSuchMethodError

腾讯Bugly的专栏 2450

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

sun java6,Sun Java SE 6 最终版发布

Sun 宣布Java Standard Edition 6 的最终正式版发布. 同时也在官方提供了正式版本下载.很多开发者, 在试用此前Release的demo版本, 都提到性能提升不少, 从 5% 到 24% . 不过, 这依赖于你的应用是什么. 新版本对桌面应用性能提高不少, 但是对Java EE来说, 除非是Ria应用, 提升并不是特别大.无论如何, 这一次对JIT的提升是卓有成效的. ...

weixin_33423874的博客 209

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Sun Java SE 6 最终版发布

Sun 宣布Java Standard Edition 6 的最终正式版发布,同时也在官方提供了正式版本下载。 很多开发者,在试用此前Release的demo版本,都提到性能提升不少,从5%到24% 。不过,这依赖于你的应用是什么。新版本对桌面应用性能提高不少,但是对Java EE来说,除非是Ria应用,提升并不是特别大。 无论如何,这一次对JIT的提升是卓有成效的。无论是运行时分析功能,...

tim1995 250

程序员的圣诞节是什么样的?

程序员的圣诞节是什么样的?

cxyITgc的博客 3312

相关资料站点

1.http://www.yesky.com/20030429/1666178_2.shtml   论Java加密技术与Windows的结合2. http://www.primekey.se/primekey/en.html 涉及一点EJBCA的信息3.http://www.china-drm.com/  中国数字版权管理网            有一些DRM相关的技术文章,非常值得一

wuwenlong527的专栏 778

气球java游戏_跑气的气球游戏适合治疗的疾病

【单选题】She will sing a song ____ she is asked.【单选题】_____ David goes, he is welcome.【单选题】I must have my TV set _______. Something is wrong with it.【单选题】We will work ____ we are needed.【单选题】Father was ___...

weixin_34871733的博客 136

JAVA圣诞代码_java 实现简单圣诞树的示例代码(圣诞节快乐)

代码如下:@Testpublic void shengdanshu(){//叶子层int level = 10;//根层int rootLevel = 2;int spaceNum = level - 1;//画叶子// 为什么从1开始 不管了就是任性for (int i = 1; i <= level; i++) {spaceNum--;for (int g = 0; g <= s...

weixin_42515409的博客 1万+

华为笔试题——分礼物

华为的一道笔试题——分礼物 题目描述 圣诞节到了,城堡里有k个小朋友,圣诞老人口袋里带了n件无差别的小礼物,请帮圣诞老人处理:将n个无差别的礼物分给k个小朋友的分法问题 给定n和k,数出分法种数,并枚举所有的分法 输出描述 仅一行,包含两个证书n(0 <= n <= 10)和k(0<= k<= 10), n 表示礼物的数量,k表示小朋友的数量 测试案例 输入:3 2 输出:...

qq_40028201的博客 5887

算法基础:圣诞老人的礼物--贪心

题目: 圣诞节来临了,圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合带走。圣诞老人的驯鹿雪橇最多只能装下重量W的糖果,请问圣诞老人最多能带走多大价值的糖果。 输入 第一行由两个部分组成,分别为糖果箱数正整数n(1 <= n <= 100),驯鹿能承受的最大重量正整数w(0 < w < 10000),两个数用空格隔开。其余n行每行对应一箱糖果,由两部分组成,分别为一箱糖果的价值正整数v和重量正整数w,中间用空格隔开。 输出 输出

qq_46470984的博客 1021

1024程序员节:最能讨好程序员的12件礼物

每年的今天,是程序员节。程序员是通过键盘改变世界的一个群体,他们的大脑里充满了各种神奇的代码。对于这类人群,很难用一个简单的小礼物就打动他们。W3Cschool精选最能讨好程序员的12件礼物,也许可以哄他们开心,打动程序员冰冷的心。 1.HTML贺卡 给程序员送个HTML贺卡,相信可以赢得程序员炙热的心。这种语言方式更贴近程序化,可以帮助程序员更好地理解妹子的意思,无论是爱慕、

打杂人-aerchi 3万+

1024程序员节|去他的人傻钱多,码农的柔情,你永远不懂!

“别人笑我太疯癫,我笑别人看不穿。”在“1024程序员节”的今天,小编想把这句话送给广大的程序员们,希望你们能在代码的海洋中继续快乐地遨游。由于互联网创业公司的风起云涌,...

IT派 772
上一篇: 码农必备技能:烂代码的处理之道(下)
下一篇: 对一个死锁问题的思考
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值