为什么选择Delphi.Net 作者:Chad Z. Howe

博客涉及Delphi、.NET、VB.NET、C++等编程语言。这些都是信息技术领域常用的编程语言,在软件开发等方面有广泛应用。

为什么选择Delphi.Net ?

作者:Chad Z. Hower   译者:Bear

许多人曾预言,随着.Net的引入,从一种语言的角度来说,Delphi将会衰落或者消亡。在过去的几年里这种预言就已出现很多次了,然而Delphi仍然保持了稳定的发展,甚至还有几次斩获。我相信随着.Net的持续增长,Delphi将不仅会保留住它的拥护者,而且其使用与拥护者都会增加。这是与今天许多人的意见相反的,下面我将解释这一点。

谁将从.Net获益?

.Net是个好东西。但是.Net所提供的大部分东西只是对程序员有好处。除了程序员利用.Net提供的东西外,最终用户只能获得极少的好处。没有最终用户会重启他们的计算机,并说“是的,我想今天我将安装.Net”。用户将只在被.Net应用程序要求的时候去安装.Net。

就个人而言,.Net对我最大的吸引力就是我们最终拥有了代码的跨语言兼容性。这已被延误很久了,但是跨语言兼容性也仅是程序员的工具。最终用户不会关心C#代码是否能与Delphi一起工作的很好。最终用户只关心这个程序是否做了他们希望它做的。

.Net是为服务器的

在你反驳我之前,这条申明从来都不是真的。.Net当然不是只为服务器设计的。.Net也是为桌面计算机设计的,然而从相近的术语上层面上说,.Net是为服务器设计的,这就是为什么.Net现在是并且将来也是被用作这种相近术语的原因。在一个机器上安装.Net,1.0版本需要20M以上的空间,1.1版本已发布,体积更大(1.1版为23M,并且最终的安装需要110M)。这仅仅是在安装方面,除了体积大以外,它还将变成操作系统的一个核心部分。

对于那些安装大小不是个问题的用户来说,部署与支持却也是个问题。对于有着成百上千的计算机的那些公司来说,不会简单地大规模部署任何软件系统,当然也不会不做许多准备工作就贸然安装像.Net这样的核心软件。

对于家庭用户来说,就不仅仅是安装问题了,还有带宽的问题。软件当然还是通过CD来发布的,但大多数家庭用户使用的非游戏软件都是从因特网直接下载的。当然许多用户今天也拥有宽带接入,但是除去程序员以外,大部分家庭用户都没有宽带接入。多数可下载的程序都在1-5M之间,这是一个可以接受的下载大小。把体积增大到5-20倍那就不太好下载了。

一旦你安装了它,它就在那儿了

是,又不是。一旦你安装了.Net,事实上你就拥有它了,并且对于所有.Net程序来说,它都是可用的。然而,.Net框架1.1版本已经发布,显然1.2或者2.0也已在开发之中。以前的经验告诉我们每一个版本都会比老版本体积大。如果一个用户已经安装了1.0,但是你的程序又需要1.1,这个最终用户就需要另外的更大的安装。最后,完全可以想象最终用户将需要多达4个不同的.Net框架版本,来支持已安装的软件。

程序员的观点

.Net很酷。.Net很新。这就足够让大多数程序员期望.Net了。当然,.Net也确实有足够的真材实料来让自己值得程序员的期望。不过,我们还是从不同语言的角度来看一下吧:

  • C++ - 简言之,C++是不能被托管的代码,这样就不能在.Net上很好的工作。C++用户将被划归到非托管代码或者设备驱动开发这一类中去。微软已经在鼓励C++开发者转移到C#了,并且最后非托管代码将不只是不被鼓励,而是几乎就是不被允许了。虽然C#在很多方面与C++都相似,而且显然(其语法)根植于C++,但是仍与C++有着很大的差异。多数C++开发者都是纯粹主义者,对他们的语言有着非常狂热的执著。由于这一点,许多C++开发者都不喜欢C#,并且根本不情愿转移到C#上去。

  • Visual Basic - Visual Basic 在.Net中并不存在,而是变成了Visual Basic.Net。VB.Net与VB是不兼容的,仅仅在一些基本语法上有些类似。(在.Net上)VB程序必须被重写,而且几乎是完全重写。当VB最终有了一些改变来使它成为一个“真正的”语言时,VB用户却开始反对了。许多VB用户很不满意地称VB.Net为Visual Fred,而且誓不转移到.Net平台,或者干脆就投奔Delphi。

  • delphi -delphi 7用户已经有了一个Delphi for .Net编译器DCCIL的预览版。Delphi 8 将提供完整的Delphi for .Net编译器。现有的Delphi代码,当然需要一点改变,将能被轻松地移植到.Net平台。


