四款JAVA快速开发平台推荐
JBoss Seam
JBoss Seam,算得上是Java开源框架⾥⾯最优秀的快速开发框架之⼀。
Seam框架⾮常出⾊,尤其是他的组件机制设计的很有匠⼼,真不愧是Gavin King精⼼打造的框架了,虽然看起来还是有些缺陷,但是做企业应⽤项⽬的话,Seam是⼀个很棒的选择,作为程序员来说,要⽐⽤ Spring/Hibernate/Struts省⼼的多,更能够把精⼒放在业务逻辑的编写上⾯,开发效率也很不错,可能是Java开源框架⾥⾯最优秀的 快速开发框架之⼀了。
Jdon Framework
Jdon Framework(简称JF)是⼀套适合开发中⼩型J2EE应⽤系统的快速开发框架、也是⼀套Ioc/Aop框架、更是⼀套符合当前国际⽔平的、⾯向组件开发的、国⼈拥有⾃主产权的中间件产品。中国第⼀个开源框架,国内先进的组件、构件⼯具。
分布式快速开发平台 iBase4J
项⽬简介: iBase4J 是 Java 语⾔的分布式系统架构。 使⽤ Spring 整合开源框架。使⽤ Maven 对项⽬
进⾏模块化管理,提⾼项⽬的易开发性、扩展性。系统包括5个⼦系统:公共功能、系统管理 Service、系统管理 Web、业务 Service、业务 Web。
公共功能:公共功能(AOP、缓存、基类、调度等等)、公共配置、⼯具类。
系统管理:包括⽤户管理、权限管理、数据字典、系统参数管理等等。
业务相关:您的业务开发。 可以⽆限的扩展⼦系统,⼦系统之间使⽤ Dubbo 或 MQ 进⾏通信。
Python Web 开发框架
python语⾔,功能强⼤,开发效率⾼,平台移植性好,可扩展性好,很适合⼩型的团队作战,他的语法采⽤缩进形式编写,⽐较简单,容易上⼿,并且⽬前Web 开发框架很多,可以直接运⽤。
java网课推荐Python 四⼤主流 Web 编程框架
⽬前Python的⽹络编程框架已经多达⼏⼗个,逐个学习它们显然不现实。但这些框架在系统架构和运⾏环境中有很多共通之处,本⽂带领读者学习基于Python⽹络框架开发的常⽤知识,及⽬前的4种主流Python⽹络框架:Django、Tornado、Flask、Twisted。
⽹络框架及MVC架构
所谓⽹络框架是指这样的⼀组Python包,它能够使开发者专注于⽹站应⽤业务逻辑的开发,⽽⽆须处理⽹络应⽤底层的协议、线程、进程等⽅⾯。这样能⼤⼤提⾼开发者的⼯作效率,同时提⾼⽹络应⽤程序的质量。
在⽬前Python语⾔的⼏⼗个开发框架中,⼏乎所有的全栈⽹络框架都强制或引导开发者使⽤MVC架构开发Web应⽤。所谓全栈⽹络框架,是指除了封装⽹络和线程操作,还提供HTTP栈、数据库读写管理、HTML模板引擎等⼀系列功能的⽹络框架。本⽂重点讲解的Django、Tornado和Flask是全栈⽹络框架的典型标杆;⽽Twisted更专注于⽹络底层的⾼性能封装⽽不提供HTML模板引擎等界⾯功能,所以不能称之为全栈框架。
MVC(Model-View-Controller)模式最早由Trygve Reenskaug在1978年提出,在20世纪80年代是程序语⾔Smalltalk的⼀种内部架构。后来MVC被其他语⾔所借鉴,成为了软件⼯程中的⼀种软件架构模式。MVC把Web应⽤系统分为3个基本部分。
模型(Model):⽤于封装与应⽤程序的业务逻辑相关的数据及对数据的处理⽅法,是Web应⽤程序中⽤于处理应⽤程序的数据逻辑的部分,Model只提供功能性的接⼝,通过这些接⼝可以获取Model的所有功能。Model不依赖于View和Controller,它们可以在任何时候调⽤Model访问数据。有些Model还提供了事件通知机制,为在其上注册过的View或Controller提供实时的数据更新。
视图(View):负责数据的显⽰和呈现,View是对⽤户的直接输出。MVC中的⼀个Model通常为多个View提供服务。为了获取Model的实时更新数据,View应该尽早地注册到Model中。
控制器(Controller):负责从⽤户端收集⽤户的输⼊,可以看成提供View的反向功能。当⽤户的输⼊导致View发⽣变化时,这种变化必须是通过Model反映给View的。在MVC架构下,Controller⼀般不能与View直接通信,这样提⾼了业务数据的⼀致性,即以Model作为数据中⼼。
这3个基本部分互相分离,使得在改进和升级界⾯及⽤户交互流程时,不需要重写业务逻辑及数据访问代码。MVC架构如图1所⽰。
MVC架构图
注意:MVC在除Python外的其他语⾔中也有⼴泛应⽤,例如VC++的MFC、Java的Structs及Spring、C#的.NET开发框架,读者应该有深刻的体会。
4种Python⽹络框架:Django、Tornado、Flask、Twisted
接下来学习当今主流的4种Python⽹络框架。
企业级开发框架——Django
Django于2003年诞⽣于美国堪萨斯(Kansas)州,最初⽤来制作在线新闻Web站点,于2005年加⼊了BSD许可证家族,成为开源⽹络框架。Django根据⽐利时的爵⼠⾳乐家Django Reinhardt命名,作者这样命名Django意味着Django能优雅地演奏(开发)功能丰富的乐曲(Web应⽤)。
它是当前Python世界⾥最负盛名且最成熟的⽹络框架。最初⽤来制作在线新闻的Web站点,⽬前已发展为应⽤最⼴泛的Python⽹络框架。Django的各模块之间结合得⽐较紧密,所以在功能强⼤的同时⼜是⼀个相对封闭的系统,但是其健全的在线⽂档及开发社区,使开发者在遇到问题时能到解决⽅法。
Django框架的特点
相对于Python的其他Web框架,Django的功能是最完整的,Django定义了服务发布、路由映射、模板编程、数据处理的⼀整套功能。这也意味着Django模块之间紧密耦合,开发者需要学习Django⾃⼰定义的这⼀整套技术。Django的主要特点如下。
完善的⽂档:经过10多年的发展和完善,Django有⼴泛的应⽤和完善的在线⽂档,开发者遇到问题时可以搜索在线⽂档寻求解决⽅案。
集成数据访问组件:Django的Model层⾃带数据库ORM组件,使开发者⽆须学习其他数据库访问技术(dbi、SQLAlchemy等)。
强⼤的URL映射技术:Django使⽤正则表达式管理URL映射,因此给开发者带来了极⾼的灵活性。
后台管理系统⾃动⽣成:开发者只需通过简单的⼏⾏配置和代码就可以实现完整的后台数据管理Web控制台。
错误信息⾮常完整:在开发调试过程中如果出现运⾏异常,则Django可以提供⾮常完整的错误信息帮助开发者定位问题,⽐如缺少xxx组件的配置引⽤等,这样可以使开发者马上改正错误。
Django的组成结构
Django是遵循MVC架构的Web开发框架,其主要由以下⼏部分组成。
管理⼯具(Management):⼀套内置的创建站点、迁移数据、维护静态⽂件的命令⼯具。
模型(Model):提供数据访问接⼝和模块,包括数据字段、元数据、数据关系等的定义及操作。
视图(View):Django的视图层封装了HTTP Request和Response的⼀系列操作和数据流,其主要功能包括URL映射机制、绑定模板等。
模板(Template):是⼀套Django⾃⼰的页⾯渲染模板语⾔,⽤若⼲内置的tags和filters定义页⾯的⽣成⽅式。
表单(Form):通过内置的数据类型和控件⽣成HTML表单。
管理站(Admin):通过声明需要管理的Model,快速⽣成后台数据管理⽹站。
⾼并发处理框架——Tornado
Tornado是使⽤Python编写的⼀个强⼤的可扩展的Web服务器。它在处理⾼⽹络流量时表现得⾜够强健,却在创建和编写时有着⾜够的轻量级,并能够被⽤在⼤量的应⽤和⼯具中。Tornado作为FriendFeed⽹站的基础框架,于2009年9⽉10⽇发布,⽬前已经获得了很多社区的⽀持,并且在⼀系列不同的场合中得到应⽤。除FriendFeed和Facebook外,还有很多公司在⽣产上转向Tornado,包括Quora、Turntable.fm、Bit.ly、Hipmunk及MyYearbook等。
相对于其他Python⽹络框架,Tornado有如下特点。
完备的Web框架:与Django、Flask等⼀样,Tornado也提供了URL路由映射、Request上下⽂、基于模板的页⾯渲染技术等开发Web应⽤的必备⼯具。
是⼀个⾼效的⽹络库,性能与Twisted、Gevent等底层Python框架相媲美:提供了异步I/O⽀持、超时事件处理。这使得Tornado除了可以作为Web应⽤服务器框架,还可以⽤来做爬⾍应⽤、物联⽹关、游戏服务器等后台应⽤。
提供⾼效HTTPClient:除了服务器端框架,Tornado还提供了基于异步框架的HTTP客户端。
提供⾼效的内部HTTP服务器:虽然其他Python⽹络框架(Django、Flask)也提供了内部HTTP服务器,但它们的HTTP服务器由于性能原因只能⽤于测试环境。⽽Tornado的HTTP服务器与Tornado异步调⽤紧密结合,可以直接⽤于⽣产环境。
完备的WebSocket⽀持:WebSocket是HTML5的⼀种新标准,实现了浏览器与服务器之间的双向实时通信。
因为Tornado的上述特点,Tornado常被⽤作⼤型站点的接⼝服务框架,⽽不像Django那样着眼于建⽴完整的⼤型⽹站,所以本章着重讲解Tornado的异步及协程编程、⾝份认证框架、独特的⾮WSGI部署⽅式。
⽀持快速建站的框架——Flask
Flask是Python Web框架族⾥⽐较年轻的⼀个,于2010年出现,这使得它吸收了其他框架的优点,并且把⾃⼰的主要领域定义在了微⼩项⽬上。同时,它是可扩展的,Flask让开发者⾃⼰选择⽤什么数据库插件存储他们的数据。很多功能简单但性能卓越的⽹站就是基于Flask 框架⽽搭建的,⽐如/就是⼀个功能简单但性能强⼤的HTTP测试项⽬。Flask是⼀个⾯向简单需求和⼩型应⽤的微框架。
相对于其他Python语⾔的Web框架⽽⾔,Flask的特点可以归结如下。
内置开发服务器和调试器
⽹络程序调试是在将编制好的⽹站投⼊实际运⾏前,⽤⼿⼯或编译程序等⽅法进⾏测试,修正语法错误和逻辑错误的过程。有经验的开发者都知道,这是保证⽹站系统能够正式应⽤的必要步骤。
Flask ⾃带的开发服务器使开发者在调试程序时⽆须再安装其他任何⽹络服务器,⽐如Tomcat、JBoss、Apache等。Flask默认处于调试状态,使得运⾏中的任何错误会同时向两个⽬标发送信息:⼀个是Python Console,即启动Python程序的控制台;另⼀个是HTTP客户端,即Flask开发服务器将调试信息传递给了客户端。
与Python单元测试功能⽆缝衔接
单元测试是对最⼩软件开发单元的测试,其重点测试程序的内部结构,主要采⽤⽩盒测试⽅法,由开发⼈员负责。单元测试的主要⽬标是保证函数在给定的输⼊状态下,能够得到预想的输出,在不符合要求时能够提醒开发⼈员进⾏检查。
Flask提供了⼀个与Python⾃带的单元测试框架unitest⽆缝衔接的测试接⼝,即Flask对象的test_client()函数。通过test_client()函数,测试程序可以模拟进⾏HTTP访问的客户端来调⽤Flask路由
处理函数,并且获取函数的输出来进⾏⾃定义的验证。
使⽤Jinja2模板
将HTML页⾯与后台应⽤程序联系起来⼀直是⽹站程序框架的⼀个重要⽬标。Flask通过使⽤Jinja2模板技术解决了这个问题。Jinja2是⼀个⾮常灵活的HTML模板技术,它是从Django模板发展⽽来的,但是⽐Django模板使⽤起来更加⾃由且更加⾼效。Jinja2模板使⽤配制的语义系统,提供灵活的模板继承技术,⾃动抗击XSS跨站攻击并且易于调试。
完全兼容WSGI 1.0标准
WSGI(Web Server Gateway Interface)具有很强的伸缩性且能运⾏于多线程或多进程环境下,因为Python线程全局锁的存在,使得WSGI的这个特性⾄关重要。WSGI已经是Python界的⼀个主要标准,各种⼤型⽹路服务器对其都有良好的⽀持。WSGI位于Web应⽤程序与Web服务器之间,与WSGI完全兼容使得Flask能够配置到各种⼤型⽹络服务器中。
基于Unicode编码
Flask是完全基于Unicode的。这对制作⾮纯ASCII字符集的⽹站来说⾮常⽅便。HTTP本⾝是基于字节的,也就是说任何编码格式都可以在HTTP中传输。但是,HTTP要求在HTTP Head中显式地声明在本
次传输中所应⽤的编码格式。在默认情况下,Flask会⾃动添加⼀个UTF-8编码格式的HTTP Head,使程序员⽆须担⼼编码的问题。
底层⾃定义协议⽹络框架——Twisted
以上讲到的3个Python Web框架都是围绕着应⽤层HTTP展开的,⽽Twisted是⼀个例外。Twisted是⼀个⽤Python语⾔编写的事件驱动的⽹络框架,对于追求服务器程序性能的应⽤,Twisted框架是⼀个很好的选择。
Twisted是⼀个有着10多年历史的开源事件驱动框架。Twisted⽀持很多种协议,包括传输层的UDP、TCP、TLS,以及应⽤层的HTTP、FTP等。对于所有这些协议,Twisted提供了客户端和服务器⽅⾯的开发⼯具。
Twisted框架的历史悠久,其主要发⾏版本都以Python 2为基础,最新的版本为基于Python 2.7的Twisted-15.4.0。Twisted社区正在开发基于Python 3的版本,但⽬前为⽌尚没有基于Python 3的Twisted稳定发⾏版。
Twisted是⼀个⾼性能的编程框架。在不同的操作系统平台上,Twisted利⽤不同的底层技术实现了⾼效能通信。在Windows中,Twisted 的实现基于I/O完成端⼝(IOCP,Input/Output Completion Port)
技术,它保证了底层⾼效地将I/O事件通知给框架及应⽤程序;在Linux中,Twisted的实现基于epoll技术,epoll是Linux下多路复⽤I/O接⼝select/poll的增强版本,它能显著提⾼程序在⼤量并发连接中只有少量活跃的情况下的系统CPU利⽤率。
在开发⽅法上,Twisted引导程序员使⽤异步编程模型。Twisted提供了丰富的Defer、Threading等特性来⽀持异步编程。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论