“拿来主义”的“范例框架”开发方法

范例框架开发方法——快速高效地进行Java Web应用开发 

进行Java Web应用软件开发,一般可以采用3种方式。

 

第一种是“自力更生”,从零开始,包括软件系统架构和底层工具一切都靠自己来实现。

 

第二种是“工具框架”开发方法,即自己设计软件系统架构,但是同时选用一些底层工具类的“工具框架”来配合自己搭建的架构进行开发。这类“工具框架”的典型代表有Struts 2, Hibernate 3等等。

 

第三种是“拿来主义”的“范例框架”开发方法,即自己不再独立设计系统架构和底层工具,而是选择一个已经将系统架构和底层工具类库等子框架都整合好,并提供范例模块的成熟的“范例框架”,直接参考范例框架上的范例模块,并使用范例框架整合好的底层工具类库等子框架,进行定制化开发自己的项目。这类“范例框架”包括AppFuse(2.2.1/2013.1.25), Spring Roo(1.2.4), Spring Side(4.1/2013.7.18), Play, Seam等。

如:AppFuse

AppFuse是一个集成了当前最流行的Web应用框架的一个更高层次的Web开发框架,也 可以说是一个Web开发基础平台,它与它所集成的各种框架相比,它提供了一部分所有Web系统开发过程中都需要开发的一些功能,如登陆、用户密码加密,用户管理、根据不同的用户可以展现不同的菜单,可以自动生成40%-60%左右的代码,自带了默认的一些在CSS中设定的样式,使用这些样式能很快的改变整个系统的外观,还有自动化测试的功能。

它最大的价值就是为我们提供了一个Web开发的新的方式和思路,尽管这些技术在国外都已进很流行了,但在国内能够将Hibernate、 Struts、Spring、DBUnit、Ant、Log4J、StrutsMenu、Xdoclet、SiteMesh、Velocity、JUnit、JSTL、WebWork这些技术集成到一个框架中的还不多见,所以即使不 使用它的全部功能,它也给我们提供了一个很好的借鉴、学习的机会。

AppFuse的另一个启示是:我们可以依靠开源软件的功能降低开发成本,而且可以阅读开源软件的代码提高所在团队的整体实力。

 

实践证明,第三种“范例框架”开发方法,是最快速高效的。因为这将大大缩短软件开发的“起步”过程,提高敏捷软件开发的首次迭代的质量,并让今后的开发工作能建立在一系列前人已经摸索出来的“最佳实践”的基础之上。

要使用“范例框架”开发方法,有必要回顾一下Java Web应用的开发框架。在Java Web应用开发领域,软件开发框架十分丰富。如果把Java Web应用开发的架构按照软件系统的三层模型来分层,可以分为表示层、业务层和数据层这3层。表示层负责显示应用的结果,业务层负责处理业务逻辑,数据层负责存取数据库。每一层都有相应的软件开发框架。

2000年3月,Apache Struts开源项目开始启动。Struts是运用MVC Model 2较早并且为大多数Java Web开发人员所熟悉的Java Web应用开发框架。

 

其他运用MVCModel 2模式的开源项目也相继发展起来,比如另一个开源项目OpenSymphony,于2002年推出了比Struts技术更先进的名为Webwork的Java Web应用开发框架。

2008年,上述两个开源项目Struts和Webwork进行了合并,推出了一个名为Struts 2的新框架。Struts 2框架实现了上述“三层模型”的表示层和业务层的一些功能,不妨把这类框架称为Web应用框架。由于Struts推出时间早,Struts 2框架是目前国内外Web应用框架中名气最大的。其他常用的通用Web应用框架还包括Apache Tapestry和JavaServer Faces。

Java是面向对象的语言,在进行Java Web应用开发,存储数据到数据库(即持久化persistence)时,免不了要在数据层进行对象-关系映射(Object-relational mapping, ORM)。一些框架完成了上述基于ORM的持久化工作,其中最有名的是Hibernate。这类框架可以称为ORM持久化框架。其他常用的ORM持久化框架还包括:iBATIS和JavaPersistence API (JPA)。

一些通用开发框架也相继推出,如2003年发布的Spring Framework。Spring Framework的兴起缘于Sun公司的EJB 1.1至2.1的设计缺乏灵活性,不便于测试而广受批评这样的背景之下。Spring Framework最大的优势,是实现了依赖注入(DependencyInjection,DI)和面向方面的编程(Aspect-orientedprogramming, AOP)。DI使得对象的实例化不再由程序控制,而是由Spring Framework容器来控制,这样会使得模块之间的耦合度降低,更加容易测试。AOP能够把一些模块所共有的通用功能(如日志、安全、事务)抽象出来集中处理,这能减少开发人员的工作强度,让他们能更加关注业务逻辑,而不是上述通用功能。

 

由于上述框架数量繁多,要把它们有机地整合起来,在一个项目中充分发挥它们应有的作用,也是一件复杂的事情。一些开源框架就开始做框架整合的工作,整合工作除了把表示层、业务层和数据层的框架组合起来之外,一般还提供若干项目骨架(project skeleton)或范例(archetype),内含如用户管理、权限管理这样的通用功能、一些范例模块和代码自动生成工具。这类框架可以称之为范例框架(Archetype Framework)。范例框架中发展较早的是AppFuse,于2003年推出了1.0版本。最近发展起来的范例框架是Spring Roo,于2009年推出了1.0版本。国内常用的范例框架还包括中国工程师自己创建的Spring Side。其他常用范例框架还包括:JBoss Seam和Play Framework。

 

下表列出了上述Java Web开发框架的相关信息。

软件开发框架 初始版本时间框架类型

==================================================================================

Spring Framework 2003.06 通用开发框架

Play Framework 2008.02范例框架

AppFuse 2003.11.30/1.0  范例框架

Spring Roo 2009.12/1.0.0.RELEASE 范例框架

Spring Side 2006.08.07/1.0范例框架

Jboss Seam 2005.09 范例框架

Hibernate 2001 ORM持久化框架

iBATIS 2002 ORM持久化框架

JPA 2006.05.11/1.0ORM持久化框架

Struts 2000.05 Web应用框架

JSF 2004.03.11/1.0 Web应用框架

Apache Tapestry 2000.01 Web应用框架

 

  • 编译、报告和代码生成:Ant、Ant Contrib Tasks、Checkstyle、EMMA、Java2Html、PMD 和 Rename Packages
  • 测试框架:DbUnit、Dumbster、jMock、JUnit 和 Canoo WebTest
  • 数据库驱动程序:MySQL 和 PostgreSQL
  • 持久性框架:Hibernate 和 iBATIS
  • IoC 框架:Spring
  • Web 框架:JSF、Spring MVC、Struts、Tapestry 和 WebWork
  • Web 服务:XFire
  • Web 工具:Clickstream、Display Tag、DWR、JSTL、SiteMesh、Struts Menu 和 URL Rewrite Filter
  • Security:Acegi Security
  • JavaScript 和 CSS:Scriptaculous、Prototype 和 Mike Stenhouse 的 CSS Framework

 

在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值