这意味着什么?这意味着Delphi将是移植到.Net的路径中代价最小的一条。如果你是一个Delphi开发商,你知道你就能以最小的顾虑而转移到.Net上,然而如果你是一个Microsoft开发商,你就要选择是完全重建还是维护两套不同语言的系统,两种选择都很拖累。也就是说是继续维持现有的VB或C++的系统呢,还是重新以C#或则VB.Net建造新的系统。

.Net需要两次开发

由于语言兼容性问题,.Net基本上是个比较极端的事情。由于很可能众多公司将只在服务器而不是桌面计算机上部署.Net,因为现存的应用将很可能不被移植到.Net上,开发者们必须以两种语言开发,一种是VB 或 C++,另一种是 C# 或 VB.net。除了开发人员必须被培训两次外,还必须为可预见的将来保持分开的不兼容的两份代码库。

很少开发商能为使用了.Net的最终用户而完全转移到.Net上来,即使他们可以,也不得不支持老的应用或为移植问题而重写代码。
在另一方面,Delphi允许开发者只维护一份通用的代码库,就能被用作在Win32 (不是 .Net) 与 .Net上跨平台部署。Delphi也能让开发者通过Kylix(重新编译源代码)而在Linux上部署应用。对现有的Delphi开发商而言,只需要对开发人员进行很少的再培训。

可是现在并没有Delphi.Net

现在并没有Delphi for .Net,但许多开发者已看到这种趋势了。在Delphi 8中的Delphi for .Net将提供独一无二的跨平台选择与简单容易的移植路径。在预料到这一点之后,许多开发者正在转向Delphi。

.Net开启了大门

由于现存的库,代码与第三方支持(有许多是非Delphi语言的),语言互操作性的缺乏曾经阻止了许多开发者使用Delphi。有了.Net,语言就不再是个问题。.Net将使更多的开发者转移到Delphi上来。(这里所谓更多的)开发者就是那些以前曾经考虑过Delphi,但由于这个约束而没有转移过来的开发者。

delphi 8 冲击

作为一个组件供应商,我们可以研究我们自己的客户。虽然Delphi7是一个成功的产品,但许多用户还仍然在使用Delphi5与Delphi6。这些用户只是仅仅没有看到任何使用Delphi7的需要而已。然而,带有.Net支持的Delphi8将给他们提供一个非常强大的升级动机,现在许多这类用户正在等待着Delphi8的问世。就我看来,Delphi8将是一次非常成功的发布版本,将不只是Delphi7用户的升级目标,也将是许多Delphi5与Delphi6用户的期望之选。

结论

我恨.Net吗?不,恰恰相反。但是,转移到.Net也不是一蹴而就的,而且还要付出一些代价。Delphi提供了最佳的移植路径,特别是在.Net普及后,其优点更是意义重大。所有这些因素都将让Delphi 8获得巨大成功,并且推动Delphi被更多地使用。


作者简介: Chad Z. Hower是Delphi组件集Indy的原始作者,组件集IntraWeb的作者,AToZed公司创始人,常去世界各地游历。

译注:原文发表日期为2003年9月11日,本文在征得作者同意后翻译,翻译完毕日期2003年9月17日。转载请注明出处:www.delphidevelopers.com,并保留作者译者名称。

 

 

 

 

