Bean 这个词,Java 开发者们应该都很熟悉了,指代的是遵循一些规范的类。

首先,想聊聊为什么要取名为 Bean?

大家都知道 Java 的名字来源于一种咖啡,也正像 Java Logo 所直接表达的,一杯热气腾腾的咖啡:

那 Java Bean 连起来就是 咖啡豆 ╮( ̄▽ ̄)╭。

在 Java 中可以把 Bean 打包到 Jar 包中,我们脑补下,大概就是下面这张图:

把咖啡豆装进罐子里 ╮( ̄▽ ̄)╭。

(///∇//) 这些名字实在是太有趣了!

聊完了命名,接下来,我们正式回到1996年,开始考古了。

那年,我刚满一岁,JDK 也由 Beat版 升级为 1.0版,同年 Sun 提出了 JavaBeans 这套组件模型规范,其具体内容如下:

  1. 有一个 public 的无参构造器;

  2. 属性通过 getter、setter 方法访问;

  3. 可序列化。

在那个客户端大行其道的年代,这套规范为 Java 程序员带来了便利,可以让编写的 Class 成为了一个可重用的组件,并且可以在构建工具中进行可视化操作。

“构建工具中进行可视化操作”?

好高端的感觉,其实接地气说就是三个字——拖组件

下面来一起看个例子[1]:

NetBeans 是一款 Bean 构建工具。通过它我们可以轻松的将 JavaBeans 组件组合到一个应用中。下图是 NetBeans 的开发界面,左侧的 Projects 窗口中有一个 SnapFrame类,中间是可视化设计器,右侧是可以添加到 Frame 中的组件(每个组件都是一个 JavaBean)。

把 Button 组件拖到 Frame 中,我们就能拥有一个 Button 了(* ॑ᐜ ॑*)!

通过右下角的 Properties 窗口,可以修改 Button 的属性,改变其样式(甚至可以添加事件)。

在多拖几个组件后,可以得到下面的效果:

我们在完成这一系列操作的过程中,不需要编写任何一行代码,就可以轻松地构建出一个应用。

太Amazing了!(* ॑ᐜ ॑*) 这就是 JavaBeans 的真正力量

只需借助 NetBeans 等构建器工具,就可以快速将组件连接在一起,构建一个应用。

下面来逐条分析下 JavaBeans 是如何做到的

  1. 有一个 public 的无参构造器 => 拖组件时,不需要输入任何参数,就可以获得一个组件;

  2. 属性通过 getter、setter 方法访问 => 操控组件的属性,并为组件提供安全保障,例如:给 Button 的 Length 输入 “-1”,而 Button 的 setter 方法会告诉我们 “-1” 是不允许的;

  3. 可序列化 => 组件可以保存在磁盘,甚至通过网络,供其他人使用。

以上便也是 JavaBeans 这么设计的原因。

禅定时刻

组件式思想,在 JavaBeans 中可谓体现的淋漓尽致,我们可以领略到其强大的力量。而哪怕是 2020 年,这个移动互联网盛行的年代,组件式思想仍然深深地在影响着我们这代技术人。

写这篇文章是源于我想知道为啥要取名为 Bean(以前因为 Spring,我一直以为 Bean 是种子的意思,原来是豆子啊),到了解 JavaBeans 这套规范,再到想知道为何如此规范。探索 1996 年确实是件不太容易的事,没有亲身经历过那个年代,有些地方略有揣测,如果文中有什么说错的地方,还请各位指出,一起探讨。

参考:

[1]: The Java Tutorials —— JavaBeans https://docs.oracle.com/javase/tutorial/javabeans/ quick/index.html

回到1996,一起领略 JavaBeans 的真正力量相关推荐

  1. 比特币区块链将分道扬镳、Libra苦难继续,2020区块链进入关键时期!

    作者 | Andrew Keys 译者 | 王艳妮 责编 | 唐小引 封图 | 付费下载自 VCG 出品 | 区块链大本营(ID:blockchain_camp) 作为 Digital Asset R ...

  2. 美剧 迷失 最强剧情解释

    1800年代 黑石(The Black Rock)是一艘用来运送奴隶的货船,行驶在横渡太平洋的路上.船上装有大量的各种类型的矿物质,这些矿物质对磁场有着强烈的反应.不幸的是,这艘船遇到了Lost中的小 ...

  3. 手机电子词典_我的电子词典在课堂上宏亮地说了一声“拉屎”!!!

    本文来自豆瓣"社会性死亡小组"丨 由豆瓣用户@Mr.enjoystudy 授权发布丨 原标题:如果半夜笑醒室友..楼主概不负责?丨 感谢作者为豆瓣提供优质原创内容丨 这件惨绝人寰的 ...

  4. 高老师的架构设计_隽语集(AA_0151)

    前言:还是许多人不理解软硬整合与差异化.其原理很简单:例如,一台电视机增加一颗"手势3D"硬件模块,假设其成本是1元,量产1千万台就增加成本1千万元:如果再增加一个软件模块,假设其 ...

  5. see into/see off/seek to等动词词组

    本博文源于<词博士的私教课·英语动词词组速记420>本博文属于"Day2 Week 3" Reading rent to 出租 If you rent somethin ...

  6. 冥想5分钟等于熟睡一小时

    冥想方法: 1. 背挺直 2. 吸气,数1,2,3,4,5,停顿一下,呼气,同样数数,完全沉浸在呼吸中 A. 静观以往的感情经历,作为一个公正无私的旁观者,体会所有的想法和感觉. B. 想象美好的事物 ...

  7. IT架构师_隽语集(Design Thinking _0201)

    前言:无论在绘画上,或是计算机软件上,华人喜欢呈现心外事物,例如画竹.描述用户需求等.而洋人喜欢呈现心内的景象,例如毕加索画出人们内心对战争的恐惧.记得,我在欧洲开发软件时,一谈到<建模(mod ...

  8. 100种活动促销方案

    点滴分享-共同进步 目录 100种促销方案 价格,永远的促销利器 以人为本的促销艺术 热情,燃起永不言败的销售激情 广告,引起轰动的促销捷径 节假日,黄金时间的攒"金"技巧 主题, ...

  9. 青春励志感悟人生语录

    青春励志感悟人生语录: 1.花努力盛开,开得芬芳美丽,吸引蝴蝶舞动.鸟儿努力地歌唱,悠悠旋起涟漪,美妙的悦耳动听.只要肯努力,结果会变得很美丽. 2.总有一天,你会明白:你的委屈要自己消化,你的故事不 ...

最新文章

  1. MYSQL的MERGE存储引擎
  2. cmd看excel有多少个子表_快看!杭州各区5月房价表出炉!现在买套房要多少钱?...
  3. Waymo无人车高层动荡:CFO今日也走了,半年已失8名高管
  4. devops_DevOps专业人员如何成为安全冠军
  5. 重磅! flutter视图局部更新
  6. linux pid t 头文件_Linux中 pid_t 类型的定义.
  7. 2006年100款最佳安全工具谱
  8. 小记: 程序设计注意保持逻辑清晰
  9. Excel 公式CORREL算出相关系数
  10. Class Fxp\Composer\AssetPlugin\Repository\NpmRepository does not exist
  11. 云平台是什么、什么是云、云平台的分类、主流公有云平台有哪些、云的三种服务、PaaS、SaaS、IaaS
  12. new Date在safair浏览器中不兼容
  13. T-Pot安装教程(保证能运行,附安装需要的所有东西清单)
  14. 【Python脚本进阶】2.3、利用FTP与Web批量抓“ 肉机”(终)
  15. for循环嵌套 正三角和倒三角
  16. 空间分辨率、频谱分辨率、辐射计量分辨率、时间分辨率。
  17. 什么是两化融合贯标?对企业有什么好处?
  18. Intellij idea Tips 之 创建文件自动生成文档描述
  19. Bootstrap 引入 栅栏系统 文本 表格 类
  20. STemWin学习:关于窗口消息的基础知识

热门文章

  1. 腾讯云Centos安装python3教程
  2. 如何躲避红蜘蛛的控制
  3. 前端背景图放置_如何在css中添加背景图?
  4. 信用评分卡Credit Scorecards (1-7)
  5. java jsp小例题_JSP 相关试题(一)
  6. 什么是驻点和拐点_拐点和驻点的区别是什么
  7. rgb html转换,RGB与十六进制数值互转(html)
  8. 【沙发管家】华为悦盒刷机破解详细攻略,附多个第三方精简固件
  9. 管理员技术(二): 访问练习用虚拟机、 命令行基础技巧 、 挂载并访问光盘设备、ls列表及文档创建、复制删除移动...
  10. WinForm控件Chart的图表类型