码迷,mamicode.com
首页 > 编程语言 > 详细

回到1996,一起领略 JavaBeans 的真正力量

时间:2020-11-01 09:32:15      阅读:19      评论:0      收藏:0      [点我收藏+]

标签:htm   bean   inf   通过   工具   code   修改   oracle   写作   

技术图片

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 的真正力量

标签:htm   bean   inf   通过   工具   code   修改   oracle   写作   

原文地址:https://blog.51cto.com/9167833/2544301

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!