2021-03-27 学习笔记:Java 帝国之Java bean (上)

Java 帝国之Java bean (上)

原创 刘欣 码农翻身 2016-05-27

前言: 最近看到到spring 的bean 配置, 突然想到可能很多人不一定知道这个叫bean的东西的来龙去脉, 所以就写个文章来讲一下。

 

另外,上次出了开源中国抄袭事件, 为了防止转载以后我的公众号信息被故意删除, 我在文章的内容中加上了一些 刘欣(微信公众号:码农翻身) 这样的字样, 可能会造成一些烦扰, 请见谅。 

我一手创立的Java帝国刚刚成立不久,便受到巨大的打击, 我派出去占领桌面开发的部队几乎全军覆没。 

 

情报说微软的Visual Basic 和Borland的Delphi最近在宣传什么组件化开发, 难道就是这东西把我们搞垮了? 

 

刘欣(微信公众号:码农翻身)注:参见《Java :一个帝国的诞生》和《Basic: 一个老兵的自述

 

我赶紧买了一个Visual Basic 过来研究, 果然,这个家伙确实是方便, 最让我惊叹的是:它有一个可视化编辑器 ! 

 

我只需要把一个组件(例如按钮)拖拽到可一个表单上,  设置一下属性 (颜色,字体), 再添加一个事件(onClick), 最后在onClick中写点代码就搞定了 !

 

不仅如此,我自己也可以把我的代码按规范包装成一个组件, 发布出去让别人使用。

 

我看着手下给我买来的《程序员大本营》光盘, 里边竟然包含了好几千个这样的组件, 有数据库浏览组件, 计时器组件, 颜色选取组件, 甚至还有收发邮件的组件......

 

天哪, 这以后开发桌面程序岂不太简单了 !

 

怪不得我的Java 被打得满地找牙!

 

刘欣(微信公众号:码农翻身)注: 90年代末的程序员和学生估计都知道《程序员大本营》, 由csdn的创始人蒋涛制作。

 

我赶紧打电话给我的干将小码哥 : 小码啊, 你赶紧看看这个Visual Basic 和Delphi , 给你7天时间, 我们Java 也得赶紧搞一套这样的东西出来。

 

小吗毫不含糊, 三天就给我搞了一个东西出来: Java Bean API 规范 。

 

我翻开一看, 哇塞, 长达114页 , 于是问他:“这是什么东西? 我要的可视化编辑器呢Visual Java 呢? ”

 

刘欣(微信公众号:码农翻身)注: 我下载浏览了java bean 的规范, 确实是114页

 

他说: “老大, 我们是个开源的社区, 得充分利用大家的力量, 所以我没有去做像VB和Delphi那样的东西, 相反,我定义了一套规范, 只要大家按照这个规范做, 谁都可以用java 做出像VB那样的可视化开发工具出来。”

 

“那你说说这个java bean 到底是什么规范?”我问。

 

“首先,一个java bean 其实就是一个普通的java 类, 但我们对这个类有些要求: 

 

1. 这个类需要是public 的, 然后需要有个无参数的构造函数

 

2. 这个类的属性应该是private 的, 通过setXXX()和getXXX()来访问

 

3. 这个类需要能支持“事件”, 例如addXXXXListener(XXXEvent e),  事件可以是Click事件,Keyboard事件等等, 当然咱们也支持自定义的事件。 

 

4. 我们得提供一个所谓的自省/反射机制, 这样能在运行时查看java bean 的各种信息“

 

5. 这个类应该是可以序列化的, 即可以把bean的状态保存的硬盘上, 以便以后来恢复。 

 

“这些要求看起来也没啥啊,对程序员来说,不就是个普通的java 类吗? 到底该怎么用? ” 

 

“我们幻想一下,假设我们的Java bean 大行其道了, 有个用户在用一个Visual Java Builder  这样的可视化开发工具, 当他用这个工具创建应用的时候, 可以选择一个叫JButton的组件, 加到一个表单上, 此时Visual Java Builder 就需要把这JButton的类通过反射给new 出来, 所以就需要一个无参数的构造函数了。”

 

“如果用户想去设置一下这个JButton的属性,Visual Java Builder 就需要先用自省/反射来获取这个JButton有哪些属性(通过getter/setter), 拿到以后就可以给用户显示一个属性清单了, 例如背景色, 字体 等等。用户看到后就可以设置背景色和字体了,  此时Visual Java Builder 在内部就需要调用这个Bean的setBackgroundCorlor()/setFont() 等方法, 这就是所谓的setXXXX()方法。”

 