<think> 我们正在查询两个导入语句对应的库文件: 1. `import com.chad.library.adapter.base.BaseQuickAdapter;` 2. `import com.chad.library.adapter.base.viewholder.BaseViewHolder;` 根据这两个导入语句的包路径,我们可以确定它们属于同一个库。这个库是Android开发中非常流行的RecyclerView适配器辅助库,由开发者“chad”维护,通常被称为**BaseRecyclerViewAdapterHelper**(简称BRVAH)。 ### 1. **库的标识** - **Group ID**: `com.github.CymChad` - **Artifact ID**: `BaseRecyclerViewAdapterHelper` - 在Gradle中添加依赖的方式为: ```groovy implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4' // 请使用最新版本 ``` - 该库的GitHub地址为:[https://github.com/CymChad/BaseRecyclerViewAdapterHelper](https://github.com/CymChad/BaseRecyclerViewAdapterHelper) ### 2. **库的功能** - `BaseQuickAdapter` 和 `BaseViewHolder` 是库的核心类,用于简化RecyclerView适配器的编写。 - 主要功能包括: - 快速创建RecyclerView适配器(只需实现`convert`方法填充数据)。 - 支持多种Item类型(多布局)、头部/尾部视图、空视图、加载更多、动画效果等。 - 提供丰富的点击事件(Item点击、长按、子View点击等)。 - 示例代码(来自库的文档): ```java public class MyAdapter extends BaseQuickAdapter<Item, BaseViewHolder> { public MyAdapter() { super(R.layout.item_layout); } @Override protected void convert(BaseViewHolder holder, Item item) { holder.setText(R.id.tv_title, item.getTitle()); } } ``` ### 3. **如何添加依赖** - 在项目的`build.gradle`文件中,添加以下依赖(注意使用最新版本): ```groovy dependencies { implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4' } ``` - 同时,需要确保项目中已经添加了JitPack仓库(因为该库托管在JitPack上)。在根项目的`build.gradle`中添加: ```groovy allprojects { repositories { ... maven { url 'https://jitpack.io' } } } ``` ### 4. **版本更新** - 最新版本可以在GitHub发布页或[JitPack页面](https://jitpack.io/#com.github.CymChad/BaseRecyclerViewAdapterHelper)查看。 - 升级时,只需修改版本号即可。 ### 5. **常见问题** - 如果出现类转换异常(如引用[1]中的`ClassCastException`),通常是因为自定义的`ViewHolder`没有继承自`BaseViewHolder`,或者在适配器中使用了错误的`ViewHolder`类型。 - 设置空视图(如引用[2]中的`empty_view`)可以通过适配器的`setEmptyView()`方法实现。 ### 6. **库的可靠性** - 该库在GitHub上有超过23k星标,被广泛应用于各类Android项目中,具有很高的可靠性和社区支持。 如果您在使用过程中遇到问题,建议查阅官方文档或示例代码。 §§相关问题§§ 1. 如何升级BaseRecyclerViewAdapterHelper到最新版本? 2. 使用BaseRecyclerViewAdapterHelper时如何实现多布局? 3. BaseRecyclerViewAdapterHelper中如何添加加载更多功能? [^1]: 引用[1] [^2]: 引用[2] </think>您查询的导入语句 `import com.chad.library.adapter.base.BaseQuickAdapter;` 和 `import com.chad.library.adapter.base.viewholder.BaseViewHolder;` 属于同一个开源库:**BaseRecyclerViewAdapterHelper**(通常简称为 BRVAH)。以下是详细说明: ### 1. **库文件标识** - **Group ID**: `com.github.CymChad` - **Artifact ID**: `BaseRecyclerViewAdapterHelper` - **完整依赖声明**: ```gradle implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4' // 最新版本 ``` - **GitHub 仓库**:[https://github.com/CymChad/BaseRecyclerViewAdapterHelper](https://github.com/CymChad/BaseRecyclerViewAdapterHelper) ### 2. **核心功能** 该库是 Android 开发中用于简化 `RecyclerView` 适配器开发的工具库: 1. **`BaseQuickAdapter`**: - 核心适配器基类,封装了数据绑定、点击事件等通用逻辑 - 支持**多布局**、**头部/尾部视图**、**加载更多**、**动画效果**等 - 示例用法: ```java public class MyAdapter extends BaseQuickAdapter<Item, BaseViewHolder> { public MyAdapter() { super(R.layout.item_layout); } @Override protected void convert(BaseViewHolder holder, Item item) { holder.setText(R.id.tv_title, item.getTitle()); } } ``` 2. **`BaseViewHolder`**: - 封装了 View 操作(如 `setText()`、`setImageResource()`) - 通过 `getView()` 实现安全的视图查找 - 避免重复编写 `findViewById()` 代码 ### 3. **典型应用场景** - 快速实现复杂列表(如聊天界面、商品列表) - 添加空数据视图(如引用[2]中的 `empty_view`) - 实现下拉刷新/上拉加载 - 处理多类型 Item(如混合图文、视频等布局) ### 4. **添加依赖步骤** 1. 在项目根目录的 `build.gradle` 中添加 JitPack 仓库: ```gradle allprojects { repositories { ... maven { url 'https://jitpack.io' } } } ``` 2. 在模块的 `build.gradle` 中添加依赖: ```gradle dependencies { implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4' } ``` ### 5. **常见问题解决** - **类转换异常**(如引用[1]的 `ClassCastException`): - 检查自定义 ViewHolder 是否继承自 `BaseViewHolder` - 确认适配器声明正确: ```java public class MyAdapter extends BaseQuickAdapter<Item, MyViewHolder> {...} ``` ```java public class MyViewHolder extends BaseViewHolder {...} // ✅ 正确继承 ``` 该库在 GitHub 有 **23k+ Stars**,广泛应用于企业级项目,能显著提升 RecyclerView 开发效率[^1][^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值