“如果用户想对这个JButton编程, Visual Java Builder 还是通过自省/反射来获取这个JButton有哪些事件, 给用户展示一个事件清单,例如click , keyboardPressed 用户可以选取一个, 然后就可以写程序对这个事件编程了。”

 

“可是那个序列化有什么用呢?”

 

“这是因为用户设计完了以后,可能关掉Visual Java Builder 啊 , 如果不通过序列化把设计好的JButton保存起来, 下次再打开Visual Java Builder , 可就什么都没有了”

 

我想了想, 小码哥设计的不错,仅仅用了一个简单的规范就满足了可视化编辑器的所有要求。 

 

"那我们就发布这个规范吧, 咱们自己先做一个可视化编辑器,给别人做个榜样, 名称我都想好了, 叫NetBean吧。"

 

刘欣(微信公众号:码农翻身)注:这是我杜撰的, 实际上NetBean这个名称可能和java bean 并没有实际关联。 

 

果然不出我们所料, Java bean 发布以后, 有力的带动了Java 的IDE市场,  开发Delphi的Borland公司 也来插了一脚,搞出了一个JBuilder, 风靡一时。 

 

IBM 搞了一个Visual Age for Java ,  后来摇身一变, 成了一个叫Eclipse的开放平台,超级受大家欢迎, 它反过头来把我们的Netbean 和 JBuilder 逼的快没有活路了。 

 

虽然我们玩的很欢,但是程序员根本不买账, Java 在桌面开发市场还是没有起色,使用Java bean 创建桌面程序的程序员少之又少, 只有部分像金融、ERP这样的领地还在坚持。   

 

看来是无药可救了。 

 

但是Java bean 何去何从 ? 丢弃掉太可惜了,   我和小码哥商量了一下, 我们觉得:既然我们Java在统治了服务器端的编程, 还是在那里想想办法吧......

 

未完待续。 

 

声明: 原创文章, 未经许可,禁止转载。

 

热门文章:

我是一个线程

我是一个Java class

Javascript: 一个屌丝的逆袭

Java : 一个帝国的诞生

小王的架构师之路

程序员在工作中必备的能力

码农需要知道的潜规则

TCP/IP 之 大明王朝的邮差

CPU 阿甘

IE为什么把Chrome和火狐打伤了

Node.js :我只需要一个店小二

假如我是计算机系老师

假如时光倒流,我会这么学Java

学会编程,而不是学会Java

15年编程生涯,资深架构师总结的7条经验

2017上半年的精华文章全在这里了

原创 老刘 码农翻身 2017-07-14

这里是2017年上半年码农翻身文章精华, 点击标题阅读, 欢迎转发分享。 

如果觉得不过瘾的话,一定要逛逛《码农翻身2016年文章精华》, 那里有更多有趣的技术故事。

 

 

大话编程

 

 

两个程序的爱情故事

两个程序的爱情故事(续)

烂代码传奇

机房夜话

干掉状态:从session到token

张大胖的docker之路

从SOA到微服务

XML的传奇人生

从密码到token, 一个授权的故事

编程世界的那把锁

加锁还是不加锁,这是一个问题

这个动物园, 两年也逛不完

张大胖和CAP定理

一个翻译家族的发家史

张大胖和单元测试

 

 

Java

 

 

什么是框架?

学习Java虚拟机没用? 听听当事人是怎么说的!

聊聊Java 平台上的非Java语言

Java 帝国之消息队列

Java帝国之JMS的诞生

Java帝国之单例设计模式

对Java Inputstream的一次采访

ASM: 一个低调成功者的自述

序列化: 一个老家伙的咸鱼翻身

Java IO 的自述

JDK先生最近有点烦

什么是框架(续)?

说“空话”,做实事: 谈谈多态

Kotlin初体验

 

图片

编程感悟

图片

 

看看“悲催”的码农得学多少东西?

学习编程的四兄弟

那些年,我后悔没做好的事情

我为什么对后端编程情有独钟?

当我们在学习编程语言时,我们在学习什么?

编程需要多少数学知识?

想成为编程高手,一定要学汇编吗?

你必须要理解的计算机核心概念

 

图片

职场

图片

 

我所尊敬的三位女程序员

凡事必先骑上虎背,给性格内向的程序员聊几句

我们向印度人学习什么?

你去下家面试,怎么评价你在这家公司做的工作?

 

图片

开发流程

图片

 

你的需求是怎么描述的?

白话敏捷软件开发

 

 

 

图片

公共号:码农翻身

“码农翻身”公众号由工作15年的前IBM架构师创建,分享编程和职场的经验教训。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值